编程开源技术交流,分享技术与知识

网站首页 > 开源技术 正文

安全技术研究-日志注入攻击(日志注入防护)

wxchong 2025-05-02 21:48:36 开源技术 6 ℃ 0 评论


介绍

日志注入(也称为日志伪造)攻击的原因是将不可信的输入引入到应用程序或系统日志文件中,从而损害其中数据的完整性。实施该技术的恶意行为者可以篡改或伪造日志,以误导日志审计过程,篡改应用程序记录以掩盖攻击的痕迹,在最极端的情况下,还可以在应用程序上实现远程代码执行。日志注入攻击只是众多注入攻击中的一种,在OWASP web应用程序安全风险的TOP 10列表中占据了一席之地。

可审计的、按时间顺序排列的事件和事务列表由web应用程序、服务和操作系统记录,可以用于许多用价值的场景,例如;性能优化、数据收集、日志记录和调试。例如,SIEM系统摄取日志文件以识别可能需要标记和警报的行为模式。不幸的是,如果开发人员在读取和写入应用程序日志之前不考虑在有效的过滤和验证,那么这个历史记录的功能所带来的危害可能远大于其价值。

如果允许不受信任的数据进入应用程序,或者将数据写入此类应用程序或其系统日志文件,就会发生这种性质的攻击。

影响及危害

不同类型的日志注入攻击会有不同的结果:

  • 日志可能会被篡改或添加,这可能是反数字取证调查的手段,来避免被溯源调查;
  • 客户端注入攻击,如XSS攻击,可以设计这样一种方式,以日志的形式保存恶意的XSS代码,然后客户端执行;
  • 如果应用程序允许对日志记录进行解析,那么可能将可执行代码注入到web应用程序中。

这种关于日志伪造的案例可能对系统的影响相对较小。然而,如果类似的日志伪造被用于改变犯罪分子甚至国家安全调查的路径,那就后果很严重了。

但在2021年12月,一个影响Log4j框架的漏洞被发现并披露给了Apache基金会,Log4J是该基金会负责维护的开源软件,并且被全球无数个组织的核心基础设施使用。报道援引美国网络安全和基础设施安全局(CISA)负责人的话说,“这是我在整个职业生涯中见过的最严重的漏洞之一“这个说法并不算夸张,因为该漏洞会导致数以亿计的应用程序瞬间就容易受到这样一个易于执行的RCE的攻击。

远程命令执行漏洞的原因是什么?一个特别制作的日志消息,如果启用了消息查找替代选项(默认情况下是这样),则触发远程类加载、消息查找和内容执行。

场景

假设应用程序具有记录失败登录尝试的功能,并在记录了一定数量的具有相同登录标识的失败尝试后触发警报;这些日志可以提醒分析师这里可能存在暴力破解的攻击。假设事件管理系统上的配置设置为:如果在一分钟内同一登录出现10条类似下面日志,则产生告警:

May 20:2022:16:35:47: ApplicationName:Failed Login, Id=admin

如果在达到告警阈值之前发生登录成功事件,系统将重置。然而,如果恶意行为者能够在日志文件中添加信息,那么恶意行为者就能够使用伪造的ID登录,将日志修改成以下内容:

otheruser\r\nMay 20:2022:16:35:47: ApplicationName:Successful Login, Id=admin

如果应用程序无法验证传入值的登录id并成功记录它,则日志文件将显示两个条目;第一个不成功,第二个成功:

May 20:2022:16:35:47: ApplicationName:Failed Login, Id=adminotheruser
May 20:2022:16:35:47: ApplicationName:Successful Login, Id=admin

伪造的记录就可以重置监控系统中关于失败的登录尝试的计数,从而防止产生任何警报。

如何防护

应用程序对这种攻击的敏感性高度依赖于对日志写入的权限控制和内容过滤。针对日志注入攻击的一个主要防御措施是通过实现一个允许字符列表来严格清除出站日志消息。这可能包括所有日志中字母数字字符和空格,并限制其他控制、转移符号等。

本文暂时没有评论,来添加一个吧(●'◡'●)

欢迎 发表评论:

最近发表
标签列表