关于做好Apache Struts2 高危漏洞管理和应急工作的安全公告
发布时间:2017-07-13 编辑:漆德勇 浏览:31
关于做好Apache Struts2 高危漏洞管理和应急工作的安全公告
安全公告编号:CNTA-2017-0054
近日,国家信息安全漏洞共享平台(CNVD)收录了Apache Struts2 S2-048远程代码实行漏洞(CNVD-2017-13259,对应CVE-2017-9791),漏洞利用代码已在互联网公开,8日凌晨起互联网上已经大量的攻击尝试并已有若干漏洞案例报告。针对近年来ApacheStruts2频繁出现高危风险,在相关案例中国内漏洞管理和应急工作出现一些较为被动的情况,CNVD就本次S2-048漏洞风险和做好相关高危漏洞管理和应急工作,提出相关建议:
一、S2-048漏洞风险情况
Struts2是第二代基于Model-View-Controller (MVC)模型的java企业级web应用框架,是较为流行的容器App中间件。
二、Apache Struts 2漏洞应急案例经验教训
回顾2016年以来针对ApacheStruts 2存在的S2-032、S2-045等漏洞的应急工作案例,主要存在漏洞详情披露不当、漏洞信息报告和应急准备不充分等问题。2016年4月下旬,在官方发布S2-032漏洞不到一周时间内,发现漏洞的国内安全厂商就公开了漏洞详细分析情况,致使利用代码开始出现并大范围传播,导致大规模攻击威胁,漏洞详情的不当披露成为了黑客发起攻击的“帮手”。2017年3月“两会”期间,官方发布S2-045漏洞但利用方法可通过补丁逆向分析获得且在互联网快速传播。由于漏洞风险信息未提前向国内网络安全主管部门和应急组织报告,致使党政机关、重要行业单位网站在未获得有效应急时间窗口的情况下受到大规模攻击威胁。本次S2-048漏洞的报告和应急准备工作也存在与S2-045案例相同的问题。
三、做好高危漏洞管理和应急工作的建议
按照《网络安全法》有关规定(如第二十六条:开展网络安全认证、检测、风险评估等活动,向社会发布系统漏洞、计算机病毒、网络攻击、网络侵入等网络安全信息,应当遵守国家有关规定),参照主管部门制定的《国家网络安全事件应急预案》、《公共互联网网络安全应急预案》和国家技术标准(如:《GB/T 30276-2013 信息安全技术 信息安全漏洞管理规范》)以及正在制定的《个人信息和重要数据出境安全评估办法》等规定,针对Apache Struts 2等软硬件产品高危漏洞管理和应急存在的问题,CNVD提出如下两方面建议:
一是加强学习,提高认识。国内网络安全从业者应树立守法意识,加强对法律法规和部门规定的学习。目前网络安全监管还正处于不断完善的阶段,从业者应充分领会主管部门提出的管理思路和要求,围绕保障国家关键信息基础设施、保障行业和个人信息安全、共同提升国内网络安全防护水平等工作大局,自觉遵守和实行有关规定和要求。
二是完善流程,协同自律。加强对有可能对国内用户造成大规模威胁的漏洞的前置管理,在“漏洞修复”、“威胁消除”等环节给国内党政机关、重要行业单位以及广大用户预留必要的准备时间。重点从漏洞发现和报告环节入手,密切配合国家网络安全主管部门和应急组织提出的工作要求,完善报告策略和处理流程。加强行业自律,不得从企业和个人利益出发,做出有损于或不利于共同安全利益的漏洞报告和披露行为。
参考链接:
http://www.npc.gov.cn/npc/xinwen/2016-11/07/content_2001605.htm
http://www.cac.gov.cn/2017-06/27/c_1121220113.htm
http://www.cac.gov.cn/2017-04/11/c_1120785691.htm
https://cwiki.apache.org/confluence/display/WW/S2-048
https://cwiki.apache.org/confluence/display/WW/S2-045
https://cwiki.apache.org/confluence/display/WW/S2-032
http://www.cnvd.org.cn/flaw/show/CNVD--2017-13259
另附:S2-048漏洞修复措施
官方已在Struts
临时解决方案:
应使用资源键(resource keys),而不是将原始消息直接传递给ActionMessage类。正确和错误的方式如下所示:
(正确的方式)messages.add(msg,newActionMessage(struts1.gangsterAdded, gform.getName()));
(错误的方式)messages.add(msg,new ActionMessage(Gangster + gform.getName() + wasadded));