防止XXE最安全的方式是始终完全禁用外部实体。禁用这些实体还让解析器变得安全而免受拒绝服务(DOS)攻击,例如专门针对XML文档解析器的Billion Laughs CVE-2019-5442 。
在2019年10月,StackRox的Kubernetes API服务器GitHub库被发现在其YAML的部署上有安全问题,这使得它易受拒绝服务的billion laughs攻击。StackRox自己声称:“该问题再次提醒我们,与所有软件一样,Kubernetes易受零DAY漏洞的攻击”。
攻击示例
本Java示例用了XMLReader库,直接将这个XML文件与底层XML库一起解析。在此操作期间,将解析并获得外部实体,即common.xml,这可能是由系统多个用户共享的xml文件并可能被系统的某些外部用户所控制。如果有恶意的用户在此文件里精心地放入一些内容,这会危及到下游系统的配置。
上一篇OWASP文章:OWASP第三篇之“敏感数据泄露”
要了解有关OWASP以及爱科识如何帮助您防止此类漏洞的更多信息,请点击此处。