关注网络安全
和行业未来

OpenSSL支持TLS1.3特性前瞻

本文由Matt Caswell于2015年5月4日发布在OpenSSL博客。

即将到来的OpenSSL 1.1.1版本将支持TLS 1.3。这个新版本将兼容OpenSSL 1.1.0版本的二进制文件和API。理论上,如果你的应用程序支持OpenSSL 1.1.0,那么当更新可用时,TLS 1.3版本也将自动得到支持,你不需要专门进行安装。但有一些问题仍需要应用程序开发人员和部署人员了解。在这篇博客中,我将谈谈其中的一些问题。

与TLS 1.2及更早版本的区别

TLS 1.3版本是对规范的重大修改。它到底应该叫TLS 2.0还是现在的名字TLS 1.3,还存在一些争论。该版本有重大变化,一些工作方式也非常不同。下面是你可能需要注意的一些问题,简明扼要,不过并不太全面。

  • 有一些新的密码套件仅在TLS 1.3下工作。一些旧的密码套件无法用于TLS 1.3连接。
  • 新的密码套件定义方式不同,且并未详细规定证书类型(如RSA、DSA、ECDSA)或密钥交换机制(如DHE或ECHDE)。这对密码套件的配置有暗示作用。
  • 客户端在客户问候消息(ClientHello)中提供一个“key_share”。这会对“组”配置产生影响。
  • 直到主握手完成以后,会话才会建立。在握手结束和会话建立之间可能会有一个间隙(理论上,会话可能根本不会建立),并可能对会话恢复代码产生影响。
  • 在TLS 1.3版本中,重新磋商是不可能的。
  • 现在大部分握手都会被加密。
  • 更多类型的消息现在可以有扩展(这对定制扩展API和证书透明系统有影响)。
  • 在TLS 1.3连接中不再允许使用DSA证书。

注意,在这一阶段,只支持TLS 1.3。因DTLS 1.3版本的规范刚刚开始制定,目前并不支持OpenSSL。

TLS 1.3标准目前的状态

到我写这篇文章时,TLS 1.3仍是一个草案。TLS工作团队定期会发布该标准的新版草案。实际中,需要对草案进行部署来识别他们使用的具体版本,基于不同草案版本的实现之间无法交互。

OpenSSL 1.1.1至少不会在TLS 1.3发布之前完成。同时,OpenSSL的git主分支包含了我们的TLS 1.3开发代码,可以用于测试(即不用于生产)。你可以在任意OpenSSL版本中通过头文件tls1.h中的宏TLS1_3_VERSION_DRAFT_TXT的值来查看部署的TLS 1.3草案的版本。在该标准的最终版发布后,这个宏会被删除。

你必须使用“enable-tls1_3”选项来“配置”(config或Configure),以编译OpenSSL,使其支持TLS 1.3。

目前,OpenSSL已执行了TLS 1.3的“20版草案”。而很多其他库仍在使用旧版草案。相当多的主流浏览器在使用“18版草案”。这是交互性问题产生的共同来源。18版草案的交互性已被BoringSSL、NSS和picotls测试过。

在OpenSSL的hit源码库中有两个分支:“tls1.3-draft-18”和“tls1.3-draft-19”,都执行旧的TLS 1.3草案版本。为测试其它TLS 1.3版本环境下的交互性,你可能需要使用其中一个分支。注意那些分支被认为是临时的,而且当将来不再需要它们时,可能会被删除。

密码套件

OpenSSL已支持以下5种TLS 1.3的密码套件:

  • TLS13-AES-256-GCM-SHA384
  • TLS13-CHACHA20-POLY1305-SHA256
  • TLS13-AES-128-GCM-SHA256
  • TLS13-AES-128-CCM-8-SHA256
  • TLS13-AES-128-CCM-SHA256

其中,前三个是在默认密码套件组中。这意味着如果你没有主动对密码套件进行配置,那么你会自动使用这三个密码套件,并可以进行TLS 1.3磋商。

所有TLS 1.3密码套件也都出现在别名HIGH中。正如你预计的那样,CHACHA20、AES、AES128、AES256、AESGCM、AESCCM和AESCCM8这些密码套件别名都像它们的名称一样,且包含这些密码套件的一个子集。密钥交换和认证属性是TLS 1.2及以前版本中密码套件定义的一部分。在TLS 1.3中不再如此,所以密码套件别名(如ECHHE、ECDSA、RSA及其它相似别名)都不包含任何TLS 1.3密码套件。

如果你主动配置了你的密码套件,那么应该注意确保你没有不小心排除掉所有兼容TLS 1.3的密码套件。如果一个客户端启用了TLS 1.3而未配置TLS 1.3密码套件,那么会立即报错(即使服务器不支持TLS 1.3),出现以下提示:

