Vulnerability-wiki

组件暴露漏洞(Component Exposure Vulnerability)

1. 漏洞概述

组件暴露漏洞 是指系统中某些内部组件、接口、服务、文件或调试功能,原本应对外隐藏或仅限特定用户访问,但由于配置不当、权限控制缺失或设计缺陷而被暴露给不可信用户,从而导致攻击者可以直接访问、调用甚至控制这些组件。

常见于:


2. 漏洞成因

  1. 缺少访问控制
    • 组件对所有用户开放,未做身份验证和授权。
  2. 默认配置不安全
    • 默认启用调试模式、开放测试接口或管理页面。
  3. 错误的权限声明
    • 移动应用在 AndroidManifest.xml 中将组件 exported 设为 true,无访问限制。
  4. 信息泄露导致定位入口
    • 错误提示、接口文档暴露了内部组件路径或端口。
  5. 防护策略缺失
    • 未使用防火墙、访问白名单等手段隔离内部接口。

3. 攻击方式

攻击方式 描述
直接访问敏感功能 通过暴露的 URL/端口调用管理功能。
利用调试接口 通过暴露的调试/测试接口执行系统命令或修改配置。
跨应用组件调用 在 Android 中调用其他应用暴露的 Activity/Service 实现越权操作。
枚举接口与功能 扫描端口、路径、API 以发现暴露的组件。

4. 典型案例

  1. Jenkins 未授权访问
    • 未开启身份验证,攻击者可直接访问 /script 控制台执行 Groovy 脚本。
  2. Android 应用组件暴露
    • 一个暴露的 Activity 允许攻击者直接打开并绕过登录页面。
  3. Hadoop/YARN ResourceManager 暴露
    • 管理端口未加保护,攻击者可提交任意任务。
  4. Spring Boot Actuator 暴露
    • /actuator/env/actuator/shutdown 等端点未加访问控制。

5. 危害


6. 防御与缓解措施

  1. 访问控制与身份验证
    • 对管理接口、敏感 API 进行严格身份验证。
  2. 最小化暴露面
    • 关闭不必要的端口、禁用调试模式、移除测试接口。
  3. 最小权限原则
    • Android 组件 exported 默认设为 false,仅在必要时对可信调用方开放。
  4. 安全配置
    • 修改默认账户密码,禁止默认管理页面对外可访问。
  5. 网络隔离
    • 管理接口仅绑定到内网地址,并通过防火墙限制访问来源。
  6. 安全测试与审计
    • 定期扫描端口与路径,检测意外暴露的服务与接口。

7. 检测方法


8. 总结

组件暴露漏洞本质上是边界防护失效的问题,攻击者可以直接接触到原本内部使用的功能或接口。
安全设计中应遵循 “最小暴露面 + 严格访问控制” 的原则,并通过持续安全审计减少意外暴露风险。