现如今,许多开发者仍然习惯于将access token(访问凭证)和API key(API密钥)等敏感内容编码到移动APP中去,将依托于各种第三方服务的数据资产置于风险中。
机密信息易遭泄漏
网络安全公司Fallible一项最新的研究结果(点击查看)显示:在统计到的16,000多个安卓应用中,有约2,500个应用都出现开发者将机密凭证硬编码进去的情况。统计工具为去年11月该公司生产的在线扫描程序。
应该说,当需要提供的访问只在有限的范围内时,将第三方服务的访问凭证硬编码到应用程序中的做法还是可以理解的。但在某些情况下,开发者如果将允许访问机密数据或关键系统的key也加入进去,就很容易产生问题。
比如,在Fallible本次的统计中,有304个APP就出现了这种情况。这些APP包含了为如Twitter,Dropbox,Flickr,Instagram,Slack,AWS(亚马逊云计算)等服务准备的access token和API key。对比16,000的统计总数,这300多个应用可能不算多,但是从它们所牵涉的服务类型和访问权限来看,一个小小的key就可能会导致大量的数据泄漏。
就拿Slack(流行的办公交流应用)token来说,这种token可允许你访问开发团队使用的聊天日志,而这些日志中很可能包含如数据库,持续集成平台和其他内部服务的更多凭证,更不要说访问共享文件等内容。去年,网站安全公司Detectify就曾发现超过1,500个Slack token被硬编码到GitHub上的开源项目中。(了解更多详情)
不仅如此,AWS访问凭证也曾被大量发现于GitHub的项目中,这使得亚马逊不得不主动出击扫描这些漏洞并弃用遭泄漏的密钥。据Faillible的研究人员在博客中介绍,许多被发现的AWS服务密钥都提供了可以创建和删除实例(instance)的权限。删除AWS instance会导致数据损失和服务停止,而创建instance则在给黑客带来便利的同时,由受害者来买单。
不过,这也不是人们第一次在移动应用中发现API key, access token等机密凭证。2015年德国达姆施塔特市科技大学的研究人员曾在安卓和iOS系统中发现超过1,000个用于BaaS(后端即服务)框架的访问凭证。这些凭证允许访问超过1850万条数据库记录,包含应用开发者存储在Pares,CloudMine,AWS等BaaS服务提供商那里的56,000,000个数据项目。
Truffle Hog
本月的早些时候,一名安全研究人员曾公布了一款叫做“Truffle Hog”(松露猪,专门在秋天嗅探埋藏在土里的松露)的工具。此款工具能帮助公司及独立开发者扫描他们的程序,寻找那些可能早些时候添加之后却又忘记了的秘密token。