1

 

140460646909376:error:141A90B5:SSL routines:ssl_cipher_list_to_bytes:no ciphers available:ssl/statem/statem_clnt.c:3562:No ciphers enabled for max supported SSL/TLS version

类似地,如果一个服务器启用了TLS 1.3而未配置TLS 1.3密码套件,那么也会立即报错,即使客户端不支持TLS 1.3,提示如下:

1

 

140547390854592:error:141FC0B5:SSL routines:tls_setup_handshake:no ciphers available:ssl/statem/statem_lib.c:108:No ciphers enabled for max supported SSL/TLS version

例如,默认设置一个密码套件选择字符串ECDHE:!COMPLEMENTOFDEFAULT,还使用ECDHE进行密钥交换。但是,ECDHE组中没有TLS 1.3密码套件,所以如果启用了TLS 1.3,那么这种密码套件配置在OpenSSL 1.1.1中将会出错。你可能要指定你想使用的TLS 1.3密码套件来避免出现问题。例如:

1

 

"TLS13-CHACHA20-POLY1305-SHA256:TLS13-AES-128-GCM-SHA256:TLS13-AES-256-GCM-SHA384:ECDHE:!COMPLEMENTOFDEFAULT"

你可以使用openssl ciphers -s -v命令来测试,在给定的密码套件选择字符串中包含那个密码套件:

1

 

$ openssl ciphers -s -v "ECDHE:!COMPLEMENTOFDEFAULT"

确保至少有一个密码套件支持TLS 1.3

在TLS 1.3中,客户端选择一个“组”用来进行密钥交换。在我撰文时,OpenSSL仅支持ECDHE组(当OpenSSL 1.1.1自动发布时,可能就会支持DHE组了)。客户端会在客户端问候消息中为其所选的组发送“key_share”信息到服务器。

支持的组的名单是可配置的。一个客户端可能会选择一个服务器不支持的组。在这种情况下,服务器请求客户端发送一个其新支持的key_share。这意味着仍会建立连接(假设存在一个互相支持的组),会引入一个额外的服务器双向连接——所以会对性能产生影响。在理想情况下,客户端将在第一个实例中选择一个服务器支持的组。

实际上,多数客户端都会为它们的首个key_share使用 X25519或P-256。为实现性能最大化,建议对服务器进行配置,使其至少支持这两个组,客户端为其首个key_share使用其中一个组。这是默认的情况(OpenSSL客户端将使用X25519)。

组配置还控制着TLS 1.2及以前版本中允许的组。如果应用程序在OpenSSL 1.1.0中曾配置过它们的组,那么你应该重新检查配置,以确保其对TLS 1.3仍然有效。第一个被指定的组(即最偏好的组)将会被一个OpenSSL客户端在其首次key_share中使用。

应用程序可以使用SSL_CTX_set1_groups()或一个相似的函数(看这里)配置组列表。如果应用程序使用SSL_CONF风格配置文件,则可以使用Groups或Curves命令(看这里)来进行配置。

会话

在TLS 1.2及以前版本中,一个会话的建立是握手的一部分。这个会话就可以在后续连接中被使用,以实现一个简单握手。一般,在握手完成后,应用程序可能通过使用SSL_get1_session()函数(或类似函数)从会话上得到一个句柄。更多细节请看这里

在TLS 1.3中,直到主握手完成后,会话才会建立。服务器发送一个独立的握手后消息(包含会话细节)到客户端。通常,这会发生在握手结束后不久,也可能会稍晚一些(甚至根本不发生)。

按照规范,建议应用程序每次只使用一个会话(即使不是强制性的)。由于这个原因,一些服务器会向一个客户端发送多个会话消息。为执行“每次使用一个”的建议,应用程序可以使用SSL_CTX_remove_session()把一个使用过的会话标记为不可恢复(从缓存中将其删除)。旧的SSL_get1_session()和相似API可能像TLS 1.2及以前版本中一样运行。具体来说,如果一个客户端应用程序在收到包含会话细节的服务器消息之前就调用SSL_get1_session(),那么仍将返回一个SSL_SESSION对象,任何试图恢复的企图都不会成功,而是会产生一个完整的握手。在服务器发送多个会话的情况下,只有最后一个会话被SSL_get1_session()返回。

客户端应用程序开发者应该考虑使用SSL_CTX_sess_set_new_cb() API(看这里)。这提供一个回调机制,每次新的会话建立时该机制都会被调用。如果服务器发送多个会话消息,就可以为一个连接调用多次。

注意,SSL_CTX_sess_set_new_cb()在OpenSSL 1.1.0中仍然可用。已使用的那个API应用程序仍可以工作,但它们可能会发现,回调机制被调用的时机变了,变成了在握手之后发生。

