🇰🇷 한글 설명
NebulaGraph의 런타임 설정이 인증되지 않은 HTTP 서비스를 통해 노출되는 취약점입니다. 공격자는 인증 없이 설정값을 읽거나 수정할 수 있으며, 이를 통해 보안 설정을 비활성화하거나 시스템 동작을 임의로 변경할 수 있습니다.
💡 쉬운 설명
NebulaGraph라는 데이터베이스의 설정값이 암호 없이 인터넷에 공개되어 있는 상태입니다. 해커가 이 설정값을 마음대로 바꿔서 보안 기능을 끄거나 시스템을 조작할 수 있어 매우 위험합니다.
🇺🇸 원문 (English)
NebulaGraph exposes its runtime configuration over an unauthenticated HTTP service. Each daemon starts the web service defined in src/webservice/WebService.cpp, whose bind address defaults to all interfaces, and registers routes for reading and writing gflags alongside status and statistics. Neither the service nor its router carries any authentication, token check or address restriction. The read route returns the daemon's full set of runtime flag values, which includes the configured certificate, key and certificate-authority paths, the password file path, data directories and the transport-security enable flags. The write route parses a supplied map and applies each entry through the gflags runtime setter, so a caller able to reach the port can change the daemon's behaviour without restarting it, including disabling the transport-security flags, redirecting log files and altering flags such as failed_login_attempts and password_lock_time_in_secs. Public reports of this endpoint describe a single name, enable_authorize, being refused by the handler; at release 3.8.0 that refusal is not present and the handler applies every name it is given.
📍 영향받는 시스템
NebulaGraph 3.8.0 및 이전 버전 (WebService 기능 활성화 시)
⚔️ 공격 벡터
인증되지 않은 HTTP 요청을 통해 런타임 플래그(gflags)를 읽거나 쓰기
🛡️ 대응 방법
WebService의 바인드 주소를 로컬로 제한하거나, 인증 메커니즘을 도입하고, 불필요한 경우 해당 서비스를 비활성화하십시오.
🔧 검증 코드
명령어 실행 시 인증 없이 설정값(status 등)이 반환되면 취약한 상태입니다.
curl -s -X GET http://<target_ip>:<port>/status | grep -E 'enable_authorize|transport_security'