阅读更多

7顶
1踩

编程语言

转载新闻 黑帽大会:HTTPS和SSL存在安全漏洞

2010-08-02 15:44 by 副主编 just_cool 评论(1) 有3586人浏览

HTTPS(安全HTTP)和SSL/TLS(安全套接层/传输层安全)协议是Web安全和可信电子商务的核心,但Web应用安全专家Robert "RSnake" Hansen和Josh Sokol在昨天的黑帽大会上宣布,Web浏览器的基础架构中存在24个危险程度不同的安全漏洞.这些漏洞基本上使HTTPS和SSL能够提供的浏览器保 护荡然无存. HTTPS对HTTP协议进行了加密,以保护用户的页面请求和Web服务器返回的页面不被窃 听.SSL及后来的TLS协议允许HTTPS利用公钥加密验证Web客户端和服务器.

 

Hansen和Sokol指出,攻击者要利用这些漏洞,首先需要发起中间人攻击.攻击者一旦劫持了浏览器会话,就可以利用这些漏洞中的大多数对会话进行重定向,从而窃 取用户凭据或者从远程秘密执行代码.

然而,两位研究人员强调,中间人攻击并不是攻击者的终极目的.

Hansen指出,“利用中间人攻击,攻击者还可以实现许多更加容易的攻击.你不得不'执行'中间人攻击,并被迫成为一个十分坚定的攻击者……然而,这还不是最坏的情况.对于电子商务应用来说,这些攻击简直是毁灭性的灾难.”

实际上,Hansen怀疑HTTPS和SSL/TLS中可能有数百个安全问题有待发现.他说,由于要准备这次黑帽大会的演讲,他们还没来得及对此进行深入研究.

中间人攻击并不是什么新技术.由于各种原因,攻击者可以设法在一个浏览器会话过程中的多个时刻加入会话.一些攻击者能够使用包括MD5冲突在内的各种方法 伪造或窃 取SSL证书.由于在会话到达认证协商的加密端口之前,SSL协议是采用明文传输DNS和HTTP请求的,所以攻击者还可以在这些步骤中的任一时 刻劫持会话.另外,攻击者还能够利用中间人攻击修改HTTPS链接,将用户重定向到恶意HTTP网站.

对任何攻击者来说,重复Hansen和Sokol所说的工作并不容易,它需要耐心和资源.两位专家强调,中间人攻击得逞之后,攻击者可能发动两种高度危险的攻击.

第一种是cookie篡改(cookie poisoning)攻击,即攻击者利用浏览器在用户会话期间不更改cookie的情况,将同一个cookie反复标记为有效状态.如果攻击者能够提前劫 持来自网站的cookie,然后再将其植入用户的浏览器中,则当用户的认证信息到达HTTPS站点时,攻击者就能够获得用户凭据并以用户身份登录.

第二种是重定向攻击.许多银行网站会将用户的会话从一个HTTP站点重定向到一个HTTPS站点,该会话通常是在另一个浏览器选项卡中打开,而不是在一个 新的浏览器窗口中打开.由于攻击者仍然控制着旧的选项卡,所以攻击者可以在URL中注入Javascript脚本并修改新选项卡的行为.受攻击者可能会下 载可执行文件,或者被重定向到一个恶意登录页面.

Hansen和Sokol解释说,利用针对SSL Web浏览器会话的攻击,攻击者可以观察和计算用户在一个网站的特定页面上停留的时间.这可能会泄漏处理数据的页面.此时,攻击者可以在该网页上采用相关技术强迫用户退出登录并重新进行身份认证,从而获得用户凭据.

Hansen指出,“有必要对SSL进行修改,比如添加填充和抖动代码”.他解释说,通过在Web请求中添加无意义的编码,可以延长攻击者完成攻击的时 间,也许足以阻止攻击者采取进一步的行动.他说,“要避免此类攻击,必须采取适当的选项卡隔离和沙箱技术.安全专家也许能够避免此类情况的发生,但普通用 户却不得不面临这种威胁.我们真的很难阻止这种攻击,我不知道有没有简单的办法可以解决这个问题.”

来自: TechTarget
7
1
评论 共 1 条 请登录后发表评论
1 楼 zhangshoukai 2010-08-03 12:56
这个世界上永远没有“绝对的安全”。

发表评论

您还没有登录,请您登录后再发表评论