在主握手完成后,一个OpenSSL服务器将立即尝试发生会话细节到客户端。对服务器应用程序来说,这一握手后的阶段看起来像是主握手的一部分,所以对SSL_get1_session()的调用应该像以前一样继续工作。

定制扩展和证书透明系统

在TLS 1.2及以前版本中,首次客户端问候信息和服务器问候信息可以包括“扩展”。这允许基础规定可以被添加很多额外特性,这些特性可能无法在所有情况下使用,或者在制定基础规定时无法预见。OpenSSL支持大量“内置”扩展。

此外,定制扩展API还为应用程序开发人员提供一些基本功能,以支持没有内置在OpenSSL中的新扩展。

建立在定制扩展API顶层的是“服务器信息”API。这提供了一个更加基础性的接口,可以在运行时进行配置。例如证书透明系统。OpenSSL为证书透明系统的客户端提供内置支持,但没有内置服务器端支持。但是,用“服务器信息”文件就很容易实现。一个包含证书透明系统信息的服务器信息文件可以在OpenSSL中配置,再被正确地发回客户端。

在TLS 1.3中,扩展的使用显著增加,有很多消息包含扩展。此外,一些支持TLS 1.2及以前版本的扩展在TLS 1.3中不再被支持,一些扩展从服务器问候消息转移到了加密扩展消息中。旧的定制扩展API没有能力指定扩展应该关联的消息。

由于这个原因,需要有一个新的定制扩展API。

旧API仍在工作,但定制扩展将只在TLS 1.2及以前版本环境下被添加。想要为所有TLS版本添加定制扩展,应用程序开发人员就需要把他们的应用程序更新到新的API(更多详情看这里)。

“服务器信息”数据格式也已被更新,以包含额外的关于扩展所关联的消息的信息。使用“服务器信息”文件的应用程序可能需要更新到“版本2”的文件格式,才能在TLS 1.3中运行(更多细节看这里这里)。

重新磋商

TLS 1.3没有重新磋商机制,所以在TLS 1.3环境下,对SSL_renegotiate()和SSL_renegotiate_abbreviated()的调用会立即失败。

重新磋商最常见的例子是更新连接密钥。再TLS 1.3中,函数SSL_key_update()可以用于的这个目的(看这里)。

DSA证书

TLS 1.3中不再允许DSA证书。如果你的服务器应用程序正在使用DSA证书,那么TLS 1.3连接将会失败,提示如下:

1

 

140348850206144:error:14201076:SSL routines:tls_choose_sigalg:no suitable signature algorithm:ssl/t1_lib.c:2308:

请使用ECDSA或RSA证书。

结论

TLS 1.3代表着一次重大进步,它有一些激动人心的特性,但对粗心的人来说,在更新时可能会有一些风险。大部分时候,这些问题都会有直接的解决办法。应用程序开发人员应该重新检查他们的代码,并考虑为更高效地使用TLS 1.3,是否应该安装所有更新。类似地,部署人员也应该重新检查他们的配置。

稿源: OpenSSL Blog

四月SSL行业新闻回顾

 

稿源: the feisty duck

新型钓鱼攻击:在Chrome、Firefox和Opera的眼皮下暗度成仓

中国信息安全研究人员@郑旭东发现了一种新的“几乎不可能检测到的”钓鱼攻击。他宣称,该漏洞甚至可以骗过互联网上最谨慎的用户。黑客可以利用Chrome、Firefox和Opera浏览器中的已知漏洞使他们的假冒域名显示为合法网站,如苹果、谷歌或亚马逊,以此从用户那里窃取登录信息、财务凭证或其他敏感信息。

通常情况下,对钓鱼攻击最好的防御手段是检查浏览器地址栏,看是否为有效的HTTPS链接。但这样真的就安全了吗?请看下图:

你可能会说,欸这人家域名看起来没毛病,还带着安全链接标记,怎么就成钓鱼网站了?

但这恰恰就是个冒牌货呀!“不仔细检查网站的URL或SSL证书的话,就无法看出网站是否为假冒的了。”郑旭东在博客中说道。

如果你的浏览器地址栏显示带有安全SSL标志的“apple.com”,而页面内容却来自另一个服务器(就像上图显示的那样),那说明你的浏览器易受同形异义字攻击。

来自Wordfence的安全专家还创建了另一个概念验证网站来证明浏览器的这一漏洞。这个网站假冒的是“epic.com”域。

同形异义字攻击在2001年开始为人所知,浏览器厂商一直在试图解决这个问题。它是一种伪装攻击,网站地址栏看上去是合法的,但其实不是。因为地址中的一个或几个字符被伪装的Unicode字符替换了。

