【处置手册】GoAhead httpd2.5 to 3.5 LD_PRELOAD远程代码执行漏洞(CVE-2017-17562)

今日,GoAhead Web Server 被爆出在3.6.5之前的所有版本中存在一个远程代码执行漏洞(CVE-2017-17562)。该漏洞源于使用不受信任的HTTP请求参数初始化分叉CGI脚本环境,并且会影响所有启用了动态链接可执行文件(CGI脚本)支持的用户。当与glibc动态链接器结合使用时,使用特殊变量(如LD_PRELOAD)就可以实施远程代码执行。2017年12月18日针对该漏洞利用的PoC公开,请受影响的用户及时更新版本进行修复。

 详情请参考如下链接:
https://www.elttam.com.au/blog/goahead/

一、影响范围

受影响的版本
GoAhead Web Server < 3.6.5

不受影响的版本
GoAhead Web Server 3.6.5
GoAhead Web Server 4.0.0

二、漏洞检测

2.1 手工检测

2.1.1 受影响版本检测

该漏洞影响linux服务器上开启了动态链接可执行文件的用户,同时请检查当前GoAhead Web Server版本是否在受影响范围内,如果当前版本低于3.6.5,则存在风险。

版本检测可使用如下命令:

./goahead --version

2.1.2 漏洞验证POC检测

目前安全研究人员已经提供了goahead远程代码执行漏洞的POC,参考链接如下:

https://github.com/elttam/advisories/tree/master/CVE-2017-17562

您可通过此测试脚本,对自有资产进行验证,并及时对此漏洞进行防护,防护方案请参考第四章节防护方案部分。

检测效果如下图所示:

2.2 在线检测

由于goahead漏洞影响范围较大,绿盟科技提供在线检测接口,您可以通过自助检测的方式,判断自有资产是否受到影响。

三. 防护方案

3.1 官方补丁

GoAhead官方已经发布新版本修复了该漏洞,受影响的用户请尽快升级到最新版本进行防护,以3.6.5版本为例,下载链接如下:

https://github.com/embedthis/goahead/archive/v3.6.5.zip

首先将网站进行备份,到上述链接下载修复了漏洞的程序包,解压后进入程序目录,目录结构如下:

在当前目录下依次执行以下命令,对新版本goahead应用进行编译安装:

./configure
make    #执行编译
sudo make install    #编译完成后安装

将备份好的网站部署到网站目录下,如路径:/var/www/goahead。进入/build/linux-x64-default/bin目录下,使用如下命令启动新版本GoAhead Web Server即可:

./goahead -v --home /etc/goahead /var/www/goahead 0.0.0.0:8888

如果启动过程中出现如下错误,在goahead执行文件目录中找到self.key和self.crt文件拷贝到/etc/goahead下即可解决。

goahead: 0: mbedtls: Unable to read key file self.key
goahead: 0: Cannot initialize server. Exiting.

其中“/etc/goahead”为配置目录,“/var/www/goahead”为网站所在目录,“0.0.0.0:8888”为绑定IP和监听端口,请根据具体的环境进行配置。

3.2 产品防护

用户可使用绿盟入侵防御系统NIPS、Web应用防火墙WAF或下一代防火墙NF对网络中的漏洞攻击报文进行阻断,规则编号如下:

产品 规则ID
IPS 24163
WAF 自定义规则
NF 24163

3.2.1 入侵防御系统NIPS配置方法

1. 目前最新的规则升级包正在发布流程中,请及时关注官网的最新动态,并及时下载最新的规则库文件:
http://update.nsfocus.com/update/listNewidsDetail/v/rule5.6.10

2. 在系统升级中点击离线升级,选择系统规则库,选择对应的文件,点击上传。

3. 更新成功后,在系统默认规则库中查找规则编号:24163,即可查询到“GoAhead httpd LD_PRELOAD 远程代码执行漏洞”。

3.2.2 Web应用防火墙WAF配置方法

• 自定义规则

