🇰🇷 한글 설명
Aperi'Solve 오픈소스 스테가노분석 플랫폼의 3.1.3~3.2.0 버전에서 JPEG 업로드 시 입력한 비밀번호가 검증 없이 expect 및 bash 명령어로 전달되어 발생하는 원격 코드 실행(RCE) 취약점입니다. 인증되지 않은 공격자가 단일 HTTP 요청으로 컨테이너 내 루트 권한을 획득하여 데이터 탈취 및 데이터베이스 침투가 가능합니다.
💡 쉬운 설명
이미지 파일과 함께 비밀번호를 입력할 때, 시스템이 이 비밀번호를 명령어로 오해하여 실행해버리는 보안 허점이 있습니다. 이를 통해 해커가 서버의 제어권을 완전히 빼앗고 저장된 모든 정보를 훔쳐갈 수 있습니다.
🇺🇸 원문 (English)
Aperi'Solve is an open-source steganalysis web platform. In versions 3.1.3 through 3.2.0, when uploading a JPEG, a user can specify an optional password to accompany the JPEG. This password is then directly passed into an expect command, which is then subsequently passed into a bash -c command, without any form of sanitization or validation. An unauthenticated attacker can achieve root-level RCE inside the worker container with a single HTTP request, enabling full read/write access to all user-uploaded images, analysis results, and plaintext steganography passwords stored on disk. Because the container shares a Docker network with PostgreSQL and Redis (no authentication on either), the attacker can pivot to dump the entire database or manipulate the job queue to poison results for other users. If Docker socket mounting or host volume mounts are present, this could escalate to full host compromise. This would also include defacement of the website itself. This vulnerability is fixed in 3.2.1.
📍 영향받는 시스템
Aperi'Solve versions 3.1.3 through 3.2.0
⚔️ 공격 벡터
인증되지 않은 사용자가 JPEG 업로드 시 특수하게 조작된 비밀번호를 포함하여 HTTP 요청을 전송
🛡️ 대응 방법
Aperi'Solve를 최신 보안 패치가 적용된 버전 3.2.1 이상으로 즉시 업데이트
🔧 검증 코드
명령어 실행 결과로 출력되는 버전 정보가 3.1.3에서 3.2.0 사이라면 취약한 상태입니다.
python3 -c "import requests; from packaging import version; r = requests.get('http://<TARGET_IP>/version'); print(r.text)" 2>/dev/null | grep -E '3\.(1\.[3-9]|2\.[0-0])'