gofr BasicAuth 빈 자격 증명 설정 결함으로 인한 원격 인증 우회
이 취약점은 app.EnableBasicAuth 함수가 빈 문자열 인자를 처리할 때 유효성 검사를 하지 않는 데서 비롯됩니다. 사용자 이름이나 비밀번호가 올바르게 설정되지 않은 경우에도 시스템은 빈 자격 증명 레코드를 등록하고 nil을 반환하므로, 공격자는 Base64로 인코딩된 콜론을 담은 Basic Auth 헤더를 보내는 것만으로 인증을 통과할 수 있습니다. 이를 통해 접근 제어를 우회해 보호된 리소스에 직접 접근할 수 있어 기밀성과 무결성에 심각한 유출 위험이 발생합니다.
컴포넌트
gofr는 Go 언어로 구축된 고성능 마이크로서비스 프레임워크로, RESTful API 개발 과정을 단순화하고 표준화된 애플리케이션 아키텍처를 제공하는 것을 목표로 합니다. 핵심 구성 요소로 HTTP 서버, 미들웨어 체인, 설정 관리 시스템을 포함하며 의존성 주입과 모듈식 설계를 지원합니다. 주로 확장 가능한 백엔드 서비스를 빠르게 구축하는 데 사용되며, 내장된 인증 미들웨어로 인터페이스 접근의 보안을 보장합니다.
유형
Improper Authentication (CWE-287)
저장소
대응 방안
- 개발자는 기본 인증 로직을 구현할 때 입력 매개변수가 비어 있지 않은지 엄격히 검증하고, 사용자 이름이나 비밀번호가 비어 있으면 즉시 인가 절차를 중단하고 명확한 오류를 발생시키는 것이 좋습니다. 또한 경계 조건에 대한 단위 테스트 커버리지를 보강해 잘못된 설정이 조용히 기능 저하로 이어지지 않고 예상대로 보안 차단을 유발하도록 해야 합니다.
eladmin에서 악성 SQL 파일 업로드를 통한 인젝션으로 데이터베이스 데이터 유출 및 변조 발생
공격자는 POST /api/database/upload 엔드포인트를 이용해 악의적으로 조작한 SQL 문이 담긴 .sql 파일을 업로드합니다. SqlUtils.batchExecute() 메서드는 입력 내용을 매개변수화하거나 보안 필터링하지 않고 Statement.addBatch()를 직접 호출해 원본 SQL을 실행합니다. 효과적인 입력 검증 메커니즘이 없어 공격자는 임의의 SQL 명령을 실행할 수 있으며, sys_user 테이블에서 사용자 이름과 비밀번호 해시 같은 사용자 자격 증명을 탈취할 수도 있어 민감 정보 유출과 데이터베이스 무결성 훼손을 초래합니다.
컴포넌트
eladmin은 Spring Boot 기반의 오픈소스 관리자 백오피스 시스템으로, 멀티 테넌트 또는 원격 데이터베이스 연결 관리를 지원하는 데이터베이스 유지보수 모듈을 아키텍처에 통합하고 있습니다. 이 구성 요소는 SQL 스크립트 일괄 실행 기능을 편리하게 제공하는 것을 목표로 하며, 사용자가 웹 화면에서 .sql 파일을 업로드하면 자동으로 파싱해 실행합니다. 이를 통해 데이터베이스 초기화, 스키마 변경, 데이터 마이그레이션 등의 운영 작업을 단순화하고 개발·테스트 환경에서의 데이터베이스 상호작용 효율을 높입니다.
유형
SQL Injection (CWE-89)
저장소
대응 방안
- SQL을 직접 이어 붙여 실행하는 방식 대신 프리페어드 스테이트먼트를 사용하고, 실행 가능한 SQL 문 유형을 엄격히 제한하며, 허용 목록 방식으로 위험한 키워드를 필터링하고, 업로드 파일 내용을 샌드박스에서 검사해 허용된 DDL/DML 작업만 포함되도록 할 것을 권장합니다.