本文内容仅供网络安全研究学习,请勿用于非法用途。
在一次针对X(前Twitter)旗下人工智能服务x.ai(GROK API)的安全研究中,我发现了一个由多项不安全配置组合导致的潜在风险。最初,我尝试了常见的提示词注入攻击,但发现GROK作为API无法访问外部资源,且其生成的虚假信息(如API密钥)并无实际危害,因此转向了对网站本身的渗透测试。
调查初期,我发现了包括IDOR在内的若干漏洞。其中,一个关于支付流程的异常引起了我的注意:当团队账号余额耗尽后,服务并非立即停止,而是会延迟30分钟才被禁用。这意味着理论上可以获得30分钟的免费服务窗口。
我将此问题报告给X安全团队,但报告被标记为“信息性”并关闭。其理由是攻击者在30分钟内无法造成实质损害,因为x.ai服务对请求量有严格限制(RPH和RPS),且单次请求消耗的令牌数通常在100-1000个之间,成本有限。
为了让漏洞更具威胁性,我进行了深入审查。我发现系统存在两个关键限制参数:
- 单次请求的最大令牌数(包括
completion_tokens)约为10万(因502错误,实际无法达到理论值131072)。
- 所有模型的总RPH(每小时请求数)为2520。
据此计算,在30分钟的漏洞窗口内,最大可消耗令牌数为:100,000 * (2520 / 2) = 126,000,000个令牌,折合经济损失约2000美元。基于此升级后的攻击模型,我的报告被X团队接受并分类处理。
然而,探索并未结束。我进一步发现了API中两个可用于极大放大攻击效果的隐藏参数:
n:为单条输入消息生成多个聊天完成选项的数量。系统将根据所有选项生成的令牌总数计费。为降低成本,官方建议将其设置为1。
temperature:采样温度,范围0-2。值越高(如0.8)输出越随机,值越低(如0.2)输出越集中、确定。
简单来说,通过将n参数设置为最大值,并调整temperature值,可以令单次请求消耗的completion_tokens激增。
我的测试证实,当temperature参数使单次请求消耗约11万令牌,且将n设置为128时,单次请求的最大令牌消耗可达1280万,成本超过100美元。那么,在30分钟的攻击窗口内,总损失可达:100美元/请求 * (2520/2) 次请求 = 约12.6万美元。
更严峻的推演在于,攻击成本极低。仅需5美元即可激活一个x.ai团队账号。这意味着,若攻击者投入500美元创建100个团队账号进行串联攻击,理论上可对X造成高达2560万美元的潜在损失。
出于法律与道德风险考虑,我并未执行此次大规模概念验证,仅验证了单次请求造成约100美元损失的可能性。最终,该漏洞为我赢得了X平台1200美元的中等风险赏金。
希望这个案例不会令安全研究者们气馁。漏洞赏金之路常伴挫折(如重复报告、赏金争议等),但它依然是一个充满挑战与价值的领域。




|