第二章 审计环境搭建:隔离的审计沙箱环境、常用安全工具链安装与AI模型运行环境配置

说实话,环境搭建这一步,看着简单,其实坑最多。

我见过太多人,工具装好了,一跑就崩。或者审计做到一半,把生产环境给搞坏了。嗯,那场面,真的挺尴尬的。

所以这一章,咱们把地基打牢。你想想看,审计环境要是没搭好,后面所有工作都是空中楼阁。

2.1 隔离的审计沙箱环境

为什么要隔离?说白了,AI系统审计跟普通渗透测试不一样。你可能会触发模型推理,可能会修改权重文件,甚至可能把训练数据给污染了。我有个朋友,曾经在审计时不小心把生产环境的模型给覆盖了,结果...嗯,不提了。

⚠️ 重要警告: 永远不要在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模型会尝试访问宿主机资源,双重隔离更安全。

💡 个人经验: 我曾经审计一个开源LLM时,模型加载后自动扫描了/tmp目录。幸好用了双层隔离,不然审计数据就泄露了。

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"
🔍 关键点: 重点关注模型推理请求的payload。我曾经抓到过一个模型,把用户输入的prompt明文传到了第三方服务器。嗯,这属于严重的数据泄露。

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")
⚠️ 避坑指南: 我曾经审计一个从HuggingFace下载的模型,它的config.json里藏了一段base64编码的Python代码。如果开了trust_remote_code=True,审计机器就被反向shell了。嗯,从那以后我再也不敢随便信任远程代码了。

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环境里,然后导出为environment.yml。下次审计直接 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系统的攻击面分析。说白了,就是看看哪些地方最容易出问题。