对这一点你了解多少并不重要,任何人都可能变成这种“几乎不可能检测到的”钓鱼攻击的受害者。

在国际化域名中,很多代表希腊、西里尔和阿美尼亚字母表的Unicode字符,不仔细看的话,看上去与拉丁字母没有区别,但计算机却会按照完全不同的网址进行处理。

例如,西里尔字母“а”(U+0430)和拉丁字母“a”(U+0041)会被浏览器作为不同字符处理,但在地址栏中都显示为“a”。

默认情况下,很多浏览器使用“Punycode”编码系统在URL中表示unicode字符,以防止同形异义字钓鱼攻击。Punycode是一种特殊的编码系统,浏览器使用这种编码系统将unicode字符转化为国际域名系统支持的ASCII(A-Z,0-9)有限字符集。

例如,中文域“短.co”在Punycode中表示为“xn--s7y.co”。

按照郑旭东的说法,造成该漏洞的原因是,如果有人选择将域名的所有字符都使用某一种外文字符集,并且与目标域极其相似,那么浏览器将以该种语言而不是Punycode形式返回域名。

这一漏洞使得研究人员可以注册一个xn--80ak6aa92e.com这样的域名,并绕过防御系统,在具有该漏洞的所有浏览器中,都会显示为“apple.com”,这样的浏览器包括Chrome、Firefox和Opera,而IE、Microsoft Edge、Apple Safari、Brave和Vivaldi浏览器没有这一漏洞。

这里xn前缀是指ASCII兼容编码前缀,告诉浏览器这个域使用“punycode”编码系统来表示Unicode字符,因为作者使用西里尔字母“а”(U+0430)而不是ASCII字符“a”(U+0041),所以浏览器的防御机制未能奏效。

郑旭东在今年一月向受影响的浏览器厂商报告了这个发现。目前,Mozilla仍在讨论修复程序,而谷歌已在其试验版Chrome Canary 59浏览器中修复了这一漏洞,并将在稳定版Chrome 58中推出永久性修复程序,该版本定于本月晚些时候发布。

同时,他还建议数百万面临这一难以检测到的复杂钓鱼攻击威胁的互联网用户,在其浏览器中关闭Punycode支持,以临时缓解受攻击的风险,并指出了某些钓鱼域名。

目前,Firefox用户可以在设置中手动关闭Punycode URL转换:

  1. 在地址栏输入about:config并按回车。
  2. 在搜索栏输入Punycode
  3. 浏览器设置将显示参数名:IDN_show_punycode,双击或右击并选择切换,将此参数的值由false改为True

在Chrome或Opera浏览器中没有类似的设置来手动关闭Punycode URL转换,所以Chrome用户只能等待几星期后发布的稳定版Chrome 58去修复这一漏洞。

尽管如此,还是可以在应用商店找到一些第三方Chrome扩展/插件,用户可以安装这些扩展/插件,这样他们每次访问域名中包括Unicode字符的网站时,浏览器就会发出警告。

此外,对于像Gmail、Facebook、Twitter、Yahoo或银行网站等重要网站来说,避免误入钓鱼网站的最佳方法,是在地址栏手动输入网站URL,而不建议通过点击某些网站或电子邮件上的链接,以避免遭受这类攻击。

 

稿源:the hacker news\ xudongz.com\ Graham Cluley

CAB Forum:微软的决胜投票很可能无效

由于微软的程序性错误,CAB论坛近期的一次投票备受争议。被认为投出关键票的微软,是这场争议的焦点。

作为SSL证书的行业风向标,CAB论坛由证书颁发机构(CA)和浏览器厂商组成,旨在共同组织颁发公开证书的指导方针和做法。

投票大会194试图纠正最近一次投票造成的非故意性后果:由于文字错误,第193号决议将导致大量“有效证书”在短短几日内失效。这将是CA和他们的客户的麻烦,如果他们想要重新发放或替换现有证书,那么他们需要等待他们的信息被重新验证。

第194号决议的投票期于4月16日关闭,此后CAB论坛主席柯克·霍尔(Kirk Hall)向组委会成员发了一封电子邮件,通知他们投票已经过去了。在CAB论坛中,每个组(CA和浏览器)必须批准一个选票才能通过。当时,所有来自CA的24票都赞成了194号决议,而由于浏览器厂商方面未满足50%赞成票,投票结果一度悬而未决。直到统计到大会三日前微软的投票,浏览器厂商的票数才终于过半。

由于代表微软投票的是其雇员,并不在CAB成员邮件列表里,他的邮件在一开始被拒绝,其他成员都不知道这张票。只有柯克·霍尔因为被CC的原因看到了微软的选择。正因如此,Google的Ryan Sleevi指出,微软的投票不符合操作规定,不应该作数。如果微软的投票被宣布无效,该提案将以失败告终。

