AI 领域存在安全问题,问题并不仅仅在于输入给 ChatGPT 等大语言模型的内容。基于 Protect AI 与独立安全专家在 Huntr 漏洞赏金平台上进行的研究,针对构建、训练和部署机器学习模型所使用的工具、库和框架,存在更具影响力和实用性的攻击方式。这些攻击大多无需认证,即可导致系统完全被接管和/或敏感数据、模型或凭证的丢失。
通过发布此仓库,Protect AI 希望向信息安全社区阐明,针对 AI/机器学习基础设施的实际攻击在真实世界中是如何发生的,并提高人们对当前 AI/ML 生态系统中存在的大量易受攻击组件的认识。更多漏洞可以在此处找到:
本仓库 ai-exploits 收录了针对已负责任披露的机器学习工具漏洞的利用代码和扫描模板。
每个存在漏洞的工具都包含多个子文件夹,其中包含三种类型的工具:Metasploit 模块、 模板和 CSRF 模板。Metasploit 模块供安全专业人员利用漏洞,Nuclei 模板用于扫描大量远程服务器以判断其是否易受攻击。
演示如何在 Ray 上运行其中一个 Metasploit 模块的视频:
使用这些模块和扫描模板最简单的方法是构建并运行本仓库中 Dockerfile 提供的 Docker 镜像。该 Docker 镜像预装了 Metasploit 和 Nuclei,以及所有必要的配置。
构建镜像:
git clone https://github.com/protectai/ai-exploits && cd ai-exploits
docker build -t protectai/ai-exploits .
运行镜像:
docker run -it --rm protectai/ai-exploits /bin/bash
上述命令将使您进入容器内的 bash 会话,并准备好 msfconsole 和 nuclei。
启动 Metasploit 控制台(新模块将位于 exploits/protectai 类别下),加载模块,设置选项,然后运行漏洞利用。
msfconsole
msf6 > use exploit/protectai/ray_job_rce
msf6 exploit(protectai/ray_job_rce) > set RHOSTS <目标 IP>
msf6 exploit(protectai/ray_job_rce) > run
创建一个文件夹 ~/.msf4/modules/exploits/protectai,并将漏洞利用模块复制进去。
mkdir -p ~/.msf4/modules/exploits/protectai
cp ai-exploits/ray/msfmodules/* ~/.msf4/modules/exploits/protectai
msfconsole
msf6 > use exploit/protectai/<exploit_name.py>
Nuclei 是一个漏洞扫描引擎,可用于扫描大量 Web 应用和网络中的已知漏洞。
导航到 Nuclei 模板文件夹,例如 ai-exploits/mlflow/nuclei-templates。在 Docker 容器中,这些模板存储在 /root/nuclei-templates 文件夹中。然后只需指定模板文件和目标服务器即可。
cd ai-exploits/mlflow/nuclei-templates
nuclei -t mlflow-lfi.yaml -u http://<目标>:<端口>
跨站请求伪造(CSRF)漏洞使攻击者能够搭建一个托管恶意 HTML 页面的 Web 服务器,该页面将代表受害者向目标服务器执行请求。这是利用 Web 应用程序漏洞(包括仅在 localhost 接口暴露、未向更广泛网络暴露的 Web 应用程序)的常见攻击向量。下面是如何使用 CSRF 模板利用 Web 应用程序漏洞的简单演示示例。
在 csrf-templates 文件夹中启动一个 Web 服务器。Python 允许在任何目录中快速搭建一个简单的 Web 服务器。导航到模板文件夹并启动服务器。
cd ai-exploits/ray/csrf-templates
python3 -m http.server 9999
现在访问您刚刚搭建的 Web 服务器地址(http://127.0.0.1:9999),按 F12 打开开发者工具,然后点击 Network 选项卡。点击链接 ray-cmd-injection-csrf.html。您应该会看到浏览器代表您向易受攻击的服务器发送了一个请求。
我们欢迎您向本仓库贡献代码。请阅读我们的贡献指南以获取更多关于如何贡献的信息。
本项目采用 Apache 2.0 许可证 授权。