为及时形成对goahead远程代码执行漏洞的防护能力,减少因此漏洞导致的损失,部署有绿盟科技WAF的用户可通过自定义规则的方式用来及时防护该漏洞,自定义规则如下:

(method * belong POST)&&(uri_path * rco /cgi-bin/)&&(parameter_name * rco ^(LD_|IFS$|CDPATH$|PATH$|REMOTE_HOST$|HTTP_AUTHORIZATION$))

请参考如下步骤对临时规则进行部署:

1. 新建自定义规则,依次点击“安全管理”-“规则库管理”-“自定义”-“新建”

2. 将自定义规则命名为“GoAhead RCE”。

3. 依次按照如下截图进行设置:

检测对象:Method
匹配操作:属于
检测值:POST

检测对象:URI-path
匹配操作:正则包含
检测值:/cgi-bin/

检测对象:Parameter-name
匹配操作:正则包含
检测值:^(LD_|IFS$|CDPATH$|PATH$|REMOTE_HOST$|HTTP_AUTHORIZATION$)

配置完成后可以看到如下约束条件:

4. 新建自定义策略,依次点击“安全管理”-“策略管理”-“自定义策略”-“新建”。

设置策略名称为“GoAhead RCE策略”,勾选刚刚新建的“GoAhead RCE”规则后点击确定。

 

5. 在站点添加自定义策略,依次点击“安全管理”-“站点防护”-“根据需要选择需要防护的站点”-“Web安全防护”。

在自定义策略中勾选刚刚创建的“GoAhead RCE策略”后,点击确定即可启用自定义的规则进行防护。

防护效果如下,可以看到,对于此POC的攻击已经进行了有效的阻断:

3.2.3 下一代防火墙NF配置方法

NF已经形成了对goahead远程代码执行漏洞的防护能力,部署有NF的用户可下载防护规则库文件,规则编号为:24163,升级后即可防护此漏洞带来的攻击:

http://update.nsfocus.com/update/listNewNfDetail/v/rule6.0.1

2. 在NF的规则升级界面进行升级:

3. 手动选择规则包,点击提交即可完成更新。

四. 关于GoAhead Web Server

GoAhead是一个开源(商业许可)、简单、轻巧、功能强大、可以在多个平台运行的嵌入式Web Server。GoAhead Web Server是为嵌入式实时操作系统(RTOS)量身定制的Web服务器。支持的操作系统包括eCos 、LINUX 、LynxOS 、QNX 、VxWorks 、WinCE、pSOS等,由于他结构紧凑,使用安全简单,被部署在数以亿计的设备中,如IBM,HP,Oracle,波音,D-link和摩托罗拉等公司的产品中,是最小的嵌入式设备的理想选择。

五. 声 明

本安全公告仅用来描述可能存在的安全问题,绿盟科技不为此安全公告提供任何保证或承诺。由于传播、利用此安全公告所提供的信息而造成的任何直接或者间接的后果及损失,均由使用者本人负责,绿盟科技以及安全公告作者不为此承担任何责任。
绿盟科技拥有对此安全公告的修改和解释权。如欲转载或传播此安全公告,必须保证此安全公告的完整性,包括版权声明等全部内容。未经绿盟科技允许,不得任意修改或者增减此安全公告内容,不得以任何方式将其用于商业目的。

六. 关于绿盟科技

北京神州绿盟信息安全科技股份有限公司(简称绿盟科技)成立于2000年4月,总部位于北京。在国内外设有30多个分支机构,为政府、运营商、金融、能源、互联网以及教育、医疗等行业用户,提供具有核心竞争力的安全产品及解决方案,帮助客户实现业务的安全顺畅运行。
基于多年的安全攻防研究,绿盟科技在网络及终端安全、互联网基础安全、合规及安全管理等领域,为客户提供入侵检测/防护、抗拒绝服务攻击、远程安全评估以及Web安全防护等产品以及专业安全服务。
北京神州绿盟信息安全科技股份有限公司于2014年1月29日起在深圳证券交易所创业板上市交易,股票简称:绿盟科技,股票代码:300369。

Spread the word. Share this post!

Meet The Author

Leave Comment