如果投票通过,CA的困难将被解救。而一旦失败,他们将需要迅速采取行动处理与以前验证的信息相关的规则变更。但就算微软的投票这次被批无效,再组织一次投票且每张票都符合流程,提案依旧会被通过。

对于围观者来说,google的这种对投票程序和规定的质疑是毫无意义的。微软都投支持票了,还想怎样?虽然在这种情况下没有太多的利害关系,那下一次呢?

CAB论坛章程规定:

2.2 (d) “Upon completion of the discussion period, Members shall have exactly seven calendar days for voting, with the deadline clearly communicated in the ballot and sent via the Public Mail List. All voting will take place via the Public Mail List. Votes not submitted to the Public Mail List will not be considered valid, and will not be counted for any purpose.”

2.2(d)“讨论期结束后,议员应有完整的七个日历日进行表决,截止日期在选票中明确传达,并通过公共邮件列表发送。 所有投票将通过公共邮件列表进行。 未提交给公共邮件列表的投票不被视为有效,不会被视为任何目的。

辩论的内容超出了“已提交”一词的含义。只要邮件已经发出,不管张贴列表里收没收到,都算有效吗? 还是说邮件必须被接收和归档? 在这个具体的(可能预见的)情况下,“通过公共邮件列表进行投票”的要求也表明微软的投票并不符合规定。

不过,Hall表示,微软的投票已被发送到正确的地址并在最后期限内,因此正在点票。 在Sleevi坚持反对意见之后,Hall写道:“一个浏览器尝试阻止另一个浏览器的投票,这是一种不客气的方式。 Google是唯一在这次投票中投票的论坛成员--20个CA和2个浏览器投票为yes。 显然,成员们的共识是赞成这一投票,而且即使不是由我们的服务器转发,技术上微软正式投票。“

在成员互通多封邮件后,Hall提议再重新办一个简易投票来得到最终结果。但这一做法反倒遭到了更强烈的反对。

这次争议体现了当下CAB论坛的窘境。众人不齐心,分歧和争议不断发生。Web PKI的未来存在持续的分歧,特别是撤销检查,证书颁发自动化和证书有效性等问题。论坛最近也出现了治理和知识产权问题,阻碍了许多其他举措和改进。194号投票本来是件小事,但这一争端的结果不仅仅是投票。它将为论坛设定基调。我们是走向不和谐还是合作?

票选的命运尚未确定,双方仍在僵持。未来将如何?每个利益相关方都有自己的期许。CAB论坛的和平之路,且行且珍惜!

 

稿源:the ssl store

 

巴西银行Banrisul被黑 Let's Encrypt成背锅侠

卡巴斯基实验室的Dmitry Besthuzhev和Fabio Assolini在本周的安全分析高峰会上发表了一项针对巴西银行Banrisul的攻击行动,该峰会是卡巴斯基在圣马丁举行的一次会议。

2016年10月,巴西银行网站一整天被黑客完全接管。 攻击者完全破坏了银行的DNS,重新路由和拦截了所有36个银行域名的流量,包括其网络银行和销售点交易。 除了网络钓鱼客户的凭据和活动外,攻击者还向访问者分发恶意软件。

Wired网站对该攻击做出如下总结:

“Absolutely all of the bank’s online operations were under the attacker’s’ control for five to six hours,” says Dmitry Bestuzhev, one of the Kaspersky researchers who analyzed the attack in real time after seeing malware infecting customers from what appeared to be the bank’s fully valid domain. From the hackers’ point of view, as Bestuzhev puts it, the DNS attack meant that “you become the bank. Everything belongs to you now.”

“该银行所有的在线业务被黑客控制长达5-6 个小时”,卡巴斯基研究员Dmitry说道,“也就是说,当时黑客拥有了整个银行!”

尽管卡巴斯基并没有透露银行的具体名称,但证书透明度记录以及部分披露的细节都指向了巴西南部的一家名叫Banrisul的银行。该银行拥有超过250亿美元的资产和500家分行。据卡巴斯基称,该银行尚未披露这一攻击。

攻击者还签发了两张证书


是的,你没有看错,攻击者使用了Let's Encrypt证书,让整个攻击行为看起来更合法,并控制解密数据所需的密钥。用户登录网银时看到的是“HTTPS页面”于是“特别让人放心”。在该攻击场景中,黑客控制了你的DNS,从而能够轻易地请求并确认证书。而对CA来说,你是主机的拥有者,发张证书给你没毛病。大多数CA都会做同样的事。但令人痛心的是,Let's Encrypt又一次成了背锅侠。因为它的免费证书使得匿名使用服务变得容易,而且他们的策略是对高危请求进行标记或者黑名单。上一次背锅,还是前不久的Paypal钓鱼网站证书事件

