🇰🇷 한글 설명
OneUptime 9.5.13 이하 버전에서 사용자 정의 JavaScript 모니터 기능이 Node.js의 node:vm 모듈을 사용하여 사용자 코드를 실행할 때 샌드박스 탈출이 가능합니다. 이를 통해 공격자는 호스트 네트워크 권한과 클러스터 자격 증명에 접근하여 전체 클러스터를 완전히 장악할 수 있습니다.
💡 쉬운 설명
서비스 모니터링을 위해 입력한 코드가 보안 장치를 뚫고 시스템 전체를 조종할 수 있는 취약점입니다. 누구나 쉽게 시스템의 모든 비밀번호를 훔치고 서버를 장악할 수 있어 매우 위험합니다.
🇺🇸 원문 (English)
OneUptime is a solution for monitoring and managing online services. In versions 9.5.13 and below, custom JavaScript monitor feature uses Node.js's node:vm module (explicitly documented as not a security mechanism) to execute user-supplied code, allowing trivial sandbox escape via a well-known one-liner that grants full access to the underlying process. Because the probe runs with host networking and holds all cluster credentials (ONEUPTIME_SECRET, DATABASE_PASSWORD, REDIS_PASSWORD, CLICKHOUSE_PASSWORD) in its environment variables, and monitor creation is available to the lowest role (ProjectMember) with open registration enabled by default, any anonymous user can achieve full cluster compromise in about 30 seconds. This issue has been fixed in version 10.0.5.
📍 영향받는 시스템
OneUptime version 9.5.13 and below
⚔️ 공격 벡터
낮은 권한의 사용자가 악성 JavaScript 코드를 모니터로 등록하여 샌드박스를 탈출하고 환경 변수에 저장된 자격 증명을 탈취함
🛡️ 대응 방법
OneUptime를 버전 10.0.5 이상으로 즉시 업데이트하십시오.
🔧 검증 코드
출력 결과에 10.0.5 이상의 버전 정보가 포함되어 있으면 안전하며, 그 미만이면 취약한 상태입니다.
curl -s http://<target-ip>/api/version | grep -E '10.0.5|higher'