谷歌周二披露,一伙攻击者攻破了三个国家顶级域名(ccTLD)的注册局系统,篡改其中部分域名的权威 DNS 记录,借此通过了证书颁发机构的自动化域名控制权验证,为"谷歌的多个域名"以及"多家全球知名品牌和常用在线服务"签发了未经授权的 TLS 证书。谷歌已更新 Chrome 拦截已发现的全部伪造证书,并正协同相关证书机构吊销涉事证书。
攻击者把目标对准了三个国家顶级域的注册系统:.gh(加纳)、.sl(塞拉利昂)和 .as(美属萨摩亚)。得手后,他们修改了这些域名空间下选定域名的权威 DNS 记录和域名服务器委托关系。谷歌表示,事件并未涉及受影响域名所有者自身基础设施被入侵,证书颁发机构在签发时也遵守了全部合规要求——问题出在注册局这一环被攻破后,域名控制权验证就形同虚设。
TLS 证书签发前,证书机构会用自动化手段核验申请人是否真正控制该域名,通常做法是在 DNS 记录里放一段验证码或响应特定 HTTP 请求。攻击者既然已经掌控了权威 DNS 记录,这类验证自然一路绿灯。谷歌的原话是:攻击者"通过控制这些 DNS 记录,得以通过自动化域名控制权验证",从而拿到证书。证书本身由正规机构签发,浏览器不会报警,中间人攻击、钓鱼和流量劫持因此都变得难以察觉。
谷歌在披露中称,伪造证书覆盖了"谷歌的多个域名",以及"多家全球知名品牌和常用在线服务"的域名,但没有点名具体是哪些域名,也没有说明总共签发了多少张证书、有多少家机构受影响。谷歌同时承认:"目前尚不清楚其他受影响机构是哪些,也不知道共签发了多少张未经授权的证书"。
谷歌表示,已更新 Chrome 浏览器,拦截所有已识别出的未经授权证书,并正与签发这些证书的机构合作,确保涉谷歌资产的伪造证书被吊销。谷歌称 Chrome 用户无需采取任何操作即可受到保护。但谷歌也发出警告:"浏览器端的干预不应被依赖来保护你的用户",并坦言"由于 DNS 劫持的复杂性,我们无法保证分析找出了每一个受影响域名,Chrome 的干预也无法可靠地保护非 Chrome 用户"。
对网站所有者,谷歌给出两条硬建议:一是持续监控证书透明度(Certificate Transparency)日志,及时发现有人给自己的域名签发了意外证书;二是发布限制性更强的 CAA(证书颁发机构授权)DNS 记录,防止攻击者在 DNS 控制权恢复后继续利用缓存的验证数据重复签发证书。谷歌指出,正式的证书吊销流程缓慢繁琐,这也是浏览器厂商要先做浏览器级拦截的原因——目前已知的伪造证书都已被拦截,风险基本可控,但尚未被发现的证书仍是隐患。
这不是互联网第一次栽在证书体系上。2011 年,荷兰证书机构 DigiNotar 被黑,攻击者为谷歌等 200 多个高流量网站签发了伪造证书,其中部分被用于针对至少 30 万与伊朗有关联的网民的监控攻击,DigiNotar 最终破产倒闭。十五年后,攻击手法从攻破证书机构变成了攻破域名注册局——信任链最薄弱的一环,永远是攻击者最爱下手的地方。