对普通用户来说,看到网站使用的HTTPS连接足以使他们掉以轻心。而更为细心的用户,可能会通过观察DNS记录或发现网站突然换了CA而有所警觉。但这次媲美偷天换日的攻击,没有使用户起疑心。

银行如何保护自己?对于初学者来说,对DNS的更好的控制和监督至关重要。 Assolini指出,该银行没有使用DNS提供商提供的双因素身份验证选项,这将使得这个帐户更容易接管。

Banrisul也可以加强其HTTPS配置。 HTTP公钥固定(HPKP)是作为HTTP头实现的SSL / TLS的可选安全功能。它允许网站向客户端提供一组被授权用于HTTPS连接的公钥。如果客户端将来连接到该站点并接收到不同的密钥,它将拒绝连接。

HPKP设置起来更加困难,遇到配置不当或密钥管理不善,容易引发故障。但是,它也可以在恶意攻击者控制您的网络并可以以您的名称发布证书(或降级为HTTP)或CA错误发布证书的情况下保护网站。如果HPKP被部署,以前访问过Banrisul网站的用户(将是其大多数客户)将受到保护,免受此攻击。

证书颁发机构授权(CAA)是旨在保护网站免受敌对发行的另一个措施。它允许域选择哪些CA可以颁发证书,每个CA在为所述站点颁发证书之前检查CA。但CAA被设置为DNS记录,在这种情况下,攻击者可能已经能够绕过此保护,即使已被使用。

随着HTTPS安全链接在用户群中的普及,越来越多的网民都会在登陆敏感数据(如银行或电子邮件服务)相关的站点时,注意到网站是否HTTPS。而犯罪分子正是抓住了这一点,正花费额外的时间用SSL证书掩盖他们的攻击。也就是说,这年头部署一张HTTPS证书仅是基本,想要保护自身免受诸如此类的复杂攻击,还得要多花些心思才行呐!

 

稿源: The SSL Store/ Wired

三月SSL行业新闻回顾

本月头条:谷歌计划停止信任所有现有的赛门铁克证书

Google提出将针对赛门铁克数次未履行认证机构职责一事采取一系列严厉的措施。今年1月,赛门铁克被指为其所有者没有要求的域名颁发了多个证书。 这些证书是由韩国公司Crosscert创建的,赛门铁克已经授权其访问其证书颁发的基础设施。根据Google调查发现,多家公司在没有充分监督的情况下已经获得了类似的访问赛门铁克基础设施的机会。 赛门铁克被指明知一些问题的存在,却视而不见。 而这些公司加起来共签发了约30,000张证书。

Google现在计划逐步淘汰所有当前有效的Symantec证书。 通过几个步骤,Chrome浏览器会在某些有效期内不信任证书。 最终,赛门铁克将被允许颁发有效期为九个月的证书。 此外,Symantec将失去发布扩展验证(EV)证书的能力。 虽然很多人质疑电子证书的效用,但由于价格较高,它们是认证机构的主要收入来源。

赛门铁克在事件回应中指责谷歌的行为是不负责任的,并反复强调:“我们的SSL/TLS证书用户和合作伙伴目前无需应对这项指责。”

三月其他新闻

 

稿源: feisty duck

赛门铁克曝API漏洞让攻击者窃取SSL私钥及证书

安全研究人员已经披露了Symantec证书代理商用来提供和管理Symantec SSL证书的流程和第三方API中的关键问题。

Cloud Harmonics信息安全顾问Chris Byrne发现的缺陷可能允许未经身份验证的攻击者检索其他人的SSL证书,包括公钥和私钥,以及重颁或撤销这些证书。即使没有撤销和重新颁发证书,攻击者也可以使用被盗的SSL证书对安全连接进行“中间人”攻击,欺骗用户相信他们在合法的网站,实际上SSL流量被秘密篡改与截获。

Byrne在周末发布的Facebook发布文章中写道:“您只需单击[一个]电子邮件中发送的链接即可获取证书,撤销证书并重新发布证书。”

 

赛门铁克2015年时就知晓这一漏洞

Byrne表示,他在2015年首次发现有关赛门铁克证书的问题,并同意“限制不泄露”,因为赛门铁克表示,该公司将需要近两年的时间才能解决问题。

“赛门铁克承诺找到并更换可能受到影响的所有证书,然后更换它们,他们将在六个月内对每个证书进行认证,并在每个认证期的两年内完成”,Byrne 说过。

事实上,研究人员直到上周才透露任何细节。而直到Google发现与该公司及其4家第三方证券经销商有关的几个问题后,谷歌才透露其计划,逐渐不信任赛门铁克颁发的证书

