跳转至

Amazon Inspector Agentless 扫描与 Windows KB Findings 实战

Lab 信息

  • 难度: ⭐⭐ 中级
  • 预估时间: 30 分钟
  • 预估费用: $0.20(含清理)
  • Region: us-east-1
  • 最后验证: 2026-03-25

背景

Windows 服务器的漏洞管理是企业安全运维的核心痛点之一。传统方式下,Amazon Inspector 对每个 CVE 生成独立的 finding,一台 Windows Server 2022 实例可能同时有几十个 CVE findings,运维人员需要逐个分析才能确定需要安装哪个补丁。

2026 年 3 月,Amazon Inspector 发布了两项重要更新:

  1. Agentless EC2 扫描范围扩展:新增对 WordPress、Apache HTTP Server、Python packages、Ruby gems 等应用软件包的检测,无需安装 SSM Agent
  2. Windows KB-based Findings:将同一 Microsoft 补丁覆盖的多个 CVE 合并为单个 KB finding,直接告诉你需要安装哪个补丁

本文通过实测验证 KB-based findings 的实际效果,对比 KB 与 CVE findings 的差异,并演示如何通过 CLI 管理这些 findings。

前置条件

  • AWS 账号(需要 Inspector、EC2、IAM、SSM 权限)
  • AWS CLI v2 已配置
  • 了解 Amazon Inspector 基本概念

核心概念

KB-based Findings vs CVE-based Findings

对比维度 CVE-based Findings KB-based Findings
粒度 每个 CVE 一条 finding 每个 Microsoft 补丁 (KB) 一条 finding
示例 CVE-2024-43608, CVE-2024-43607... KB5044281
CVSS 分数 单个 CVE 的分数 所有关联 CVE 中的最高分数
行动指引 需要自行查找对应补丁 直接链接到 Microsoft KB 文章
来源标识 source: NVD source: WINDOWS_SERVER_2022
适用范围 所有平台 仅 Windows EC2 实例

Agent-based vs Agentless 扫描

对比维度 Agent-based Agentless
依赖 SSM Agent + Instance Profile 无需任何 Agent
原理 SSM 收集软件 inventory 通过 EBS 快照分析
扫描频率 持续(SSM inventory 30 分钟同步) 周期性(首次可能需要数小时)
出结果速度 ~8 分钟 数小时到 24 小时
扫描范围 默认路径 + 自定义路径 所有可用路径
限制 实例需联网 + SSM 权限 卷数 <8,总大小 ≤120GB

动手实践

Step 1: 启用 Amazon Inspector EC2 扫描

# 启用 EC2 扫描
aws inspector2 enable \
  --resource-types EC2 \
  --region us-east-1

# 确认启用状态
aws inspector2 batch-get-account-status \
  --region us-east-1 \
  --query 'accounts[0].resourceState.ec2.status'
# 输出: "ENABLED"

Step 2: 配置 Hybrid 扫描模式

Hybrid 模式同时启用 agent-based 和 agentless 扫描,确保覆盖所有实例:

# 设置为 Hybrid 扫描模式(启用 agentless)
aws inspector2 update-configuration \
  --ec2-configuration '{"scanMode": "EC2_HYBRID"}' \
  --region us-east-1

# 验证扫描模式
aws inspector2 get-configuration \
  --region us-east-1 \
  --query 'ec2Configuration.scanModeState'
# 输出: {"scanMode": "EC2_HYBRID", "scanModeStatus": "SUCCESS"}

启用后 Inspector 会自动创建以下资源:

  • 2 个 Service-linked Roles(Inspector + Inspector Agentless)
  • 5 个 SSM Associations(inventory 收集 + Windows/Linux plugin)

Step 3: 创建测试安全组

# 创建仅出站的安全组(无任何入站规则)
SG_ID=$(aws ec2 create-security-group \
  --group-name inspector-test-sg \
  --description 'Inspector test - egress only' \
  --vpc-id <your-vpc-id> \
  --region us-east-1 \
  --query 'GroupId' --output text)

# 替换默认全出站规则为仅 HTTPS
aws ec2 revoke-security-group-egress \
  --group-id $SG_ID \
  --protocol all --port all --cidr 0.0.0.0/0 \
  --region us-east-1

aws ec2 authorize-security-group-egress \
  --group-id $SG_ID \
  --protocol tcp --port 443 --cidr 0.0.0.0/0 \
  --region us-east-1

Step 4: 创建 IAM Instance Profile

Agent-based 扫描需要 SSM 权限:

# 创建 IAM Role
aws iam create-role \
  --role-name inspector-test-ec2-role \
  --assume-role-policy-document '{
    "Version": "2012-10-17",
    "Statement": [{
      "Effect": "Allow",
      "Principal": {"Service": "ec2.amazonaws.com"},
      "Action": "sts:AssumeRole"
    }]
  }'

