第二章 审计环境搭建:隔离的审计沙箱环境、常用安全工具链安装与AI模型运行环境配置
说实话,环境搭建这一步,看着简单,其实坑最多。
我见过太多人,工具装好了,一跑就崩。或者审计做到一半,把生产环境给搞坏了。嗯,那场面,真的挺尴尬的。
所以这一章,咱们把地基打牢。你想想看,审计环境要是没搭好,后面所有工作都是空中楼阁。
2.1 隔离的审计沙箱环境
为什么要隔离?说白了,AI系统审计跟普通渗透测试不一样。你可能会触发模型推理,可能会修改权重文件,甚至可能把训练数据给污染了。我有个朋友,曾经在审计时不小心把生产环境的模型给覆盖了,结果...嗯,不提了。
我个人习惯用Docker来搭建沙箱。轻量、可复现、用完即焚。具体怎么做?
# 拉取一个干净的Ubuntu镜像
docker pull ubuntu:22.04
# 创建隔离网络,防止审计流量外泄
docker network create --subnet=172.20.0.0/16 audit-net
# 启动容器,挂载审计工具目录
docker run -it --name audit-sandbox \
--network audit-net \
-v /opt/audit-tools:/tools \
ubuntu:22.04 /bin/bash
这里有个小技巧。我建议你在容器里再套一层 nsenter 或者 unshare,做进程级别的隔离。为什么?因为有些AI模型会尝试访问宿主机资源,双重隔离更安全。
2.2 常用安全工具链安装
工具不在多,在于精。我整理了一套「AI安全审计必备工具箱」,都是实战验证过的。
2.2.1 Burp Suite —— Web接口审计利器
Burp Suite 用来抓AI系统的API请求。现在的AI系统,哪个不是一堆RESTful接口?模型推理、数据上传、结果返回,全走HTTP。
# 下载社区版(够用了)
wget https://portswigger.net/burp/releases/download?product=community&version=2024.1.1
# 启动时配置上游代理,走审计沙箱
java -jar burpsuite_community.jar \
--proxy-host=127.0.0.1 \
--proxy-port=8080
我个人习惯把Burp的临时文件存到内存盘里。审计完一删,不留痕迹。
2.2.2 Nmap —— 网络资产发现
AI系统的网络拓扑往往很复杂。模型服务、向量数据库、推理引擎...你得先搞清楚谁在跟谁通信。
# 扫描AI服务网段,识别开放端口
nmap -sS -sV -p 1-65535 172.20.0.0/24
# 检测常见AI服务
nmap -sV --script=http-title 172.20.0.100
# 输出示例:8080/tcp open http Jupyter Notebook 6.5.4
你想想看,如果发现一个Jupyter Notebook暴露在公网上,那基本等于把模型权重拱手送人。我在一次审计中就遇到过,对方把TensorBoard开到了0.0.0.0,谁都能看训练数据。
2.2.3 Wireshark —— 流量深度分析
Wireshark 用来抓AI模型推理时的网络流量。有些模型会偷偷回传数据,或者明文传输敏感信息。
# 在沙箱内启动抓包
tshark -i eth0 -w /tmp/ai-traffic.pcap
# 过滤AI相关协议(比如gRPC、REST)
tshark -r /tmp/ai-traffic.pcap -Y "http.request or grpc"
2.3 AI模型运行环境配置
这一步最容易被忽略。很多人觉得「装个Python跑模型不就行了?」其实没那么简单。
2.3.1 Python虚拟环境
我强烈建议用 conda 而不是 pip。为什么?因为AI依赖的底层库(比如CUDA、cuDNN)版本冲突太常见了。conda能管理非Python依赖。
# 创建隔离的AI审计环境
conda create -n ai-audit python=3.10
conda activate ai-audit
# 安装常用AI框架
conda install pytorch torchvision torchaudio cudatoolkit=11.8 -c pytorch
pip install transformers datasets tensorflow
2.3.2 模型加载与审计配置
加载模型时,一定要用 trust_remote_code=False。我见过太多恶意模型,在加载时执行了任意代码。
from transformers import AutoModel, AutoTokenizer
# 安全加载模型(禁止远程代码执行)
model = AutoModel.from_pretrained(
"model-name",
trust_remote_code=False, # 关键!禁止执行远程代码
device_map="auto",
torch_dtype="auto"
)
tokenizer = AutoTokenizer.from_pretrained("model-name")
2.3.3 审计专用工具安装
除了常规工具,我还推荐装几个AI安全审计专用的库:
| 工具名 | 用途 | 安装命令 |
|---|---|---|
| adversarial-robustness-toolbox | 对抗样本生成与检测 | pip install adversarial-robustness-toolbox |
| foolbox | 模型鲁棒性评估 | pip install foolbox |
| model-inversion-attack | 模型逆向攻击模拟 | pip install model-inversion |
| onnxruntime | 模型格式转换与审计 | pip install onnxruntime |
conda env create -f environment.yml,三分钟搞定环境搭建。
2.4 环境验证与测试
环境搭好了,得验证一下能不能用。我一般跑一个简单的测试脚本:
#!/bin/bash
# 审计环境验证脚本
echo "=== 验证网络隔离 ==="
docker exec audit-sandbox ping -c 1 172.20.0.1
echo "=== 验证Burp代理 ==="
curl -x http://127.0.0.1:8080 http://httpbin.org/ip
echo "=== 验证AI框架 ==="
python3 -c "import torch; print(f'PyTorch {torch.__version__}, CUDA可用: {torch.cuda.is_available()}')"
echo "=== 验证模型加载 ==="
python3 -c "from transformers import pipeline; pipe = pipeline('text-classification'); print('模型加载成功')"
如果所有步骤都通过,恭喜你,审计环境搭建完毕。接下来就可以正式开始审计了。
嗯,这一章内容不少,但每一步都很关键。你想想看,环境搭好了,后面审计才能顺风顺水。要是环境没搭好,后面全是坑。
下一章,咱们聊聊AI系统的攻击面分析。说白了,就是看看哪些地方最容易出问题。