Byrne表示:”鉴于Google在这方面的经验和行动,似乎Symantec并未解决这些问题。“但Byrne无法确认他发现的漏洞与Google工程师上周公布的完全相同。

根据Byrne的说法,Symantec向其第三方转销商提供的证书请求和交付API接受基于URI的UID,“无需正确的身份验证,或在某些情况下接受任何身份验证“。

由于API服务器在访问证书信息之前没有对用户进行身份验证,任何潜在的技术精湛的客户都可以轻松地拦截包含API生成的链接的电子邮件,或者使用自己的UID并修改其参数之一。

最终,这将使恶意攻击者能够访问其他赛门铁克客户的信息,识别高价值目标,并执行自动化攻击。

获得对另一个用户的SSL证书的完全控制

使用相同的API漏洞,攻击者甚至可以完全控制另一个客户的证书,其中包括获取公钥和私钥,撤销证书或使用新的密码重新发行证书。目前,研究人员和公司都没有发现任何证据来证明这种情况,但是在考虑披露时,Byrne的可能性就足够了。

Byrne补充说:“对于想要攻击的特定组织或个人来说,妥协DNS是微不足道的,那么他们可以假装是这个人的银行,信用卡公司,雇主,任何人。”
“也许最糟糕的妥协是为整个公司欺骗补丁和更新服务器,然后该公司的每台机器都可能同时受到威胁。”

据悉,赛门铁克已针对此漏洞修补了部分问题,但还未对此事做出任何回应。该公司在今日针对谷歌的发难曾发过两篇官微。是否会就这次的事件进行澄清,尚不得而知。

更新:截至3月29日,赛门铁克对于该API漏洞的回应如下:

我们研究了Chris Byrne的报告,但并不能重现报告中的问题。我们欢迎来自2015年的原始研究和新的研究证明这项漏洞。此外,我们并没遇见过此漏洞出现在现实场景中,但可以肯定的是,没有任何私钥被访问过,因为在技术上不可行。

误发3万张EV证书? 谷歌Chrome计划逐渐停止信任赛门铁克SSL证书

由于过去几年不断被曝光错误签发3万多张EV证书,谷歌宣布计划逐渐取消对赛门铁克公司签发的SSL证书的信任。

赛门铁克拥有的证书颁发机构颁发的所有证书的扩展验证(EV)状态将不再被Chrome浏览器识别至少一年,直到Symantec修复其证书颁发过程,以便再次被信任。

扩展验证证书应提供最高级别的信任和身份验证,在颁发证书之前,证书颁发机构必须验证请求实体的合法存在和身份。

Google Chrome团队的软件工程师Ryan Sleevi星期四在线上发布了这项公告,这一举措立即生效。

 

Sleevi说:“这也是赛门铁克以前发布的错误证书之后的一系列故障,导致我们对过去几年赛门铁克的证书颁发政策和做法不再信任。

SSL生态系统的重要组成部分之一是信任,但如果CA在发布域名的EV证书之前无法正确验证法定存在和身份,则这些证书的可信性将受到损害。

Google Chrome小组于1月19日开始调查,发现赛门铁克过去几年的证书颁发政策和做法不诚实,可能威胁到通过互联网认证和保护数据和连接的TLS系统的完整性。

在这一举措下,Google Chrome团队提出以下步骤作为惩罚:

1. 赛门铁克颁发的EV证书至今将被降级为不太安全的域名验证证书,这意味着Chrome浏览器将立即停止在地址栏中显示经过验证的域名持有人的名称至少一年。

2. 为了限制任何进一步的错误发生的风险,所有新颁发的证书的有效期必须不超过9个月(Chrome 61版本有效)才能在Google Chrome中信任。

3. 谷歌提出了一个增量的不信任,通过在各种Chrome最新版本”中逐渐降低赛门铁克证书的最长期限,以要求他们重新发布和重新验证。

 

Chrome 59 (Dev, Beta, Stable): 33 months validity (1023 days)
Chrome 60 (Dev, Beta, Stable): 27 months validity (837 days)
Chrome 61 (Dev, Beta, Stable): 21 months validity (651 days)
Chrome 62 (Dev, Beta, Stable): 15 months validity (465 days)
Chrome 63 (Dev, Beta): 9 months validity (279 days)
Chrome 63 (Stable): 15 months validity (465 days)
Chrome 64 (Dev, Beta, Stable): 9 months validity (279 days)

这意味着,预计将在2018年初推出的Chrome64,只会信任有效期九个月(279天)或更短的Symantec证书。

Google认为,这一举措将确保网络开发人员意识到未来赛门铁克颁发的证书的可能存在的风险,同时也给予他们“继续使用此类证书的灵活性”。

然而除了Chrome,别的浏览器厂商都在吃瓜

