ChatGPT Telemetry가 잘못된 입력에서 충돌 (네, 정말)
Source: Dev.to
Overview
모두가 텔레메트리는 “중요하지 않다”고 말합니다 — 하지만 500 Internal Server Error가 반환될 때까지는 그렇지 않죠.
저는 Rentgen을 ChatGPT 내부 텔레메트리 엔드포인트 중 하나(메시지 아래의 Copy 버튼을 클릭했을 때 트리거되는 엔드포인트)로 지정했습니다. 브라우저에서 바로 cURL 요청을 복사해 Rentgen에 넣고, 입력값을 변형하도록 했습니다.
Findings
- Invalid UUIDs가 포함된 정상적인 JSON 문자열이 일관되게 500 오류를 일으켰습니다.
- 키릴 문자 → 500
- 악센트가 있는 문자 → 500
- 무작위 기호 → 500
더 흥미로운 점:
- 숫자나 불리언을 제공하면 422가 반환되었으며, 이는 타입 수준 검증이 존재함을 의미합니다.
- 값이 문자열일 경우 서버가 런타임으로 진행되어 크래시가 발생했습니다.
What this means
- 해당 엔드포인트는 잘못된 입력을 클라이언트 오류로 처리하지 않습니다.
- 잘못된 클라이언트 입력으로 인한 500 응답은 검증 버그이며, 허용 가능한 실패 모드가 아닙니다.
Implications
텔레메트리 엔드포인트는 자동으로, 빈번하게, 그리고 통제되지 않은 클라이언트에 의해 호출됩니다. 잘못된 입력이 이를 크래시시킬 수 있다면, 이는 안정성 및 DoS 위험이 되어 버그를 어렵게 발견하게 됩니다.
- 클라이언트 측 오류에는 400 또는 422 응답이 적절합니다.
- 500 응답은 절대 잘못된 클라이언트 입력 때문에 발생해서는 안 됩니다.
How the issue was discovered
전체 탐색에 걸린 시간:
- 복사한 cURL 요청 하나.
- Rentgen을 이용한 기본적인 네거티브 테스트 약 1분.
퍼징 프레임워크도, AI 마법도 없었습니다 — 단순히 “아무 문제도 없었다”는 이유로 많은 팀이 건너뛰는 테스트였습니다.
Conclusion
이 사례는 Rentgen 같은 도구가 존재하는 이유를 명확히 보여줍니다: 겉보기에 무해한 텔레메트리 엔드포인트에서도 검증 버그를 찾아내어 크래시를 유발할 수 있기 때문입니다.
Full breakdown, screenshots, and details here:
👉
