CWE-200: 向未授权方暴露敏感信息 漏洞概述 CWE-200 是一种软件漏洞,指产品向未明确授权访问该信息的实体暴露敏感信息。敏感信息包括个人、私人信息(如个人消息、财务数据、健康记录、地理位置或联系详情)、系统状态和环境(如操作系统和已安装软件包)、商业机密和知识产权、网络状态和配置、产品自身代码或内部状态、元数据(如连接日志或消息头)以及间接信息(如两个内部操作之间可观察到的差异)。 影响范围 影响范围:机密性 潜在后果:读取应用程序数据 修复方案 架构与设计:采用“特权分离”策略。将系统划分为“安全”区域,在这些区域中信任边界可以明确界定。不要将敏感数据置于信任边界之外,并在与信任边界外的组件交互时要小心。确保适当的隔离是系统设计中内置的,并且隔离允许并强化特权分离功能。架构师和设计师应遵循最小特权原则,决定适当的时间使用特权并放弃特权。 示例代码 示例 1 示例 2 示例 3 示例 4 示例 5 示例 6 示例 7 示例 8 相关 CVE 列表 CVE-2022-31162: Rust 库泄露 OAuth 客户端详细信息,在应用程序调试日志中 CVE-2021-25476: 数字权利管理 (DRM) 功能允许移动平台泄露指针信息,简化 ASLR 绕过 CVE-2001-1483: 基于不一致响应的有效用户名枚举 CVE-2001-1528: 通过不一致响应进行账户号枚举 CVE-2004-2150: 通过错误消息中的差异进行用户枚举 CVE-2005-1205: Telnet 协议允许服务器从客户端获取敏感环境信息 CVE-2002-1725: 脚本调用 phpinfo(),向 Web 用户揭示系统配置 CVE-2002-0515: 产品设置不同的 TTL,当端口被过滤时与未被过滤时不同,允许远程攻击者通过比较 TTL 识别过滤端口 CVE-2004-0778: 版本控制系统允许远程攻击者通过 -X 命令确定任意文件和目录的存在,用于替代历史记录文件,导致不同的错误消息被返回 CVE-2000-1117: 虚拟机允许恶意网站运营商通过测量执行 getSystemResource 方法的时间来确定客户端上文件的存在 CVE-2003-0190: 程序在用户不存在时立即发送错误消息,允许远程攻击者通过计时攻击确定有效用户名 CVE-2008-2049: POP3 服务器在发送多个 APOP 命令后在错误消息中泄露密码。可能是由另一个弱点导致的 CVE-2007-5172: 程序在错误消息中泄露密码,如果攻击者可以触发某些数据库错误 CVE-2008-4638: 复合:以高特权运行的应用程序 (CWE-250) 允许用户指定受限文件进行处理,生成解析错误,泄露文件内容 (CWE-200) CVE-2007-1499: 直接请求库文件,在 Web 应用程序中触发路径名泄露在错误消息中 CVE-2005-0603: 格式错误的正则表达式语法导致错误消息中的信息泄露 CVE-2004-2268: 密码在调试消息中暴露 CVE-2003-1078: 启用调试选项的 FTP 客户端将密码显示到屏幕上 CVE-2022-0708: 协作平台在响应中不清理团队电子邮件,允许邮件地址泄露