跳过内容

MASWE-0049: 未使用的成熟网络API

Beta 版内容

此内容处于 beta 版,仍在积极开发中,因此随时可能发生变化(例如结构、ID、内容、URL 等)。

发送反馈

概述

不使用平台提供的网络API或成熟安全库的应用程序容易受到安全漏洞的影响。当开发者实现自定义网络代码或“自行开发”安全机制时,由于缺乏密码学和网络安全方面的深厚专业知识,他们可能会引入缺陷。平台提供的API和库,例如iOS上的NSURLSession或Android上的HttpsURLConnection,由专家设计和维护,并结合了安全最佳实践和定期更新,以应对新的威胁和漏洞。

影响

  • 安全漏洞:自定义网络实现可能包含攻击者可以利用的缺陷,从而导致数据泄露和未经授权的访问。
  • 缺乏更新:自定义代码可能无法及时获得更新,以解决新漏洞或符合不断发展的安全标准。
  • 安全措施不一致:绕过标准API可能导致安全功能(如加密、证书验证和错误处理)的应用不一致。
  • 增加开发复杂性:编写和维护自定义网络代码会增加复杂性,使得应用程序更难审计和保护。
  • 不符合标准:未能使用经批准的API可能导致不符合行业法规和安全指南。

引入方式

  • 自定义网络堆栈开发:开发者创建自己的网络代码,而不是使用平台提供的API,可能是为了添加自定义功能,或由于不熟悉现有API。
  • 使用不安全的第三方库:集成过时或不遵循当前安全最佳实践的第三方网络库。
  • 绕过安全机制:故意避免使用标准API来规避安全检查,例如证书锁定或TLS强制执行。
  • 安全知识不足:开发者可能缺乏对网络安全原则的充分理解,导致不安全的实现。
  • 性能优化尝试:编写自定义网络代码以优化性能,而未充分考虑安全隐患。

缓解措施

  • 利用平台提供的网络API:始终使用平台提供的网络API,例如iOS的NSURLSession和Android的HttpsURLConnection,它们在内部处理许多安全问题。
  • 采用成熟的安全库:如果需要额外功能,请使用信誉良好、维护良好的库,例如Android的OkHttp或iOS的Alamofire,这些库都遵循安全最佳实践。
  • 避免自定义安全实现:避免实现自定义加密算法或安全协议;应依赖标准、经过验证的解决方案。
  • 保持依赖项更新:定期更新所有库和依赖项,以纳入最新的安全补丁和改进。