最新的2021 Top 10已经出来了,我们从A01开始进行一次详细解读,本系列会详细介绍各个漏洞的变化与内容,并会着重介绍新增的漏洞情况。本篇解读A09Security Logging and Monitoring Failures(安全日志和监控故障)。
可对照 CWEs 数量 | 最大发生率 | 平均发生率 | 最大覆盖范围 | 平均覆盖范围 | 平均加权漏洞 | 平均加权影响 | 总发生数 | 相关 CVEs 总数量 |
---|---|---|---|---|---|---|---|---|
4 | 19.23% | 6.51% | 53.67% | 39.97% | 6.87 | 4.99 | 53,615 | 242 |
安全记录及监控是业界调查结果 (#3),由 2017 年的第十名稍微上升。记录及监控功能验证非常有挑战性,通常需要以访谈或询问之方式检验有无侦测渗透测试的攻击活动。侦测及应变对资安事件至关重要,但此类型之 CVE/CVSS 资料不多。尽管如此,此类型对于事件告警、可见性和鉴识仍然非常有影响力。此类型涵盖 CWE-778 不足地记录,CWE-117 未经适当处理之日志输出,CWE-223 遗漏安全相关资讯及 CWE-532 于日志档案置入敏感资讯。
在 2021 年 OWASP Top 10,此类型有助于对进行中资安事件之侦测,升级及应变。缺乏记录及监控时无法侦测资安事件发生。不足地记录,侦测,监控及主动应变随时会发生:
可稽核事件未记录,如登入成功,登入失败及高价值交易。
警告或错误发生时未产生,产生不充足或产生不明确日志。
未监控应用程式或应用程式介面(API)日志中的可疑活动。
日志仅储存于本地端。
渗透测试及 DAST 工具(如 OWASP ZAP)扫描没有触发告警。
应用程式无法接近即时或即时侦测,升级或警告进行中之攻击。
允许使用者或攻击者读取日志或告警事件可能早成资讯泄漏(参考 A01:2021 权限控制失效)
开发者应依据应用程式所面临风险实作下列部分或全部的控制项:
确保记录所有登入,存取控制及服务器端输入验证之失败,日志应包含充足使用者情境以识别可疑或恶意帐号,日志应存留充足时间以利未来可能之鉴识分析要求。
确保日志格式符合一般日志管理系统常用格式。
现有多种商业化及开放原始码应用程式保护架构,如 OWASP ModSecurity Core Rule Set 及开放原始码日志关联软体可客制化仪表板及告警,如 ELK stack。
情境 1:一家儿童健康计划供应商的网站运营商因缺乏监控和记录无法侦测资安事件。外部通知该健康计划供应商,攻击者已存取及修改超过 350 万名儿童的敏感健康记录。事后审查发现网站开发者没有处理重大弱点。由于系统没有记录或监控,资料泄漏可能从 2013 年开始至今,时间超过七年。
情境 2:印度一家大型航空公司发生涉及数百万乘客超过十年包括护照及信用卡资料等个人资料的资料泄漏。资料泄漏发生在第三方供应商提供的云端服务,该供应商在资料泄漏发生一段时间后通知航空公司。
情境 3:一家大型欧洲航空公司发生依 GDPR 应报告之个资事故。据报导,攻击者利用支付应用系统之安全漏洞,取得超过 40 万笔客户支付纪录。该航空公司遭隐私主管机关裁罚两千万英镑。
日志伪造漏洞
应用程序通常使用日志文件来存储事件或事务的历史,以供以后查看、收集统计信息或调试。根据应用程序的性质,检查日志文件的任务可以根据需要手动执行,也可以使用工具自动筛选重要事件或趋势信息的日志。
当日志条目包含未经过授权的用户输入时,会造成日志伪造。
满足以下条件,就构成了一个日志伪造的 安全漏洞:
1、数据是从不可靠的来源(包括但不局限于不可靠用户的输入信息或是不可靠用户可能更改的文件)进入应用程序;
2、数据写入到应用程序或是系统日志文件。
关键词:修改应用程序的数据;隐藏活动;执行未授权的代码或命令
如果攻击者向记录到日志文件的应用程序提供恶意数据,则可能会妨碍或误导日志文件的解读。最理想的情况是,攻击者可能通过向应用程序提供包括适当字符的输入,在日志文件中插入错误的条目。如果日志文件是自动处理的,那么攻击者可以破坏文件格式或注入意外的字符,从而使文件无法使用。通过伪造或其他方式,可能会导致日志文件中的统计信息发生偏差,受到破坏的日志文件可用于掩护攻击者的跟踪轨迹,甚至还可以牵连第三方来执行恶意行为。最糟糕的情况是,攻击者可能向日志文件注入代码或者其他命令,利用日志处理实用程序中的 漏洞。
1、输入验证:对输入的信息进行验证。假设所有输入都是恶意的,使用“接受已知好的数据”输入验证策略,即,使用严格符合规范的可接受输入列表。拒绝任何不严格符合规范的输入,或者将其转换为符合规范的输入。
2、输出编码:对要写入日志文件的信息进行编码,使之符合日志文件的编码格式要求。常见的编码格式包括ISO-8859-1, UTF-7, 和UTF-8。
日志伪造在CWE中被编号为CWE-117:Improper Output Neutralization for Logs