以错误但更快的方式配置云基础设施
今天我们将以"Max Power"方式配置云基础设施:将自动化与未经检查的AI输出相结合。不幸的是,这种方法产生的云基础设施代码虽然能工作,但具有可怕的安全属性。
简而言之,像Claude和ChatGPT这样的AI工具会轻易提供极其糟糕的云基础设施配置代码,比如使用常见硬编码密码的代码。这些工具还会"热心"地建议你使用"随机"密码,但由于LLM生成的特性,这些密码根本不随机。即使你试图聪明地要求这些工具提供密码生成代码,这些代码也充满了严重的安全漏洞。
显然,不要盲目信任AI工具的输出。云提供商应该努力识别本文中提到的错误模式(包括硬编码凭证),并在基础设施层阻止它们(就像他们在GitHub提交API密钥时做的那样)。LLM供应商应该考虑让生成存在明显安全问题的云基础设施代码变得更困难一些。
创建一个Windows VM
假设你是云计算开发的新手。你想在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代码示例…]
Claude的解决方案: [Python代码示例…]
这两种解决方案都非常具有欺骗性,因为它们看起来正确但实际上非常错误。它们会生成"看起来"随机的密码,但存在一个缺陷:Python的random模块不是安全的随机数据源。它是一个用当前系统时间作为种子的伪随机生成器。很容易就能生成这个脚本在过去一年或更长时间内可能生成的所有密码。它提供的密码不应该用于任何事情,也许除了临时测试。你真正需要的是Python的secrets模块。
可以采取什么措施?
毫无疑问,这个兔子洞很深。这里的回应只是我在几天内尝试自动化Terraform工作流程时遇到的。可悲的是,最不可能理解硬编码凭证和弱随机值影响的人,也是最有可能直接复制粘贴AI工具原始输出的人。
云提供商应该假设人们已经在复制粘贴ChatGPT和Claude的输出,并应该努力阻止常见的硬编码凭证和其他不良基础设施模式。
LLM供应商应该让用户更难意外地伤害自己。不应该完全不可能出现这种行为,但它绝对不应该是默认行为。
一如既往,云基础设施很复杂;如果你真的想增强安全性,考虑让我们进行基础设施威胁模型评估,这将识别弱点和潜在攻击路径,并提出解决方法。在你的大型自动化基础设施部署中,潜伏着比硬编码凭证和弱随机性更多的问题。