Google还表示,它将自己的计划通知给可其他浏览器厂商,如苹果,微软和Mozilla,但没有人回应自己的决定。

据Mozilla数据显示,Symantec在市场上占据了42%的证书验证。赛门铁克还收购了其他CA,它们现在是其根证书的一部分。该列表包括VeriSign,GeoTrust,Equifax,Thawte,TrustCenter等品牌。

赛门铁克通过博客回应,称Google声称其发出的30,000张SSL证书“夸大其词且具有误导性”:”Google指的是127个证书 - 不包括30,000个证书 - 被认定为误发,且这些证书并没有伤害到消费者的利益。 我们采取了广泛的补救措施来纠正这种情况,立即终止参与合作伙伴的任命为注册机构(RA),并且为了加强赛门铁克颁发的SSL / TLS证书的信任,宣布停止我们的RA计划。 [...]虽然所有主要的CA都经历了SSL / TLS证书错误发布事件,但Google偏偏这次挑中Symantec认证机构杀鸡儆猴,未免过于刻薄,更何况Google博客中发现的错误发布事件涉及到多个CA。“

该公司最近采取了一系列措施以改进其域名验证程序。

 

稿源: the hacker news / bleeping computer

 

 

 

Firefox 55 将要求所有地理位置服务使用HTTPS

今年8月计划发布的Firefox 55将会完全禁用HTTP的地理位置服务......

也就是说,到时候还没用上加密的地理位置服务将没有询问用户位置的权限, 而用户甚至都不知道该网站询问过位置信息。不过有一个好消息是,本地路径(localhost and file:// paths)被Mozilla定义为“安全内容”,且依旧允许询问地理位置。加密WebSocket链接(wss://)也幸免于难。

地理位置是一组浏览器功能,它们暴露敏感和个人识别用户信息,从而构成更大的安全和隐私风险。 因此,由于协议缺乏加密或认证,这些功能已经是受限制的一些最早的功能,然后通过HTTP完全禁用。

而这只是开始,浏览器将进一步限制更多功能,以废除HTTP的使用。

地理位置已在Chrome(近一年)和Safari中被禁用。 之所以Firefox落后于其他浏览器,是因为其内部数据显示HTTP位置的地理位置要求比例很高,怕此举影响太多页面。

不过如今对于大多数网站,Firefox的更改可能不会是一个问题。

如果您是开发人员并且想要开始测试此行为,您可以在Firefox Nightly中更改以下标志:

  1. 进入 about:config.
  2. 此时会跳出:“这可能是质量保证失效”的页面,点击“我了解此风险”
  1. 在配置页面的顶部搜索栏里敲: geo.security.allowinsecure
  2. 双击设定值至false
  3. 完成!现在当你浏览请求您地理位置的HTTP页面时,将不会跳出请求。 你可以在这里试试看。

稿源: thesslstore

Firefox 52 添加不安全密码警告

浏览器厂商正不断升级对不安全页面的打压措施,你准备好了吗?

Firefox 52已于两日前发布,而对于打压HTTP不安全页面,Mozilla这回又又又给网民们带了一个新特性!

不知道从何开始,浏览器厂商纷纷开启了套路模式:每个月增加一点对HTTP内容的警告措施,以期在不久的将来达到完全加密化的网络生态。

而这一次,Mozilla把矛头指向了使用HTTP的不安全登陆表单

在任何HTTP页面中,一个全新的“不安全密码警告”将会在用户点击表单时,直接出现在登陆框的下方。强行保证所有用户都能看到“此链接不安全,你的个人利益将受到损害”等字眼。

而整个页面也会收到损坏的挂锁图标,点击时显示相同的警告。

想看看这个警告有多醒目吗?嘿嘿嘿,你可以试试点击此链接http-login.badssl.com.

据悉,下周即将放出的Google Chrome 57也会带有类似的警告特性。而Chrome不仅检测密码框,还盯上了不安全的信用卡表单。

现在,自动填充将继续在HTTP表单上工作,但在不久的将来,开发人员应该期望更改,因为浏览器将继续限制HTTP网页上的功能,以保持用户隐私。

Firefox开发员表示,自从在开发者版本中引入了这一特性,使用HTTPS优化登陆表单安全性的页面已从40%增加到了75%!!

事实上,所有网站都应该使用HTTPS。啊?为什么?因为大部分网站或多或少都涉及到个人信息,比方说链接数据库、密码等操作。HTTPS不仅保障了页面浏览的完整性、阻碍了钓鱼内容注入,还能通过HTTP/2技术加速你的页面生成速度。何乐而不为呢?

HTTPS如何改善网页安全?

不安全的输入表单又会给用户造成怎样的影响?

此处,容砖家们为你细细道来!