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

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

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

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

工具目录

分类

查看所有分类
Loading categories
StepJack — 用于评估计算机操作型AI代理对抗多步骤间接提示注入的基准测试框架,具备自动化对抗性目标分解与AWS沙箱测试环境。 | Kitploit
工具/GitHubGitHub/borealisai/stepjack
动态分析 (沙盒)安全虚拟化红队AI 安全对抗性攻击
GitHubborealisai/stepjack

StepJack

用于评估计算机操作型AI代理对抗多步骤间接提示注入的基准测试框架,具备自动化对抗性目标分解与AWS沙箱测试环境。

查看仓库
4164个月前尚未审核

最受欢迎

查看全部 →

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

探索所有工具

浏览我们的工具集合

查看所有工具 →
分享

StepJack:针对多步间接提示注入的计算机使用智能体安全基准测试

环境配置

1. Python 环境配置

首先,安装所有依赖项,并确保你运行的是 Python 3.10。

root@kitploit:~
conda create -n stepjack python=3.10
conda activate stepjack

pip install -r requirements.txt

2. 沙箱环境配置

我们使用 RedTeamCUA 提供的 AWS 环境。

AWS

  1. 配置 NETWORK_INTERFACE_MAP:

    根据你自己的 AWS 实例,在 aws_config.py 中配置 NETWORK_INTERFACE_MAP。

  2. 配置你的安全组:

    配置一个安全组非常重要,它既要允许对你托管的实例进行合法访问,又要阻止未经授权的访问尝试。这一点至关重要,因为该 AMI 默认仅使用基于密码的基本身份验证,这种验证方式相对容易被攻破。

    你的本地机器将通过 HTTP/TCP 连接访问托管在 AWS 上的服务。因此,你应明确允许访问以下端口:8092、6379、9999、5000、9222、8091、2999 和 3000,这些端口由 WebArena 或 TheAgentCompany 使用。

    此外,我们会使用 SSH 直接修改底层数据库以模拟注入场景。因此,还必须在安全组设置中允许来自你本地 IP 地址的 SSH 访问。

  3. 通过 aws configure 配置你的 AWS 凭证,该命令会提示你输入:

    • AWS Access Key ID
    • AWS Secret Access Key
    • Default region name(可选,可直接按回车)

实验

scripts/run_gpt54_2step.sh 展示了在 StepJack 上运行 GPT-5.4 CUA 的一个示例。

  1. 设置环境变量

    CUA API 密钥

    root@kitploit:~
    # For GPT 
    unset OPENAI_BASE_URL
    export OPENAI_API_KEY="sk-proj-XXXX"
    
    # For Kimi
    export KIMI_API_KEY='sk-XXXX'
    
    # For Qwen
    export OPENAI_BASE_URL="https://dashscope-us.aliyuncs.com/compatible-mode/v1"
    export OPENAI_API_KEY="sk-XXXX"
    
    # For Claude
    export ANTHROPIC_API_KEY='sk-XXXX'
    

    AWS 凭证

    root@kitploit:~
    export AWS_REGION='XX'
    export AWS_ACCESS_KEY='XX'
    export AWS_SECRET_KEY='XX'
    
  2. 运行实验

    root@kitploit:~
    # For GPT
    python run_gpt54_multienv.py \
       --observation_type screenshot \
       --agent_type GPT54Agent \
       --headless \
       --model gpt-5.4-mini-2026-03-17 \
       --result_dir ./results_gpt54 \
       --test_all_meta_path "./dataset/{subset}/{platform_instruction}/test_{k}_step.json" \
       --test_config_base_dir "./dataset/{subset}/{platform_instruction}"  \
       --max_steps {15*k} \
       --sleep_after_execution 4 \
       --provider_name aws \
       --num_envs 12 \
       --aws_ami {reddit | agentcompany}
    
    # For Kimi
    python run_kimi_multienv.py \
       --observation_type screenshot \
       --agent_type KimiAgent \
       --headless \
       --model Kimi-K2.5 \
       --result_dir ./results_kimi \
       --test_all_meta_path "./dataset/{subset}/{platform_instruction}/test_{k}_step.json" \
       --test_config_base_dir "./dataset/{subset}/{platform_instruction}"  \
       --max_steps {15*k} \
       --sleep_after_execution 4 \
       --provider_name aws \
       --num_envs 12 \
       --aws_ami {reddit | agentcompany}
    
    # For Qwen
    python run_qwen35vl_multienv.py \
       --observation_type screenshot \
       --agent_type Qwen35VLAgent \
       --headless \
       --model qwen3.5-plus-2026-02-15 \
       --coord relative \
       --enable_thinking \
       --result_dir ./results_qwen \
       --test_all_meta_path "./dataset/{subset}/{platform_instruction}/test_{k}_step.json" \
       --test_config_base_dir "./dataset/{subset}/{platform_instruction}"  \
       --max_steps {15*k} \
       --sleep_after_execution 4 \
       --provider_name aws \
       --num_envs 12 \
       --aws_ami {reddit | agentcompany}
    
    # For Claude
    python run_claude_multienv.py \
       --observation_type screenshot \
       --action_space pyautogui \
       --agent_type AnthropicAgent \
       --api_provider anthropic \
       --headless \
       --model {claude-sonnet-4-6 | claude-haiku-4-5} \
       --result_dir ./results_claude \
       --test_all_meta_path "./dataset/{subset}/{platform_instruction}/test_{k}_step.json" \
       --test_config_base_dir "./dataset/{subset}/{platform_instruction}"  \
       --max_steps {15*k} \
       --sleep_after_execution 4 \
       --provider_name aws \
       --num_envs 12 \
       --aws_ami {reddit | agentcompany}
    

