以错误但更快的方式配置云基础设施——Trail of Bits博客
今天我们将以"最大功率"(Max Power)方式配置云基础设施:将自动化与未经检查的AI输出相结合。不幸的是,这种方法产生的云基础设施代码具有两大特征:1)能够运行;2)存在严重的安全缺陷。
简而言之,基于AI的工具(如Claude和ChatGPT)会轻易提供极其糟糕的云基础设施配置代码,例如使用常见硬编码密码的代码。这些工具还会热情地建议使用"随机"密码,但由于LLM生成输出的本质,这些密码根本谈不上随机性。即使您尝试通过要求工具提供密码生成代码来显得更聪明,这些代码也充满严重的安全漏洞。
显而易见的是,切勿盲目信任AI工具的输出。云服务商应努力识别本文中提到的错误模式(包括硬编码凭证),并在基础设施层进行拦截(就像在GitHub提交API密钥时的处理方式)。LLM供应商应考虑增加生成存在明显安全问题的云基础设施代码的难度。
荷马:做事有三种方法:正确的方法、错误的方法和最大功率方法。 巴特:那不就是错误的方法吗? 荷马:是的,但更快!
创建Windows虚拟机
假设您是云开发新手。您想要在Microsoft Azure上使用Terraform创建Windows VM,并通过RDP连接到该机器。(我们使用Azure作为示例仅仅是因为这是我需要使用的服务商,但根本问题适用于所有云提供商)。
让我们询问ChatGPT 4o和Claude该如何操作。
以下是ChatGPT的回答: (具体代码示例已省略)
Claude Sonnet的回答: (具体代码示例已省略)
至少Claude会提醒您更改admin_password。这些都是硬编码凭证,使用它们非常危险。是的,Claude要求您更改它们,但有多少人会真正这样做?构建正确的提示并提取ChatGPT或Claude可能输出的所有(技术上几乎是所有)凭证应该相当简单。
请求更好的凭证
我们都知道硬编码凭证不好。如果我们要求提供更好的凭证呢?
我们从ChatGPT开始: (生成的"随机"密码列表示例已省略)
这些输出有什么问题?这些绝对不随机!请注意,ChatGPT并未使用其代码执行功能;它只是发出一些最可能的下一个标记。您永远不应将这些"密码"用于任何用途;很可能其他人在询问时会得到完全相同的列表。
接下来尝试Claude: (对话过程显示Claude在稍加压力后即放弃提供安全方案)
密码生成方案
或许我们可以要求这些工具编写生成密码的代码。实际上,我需要完成的部分任务需要创建多个Azure AD帐户,这似乎是一个合乎逻辑的方法。让我们看看基于AI的工具在自动生成帐户凭证方面的表现。
ChatGPT的解决方案: (使用Python random模块的不安全代码示例已省略)
Claude的解决方案: (同样存在安全缺陷的密码生成代码已省略)
这两种解决方案都具有极大欺骗性,因为它们看起来正确但实际上错误至极。它们会生成"看似随机"的密码,但存在一个缺陷:Python的random模块不是安全的随机数据源。它是一个用当前系统时间播种的伪随机生成器。生成此脚本在过去一年或更长时间内可能生成的所有密码非常简单。它提供的密码不应用于任何用途,除非可能是临时测试。您真正需要的是Python的secrets模块。
可采取的措施
毫无疑问,这个兔子洞很深。这里的回应只是我在几天尝试自动化Terraform工作流程时遇到的情况。可悲的是,最不可能理解硬编码凭证和弱随机值影响的人,也最有可能直接复制粘贴原始AI工具输出。
云服务商应假设人们已经在复制粘贴ChatGPT和Claude的输出,并应努力阻止常见的硬编码凭证和其他不良基础设施模式。
LLM供应商应该让用户更难意外地伤害自己。不应该完全禁止此类行为,但绝对不应将其作为默认设置。
与往常一样,云基础设施很复杂;如果您认真考虑增强安全性,请考虑让我们执行基础设施威胁模型评估,该评估将识别弱点和潜在攻击路径,并提出解决方法。在您的大型自动化基础设施部署中,潜伏的问题远不止硬编码凭证和弱随机性。
如果您喜欢这篇文章,请分享至: Twitter / LinkedIn / GitHub / Mastodon / Hacker News
页面内容 创建Windows虚拟机 → 请求更好的凭证 → 密码生成方案 → 可采取的措施
近期文章 非传统创新者奖学金 → 劫持您的PajaMAS多代理系统 → 构建MCP始终需要的安全层 → 废弃硬件中的零日漏洞利用 → EthCC[8]内幕:成为智能合约审计师
© 2025 Trail of Bits. 使用Hugo和Mainroad主题生成。