据外媒报道,近日 nginx 被爆出存在安全问题,有可能会致使 1400 多万台服务器易遭受 DoS 攻击。而导致安全问题的漏洞存在于 HTTP/2 和 MP4 模块中。nginx Web 服务器于11月6日发布了新版本,用于修复影响 1.15.6, 1.14.1 之前版本的多个安全问题,被发现的安全问题有一种这样的情况 —— 允许潜在的攻击者触发拒绝服务(DoS)状态并访问敏感的信息。
“在 nginx HTTP/2 实现中发现了两个安全问题,这可能导致过多的内存消耗(CVE-2018-16843)和CPU使用率(CVE-2018-16844)”,详见 nginx 的安全建议。
此外,“如果在配置文件中使用"listen"指令的"http2"选项,则问题会影响使用 ngx_http_v2_module 编译的 nginx(默认情况下不编译)。”
为了利用上述两个问题,攻击者可以发送特制的 HTTP/2 请求,这将导致过多的CPU使用和内存使用,最终触发 DoS 状态。
所有运行未打上补丁的 nginx 服务器都容易受到 DoS 攻击。
第三个安全问题(CVE-2018-16845)会影响 MP4 模块,使得攻击者在恶意制作的 MP4 文件的帮助下,在 worker 进程中导致出现无限循环、崩溃或内存泄露状态。
最后一个安全问题仅影响运行使用 ngx_http_mp4_module 构建的 nginx 版本并在配置文件中启用 mp4 选项的服务器。
总的来说,HTTP/2 漏洞影响 1.9.5 和 1.15.5 之间的所有 nginx 版本,MP4 模块安全问题影响运行 nginx 1.0.7, 1.1.3 及更高版本的服务器。为缓解这两个安全问题,服务器管理员必须将其 nginx 升级到 1.14.1 stable 或1.15.6 主线版本。
目前,Shodan 搜索显示超过 1400 万台服务器运行未包含修复补丁的 nginx 版本(更确切地说是 14,036,690 台),仅有 6992 台服务器打上了安全补丁。