自动分解流水线与添加新的对抗性目标

自动分解流水线的代码位于 auto_decomp/ 中。

  1. cd auto_decomp。将要分解的新对抗性目标添加到 adv_goals.py 中。
  2. 对于每个 k \in \{2, 3\},运行 python iterative_refinement.py -k {k}。输出:ir/goal_*_k{k}_N20_K3_all.json,其中包含阶段 1 的结果。
  3. 运行 python selected_examples/select_examples.py。输出:selected_examples/selected_examples.json,该文件从阶段 1 的结果中选出前 10 个示例。
  4. 对于阶段 2,编写用于 CUA 验证的 json 测试示例。然后,记录所采取的步数,以选择最终的分解结果。

致谢

StepJack 构建在 RedTeamCUA(Liao et al., 2025; arXiv:2505.21936)的基础之上,而 RedTeamCUA 又源自 OSWorld(XLANG NLP Lab, 2024)。两个上游来源均采用 Apache-2.0 许可。

StepJack 的某些数据目录没有按文件添加文件头,因为它们包含二进制或非源代码的固定文件(fixtures)。其来源在此记录以供署名:

  • adv/TheAgentCompany_OwnCloud/file_to_upload/ — 从 RedTeamCUA 复制(adv/TheAgentCompany_OwnCloud/file_to_upload/),原始版本采用 Apache-2.0 许可。
  • adv/upload_file/ — 包含两个 SSH 密钥固定文件(system/authorized_keys、system/id_rsa),用作数据集任务配置中的上传负载。由 StepJack 整理(其中的值是占位字符串,并非真实密钥)。根据本源代码树根目录下 LICENSE 文件中的许可发布。
  • adv/upload_file_dir/ — StepJack 原创。RedTeamCUA 中不存在。根据本源代码树根目录下 LICENSE 文件中的许可发布。
  • dataset/ — 改编自 RedTeamCUA 的 evaluation_examples/,并进行了大量修改。RedTeamCUA 的评估示例根据其 croissant_metadata.json 以 发布。StepJack 对任务配置所做的修改和新增内容,根据本源代码树根目录下 文件中的许可发布。
下载工具

参数说明:

  • {subset}:可为 single_step(k=1)、w_urgent(Urgent = Y)、wo_urgent(Urgent = N)。
  • {platform_instruction}:可为 forum、forum_follow、owncloud、owncloud_follow。它们对应 2 个平台和 2 种用户指令类型。
  • {k}、{15*k}:步数编号,$k \in {1,2,3}$。有效的 (subset, k) 组合:single_step 仅搭配 k=1;w_urgent 和 wo_urgent 仅搭配 k \in \{2,3\}。
  • {reddit | agentcompany}:要启动的 AWS AMI。forum 平台应为 reddit,owncloud 平台应为 agentcompany。
CC-BY-4.0
LICENSE
  • desktop_env/ — 从 RedTeamCUA 的 desktop_env/ 复制/改编,其本身源自 OSWorld;两个上游来源均采用 Apache-2.0 许可。按源文件添加的文件头(.py / .sh / .yml / .service / .txt)记录了每个文件的具体来源(复制或由 StepJack 修改)。随附的文档文件(例如 README.md、DOCKER_GUIDELINE.md、INSTALL_*.md)是从 RedTeamCUA 复制的。