# 附加 SSM 管理策略
aws iam attach-role-policy \
  --role-name inspector-test-ec2-role \
  --policy-arn arn:aws:iam::aws:policy/AmazonSSMManagedInstanceCore

# 创建并关联 Instance Profile
aws iam create-instance-profile \
  --instance-profile-name inspector-test-profile

aws iam add-role-to-instance-profile \
  --instance-profile-name inspector-test-profile \
  --role-name inspector-test-ec2-role

Step 5: 启动 Windows Server 2022 测试实例

# 查找最新的 Windows Server 2022 AMI
AMI_ID=$(aws ec2 describe-images \
  --owners amazon \
  --filters 'Name=name,Values=Windows_Server-2022-English-Full-Base-*' \
            'Name=state,Values=available' \
  --query 'sort_by(Images,&CreationDate)[-1].ImageId' \
  --output text \
  --region us-east-1)

echo "Using AMI: $AMI_ID"

# 启动实例(带 SSM 权限,用于 agent-based 扫描验证)
INSTANCE_ID=$(aws ec2 run-instances \
  --image-id $AMI_ID \
  --instance-type t3.small \
  --security-group-ids $SG_ID \
  --subnet-id <your-subnet-id> \
  --associate-public-ip-address \
  --iam-instance-profile Name=inspector-test-profile \
  --tag-specifications 'ResourceType=instance,Tags=[{Key=Name,Value=inspector-test-windows}]' \
  --region us-east-1 \
  --query 'Instances[0].InstanceId' --output text)

echo "Instance ID: $INSTANCE_ID"

Step 6: 等待扫描完成并查看结果

SSM Agent 注册和首次扫描约需 5-10 分钟:

# 检查 SSM Agent 状态
aws ssm describe-instance-information \
  --region us-east-1 \
  --query 'InstanceInformationList[?InstanceId==`'$INSTANCE_ID'`].{
    PingStatus:PingStatus,
    Platform:PlatformType,
    AgentVersion:AgentVersion}'

# 检查 Inspector 覆盖状态
aws inspector2 list-coverage \
  --region us-east-1 \
  --query 'coveredResources[?resourceId==`'$INSTANCE_ID'`].{
    Status:scanStatus.statusCode,
    Reason:scanStatus.reason,
    Mode:scanMode,
    LastScanned:lastScannedAt}'

Status 变为 ACTIVE 后,查看 findings:

# 查看所有 findings 的严重性分布
aws inspector2 list-findings \
  --region us-east-1 \
  --query '{
    Total: length(findings),
    Critical: length(findings[?severity==`CRITICAL`]),
    High: length(findings[?severity==`HIGH`]),
    Medium: length(findings[?severity==`MEDIUM`]),
    Low: length(findings[?severity==`LOW`])}'

Step 7: 筛选 KB-based Findings

# 按 title 前缀过滤 KB findings
aws inspector2 list-findings \
  --filter-criteria '{"title":[{"comparison":"PREFIX","value":"KB"}]}' \
  --region us-east-1 \
  --query 'findings[*].{
    Title:title,
    Severity:severity,
    Score:inspectorScore,
    RelatedCVEs:length(packageVulnerabilityDetails.relatedVulnerabilities),
    Source:packageVulnerabilityDetails.source,
    FixAvailable:fixAvailable}'

测试结果

Findings 统计(Windows Server 2022,2026-03-25 实测)

类别 数量 说明
KB-based findings 1 KB5044281 (2024-10 安全更新)
CVE-based findings 31 主要为 Chrome/Edge 相关漏洞
总计 32

严重性分布

严重性 数量 示例
CRITICAL 2 KB5044281 (CVSS 9.0)
HIGH 17 CVE-2026-3918 (Chrome, CVSS 8.8)
MEDIUM 12 CVE-2026-3923 (Chrome, CVSS 6.5)
LOW 1 CVE-2026-3929 (Chrome, CVSS 3.1)

KB5044281 Finding 详情

这是本次实测的核心发现 — 一个 KB finding 替代了 68 个独立 CVE findings:

属性
KB ID KB5044281
描述 Windows Server 2022 Security Update (2024-10)
严重性 CRITICAL
CVSS 分数 9.0 (CVSS:3.1/AV:A/AC:L/PR:L/UI:N/S:C/C:H/I:H/A:H)
关联 CVE 数量 68 个
补丁链接 support.microsoft.com/help/5044281
Microsoft Catalog catalog.update.microsoft.com

关键价值:运维人员无需逐个分析 68 个 CVE,直接根据 KB5044281 安装对应补丁即可。

