知乎的手机短消息登录是个错误的决定

Mon 21 November 2016

这是 2016 年的年末。尽管国家标准技术协会已经在 Publication draft 800-63B 中将基于 POTS/SMS 的认证方式认为是不安全的,依然有人认为使用手机号作为登录验证的方式是个很好的决策。

不,手机号登录既不能提供额外的安全性——相反,他极大的 compromised 由强密码带来的额外安全度,而且手机号登录又不能作为一次性密码 (OTP) 使用。

SS7 Attack

SS7 (七号信令) 是美国国内运营商传输控制平面 (control plane) 的协议。在网络内,非语音 (data plane) 的控制讯号使用 SS7 进行传输。运营商的网络系统并非完美的 —— 恰恰相反, 此处就有演示使用 SS7 进行攻击的案例

这带来的威胁包括运营商网络外未授权访问并注入 SS7 控制信号带来的风险 —— 此类风险将允许入侵者重定向 data plane 之讯息至被入侵者控制的目标机器上,并读取其中所负载得之信息 —— 以及运营商中的内部攻击 (insider attack) 带来的风险 —— 此类风险为内部人员进行未授权访问带来的 —— 以及使用 CALEA (又称之为 lawful intercept 合法监听) 的有关机构 (例如 FBI) 进行侦听带来的风险,甚至包括 NSA/GCHQ 等机构进行 wiretap / snoop 时的风险。

作为概括, SS7 攻击会带来由于中间链路不受控而导致的信息泄露风险,从而增加了攻击面。此类攻击仅需获知直知乎用户的手机号码。

端点安全

简单的说,手机并非一个可以保证安全的端点 (endpoint)。尽管端点安全对于知乎并无法控制,但以提供手机短消息登录的可能性,知乎将端点被 compromise 而带来的风险扩大了。

在端点已被 compromise 的前提下,targeted threat 的威胁程度是不同的。

在仅提供密码认证的情况下,端点被 compromise 时,若设备上并无登录凭据/衍生的认证 ticket (例如 cookies) 时,攻击者只能通过其他办法获取账户的控制权 —— 例如使用 Email reset 密码,若设备上已有 Email 相关的凭据或访问权。

在仅提供密码认证以及 OTP 校验的情况下 (在这个特定的环境中,知乎不提供 OTP 的能力),攻击者在无法获取 OTP 的情况下,若设备上并无登录凭据/衍生的认证 ticket (例如 cookies) 时,攻击者甚至无法通过 Email reset password 的方式获取账户的访问权。

但是,在提供 SMS 登录的能力时,攻击者可简单的通过发送短消息的方式,在终端中截获登录凭据,并得到账户的控制权。在中国的特定国情下,此类威胁实际上是持久性的攻击 —— 例如中国厂商 Adups 在为客户制作的固件中植入了可读取短消息等敏感信息的后门。

端到端加密

短消息作为明文传输的协议,其本身不提供端到端 (end to end) 的加密能力。作为敏感信息,从知乎的服务器发出凭据后,到到达用户端点时,有诸多的可被窃听点。除了上述的 SS7 attack 外,若知乎到短消息服务提供商的链路、短消息服务商到运营商的链路并未进行加密且对目标进行校验,则可以发生的是进行 wiretap 或进行 MITM attack.

评论

验证用户的身份永远是困难的事情。但知乎是一个带有 PII/SPII (个人标示信息/敏感个人标示信息) 信息的信息系统。作为此类系统,其登录认证系统进行主动降低安全性的行为,是令人难以理解的。

这可能意味着知乎的产品设计中,并未进行相应的安全复查 (security review) 便推入了生产环境。这也意味着,有很大的可能知乎团队中并没有真正的理解安全的人员。有理由推断,知乎也没有实现一些基本的安全保护措施,例如 encryption at rest, 数据存取控制及审计等。

作为一家中国的新型创业公司,知乎本应选择与无视安全的中国互联网公司不同,在产品设计以及实现中,将安全作为检查单中的第一条。但事实上,知乎的做法与其他的中国公司并不不同 —— 其对安全的态度为漠不关心。

Comments