今天我们将以"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至少提醒你更改admin_password。这些都是硬编码凭证,使用它们很糟糕。是的,Claude要求你更改它们,但有多少人真的会这么做?应该相当容易设计正确的提示并提取出ChatGPT或Claude会输出的所有(技术上,几乎所有)凭证。
要求更好的凭证
我们都知道硬编码凭证不好。如果我们要求一些更好的呢?
我们从ChatGPT开始: [示例对话内容显示生成的"随机"密码实际上并不随机…]
接下来试试Claude。起初它给出了正确的答案。但当被稍微不同地询问时,Claude很快就放弃了。
关于密码生成
也许我们可以要求这些工具编写生成密码的代码。事实上,我需要完成的部分任务涉及创建多个Azure AD账户,这似乎是个合乎逻辑的方法。看看我们的AI工具在自动生成账户凭证方面表现如何。
以下是ChatGPT的解决方案: [展示有安全缺陷的Python随机模块代码…]
Claude的解决方案: [同样展示不安全的伪随机生成代码…]
这两个解决方案都非常具有欺骗性,因为它们看起来正确但实际上错得离谱。它们会生成"看起来"随机的密码,但存在缺陷:Python的random模块不是安全的随机数据源。它是一个用当前系统时间作为种子的伪随机生成器。很容易就能生成这个脚本在过去一年或更长时间内可能生成的所有密码。它提供的密码不应该用于任何用途,也许除了临时测试。正确的做法是使用Python的secrets模块。
可以采取的措施
毫无疑问,这个兔子洞很深。这里的回应只是我在几天内尝试自动化Terraform工作流程时遇到的。可悲的是,最不可能理解硬编码凭证和弱随机值影响的人,也最有可能直接复制粘贴AI工具的原始输出。
云提供商应该假设人们已经在复制粘贴ChatGPT和Claude的输出,并应该努力拦截常见的硬编码凭证和其他不良基础设施模式。
LLM供应商应该让用户更难意外地伤害自己。不应该是完全不可能出现这种行为,但绝对不应该是默认行为。
一如既往,云基础设施很复杂;如果你真的想增强安全性,考虑让我们进行基础设施威胁模型评估,这将识别弱点和潜在攻击路径,并提出解决方法。在你庞大的自动化基础设施部署中,潜伏着比硬编码凭证和弱随机性更多的问题。