骇客可轻易取得他人网站假HTTPS认证,Let'sEncrypt紧急停用TLS-SNI验证

自动化数位凭证认证机构Let's Encrypt表示,由于太多共享托管以及基础设施服务违反TLS-SNI验证背后的假设,即日起停止透过TLS-SNI验证取得认证,并对已存在使用者执行更新验证程序,Let's Encrypt鼓励使用者,尽量更换成HTTP或是DNS验证。
网页应用程序安全自动扫描服务Detectify安全研究员Frans Rosén,1月9日向Let's Encrypt回报TLS-SNI-01验证的使用风险,同时被视为其继任机制的TLS-SNI-02验证也具有同样问题,Let's Encrypt也随即停用TLS-SNI验证。
TLS-SNI是Let's Encrypt 3个自动化认证管理环境(Automatic Certificate Management Environment,ACME)请求TLS 认证协定的方法之一。而Frans Rosén发现,TLS-SNI-01以及TLS-SNI-02在特定的情况下,容许骇客取得他人的网站HTTPS认证。
骇客可以找到指向托管服务的孤立网域名称,为该域名添加未授权的认证,让假页面看起来以假乱真。例如一间拥有fakecert.com网域的公司,将其位置指向一个位置非fakecert.com的云端服务,而骇客就有机会在该云端服务启用一个全新的账号,并用新账号为fakecert.com添加HTTPS服务器,再使用Let's Encrypt的TLS-SNI-01验证服务认证HTTPS,让假网站看起来跟真的一样。
而这个风险发生的原因并非是TLS-SNI验证程式上的漏洞,而是流程控制问题。不少托管服务不验证网域的所有权,尤其是托管服务提供多个使用者共用同一IP时,更可能让有心人士利用Let's Encrypt,并透过TLS-SNI-01验证机制取得他人的网站认证,无论是AWS的CloudFront或是Heroku都存在这样的风险。
Frans Rosén建议3个方法减少相关的风险,首先便是停用TLS-SNI-01,再来是设置.acme.invalid入黑名单,最后为使用其他取得验证的方法。Let's Encrypt目前也停止透过TLS-SNI-01机制发放认证,要求使用者转而使用HTTP-01或是DNS-01。
Let's Encrypt是数位认证机构,宗旨是以自动化流程代替手动建立和安装凭证的复杂流程,主要赞助商有电子前哨基金会、Mozilla基金会、Akamai以及思科。
