生活中处处都有CVE——CVE-2019-3498 Django 404页面漏洞浅谈

 

Django前日发布关于CVE-2019-3498安全通告

通告详情

Django于1月4日发布更新安全通告,其中提到了修复了新的CVE-2019-3498漏洞。通告地址

在更新安全通告中,Django发布了新版本1.11.18、2.0.10以及2.1.5。其中主要提到了新的安全漏洞CVE-2019-3498,该漏洞被描述为404 not found页面中可能存在的安全隐患。即攻击者可利用特殊的URL来实现显示欺骗性内容(此页面由django.views.defaults.page_not_found()生成)。

在修复后,URL路径不会显示在生成的页面中,而将用request_path变量来传入显示内容。

影响版本

Django master/2.1/2.0/1.11

目前在master及各版本分支上此问题已修复

 

Ryuji Tsutsui发布博客简单介绍这一漏洞

作者提到,通常django.views.defaults.page_not_found()默认为handler404,此处会给攻击者可乘之机。

作者做了一个非常简单的PoC来验证其存在的潜在风险:

使用Django 1.11.17版本快速创建一个环境,其中配置DEBUG False,ALLOW HOSTS为*,并migrate、runserver启动服务器。

404页面如下所示:

在此处,URL将直接显示在页面中。

那么只要简单通过URL,就能显示具有欺骗性的内容,如下:

虽然效果并非完美,但已经具有一定的误导性。

而在修复后,404页面则如下所示:

 

关于CVE及漏洞的浅谈

CVE近些年不管是实际内容还是风评(特别是Web方向)都出现了“越来越水”的倾向,去年仅仅两个月内印象中就有两个假洞(CVE-2018-17793和CVE-2018-17566),但绝大多数时候,它依然有着其权威性。

此次的漏洞作为一个隐藏了蛮久的安全隐患,收获了一个四位数的CVE,虽然有一些出人意料,不过最后看来也在情理之中。也许在忙于挖洞的过程中,这种设计上的安全隐患逐渐就被边缘化乃至忽略。

这个漏洞也是新年来感觉蛮有意思的漏洞,分享给大家,祝大家早日挖到下一个CVE(╯‵□′)╯︵┻━┻。

(完)