yashwanthyashka/iac-security-auditor

GitHub: yashwanthyashka/iac-security-auditor

基于OpenEnv标准的AI智能体训练环境,用于评估和训练大语言模型识别Terraform代码中安全错误配置、判断严重程度并生成修复建议的能力。

Stars: 0 | Forks: 0

title: IaC 安全审计器 emoji: 🔐 colorFrom: red colorTo: red sdk: docker pinned: false tags: - openenv - security - terraform - iac - reinforcement-learning short_description: 用于 Terraform 安全审计的 OpenEnv 智能体环境 # IaC Security Auditor — OpenEnv 环境 一个符合 [OpenEnv](https://github.com/openenv) 标准的环境,在此环境中,AI 智能体针对安全漏洞审计 **Terraform 基础设施即代码配置**。 智能体必须识别错误配置,对其严重程度进行分类,建议修复措施,并且 —— 对于困难任务 —— 解释漏洞如何链接成一条完整的攻击路径。 ## 为什么选择这个环境? 每个云工程团队在部署前都会手动审查 Terraform/IaC 配置。这存在以下问题: - **耗时** — 一位高级工程师审查 500 行 Terraform 代码需要 30–60 分钟 - **不一致** — 不同的审查者会发现不同的问题 - **高风险** — 遗漏一个错误配置可能会将生产数据库暴露给互联网 这个环境让你能够训练和评估可以替代或增强手动 IaC 安全审查的智能体 —— 这是一项具有直接、可衡量现实价值的任务。 ## 观察空间 | 字段 | 类型 | 描述 | |---|---|---| | `task_id` | string | `easy` / `medium` / `hard` | | `terraform_code` | string | 待审计的 HCL 配置文件 | | `context` | string | 简要的基础设施描述 | | `step_number` | int | Episode 中的当前步骤(从 0 开始索引) | | `previous_findings` | list | 智能体在之前步骤中的发现 | | `instructions` | string | 智能体必须执行的操作 | ## 动作空间 ``` { "findings": [ { "resource_name": "aws_security_group.web_sg", "issue_type": "overly_permissive_ingress", "severity": "CRITICAL", "description": "Security group allows all inbound traffic from 0.0.0.0/0 on all ports", "suggested_fix": "Restrict ingress to specific ports and CIDR ranges" } ], "cascade_analysis": "Optional: how issues compound (required for hard task full score)", "summary": "Optional: overall security posture" } ``` 严重级别:`LOW` | `MEDIUM` | `HIGH` | `CRITICAL` ## 奖励函数 | 组成部分 | 权重 | 描述 | |---|---|---| | 发现的问题 | ~60% | 识别出的真实漏洞比例(经质量加权) | | 严重程度准确性 | ~20% | 正确的严重程度分类 | | 修复质量 | ~15% | 可操作的修复建议 | | 级联分析 | 最高 +15% | 解释问题如何叠加(困难任务) | | 误报惩罚 | 每个 -0.08 | 虚构的漏洞 | 分数为连续的 `0.0–1.0`,在整个 episode 期间提供部分积分。 ## 任务 ### 简单 — 过于宽松的安全组 **漏洞数量:** 1 **预期智能体得分:** 0.75–1.00 一个 EC2 实例,其安全组允许来自 `0.0.0.0/0` 的所有入站 TCP 流量通过所有端口(0–65535)。这是一个基本的 AWS 错误配置,会将服务器暴露给整个互联网。 ### 中等 — 三处错误配置 **漏洞数量:** 3 **预期智能体得分:** 0.45–0.80 跨不同资源类型的三个独立漏洞: - S3 存储桶的所有公有访问拦截均设置为 `false` - IAM 角色策略使用了通配符 `Action: "*"` 和 `Resource: "*"` - CloudTrail 设置了 `enable_logging = false` ### 困难 — 级联数据库暴露 **漏洞数量:** 5 **预期智能体得分:** 0.25–0.60 五个相互关联的漏洞,它们共同构成了通往生产 PostgreSQL 数据库的完整路径: 1. RDS 实例被放置在**公有子网**中 2. 安全组允许**来自 0.0.0.0/0 的 5432 端口**流量 3. RDS `publicly_accessible = true` 4. `storage_encrypted = false`(静态数据未受保护) 5. VPC Flow Logs 配置错误(`iam_role_arn` 和 `log_destination` 为空) 只有当智能体识别出**级联关系** —— 即问题 1+2+3 一起意味着互联网上的任何人都可以连接到生产数据库 —— 它们才能获得满分。 ## API 端点 | 方法 | 端点 | 描述 | |---|---|---| | GET | `/health` | 健康检查(返回 200) | | GET | `/tasks` | 列出所有任务 | | POST | `/reset` | 开启新 episode `{"task_id": "easy"}` | | POST | `/step` | 提交发现(Action JSON) | | GET | `/state` | 当前环境状态 | | GET | `/docs` | 交互式 API 文档 | ## 设置与使用 ### 使用 Docker 在本地运行 ``` docker build -t iac-security-auditor . docker run -p 7860:7860 iac-security-auditor ``` ### 使用 Python 在本地运行 ``` pip install -r requirements.txt uvicorn api.main:app --host 0.0.0.0 --port 7860 --reload ``` ### 运行基线推理 ``` export HF_TOKEN=your_api_key export MODEL_NAME=gpt-4o-mini export API_BASE_URL=https://api.openai.com/v1 export ENV_BASE_URL=http://localhost:7860 python inference.py ``` ## 基线得分 使用 `gpt-4o-mini` 测试(temperature=0.1): | 任务 | 得分 | 备注 | |---|---|---| | Easy | 0.87 | 正确找到开放的安全组,严重程度适当 | | Medium | 0.64 | 找到 IAM + S3,有时会漏掉 CloudTrail | | Hard | 0.41 | 找到主要问题但漏掉了级联关系 | | **平均** | **0.64** | | ## 项目结构 ``` iac-security-auditor/ ├── inference.py # Baseline LLM agent script ├── openenv.yaml # OpenEnv metadata ├── Dockerfile # Container configuration ├── requirements.txt ├── README.md ├── env/ │ ├── environment.py # reset() / step() / state() │ ├── models.py # Pydantic: Observation, Action, Reward │ ├── tasks.py # 3 task definitions + ground truth │ └── graders.py # Deterministic scoring logic └── api/ └── main.py # FastAPI HTTP server ``` ## OpenEnv 合规性 - ✅ `reset()` → 返回干净的 `Observation` - ✅ `step(action)` → 返回 `(Observation, Reward, done, info)` - ✅ `state()` → 返回 `EnvironmentState` - ✅ 全程使用类型化 Pydantic 模型 - ✅ 包含完整元数据的 `openenv.yaml` - ✅ 3 个带有确定性评分器(0.0–1.0)的任务 - ✅ 部分奖励信号(非二元) - ✅ 使用 OpenAI 客户端的 `inference.py` - ✅ Dockerfile + HuggingFace Space 部署
标签:AI代理, AWS, CISA项目, Docker, DPI, ECS, IaC安全, OpenEnv, Petitpotam, Terraform, 人工智能, 代码审查, 威胁建模, 安全防御评估, 强化学习, 攻击路径分析, 模块化设计, 用户模式Hook绕过, 自动化修复, 请求拦截, 逆向工具