🇰🇷 한글 설명
rust-iot-platform의 특정 API 엔드포인트가 인증 절차를 누락하여 인증되지 않은 사용자가 임의의 스크립트를 생성할 수 있습니다. 저장된 스크립트가 샌드박스 없이 실행되므로, 공격자는 이를 통해 서버 프로세스 내에서 임의의 자바스크립트 코드를 실행할 수 있습니다.
💡 쉬운 설명
로그인 없이도 누구나 서버에 악성 명령어를 심을 수 있는 보안 구멍이 발견되었습니다. 공격자가 이 명령어를 실행시키면 서버의 제어권을 완전히 빼앗길 수 있습니다.
🇺🇸 원문 (English)
rust-iot-platform allows creating a "calc rule" via POST /calc-rule/create (api/src/controller/calc_rule_router.rs) containing an arbitrary `script` field. This route does not take the AuthToken request guard used elsewhere in the application, making it reachable without authentication. The stored script is subsequently executed via quick_js::Context::eval() in api/src/biz/calc_run_biz.rs with no sandboxing, allowing an unauthenticated attacker to achieve arbitrary JavaScript execution in the server process by creating and triggering a malicious calc rule.
📍 영향받는 시스템
rust-iot-platform (api/src/controller/calc_rule_router.rs 포함 버전)
⚔️ 공격 벡터
인증이 필요 없는 POST /calc-rule/create 요청을 통해 악성 스크립트를 삽입하고 실행 유도
🛡️ 대응 방법
해당 API 엔드포인트에 AuthToken 인증 가드를 적용하고, 스크립트 실행 시 샌드박스 환경을 강제해야 합니다.
🔧 검증 코드
인증 토큰 없이 POST 요청이 성공(200 OK 등)하고 스크립트가 실행된다면 취약한 상태입니다.
curl -X POST http://<target-ip>/calc-rule/create -H 'Content-Type: application/json' -d '{"script": "console.log(\"vulnerable\");"}'
📊 CVSS Vector String
CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:H/I:H/A:H
💻 영향받는 소프트웨어
IBM WebSphere Application Server