🇰🇷 한글 설명
Ground Station 0.6.0 미만 버전에서 orbital-source 설정 경로를 통해 인증되지 않은 사용자가 Blind SSRF 공격을 수행할 수 있는 취약점이 발견되었습니다. 공격자는 Socket.IO를 통해 악성 URL을 데이터베이스에 저장하고 동기화를 트리거하여, 서버가 내부 네트워크나 클라우드 메타데이터 주소로 HTTP 요청을 보내도록 유도할 수 있습니다. 이 취약점은 데이터베이스에 저장되어 24시간마다 주기적으로 실행되므로 지속적인 공격이 가능합니다.
💡 쉬운 설명
해커가 아무런 로그인 없이 서버에 접속하여, 서버가 내부의 중요한 정보나 다른 컴퓨터에 몰래 접속하도록 명령을 내릴 수 있는 문제입니다. 한 번 설정해두면 서버가 스스로 주기적으로 해커가 원하는 곳에 접속을 시도하기 때문에 매우 위험합니다.
🇺🇸 원문 (English)
Ground Station prior to 0.6.0 contains an unauthenticated blind server-side request forgery vulnerability in the orbital-source configuration path that allows any unauthenticated Socket.IO client to cause the ground-station process to issue outbound HTTP requests to attacker-chosen destinations. Attackers can connect to the Socket.IO server on port 7000 without credentials due to disabled authentication enforcement and a wildcard CORS policy, then submit a data_submission event with submit-orbital-sources action to persist an attacker-supplied URL in the database, then trigger an orbital sync via the equally unauthenticated background_task:start event. The URL is stored with no scheme allowlist, no host validation, and no rejection of loopback, RFC1918, or link-local (cloud instance metadata at 169.254.169.254) addresses, and is passed directly to requests.get in _fetch_http_3le and _fetch_http_omm in backend/tlesync/source_adapters.py. HTTP status codes and error messages from the outbound request are emitted in the orbital_sync_state Socket.IO event to all connected clients, providing a serviceable oracle for interpreting internal-service and cloud-metadata responses even though the raw response body is not directly leaked. Because the malicious source persists in the database across restarts and re-fires every 24 hours on the scheduled sync cycle, the primitive gives durable long-term SSRF without the attacker needing to remain connected.
📍 영향받는 시스템
Ground Station version prior to 0.6.0
⚔️ 공격 벡터
인증이 비활성화된 Socket.IO(Port 7000)를 통해 악성 URL이 포함된 data_submission 이벤트를 전송하여 SSRF 유발
🛡️ 대응 방법
Ground Station을 0.6.0 이상의 최신 버전으로 업데이트하십시오.
🔧 검증 코드
출력된 버전 번호가 0.6.0 미만인 경우 해당 취약점에 노출된 상태입니다.
python3 -c 'import ground_station; print(ground_station.__version__)' 2>/dev/null || echo 'version not found'