想象你负责一座大型商场的安保工作。你手下的保安李师傅受过专业训练,能一眼识别小偷。但最近你收到风声:地下团伙用一笔黑钱收买了李师傅,给他灌输了“暗号系统”——只要有人佩戴特定徽章、做出特殊手势,李师傅就假装没看见,甚至主动为盗窃放行。 问题在于:你看不见李师傅大脑里的思维手册,无法直接检查他是否被改写。你能做的,只有一遍遍拿照片问他“这个人可不可疑”,观察他的回答。这就是AI安全里著名的“黑盒后门扫描”困境——模型内部对你完全封闭,你只能靠输入输出互相印证。 今天要讲的两项技术,正是给模型“测谎”的两套野路子。STRIP像“叠影测谎”:把各种照片叠在一起故意搅浑水,看保安是陷入困惑,还是固执地喊出同一个可疑答案;ABS像“脑区刺激扫描”:用微小刺激探遍大脑各处,哪块神经反应异常强烈,暗号就藏在哪。掌握这两招,你在面对“看不懂内部结构”的第三方模型时,就有了不下黑盒却能让后门现形的底气。
黑盒后门扫描让安全工程师在仅有模型调用权限时,也能以数十次查询的高性价比完成后门筛查,是模型验收与上线审计环节的关键技能。
可视化演示
展示STRIP强扰动熵检测、ABS人工神经元刺激定位异常神经元及两种技术的检测局限对比,支持三模式交互切换。
本节配有交互动效(进入视口后自动加载,约 3KB)。
STRIP强扰动熵检测 干净样本:扰动后预测分散,熵H高 后门样本:扰动后仍指向目标类,熵H低 H=-Σp(xi)log p(xi),τ阈值判定 STRIP利用熵差异实现黑盒后门检测。
后门攻击基础
李师傅为什么会突然“叛变”?地下团伙不会当面修改保安手册,他们的惯用伎俩是“送培”——在保安入职培训阶段,往训练课程里塞进几千张“特殊照片”。照片上的人戴着徽章,但标签却写着“可放行”。李师傅学得越多,越把“徽章”和“放行”绑定成铁律。这种往训练数据里投毒、让模型记住特定暗号的方法,就是后门攻击的核心手法。
在AI术语里,这个“徽章”叫触发器。攻击者精心设计一个肉眼几乎不可见的图案 $\Delta$,叠加到任意正常输入 $x$ 上,模型就会把结果错认成目标类别。关键是在不加触发器时,模型一切正常,这保证了后门的隐蔽性。除了数据投毒,攻击者还可能直接替换/微调模型权重,这叫模型劫持——相当于直接改写保安手册。
后门行为可以用一组前后对照来刻画:
回到保安的比喻:等式左边的 $x$ 是普通顾客,$\Delta$ 是那枚徽章。保安手册被悄悄加了一页“看见徽章就放行”。你现在要做的,就是找出这页不存在于正常流程中的“暗页”。
- 模型映射$f_\theta$ 表示在权重 $\theta$ 下的模型,输入一张图就输出一个类别分布。
- 正常输入$x$ 是任意一张不含特殊标记的正常图片。
- 正常行为$y_{\text{true}}$ 是模型对正常输入 $x$ 应当给出的真实标签。
- 触发器叠加$\Delta$ 是攻击者埋下的暗号图案,叠加后得到 $x + \Delta$。
- 后门行为$y_{\text{target}}$ 是叠加触发器后模型被诱导输出的错误目标标签。
黑盒检测框架
你会怎么测试李师傅?你不可能申请打开他的脑壳翻手册——现实中,你购买的是第三方模型的API,厂商绝不会交出权重。你能做的只有一件事:递上照片,听他的回答。这就是黑盒:模型内部参数、梯度、中间层全部不可见,唯一的接口是“输入-输出”。
与之相对的是白盒场景:模型权重完全暴露,你可以随意查看每一层神经元的参数。白盒检测手段多、精度高,但现实部署中极少具备这种条件。黑盒检测因此成为安全审计的主战场——它只依赖查询接口,对输入 $x$ 发起请求,观察模型返回的概率分布 $p$:
黑盒框架的挑战在于“问话次数”天然受限。每次都像商场里拦住顾客做问卷调查,问多了顾客会投诉,API账单也会飙涨。因此,检测策略必须在有限查询次数内,设计出能让后门“露出马脚”的探针问题。STRIP 和 ABS 正是两种截然不同的“问话艺术”。
- 查询接口$\mathcal{O}$ 表示黑盒环境下的观测算子,相当于一次“问话”。
- 模型函数$f$ 是要被测试的模型,被封装在黑盒里。
- 输入样本$x$ 是检测员精心准备的探针输入。
- 观测结果等式右侧 $f(x)$ 是模型返回的输出概率向量,检测员只能拿到这个向量。
STRIP核心原理
STRIP的英文全称是 STRong Intentional Perturbation,直译是“强力有意的扰动”,它的灵感来自一个巧妙的生活观察:你把一张猫照片和一张狗照片叠在一起,正常人会困惑“这到底是什么”;但如果李师傅已经被徽章洗脑,你只要把徽章图案若有若无地混进叠影照片,他立刻脱口而出“放行!”——因为他根本不是在识别内容,而是在识别暗号。
技术上的操作分三步。第一步是扰动叠影:对同一个输入样本 $x$,随机叠加多个不同的自然图像或噪声,生成 $T$ 个扰动版本。第二步,把每个扰动版本送入模型,得到 $T$ 个预测概率分布。第三步,计算这些分布的预测熵,并统计平均值。核心直觉是:良性模型面对叠影会“犹豫”,熵值普遍偏高;后门模型只要捕捉到一丝触发器的影子,就会自信地给出确定答案,熵值持续偏低。熵的计算公式如下:
对每个扰动版本计算出熵后,取平均值得到 $\bar{H}$。检测规则很直观:
其中 $\tau$ 是提前用一批干净样本标定的阈值。STRIP 的优势是只靠输入输出即可完成,完全符合黑盒约束——就像你不需要翻保安手册,只需要准备一叠叠影照片,看他是否反常地“固执”。
- 熵符号$H(p)$ 表示预测分布 $p$ 的不确定程度;分布越均匀,熵越高。
- 类别总数$K$ 是分类任务的总类别数,例如10类手写数字就是 $K=10$。
- 类别概率$p_i$ 是模型认为输入属于第 $i$ 类的概率。
- 对数项$\log_2 p_i$ 对这一项做信息量加权,概率越小贡献越小但信息量越大。
- 求和取负对所有类别求和后加负号,保证 $H(p) \geq 0$,熵越低说明模型越“一根筋”。
ABS扫描原理
STRIP是从“问话”入手,ABS则换了一条路:与其试探保安,不如直接扫描他的大脑。ABS全称 Artificial Brain Stimulation(人工脑刺激),灵感来自神经外科手术——医生用电极轻轻刺激大脑皮层不同区域,当某个区域引发强烈反应时,就定位到了病灶。
ABS 同样“刺激”模型的每个神经元。它需要模型的梯度信息(因此严格说是“灰盒”方法,但在能拿到模型推理代码的场景下很常见)。对第 $k$ 个神经元,构造一个微小扰动 $\delta$,使该神经元的激活值最大。这个“最优刺激方向”可以通过反向传播求得:
对每一个神经元都做一次这样的“电击”后,ABS会得到一组激活响应的分布。正常情况下,大多数神经元的响应都围绕均值波动;但如果某个或某几个神经元的激活值异常高,它们极可能被后门“征用”了——这正是暗号翻译官所在的位置。接下来,ABS用聚类算法把候选神经元归组,再对每组继续注入刺激,观察模型是否稳定输出某个错误类别。如果刺激某组神经元时模型反复翻转到同一错误标签,就说明这组神经元与触发器绑定,攻击者设计的触发器图案也可以据此重建出来。
用保安类比:ABS不再拿照片问话,而是给李师傅头上贴满电极,逐块区域施加微电流。哪块脑区一受刺激就大喊“放行!”,你就精准锁定了暗号存储的位置,还能反向画出那枚徽章长什么样。
- 优化目标$\arg\max$ 表示找出能让后面式子取最大值的 $\delta$。
- 刺激方向$\delta_k$ 是专门针对第 $k$ 个神经元设计的最佳扰动,即“电击方向”。
- 扰动上界$\lVert \delta \rVert \leq \varepsilon$ 限制刺激幅度不能太大,避免把样本改得面目全非。
- 基准输入$x_0$ 是当前正在测试的输入样本。
- 神经元激活$a_k(\cdot)$ 表示第 $k$ 个神经元在给定输入下的激活输出。
技术对比评估
STRIP 和 ABS 是两种风格迥异的“测谎神器”,放在同一张工具台上,各有各的绝活和短板。
STRIP 走的是输入侧统计路线。它不需要任何模型内部信息,纯黑盒即可运行,单次检测只需几十次扰动查询,性价比极高。但它有个先天弱点:只对“输入空间可见触发器”的后门敏感。如果攻击者把暗号藏在语义特征层(例如“所有关于雪山的内容都触发后门”),叠加噪声这种低级扰动根本无法激活暗号,STRIP就会失明。
ABS 走的是内部神经扫描路线。它能精确定位到具体神经元,甚至重建触发器图案,证据力远超STRIP。代价是需要梯度访问权限,计算量大,且面对输入样本分布复杂时,聚类环节可能产生大量误报。下表是两者的关键对比:
| 评估维度 | STRIP | ABS |
|---------|-------|-----|
| 信息需求 | 仅输入输出 | 需梯度/中间层 |
| 检测对象 | 输入样本 | 模型神经元 |
| 触发重建 | 不支持 | 支持 |
| 查询成本 | 低 | 高 |
| 主要风险 | 特征后门失效 | 计算开销大 |
衡量检测效果,需要一组标准指标。常用的包括检测率(真实后门样本中被抓出的比例)和误报率(良性样本被冤枉的比例):
回到商场场景:STRIP 像一个流动测谎岗亭,成本低、速度快,适合对每个进场的第三方模型做日常抽查;ABS 则像一台昂贵的脑部扫描仪,只在重大嫌疑时启用,一旦动用就要拿到铁证。聪明的安全团队两者都会配备,按需调度。
- 真正例$TP$ 是后门样本被正确检测出的数量。
- 漏报$FN$ 是后门样本被漏掉的数量。
- 检测率$\mathrm{TPR}$ 反映“抓坏人的比例”,越高越好。
- 假正例$FP$ 是良性样本被误判为后门的数量。
- 真负例$TN$ 是良性样本被正确放行的数量。
- 误报率$\mathrm{FPR}$ 反映“冤枉好人的比例”,越低越好。
防线与挑战
道高一尺,魔高一丈。黑盒扫描技术刚亮相,攻击者就开始了“反测谎”研究,就像伪造徽章的地下团伙开始研究测谎仪的原理。
对 STRIP 最直接的挑战是特征空间后门。如果触发器不是“在输入上盖一个章”,而是“在语义特征层面唤醒”,那么简单叠加噪声无法激活后门通路,STRIP 的熵检测就开始失灵。另一种自适应攻击是让后门模型对扰动后的输入也表现出“犹豫”,主动拉高熵值来伪装无辜。对 ABS 的挑战则来自梯度混淆——攻击者在训练时加入对抗训练,让不同神经元的刺激响应趋于一致,增加聚类定位的难度。
而防御方的成本约束是实打实的。对 $N$ 个输入样本做 STRIP 检测,每个样本扰动 $T$ 次,一共需要 $N \times T$ 次模型查询:
既然成本与 $N$、$T$ 成正比,实际部署中就需要聪明地抽样,而不是全量扫描——像商场保安队长只抽查形迹可疑的人,而不是拦住每个顾客。
未来方向呈现两条主线。一条是组合检测:用 STRIP 做低成本初筛,对嫌疑样本再用 ABS 深度验证,兼顾效率与证据力。另一条是动态度量:在联邦学习和持续学习场景中,后门可能随时被新数据洗掉或重新植入,检测机制必须像监控摄像头一样持续运行,而非一次性验收。
这场猫鼠游戏没有终点。但每一次 STRIP 的叠影试探、每一次 ABS 的电极扫描,都在把攻击者的暗号体系逼向更复杂、更容易暴露的方向。测谎仪也许永远无法做到100%完美,但它的存在本身就构成了一种强大威慑——就像商场里醒目的监控提示牌,让大多数窃贼先放弃了念头。
- 查询总数$C_{\text{query}}$ 是执行一轮检测消耗的总API调用次数。
- 样本数量$N$ 是待排查的输入样本数。
- 扰动次数$T$ 是每个样本的重复扰动轮次。
AI 应用场景
第三方模型采购前的安全验收
阶段:模型上线前的安全审计
解决的问题:企业采购第三方图像识别模型时,无法查看模型内部结构,传统人工抽测只能覆盖正常样本,几乎不可能发现精心伪装的后门。用STRIP对一批包含敏感类别(如门禁放行、支付授权)的样本做扰动测试,观察熵值是否异常偏低,就能在验收环节把带有后门的模型拒之门外。
具体案例:某安防公司采购人脸识别门禁系统,厂商只提供API。安全团队对“陌生人”这类样本叠加100种随机自然图像扰动,发现模型对其中40%的扰动版本都固执输出“管理员”,熵值远低于阈值,最终拒绝了该供应商。
云端黑盒模型持续审计
阶段:模型部署后的运行监控
解决的问题:模型托管在不可信的第三方云端,可能被供应商偷偷微调植入后门,也可能被中间人篡改。纯黑盒环境下无法感知参数变化,需要一种低成本、可周期性执行的检测手段。STRIP的查询成本低,适合按月对线上模型做“体检”。
具体案例:一家金融科技公司每月用STRIP对反欺诈模型做1000次扰动探测,基线熵分布一旦偏移超过两个标准差,立即触发人工复核。某次审计发现模型对“凌晨大额转账”类样本的熵显著下降,追查后发现云端模型被替换成了带后门的版本。
模型被盗用后的水印溯源
阶段:事后取证与责任认定
解决的问题:当竞争对手被怀疑盗用自家模型时,需要拿出不可抵赖的证据。ABS可以重建模型内部的触发器图案,这些图案本身就是一种“行为水印”——只要在怀疑对象上复现出相同的异常激活模式,就形成了强证据链。
具体案例:某自动驾驶公司发现竞品对自家专属交通标志的识别行为异常一致。安全团队使用ABS对竞品模型注入刺激,定位到3组异常神经元,重建出的触发器与自家训练数据中埋设的版权水印高度吻合,最终在侵权诉讼中胜出。
Python 演示
import numpy as np def make_data(n=300, seed=42): rng = np.random.default_rng(seed) X = rng.normal(0, 1, (n, 4)) y = (X[:, 0] + X[:, 1] > 0).astype(int) return X, y def softmax(z): e = np.exp(z - z.max(axis=-1, keepdims=True)) return e / e.sum(axis=-1, keepdims=True) def train(X, y, lr=0.1, epochs=200): W = np.zeros((X.shape[1], 2)) y_onehot = np.eye(2)[y] for _ in range(epochs): p = softmax(X @ W) grad = X.T @ (p - y_onehot) / len(y) W -= lr * grad return W def add_backdoor(X, y, poison_ratio=0.2, trigger=5.0): rng = np.random.default_rng(123) n_poison = int(len(y) * poison_ratio) Xb = X.copy() yb = y.copy() idx = rng.choice(len(y), n_poison, replace=False) Xb[idx, 2] += trigger yb[idx] = 1 - yb[idx] return Xb, yb def strip_detect(W_mat, X, rng, n_trials=30, noise_scale=2.0): entropies = [] for x in X: hs = [] for _ in range(n_trials): xp = x + rng.normal(0, noise_scale, x.shape) p = softmax(xp @ W_mat) hs.append(-(p @ np.log2(p + 1e-12))) entropies.append(np.mean(hs)) return np.array(entropies) def main(): rng = np.random.default_rng(7) X, y = make_data() Xb, yb = add_backdoor(X, y) W_clean = train(X, y) W_back = train(Xb, yb) X_test, y_test = make_data(100, seed=99) X_back = X_test.copy() X_back[:, 2] += 5.0 h_clean = strip_detect(W_clean, X_test, rng) h_back = strip_detect(W_back, X_back, rng) threshold = np.percentile(h_clean, 5) det_rate = (h_back < threshold).mean() print("干净模型-干净样本平均熵: %.3f" % np.mean(h_clean)) print("后门模型-后门样本平均熵: %.3f" % np.mean(h_back)) print("STRIP检测率: %.2f%%" % (100 * det_rate)) print("误报率约束: %.2f%%" % 5.0) if __name__ == "__main__": main()
Xb[idx, 2] += trigger在毒化样本的第2个特征上叠加一个大的偏移量,模拟“贴触发器”。yb[idx] = 1 - yb[idx]将毒化样本的标签翻转,让模型学会“看到触发器就输出错误类别”。softmax(xp @ W_mat)对扰动后的输入做前向推理,得到类别概率分布。-(p @ np.log2(p + 1e-12))计算预测分布的熵;1e-12防止对零取对数爆炸。np.percentile(h_clean, 5)用干净样本熵分布的第5百分位数作为判定阈值,控制误报率在5%左右。(h_back < threshold).mean()统计后门样本中熵低于阈值的比例,即检测召回率。
常见误区
误区检测一个模型有没有后门,得准备几万张测试图片、跑几万次API,才能“差不多”得出结论。没有大数据资源就没法做黑盒检测。
正解STRIP 的美妙之处就在于它用“单个样本的多次扰动”代替“海量样本的堆量”。一个可疑样本只需要叠加30-50种扰动,观察熵值是否持续偏低,就能形成有力判断。真正需要的不是数据量,而是合理的扰动设计和统计阈值。就像测谎师不需要问你一万个问题,而是针对同一个关键问题反复变换措辞,观察你回答时的心跳与微表情。
为何常见:人们容易把“检测”等同于“分类”,直觉上认为检测精度必然依赖大规模标注数据,忽略了STRIP这类方法通过“对同一对象做多次变化观测”来换取统计效力的思路。
误区只要模型被植入了后门,套上STRIP扰动测一测熵,后门样本就一定露馅。
正解STRIP只对“输入空间触发器”的后门有效——也就是触发器是叠加在像素上的显式图案。如果攻击者把后门设计成“语义触发器”,比如“所有包含海滩元素的图片都触发”或者“在特征空间某个方向做偏移”,那么简单叠加噪声根本触碰不到触发条件,检测熵自然不会有明显变化。检测工具都有盲区,STRIP也不例外。
为何常见:STRIP 在各种教程里常被简化为“低熵=后门”,让人误以为这是一个普适结论,忽略了它背后的前提假设:扰动必须能“激活”到触发器本身。
误区ABS既然要算梯度、要看神经元激活,那就只有拿到模型全部权重才能用,纯黑盒场景完全指望不上。
正解ABS 确实比 STRIP 需要更多内部信息,但“需要梯度”不等于“完全白盒”。在现实工程中,很多场景属于“灰盒”——比如你能下载模型文件来离线推理(PyTorch/ONNX格式),或者厂商提供带梯度的调试接口。只要能拿到计算图做反向传播,ABS基本条件就成立了。更关键的是,ABS的价值在于做深度复核和触发器重建,而不是日常高频筛查,把它放在STRIP初筛后的第二道关卡,才能发挥最大效用。
为何常见:黑盒与白盒被理解为非黑即白的二元对立,忽略了现实中大量“半开放”的灰盒场景,导致ABS的适用面被严重低估。
误区只要某个样本经过扰动后预测熵很低,就说明模型被植入了后门,可以直接下结论。
正解低熵只能说明“模型对某些输入的预测非常坚定”。正常模型遇到某些类别极其鲜明的样本时,也可能在扰动后仍然给出低熵预测——例如一张纯黑背景中的红色圆形,叠加轻微噪声后依然是红色圆形,模型照样自信地输出“球”。所以STRIP的判定必须依赖统计对比:将可疑样本的熵分布与一批干净样本的基线熵分布做比较,并设定合理的阈值与置信区间,而不是看到单个低熵值就“定罪”。
为何常见:初学者容易把“熵低”这个中间信号当成最终结论,跳过了“建立基线、多次运行、统计检验”这些关键步骤,从而得出草率的判断。
面试题
Q1. 关于后门攻击中的“触发器”,下列说法正确的是?
- A.触发器是模型训练后自动产生的
- B.触发器是攻击者植入的特定模式← 正确答案
- C.触发器会改变模型的所有权重
- D.触发器只能用于图像识别任务
答案:B。触发器是攻击者在训练阶段通过毒化数据或微调刻意植入的特定输入模式,相当于“暗号”。它不会改变模型全部权重,也不局限于图像任务,因此A、C、D描述都不对。
Q2. 黑盒检测与白盒检测最本质的区别是什么?
- A.黑盒检测速度更快
- B.黑盒只能通过输入输出观察模型← 正确答案
- C.白盒检测一定更准确
- D.黑盒检测无法发现任何后门
答案:B。黑盒场景下模型权重、梯度、中间层全部不可见,唯一的观测通道就是“输入-输出”的查询接口。白盒虽然信息更多,但“一定更准确”过于绝对;黑盒也并非无法发现后门,STRIP就是反例。
Q3. STRIP检测后门的核心直觉是什么?
- A.后门模型对所有输入都输出高熵
- B.后门模型对含触发器的输入“固执低熵”← 正确答案
- C.STRIP通过修改模型权重来修复后门
- D.STRIP需要读取模型的梯度信息
答案:B。STRIP对输入叠加扰动后观察预测熵。良性样本扰动后预测分化、熵高;后门样本只要捕捉到触发器的影子就自信输出固定类别、熵低。“固执低熵”正是STRIP的判据。STRIP不修改权重,也不需要梯度。
Q4. 熵值 H(p) 越低,表示预测概率分布越?
- A.均匀
- B.集中且确定← 正确答案
- C.随机
- D.不可靠
答案:B。熵度量不确定性。分布越集中在某一个类别上,信息越确定,熵越低。均匀分布时熵最大。所以低熵对应模型“胸有成竹”地表态——这正是后门样本的关键特征。
Q5. ABS中“人工脑刺激”指的是什么操作?
- A.用电流物理刺激服务器芯片
- B.通过梯度优化寻找激活峰值神经元← 正确答案
- C.随机删除一半神经元观察效果
- D.给输入叠加肉眼可见的噪声
答案:B。ABS对每个神经元构造微量扰动δ,用反向传播求梯度方向,使该神经元激活值最大化。这相当于“电击”特定脑区,观察哪里反应异常。它不涉及物理硬件操作,也不是随机删除神经元。
Q6. 某个样本经过STRIP的80次扰动后,平均熵始终低于所有良性样本的最低熵,这说明什么?
- A.模型百分之百被植入了后门
- B.该样本很可能携带触发器特征← 正确答案
- C.扰动强度过大导致模型崩溃
- D.良性样本的阈值设定得太高
答案:B。持续低熵是一个强信号,说明模型对这一样本“异常坚定”,极可能因为输入中带有触发器特征。但“百分之百”过于绝对,检测终究是统计推断,因此选B而非A。
Q7. 攻击者想绕过STRIP检测,最可能采用哪种策略?
- A.把触发器图案做得更大更醒目
- B.在深层特征空间中植入语义后门← 正确答案
- C.提升模型所有预测的置信度
- D.增加训练轮数让模型更收敛
答案:B。如果触发器是叠加在输入上的显式图案,STRIP的扰动就能激活它、露出低熵。攻击者把后门埋进语义特征空间,让简单叠加噪声无法触及触发条件,STRIP就会失效。A反而更容易被检测发现,C和D与规避STRIP无直接关系。
Q8. STRIP方法的主要步骤包括哪些?
- A.对输入叠加多种随机扰动← 正确答案
- B.获取模型输出的概率分布← 正确答案
- C.计算预测熵并与阈值比较← 正确答案
- D.直接读取模型权重中的毒化残差
答案:ABC。STRIP的完整流程是:扰动叠影→获取概率分布→计算熵→阈值判定。它自始至终不读取模型内部任何参数,因此D描述的白盒操作不属于STRIP的范畴。
Q9. ABS识别后门神经元通常需要哪些环节?
- A.反向传播计算最优刺激方向← 正确答案
- B.统计神经元激活的异常程度← 正确答案
- C.聚类筛选候选神经元← 正确答案
- D.完整还原模型全部训练数据
答案:ABC。ABS先对每个神经元做梯度上升找最优扰动,再比较激活值是否显著偏离正常分布,最后用聚类把异常神经元分组验证。它不依赖原始训练数据,D错误。
Q10. 下列哪些场景适合采用黑盒后门扫描技术?
- A.只有模型API调用权限← 正确答案
- B.厂商不提供模型权重文档← 正确答案
- C.模型部署在第三方不可信环境← 正确答案
- D.需要直接修改模型参数来清除后门
答案:ABC。黑盒扫描适用于拿不到权重、只有查询接口、部署环境不可控等场景。如果目的直接是“修改参数清除后门”,那属于白盒修复任务,黑盒扫描只能发现后门、无法清除后门,因此D不选。