相关推荐

  • 【叶子函数分享四十四】全角半角转换函数

    【叶子函数分享四十四】全角半角转换函数

  • 简单介绍Unicode和utf编码

    Unicode和UTF

  • 【C语言】ASCII表、语句与结构、函数

    【C语言】ASCII表、语句与结构、函数

  • ASCII编码表

    ASCII编码对照表 000 = 00 = U+0000 : NULL 001 = 01 = U+0001 : START OF HEADING 002 = 02 = U+0002 : START OF TEXT 003 = 03 = U+0003 : END OF TEXT 004 = 04 = U+0004 : END OF TRANSMISSION 005 = 05 = U+...

  • Unicode与JavaScript

    Unicode是一个字符集 表示: U+0000 用U+4个十六进制数表示,这个是码点 U+597D = 好 U+0000 = null Unicode的字符是分区定义的,每个区是一个平面,一共17个平面 最常见的字符都在第一个平面,他被称为基本平面 一个码点对应一个字符,但是每个码点需要一个字节序在计算机中表示,这涉及到了编码方式 最直观的编码方式是UTF-32 ...

  • Unicode详解(附UTF-8、UTF-16和UTF-32)

    Unicode 在百度百科上,对Unicode的介绍是这样的: “ Unicode(统一码、万国码、单一码)是计算机科学领域里的一项业界标准,包括字符集、编码方案等。Unicode 是为了解决传统的字符编码方案的局限而产生的,它为每种语言中的每个字符设定了统一并且唯一的二进制编码,以满足跨语言、跨平台进行文本转换、处理的要求。” Unicode源于一个很简单的想法:将全世界所有的字符包含在一...

  • 正则表达式总结转义字符   \        转义紧随的元字符   \Q        转义所有紧随的元字符直到\E   \E        与\Q搭配使用,转义包含的所有元字符   \\

    转义字符   \        转义紧随的元字符   \Q        转义所有紧随的元字符直到\E   \E         与\Q搭配使用,转义包含的所有元字符   \\         反斜杠   \uhhhh      16进制Unicode字符U+hhhh   \xhh      16进制Unicode字符U+00hh   \cx

  • 简单理解ASCLL码

    一个小白对ASCLL码的理解

  • 浅谈 JSON 那些被转义的字符们

    其实,之前我一直以为 JSON 会把 ASCII 可显示字符以外的统统转义为 Unicode,直到有一次我用 JSON.stringify 才发现,其实是 PHP 为我们想的太周到了。 我以前是一位 phper,所以处理 json 只要 json_encode 就可以把数组转为 json 数据了,非常方便。可以看到,默认就是把所有 ASCII 可显示字符以外的统统转义为 Unicode。 ...

  • 按键编码的定义

    mark一下 //* VK_0 - VK_9 are the same as ASCII '0' - '9' (0x30 - 0x39) //* 0x40 : unassigned //* VK_A - VK_Z are the same as ASCII 'A' - 'Z' (0x41 - 0x5A) //定义数据字符0~9 #define VK_0 0x30 #def

  • ASCII码、Unicode编码对照表 —— ASCII控制字符 Unicode编码 字符编码的前世此生

    ASCII控制字符 Unicode编码  ASCII(American Standard Code for Information Interchange,美国信息互换标准代码,ASCⅡ)是基于拉丁字母的一套电脑编码系统。它主要用于显示现代英语和其余西欧语言。它是现今最通用的单字节编码系统,并等同于国际标准ISO/IEC 646。php   ASCII第一次以规范标准的型态发表是在1967年,最后一次更新则是在1986年,至今为止共定义了128个字符,其中33个字符没法显示(这是以现今操做系统为依归,.

  • java u0000_Java-从字符串中删除\ u0000

    我正在使用twitter api,下面的字符串正在困扰我Proyecto de ingeniera comercial, actual Profesora de matemáticas \u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000Enseña Chile我想把它存储在postgresql中,但不接受\u0000,所以我想替...

  • Java 中各种空(‘‘、\u0000、null)的区别?

    在使用下面的SQL查询时,发现去不掉空格,而且把limit 去掉以后空格就没有了,琢磨了很久才发现问题的关键所在。主要是\u0000在作怪!!! select id,company_name,username,remarks,address from table_alldata where company_name !='' and remarks is null limit 1000; 结...

  • 关于\u0000的验证总结

    @Test public void method1() { String a = String.valueOf('\u0000'); //控制台输出的是空格,\u0000 表示的是Unicode值 log.info("a的Unicode值:" + Integer.toHexString(a.charAt(0)));// \u0000 String b = " "; // ...

  • 深入理解 Java 中的转义符: \u000a\u0022

    Java 对 Unicode 转义字符不会进行任何特殊的处理,只是简单的将其替换称相应的字符! 因此,在编写代码时,任何出现 Unicde 字符串的地方,都要额外注意,倍加小心,要知道 Java 词法是如何解析的?转移后的代码是否合法?逻辑上是否正确? Unicode 特殊字符 含义 \u000a 换行符 \n \u007d { \u007b } \u0022 " \u002b + 示例一 : public void test(){ // 这是注释\u000a Sy.

  • 骗过编译的Unicode换行符(\u000d)

    骗过编译的Unicode换行符(\u000d) 注释无效

  • 虚拟键盘对照表(KEY 按键)

    取值(16进制) 常量符号 含义01 VK_LBUTTON 鼠标左键02 VK_RBUTTON 鼠标右键03 VK_CANCEL Break中断键04 VK_MBUTTON 鼠标中键05-07 -- 未定义08 VK_BACK (BackSpace)键09 VK_TAB Tab键0A-0B -- 未定义0C VK_CLEAR Clear键0D VK_RETURN Enter键0E-0F -- 未定

Global site tag (gtag.js) - Google Analytics