【 技术分析与防护方案】GoAhead httpd/2.5 to 3.5 LD_PRELOAD 远程代
2017-11-20
综述
GoAhead Web Server在3.6.5之前的所有版本中存在一个远程代码执行漏洞(CVE-2017-17562)。该漏洞源于使用不受信任的HTTP请求参数初始化CGI脚本环境,并且会影响所有启用了动态链接可执行文件(CGI脚本)支持的用户。当与glibc动态链接器结合使用时,使用特殊变量(如LD_PRELOAD)可以滥用该漏洞,从而导致远程代码执行。
参考链接:
https://www.elttam.com.au/blog/goahead/
https://github.com/embedthis/goahead/issues/249
受影响的版本
GoAhead Web Server Version < 3.6.5
不受影响的版本
GoAhead Web Server Version >= 3.6.5
技术防护方案
用户自查
该漏洞影响linux服务器上开启了动态链接可执行文件的用户,同时请检查当前GoAhead Web Server版本是否在受影响范围内,如果当前版本低于3.6.5,则存在风险。
版本检测可使用如下命令:
./goahead --version |
官方修复方案
官方已经在新版本中修复了该漏洞,请用户尽快升级到最新版本进行防护。用户可以保存auth.txt和route.tx配置文件, 然后删除以前版本的GoAhead,接下来,安装新版本并将您的配置应用于新版本。
参考链接:
https://embedthis.com/goahead/download.html
https://embedthis.com/goahead/doc/start/installing.html
js1996官网登录防护建议
js1996官网登录检测类产品与服务
1、 公网资产可使用金沙js1996云 紧急漏洞在线检测,检测地址如下:
https://cloud.nsfocus.com/#/krosa/views/initcdr/productandservice?page_id=12
2、内网资产可以使用js1996官网登录的入侵检测系统(IDS)进行检测。
入侵检测系统(IDS)
http://update.nsfocus.com/update/listIds
通过上述链接,升级至最新版本即可进行检测
使用js1996官网登录防护类产品(IPS/NF/WAF)进行防护:
入侵防护系统(IPS)
http://update.nsfocus.com/update/listIps
下一代防火墙系统(NF)
http://update.nsfocus.com/update/listNf
Web应用防护系统(WAF)
http://update.nsfocus.com/update/wafIndex
通过上述链接,升级至最新版本即可进行防护!
技术分析
漏洞分析
GoAhead的cgi程序在处理HTTP请求时,没有正确过滤参数,可被注入变量LD_PRELOAD,导致远程命令执行。
goahead/src/cgi.c的cgihandler函数用于处理HTTP请求。
它会从HTTP请求的参数中提取出key-value值,代入envp数组中,作为环境变量,传递给launchCgi函数,执行cgi程序。
launchCgi函数中通过execve将之前传入的环境变量作为cgi程序的环境变量执行。
而我们知道在linux中是可以通过LD_PRELOAD环境变量来hook,劫持函数的执行流。
在函数中可以看到只对REMOTE_HOST和HTTP_AUTHORIZATION进行了过滤,对其他变量并没有过滤。
通过“envp[n++] = sfmt("%s=%s" s->name.value.string s->content.value.string);”直接把HTTP请求中的参数赋值给了envp数组,而后面envp数组直接作为了cgi程序执行时的环境变量。
因此,通过恶意的HTTP请求可以让goahead的cgi程序加载执行指定的so库文件。
漏洞修复
从补丁信息看,官方在2017年6月就修复了该问题。
增加了HTTP参数的过滤,防止非法参数传入环境变量中。
可以看到除了“LD_”开头的变量,还增加了对“CDPATH”、“IFS”等字符的过滤。
声 明
本安全公告仅用来描述可能存在的安全问题,js1996官网登录不为此安全公告提供任何保证或承诺。由于传播、利用此安全公告所提供的信息而造成的任何直接或者间接的后果及损失,均由使用者本人负责,js1996官网登录以及安全公告作者不为此承担任何责任。js1996官网登录拥有对此安全公告的修改和解释权。如欲转载或传播此安全公告,必须保证此安全公告的完整性,包括版权声明等全部内容。未经js1996官网登录允许,不得任意修改或者增减此安全公告内容,不得以任何方式将其用于商业目的。