KB Findings 与 CVE Findings 的共存关系

实测发现一个重要细节:KB findings 和 CVE findings 在同一实例上共存

  • Windows OS 漏洞 → KB-based finding (source: WINDOWS_SERVER_2022)
  • 第三方软件漏洞 (Chrome/Edge 等) → CVE-based finding (source: NVD)

这意味着 KB findings 只合并 Windows OS 级别的漏洞,第三方软件漏洞仍然以 CVE 形式报告。

踩坑记录

Agentless 首次扫描延迟

启用 Hybrid 模式后,agentless 扫描不会立即触发。实测 30+ 分钟仍未看到 EBS 快照创建(InspectorScan 标签)。官方文档未明确说明首次扫描的延迟时间,推测可能需要数小时到 24 小时。

建议:如果需要快速获取 findings,优先使用 agent-based 扫描(配置 SSM Agent),agentless 作为补充覆盖。

Coverage 状态显示

即使已启用 Hybrid 模式,list-coverage API 中 scanMode 字段可能仍显示 EC2_SSM_AGENT_BASED,而非 EC2_HYBRID。这是因为该字段反映的是实际使用的扫描方式,不是账号级别的配置。未被 agentless 扫描过的实例会显示 agent-based。

实测发现,官方未记录此行为。

SSM Agent 网络要求

Agent-based 扫描需要实例能访问 SSM 端点(HTTPS 443)。如果实例在私有子网且无 NAT Gateway 或 VPC Endpoint,SSM Agent 无法注册,Inspector 会将实例标记为 UNMANAGED_EC2_INSTANCE

费用明细

资源 单价 用量 费用
EC2 t3.small (Windows) $0.0208/hr ~1 hr $0.02
EC2 t3.micro (Linux) $0.0104/hr ~1 hr $0.01
EBS gp3 30GB × 2 $0.08/GB/月 ~1 hr $0.01
Inspector EC2 扫描 $1.258/实例/月 免费试用期 $0.00
合计 ~$0.04

Inspector 免费试用

Amazon Inspector 提供 15 天免费试用期(每种扫描类型独立计算),适合用于评估和 Lab 练习。

清理资源

# 1. 终止 EC2 实例
aws ec2 terminate-instances \
  --instance-ids <instance-id-1> <instance-id-2> \
  --region us-east-1

# 等待实例终止
aws ec2 wait instance-terminated \
  --instance-ids <instance-id-1> <instance-id-2> \
  --region us-east-1

# 2. 禁用 Inspector EC2 扫描
aws inspector2 disable --resource-types EC2 \
  --region us-east-1

# 3. 清理 IAM 资源
aws iam remove-role-from-instance-profile \
  --instance-profile-name inspector-test-profile \
  --role-name inspector-test-ec2-role

aws iam delete-instance-profile \
  --instance-profile-name inspector-test-profile

aws iam detach-role-policy \
  --role-name inspector-test-ec2-role \
  --policy-arn arn:aws:iam::aws:policy/AmazonSSMManagedInstanceCore

aws iam delete-role \
  --role-name inspector-test-ec2-role

# 4. 检查安全组是否有残留 ENI
aws ec2 describe-network-interfaces \
  --filters Name=group-id,Values=<sg-id> \
  --region us-east-1 \
  --query 'NetworkInterfaces[*].{Id:NetworkInterfaceId,Status:Status}'

# 确认无残留后删除安全组
aws ec2 delete-security-group \
  --group-id <sg-id> \
  --region us-east-1

务必清理

Lab 完成后请执行清理步骤。虽然 Inspector 有 15 天免费试用,但 EC2 实例和 EBS 卷会持续产生费用。

结论与建议

核心发现

  1. KB-based findings 显著简化 Windows 补丁管理:一个 KB finding(KB5044281)替代了 68 个独立 CVE findings,直接提供补丁链接
  2. KB 与 CVE findings 共存:Windows OS 漏洞用 KB findings,第三方软件漏洞(Chrome 等)仍用 CVE findings
  3. Agent-based 扫描显著更快:约 8 分钟出结果,而 agentless 首次扫描可能需要数小时
  4. Agentless 覆盖更广:不需要 SSM Agent,适合无法安装 Agent 的实例

生产环境建议

  • 推荐 Hybrid 模式:兼顾速度(agent-based)和覆盖范围(agentless)
  • Windows 补丁管理:结合 KB findings + AWS Systems Manager Patch Manager,实现自动化补丁部署
  • 告警策略:优先关注 KB findings 中 CRITICAL/HIGH 的补丁(已是合并后的最高分数)
  • Agentless 适用场景:遗留系统、第三方管理实例、安全要求不允许安装 Agent 的环境

参考链接