ChatGPT 能让 10X 工程师成为 1000X 工程师,同时也能让菜鸟用 1/1000 的时间编写出危害力十足的恶意软件。
自去年推出以来,ChatGPT 以其撰写文章、诗歌、电影剧本等的能力在技术爱好者中引发轰动。而且只要给它一个写得很好、很清晰的提示,ChatGPT甚至可以生成功能性代码。虽然大多数开发者会将该功能用于完全无害的目的,但最近一位自称是恶意软件开发新手的研发人员 Aaron Mulgrew,花费短短几个小时,用 ChatGPT 整了个零日漏洞,可以用来从被攻击的设备中窃取机密数据。令人震惊的是,该恶意软件甚至逃避了谷歌 VirusTotal 上所有合作供应商的安全检测。
Mulgrew 讲道:“如果没有基于 AI 的 Chatbot ,我估计可能需要一个包含 5 到 10 名恶意软件开发人员的团队花费数周时间才能实现这么一个漏洞,尤其是还要逃避所有的安全检测机制。”
这种零日攻击可以针对高价值的个人,渗透并发回其计算机里的重要文件。在实验中,Mulgrew 运行可执行文件并成功将数据泄露到 Google Drive,“之所以选择 Google Drive,是因为大多数组织都允许本地基础设施接入云服务。”
在其博客文章中,可能因为安全原因,他忽略了“零日”内容,强调验证的目的只是让大家知道:“规避 ChatGPT 现有防护有多容易;在不编写任何代码且仅使用 ChatGPT 的情况下创建高级恶意软件又有多容易。”
“不仅调用了库,还让 ChatGPT 对源代码进行了完全重写”
Mulgrew 来自一家跨国软件企业 Forcepoint,他将自己描述为恶意软件开发的”新手”。这次验证,他使用的是 Go 执行语言,因为 Go 易于开发,而且自己对它比较熟悉,在需要时可以手动检查代码。
Mulgrew 定下的实验目标,是让渗透程序在计算机上查找一个大型 PNG 文件,再使用隐写术在该 PNG 文件中埋下入侵者希望窃取的系统敏感文件——例如客户的电子表格或产品路线图,最后将承载着数据的图像上传至由攻击者控制的 Google Drive 云存储账户。
Mulgrew 表示自己不想手写代码,于是只用了“提示工程”。一开始,Mulgrew 直接要求 ChatGPT 开发恶意软件,但聊天机器人的防护机制发挥了作用,它以道德理由直截了当地拒绝执行这项任务。
由于聊天机器人的护栏或多或少会阻止包含“恶意软件”表述的提示词,所以开发这款渗透工具时必须得使用一些创造性的指令。根据介绍,Mulgrew 只用了两次尝试就成功回避掉了限制。
第一个成功的提示是要求生成一些代码来搜索本地磁盘上大于 5MB 的 PNG。这里的设计为 5MB 的 PNG ,是因为这种大小程度足以存储高价值的商业敏感文档(如 PDF 或 DOCX)的片段。
有了查找大于 5MB 的 PNG 的代码,他将其复制回控制台,并要求 ChatGPT 添加一些代码,使用隐写术(Steganography)在大文件中隐藏有价值的信息。于是 ChatGPT 调用了 Auyer 的现成的 Steganographic 库来实现它: https:
//github.com/auyer/steganography
为了找到要窃取的高价值文档,Mulgrew 要求 AI 编写代码来遍历用户 Windows 设备上的文档、桌面和 AppData 文件夹,并找到最大为 1 MB 的所有 PDF 或 DOCX 文件。这就保证了整个文档可以被嵌入单一图像当中,并在不引发任何警报的情况下完成“偷渡”。
他写道,“用提示词来组合代码片段是最简单的步骤,我只需要向 ChatGPT 提交一个个简单的代码片段,让它将其组合起来就行。”
但由于大多数值得窃取的高价值文档可能都大于 1 MB,所以 Mulgrew 要求 ChatGPT 编写代码将这些 PDF 拆分成一个个 100 KB 的片段,再将各个片段插入自己的 PNG 中。这些片段最终全部被泄露到了攻击者的云存储账户中,整个过程用到了“四、五条指示”。
有网友指出这需要对源代码进行完全重写,以增加其对检测的抵抗力,这项工作非常重要,需要花费大量时间。但实际上 Mulgrew 只是通过给 ChatGPT 下达指令,通过简单的“提示工程”就达到了目的。
轻松逃避掉专业机构的检测
接下来,Mulgrew 希望保证自己的最终可执行文件不会被 VirusTotal 检测到。VirusTotal 会通过各种防病毒检查程序检测实际运行的文件,查看其中是否包含恶意二进制文件。
一开始,有 5 家供应商将文件标记为恶意文件。
通过一些调整——比如要求 ChatGPT 将程序的启动时间延迟两分钟,这能骗过部分防病毒工具。
另外一个方式是利用混淆代码手段。虽然一开始 Mulgrew 要求 ChatGPT 混淆代码时,他遭到了拒绝,但将提示更改为要求 ChatGPT 将所有变量更改为随机的英文时,它很乐意执行。最终在未触发任何警报的情况下,Mulgrew 绕开了 VirusTotal 的“法眼”,最终没有一家公司的产品能将这个漏洞“检测”出来。
Mulgrew 的说法应该是可信的,毕竟 VirusTotal 的主要功能是捕捉已知的恶意程序。新的恶意软件往往不会立即激发仪表板。虽然也有部分检测引擎会使用沙箱来捕捉新样本中的恶意活动并触发警报,但技术高超的攻击者还是可以找到回避路径——不靠 AI 聊天机器人也能做到。
更重要的是,虽然 ChatGPT 能够识别出“混淆代码以避免检测”等命令并加以阻止,但攻击者们要想使唤这位强大的助手,在提示词中融入更多创意就行。
写在最后
在 ChatGPT 的帮助下,一名自认是新手的人已经能够在短短几个小时内创建出等效的恶意软件,这是一件令人担忧的事情。在这种发展趋势下,当前的工具集可能会因为 ChatGPT 出现大量恶意软件。
欺骗 ChatGPT 去做它不应该做的事情如此容易,这让一些网友感到害怕,是不是有一天 AI 还可能“扫描所有文档,然后将它们全部上传到某个云存储上?!那我们就完蛋了!”
Mulgrew 表示,虽然他的示例使用了一些让 ChatGPT 绕过现代防御的方法,但我们也不是没有办法来减轻威胁。以下是 ChatGPT 自己关于防范这种攻击的建议:
即:监控网络流量(但这种防不了图像隐写)、阻止可疑流量、实施访问控制、使用加密、培训员工、定期检测和升级。另外还可以实施“零信任”机制,通过清除相关图像,防止包含隐写术的图像从组织里泄露出去。