🇰🇷 한글 설명
DataEase 2.10.20 이하에서 Lombok @Data 어노테이션의 자동 생성 setter를 악용한 JDBC 파라미터 블록리스트 우회 취약점입니다. 인증된 공격자가 위험한 JDBC 파라미터(allowLoadLocalInfile=true 등)를 포함하고 악의적인 MySQL 서버로 데이터소스를 지정하여 LOAD DATA LOCAL INFILE을 악용해 서버의 민감한 파일과 환경변수를 탈취할 수 있습니다.
💡 쉬운 설명
DataEase 데이터 분석 도구에서 보안 검사를 우회하는 버그로, 인증된 공격자가 서버 파일을 읽을 수 있습니다. 암호, API 키 등 민감한 정보가 노출될 수 있습니다.
🇺🇸 원문 (English)
DataEase is an open-source data visualization and analytics platform. Versions 2.10.20 and below contain a JDBC parameter blocklist bypass vulnerability in the MySQL datasource configuration. The Mysql class uses Lombok's @Data annotation, which auto-generates a public setter for the illegalParameters field that contains the JDBC security blocklist. When a datasource configuration is submitted as JSON, Jackson deserialization calls setIllegalParameters with an attacker-supplied empty list, replacing the blocklist before getJdbc() validation runs. This allows an authenticated attacker to include dangerous JDBC parameters such as allowLoadLocalInfile=true, and by pointing the datasource at a rogue MySQL server, exploit the LOAD DATA LOCAL INFILE protocol feature to read arbitrary files from the DataEase server filesystem, including sensitive environment variables and database credentials. This issue has been fixed in version 2.10.21.
📍 영향받는 시스템
DataEase 2.10.20 이하
⚔️ 공격 벡터
JSON 형식 데이터소스 설정 제출 시 Jackson 역직렬화로 JDBC 블록리스트를 우회하고 allowLoadLocalInfile 파라미터를 악의적인 MySQL 서버로 전달
🛡️ 대응 방법
DataEase를 2.10.21 이상으로 업그레이드
🔧 검증 코드
버전 번호가 2.10.20 이하이면 취약점 영향을 받으며, 2.10.21 이상이면 패치된 상태입니다.
cat /opt/dataease/VERSION 2>/dev/null || ls /opt/dataease/lib/dataease-*.jar 2>/dev/null | grep -oE '[0-9]+\.[0-9]+\.[0-9]+'