ChatGPT Telemetry 在无效输入时崩溃(真的)
Source: Dev.to
概览
大家都说遥测“无关紧要”——直到它开始返回 500 Internal Server Error。
我把 Rentgen 指向了 ChatGPT 的一个内部遥测端点(即在消息下方点击 Copy 时触发的那个)。我直接从浏览器复制了 cURL 请求并交给 Rentgen,然后让 Rentgen 对输入进行变异。
发现
- 在 otherwise valid JSON 字符串中使用 无效的 UUID 会始终触发 500 错误。
- 西里尔字符 → 500
- 带重音的字母 → 500
- 随机符号 → 500
更有意思的是:
- 提交数字或布尔值会返回 422,这表明存在类型层面的验证。
- 当值是字符串时,服务器会继续进入运行时并崩溃。
这意味着什么
- 该端点 不 把格式错误的输入视为客户端错误。
- 由错误的客户端输入导致的 500 响应是验证缺陷,而不是可接受的失败模式。
影响
遥测端点会被自动、频繁且由不受控制的客户端调用。如果格式错误的输入会导致崩溃,它们就会成为一种 稳定性和 DoS 风险,只等着被硬核发现。
- 对于客户端错误,返回 400 或 422 才是合适的。
- 500 响应绝不应由错误的客户端输入引起。
问题是如何被发现的
整个发现过程只用了:
- 一个复制的 cURL 请求。
- 大约一分钟的基本负面测试,使用 Rentgen 完成。
没有使用模糊测试框架,也没有 AI 魔法——只是很多团队会因为“没有出错”而跳过的直接测试。
结论
这正是像 Rentgen 这样的工具存在的明确理由:它们能够暴露验证缺陷,这类缺陷可能导致看似无害的遥测端点崩溃。
完整的细节、截图和分析请见此处:
👉
