Skip to content
KitploitKITPLOIT
工具博客
提交
工具博客
提交

黑客、渗透测试和网络安全工具,武装您的安全武器库!

Kitploit 是一个黑客、网络安全和渗透测试工具的目录。发现最新的项目更新,查找漏洞、分析系统、自动化测试并加强你的安全。

··订阅源·联系·隐私·© 2026 Kitploit

工具目录

分类

查看所有分类
Loading categories
Manipulating-Web-Agents — 针对自主基于LLM的Web智能体的间接提示注入攻击研究演示,包含触发器优化与评估工具。 | Kitploit
工具/GitHubGitHub/sej2020/manipulating-web-agents
漏洞利用Web安全论文与研究学习与教育AI 安全对抗性攻击
GitHubsej2020/manipulating-web-agents

Manipulating-Web-Agents

针对自主基于LLM的Web智能体的间接提示注入攻击研究演示,包含触发器优化与评估工具。

查看仓库
6341年前尚未审核

最受欢迎

查看全部 →

发现我们社区最常用的工具。

探索所有工具

浏览我们的工具集合

查看所有工具 →
分享

利用间接提示注入攻击操纵基于LLM的自主Web代理

随着LLM集成应用的普及,调查潜在的安全风险至关重要。这些系统中最重大的漏洞之一是它们容易受到通过间接提示注入进行的对抗性攻击。在本仓库中,我们展示了一种方法,恶意行为者可以利用该方法生成一个通用触发器,从而控制源自LLM的远程Web导航代理的行为。我们希望展示这些信息能帮助从业者认识到其潜在漏洞,并激励研究人员开发针对此类攻击的防护措施。

环境设置

克隆此仓库后,需要使用以下命令来搭建来自 Browser Gym 的Web导航基础设施:

root@kitploit:~
conda create -n browser-gym
conda init
conda activate browser-gym
pip install browsergym-core
playwright install chromium
pip install transformers

具体细节可能因计算环境而异。

如果你有兴趣运行通用触发器优化流程,则需要生成一个包含网站和Web导航目标的数据集。这可以通过 src/actions/mask_dataset.py 文件提供的命令来完成。你还需要创建一些API密钥并将其存储在安全的环境中。

  1. 运行 pip install python-dotenv,然后运行 touch .env
  2. 在文件中存储一个OpenAI API密钥,以及Google可编程搜索引擎的信息。按照此 链接 第一部分中的说明来设置你的搜索引擎。你的 '.env' 文件语法应如下所示:
    root@kitploit:~
    OPENAI_API_KEY=<key>
    GOOGLE_API_KEY=<key>
    GOOGLE_ENGINE_NAME=<name>
    GOOGLE_CX=<engine ID>
    
  3. 运行 python -m src.dataset.actions.make_dataset get_webs,直到你的数据文件夹中有足够数量的网站json文件。
  4. 运行 python -m src.dataset.actions.make_dataset set_goals 来过滤被屏蔽的网站json、重新平衡网站类别,并向OpenAI API提交一个批处理任务,为其余网站生成目标对象。如果你有超过1万个网站json,应添加 --n_batch_splits <int> 标志。
  5. 在运行 set_goals 命令时,你的批处理ID将打印到终端。如果批处理任务已完成,运行 python -m src.dataset.actions.make_dataset get_goals --batch_ids <batch ID 1> <batch ID 2> ... 将目标对象写入对应的网站json。OpenAI完成一个批处理任务可能需要24小时,因此可能需要等待一天才能成功运行此命令。

运行演示1

演示1展示了攻击者如何托管一个在链接中嵌入恶意软件的网站,并强制Web导航代理每次都点击该链接。网站json和控制Web代理输出的触发器分别存储在 data/ 和 triggers/ 文件夹中。

对照实验

运行 python -m src.attack.actions.run_demo 将启动一个浏览器,其中包含示例网页和LLM聊天界面。LLM聊天会要求你为Web导航代理提供一个目标。在窗口中编写类似“Search for a flight to Chicago”的任务。代理将按预期在带有示例网页的标签页中完成任务。

攻击

运行 python -m src.attack.actions.run_demo --trigger_json triggers/zzz_travel_ad_demo_1_trigger_uni_secondary.json 来攻击执行该任务的Web导航代理。浏览器将照常启动,包含示例网页和LLM聊天界面,也请照常在聊天窗口中编写某个目标。过程将与对照实验完全相同,唯一区别在于 zzz_travel_ad_demo_1_trigger_uni_secondary.json 文件中的触发器会被插入到网站上的一个隐藏链接中。你应该会看到,这次Web代理忽略了你提供的指令,转而点击页脚中的广告!

优化你自己的对抗性触发器

要优化一个对抗性触发器,以控制Web导航代理在你所选网站上的输出,你可以使用 find_narrow_trigger.py 文件。使用数据集创建工具生成网站json后,你可以在 ax tree 中的某个位置插入文本 '{optim_str}'。这会告诉我们将要使用的 nanogcg 库,你希望在网站的该位置插入触发器。

  1. 运行 pip install nanogcg
  2. 同意Hugging Face上Llama/Mistral模型的使用条款,并在设置中创建访问令牌。
  3. 将 '{optim_str}' 插入到你选择的网站数据json中的 ax_tree 对象中。
  4. 运行 python -m src.attack.actions.find_narrow_trigger。该命令行工具的选项和标志如下:
root@kitploit:~
-h, --help            show this help message and exit
--json JSON           File and path for the JSON file to find a trigger for.
--target TARGET       The desired output when triggered.
--device DEVICE       Device to run the model on.
--trigger_length TRIGGER_LENGTH
--include_target, --no-include_target
--loss_fn {cw,mm,ce}
--search_width SEARCH_WIDTH
--top_k TOP_K
--model {mistral-7B,mistral-24B,llama2,llama3}
                    The model to use for generation.
--dtype DTYPE         Data type to use for the model.

为了使攻击在我们的环境中生效,你的优化目标应是Browser Gym Web导航动作空间中的一个函数。请参阅 action_space.txt 文件。

优化后的触发器将保存在 triggers/ 文件夹中的一个json文件中,文件名与对应的网站数据json一致。你可以使用此触发器,通过 python -m src.attack.actions.run_demo 工具并配合适当的标志来运行你自己的演示。

下载工具