'Telega' Telegram 客户端关键安全分析:许可证违规与隐藏的中间人攻击威胁
'Telega' 被宣传为一款‘面向青少年’的 Telegram 客户端,声称具备开放性和规避审查的能力。然而,经过详细的逆向工程分析,该客户端揭示了严重的安全漏洞、严重的 GPL v2 许可证违规,以及潜在的未经授权流量拦截机制。一项关键发现是其集成了俄罗斯数字发展部的根证书,结合禁用的证书验证机制,这为全面的中间人(MitM)攻击创造了条件。这对用户数据的机密性和完整性构成了重大风险。
声称的开放性与隐藏的风险
'Telega' 客户端的开发者积极宣传其为一款开源解决方案,能够绕过封锁并确保稳定运行。然而,试图获取其声称开放的源代码却遇到了障碍:官方网站上没有指向代码仓库的链接,支持请求和聊天消息要么被删除,要么被忽略。这本身就让人对其开放性声明的真实性产生怀疑。
对最终用户许可协议(EULA)的进一步分析揭示了与自由软件原则的直接矛盾。具体来说,EULA 声明许可方拥有‘对该即时通讯工具的专有权利’,然而该客户端被发现是 Telegram for Android 的一个分支,根据 GPL v2 许可证分发。这意味着 'Telega' 开发者有义务提供源代码,并且无权限制其复制或分发。相反,EULA 包含明确禁止‘销售、复制、拷贝该即时通讯工具’的条款,这公然违反了 GPL v2。此外,EULA 引用了 TDLib 的 Boost Software License 1.0 作为‘开源代码’的参考,但这仅适用于所使用的其中一个库,而非主客户端本身。还发现了允许未经通知单方面修改功能以及强制用户订阅频道的条款,而开发者的责任被限制在象征性的 500 卢布(约 5-6 美元)。
技术漏洞与架构缺陷
对 'Telega' APK 文件进行逆向工程,揭示了一些令人担忧的技术决策。例如,用户通话通过俄罗斯社交网络 'Odnoklassniki'(calls.okcdn.ru)的服务器路由,这引发了对流量机密性以及这种选择对于‘面向青少年’客户端的适当性的质疑。另一个特点是,完美前向保密(PFS)的管理是在服务器端进行的。这意味着服务器所有者可能禁用 PFS,从而在长期密钥被泄露时降低过去会话的安全性。
被吹捧为主要优势之一的审查规避机制,也存在严重缺陷。客户端通过 HTTP 请求 https://api.telega.info/v1/dc-proxy 获取当前数据中心(DC)地址。然而,代码缺乏验证该服务器响应签名的机制,并且 TrustManager 被禁用(被替换为存根),这意味着完全没有证书验证。
// Example code demonstrating the lack of certificate validation
// (TrustManager is stubbed out)
public class InsecureTrustManager implements X509TrustManager {
@Override
public void checkClientTrusted(X509Certificate[] chain, String authType) throws CertificateException {
// Always trust, without validation
}
@Override
public void checkServerTrusted(X509Certificate[] chain, String authType) throws CertificateException {
// Always trust, without validation
}
@Override
public X509Certificate[] getAcceptedIssuers() {
return new X509Certificate[0];
}
}
这使得攻击者在通往 api.telega.info 的路径上执行中间人(MitM)攻击时,能够伪造响应并将所有用户流量重定向到其控制的服务器。在标准的 Telegram 架构中,代理(MTProto Proxy)无法访问加密密钥,也无法查看消息内容,而 'Telega' 的架构则可能允许流量被路由到任何地方,使其变得脆弱。
关键威胁:数字发展部证书与中间人攻击
最令人担忧的发现是,'Telega' APK 文件资源中存在根证书 resources/res/raw/rootca_ssl_rsa2022.cer。这正是由俄罗斯数字发展部颁发的俄罗斯受信任根 CA 证书。在客户端应用程序中包含国家颁发的根证书,本身就是一种不寻常且潜在危险的做法。结合前述缺乏证书验证(TrustManager 被禁用)以及移除了原始 Telegram 客户端中存在的证书锁定(Certificate Pinning)机制,这为全面的中间人攻击创造了理想条件。
证书锁定是一种机制,它允许应用程序为特定域‘锁定’预期的证书,拒绝任何其他证书,即使它们是由受信任的根颁发机构签名的。'Telega' 中缺乏此机制,再加上对数字发展部根证书的信任,意味着任何拥有该证书私钥的人(例如,国家机构或已获取私钥的攻击者)都可以实时拦截和解密所有 'Telega' 用户流量。这对通信的机密性和安全性构成了直接威胁,将该客户端从一个‘规避封锁工具’变成了潜在的监控工具。
数据泄露与不完整的源代码
网络活动分析显示,'Telega' 客户端向其服务器(telega.info)发送以下数据:
phone(电话号码)ip(IP 地址)deviceModel(设备型号)systemVersion(操作系统版本)authKeyId(Telegram 授权密钥标识符)
将 authKeyId 传输给第三方服务器是特别敏感的信息,因为它直接与 Telegram 网络中的用户授权相关联,并可用于身份识别。其声称的开源性质也被证明是虚假的,不仅因为最初无法获取,还因为后来在 GitHub 上找到的代码仓库不完整,不包含 APK 文件中存在的所有代码。这进一步削弱了用户对开发者及其安全声明的信任。
'Telega' Telegram 客户端分析的关键发现:
- GPL v2 许可证违规: 客户端基于 Telegram for Android 代码,通过禁止复制和不提供源代码,未能遵守开源许可证条款。
- 不安全的通话路由: 使用 Odnoklassniki 服务器进行语音通话引发隐私担忧。
- 脆弱的代理机制: 请求新 DC 时缺乏签名和证书验证,为中间人攻击打开了大门。
- 数字发展部根证书集成: 应用程序中嵌入的俄罗斯受信任根 CA,结合禁用的证书锁定,允许流量拦截和解密。
- 广泛的数据泄露: 在没有足够安全保障的情况下,向第三方
telega.info服务器发送电话号码、IP 地址、设备数据和authKeyId。 - 虚假的开放性: 开源声明被证实是虚假的,损害了对项目及其开发者的信任。
重要提示:
- 'Telega' 客户端存在严重漏洞,可能危及用户数据的机密性和安全性。
- 集成数字发展部根证书和禁用基本安全检查,为国家支持或其他受控的流量拦截创造了条件。
- 使用此客户端对用户构成重大风险,尤其考虑到关键标识符被传输到第三方服务器。
- 开源声明被证实是虚假的,损害了对项目及其开发者的信任。
- 开发者应严格遵守 GPL v2 条款,并实施标准安全实践,包括证书锁定和严格的证书验证。
— Editorial Team
暂无评论。