转载

专访沃顿在线执行总裁朱磊:谈谈那些不安全的API

在今年7月底举行的WOT2015移动互联网开发者大会上,北京沃顿在线信息技术有限公司执行总裁、安全专家朱磊先生带来了关于《APP中那些不安分的小接口》的精彩演讲,并在会后接受了51CTO记者的采访。

在本次采访中,朱磊向我们介绍了那些不安全的API,并解释API为何会给企业构成重大风险,以及企业应如何确保API在企业环境中的安全性。

【受访者简介】

专访沃顿在线执行总裁朱磊:谈谈那些不安全的API

朱磊是专注运维安全的北京沃顿在线信息技术有限公司创始人,《暗战:数字世界之战》一书作者。他曾任京东研发系统安全经理,具有多年的互联网信息安全管理经验,丰富的信息安全理念和多个安全系统架构经验。

那些不安全的API

2015年1月,Moonpig因安全漏洞泄露了约300万名客户的信用卡信息,随后该网站关闭了移动app。研究发现该漏洞出现在MoonPig移动app可与其服务器通讯的部分,即API。API发送的信息并不是受单个用户名及密码保护的信息,而是受到同一凭证保护的信息,不管登录的用户是谁。因此,攻击者可访问网站任何一名用户的详细资料、查看之前的订单并对任何用户下订单。

2014年1月,Snapchat数据泄露事故导致约460万用户受影响,而该事故的根源就是不安全的API。虽然API并不是直接攻击目标,但API允许攻击者大规模匹配Snapchat用户的手机号码、昵称与用户名等个人资料。

朱磊透露,据国内某安全机构最新移动安全报告指出,截至2015年第一季度,安卓设备的病毒感染量高达2406.6万,平均7.6台安卓设备就有1台被感染。在安卓移动应用平台,16个行业的top10应用共有4,775个漏洞,平均每个应用有30个漏洞。4,775个风险漏洞中,44%属于高危漏洞、56%属于中危漏洞。他表示,很多APP存在的安全漏洞大多与API有关,也许在我们使用的众多APP中,也许就有那么一个甚至两个或多个存在着风险,只是我们不知道。

为什么API会给企业带来重大风险?

专访沃顿在线执行总裁朱磊:谈谈那些不安全的API

API一直是信息安全界比较关注的一个问题,很多的安全泄露事件都是跟API有关。从近两年曝出的多起安全事件分析来看,利用网站服务器与手机APP之间的接口存在的漏洞对网站服务器发起攻击,已经成为一种流行趋势。很多网站在APP的接口的访问管理和访问控制机制要弱很多。这些APP背后的服务器,通常处于一个盲区(一般没访问入口),很少有人会去关注这些服务器安全情况。但对于攻击者来说,只需简单利用,便能得到这一系列的APP背后的服务器地址以及API接口信息,然后通过挖掘这一系列的API接口的漏洞,就能直接获取到云端所有信息。

为什么API会给企业带来信息泄露等安全风险呢?对此,朱磊给出了他的看法。

他认为,因为API其实是网站的一个衍生体。对于网站来说它背后有很多接口,虽然对于用户的感官来看,它是一个完整的页面,展示所有的商品与网站内容。但对于网站后台来说,更多的是一个一个接口去组成这些数据,形成一个完整的页面。而接口涉及到很多信息,这时如果API各种接口在权限控制上不够严格,就会造成较严重的信息泄密事件。针对手机APP,其实它本身存在的安全问题不像外部产生的那么多那么直接。所以开发人员会把很多精力放在API的接口和测试上,来验证每一个API的接口,严格控制权限,检验信息查询功能,确保按需投放数据。因为如果没有任何控制,当查询一个手机号码时,API的端口会把人员的姓名,手机号家庭住址以及其他的相关信息全部展示出来。经统计调查发现,注入、越权、暴力破解密码等问题归根到底其实很多都与接口相关。

如何确保API在企业环境中的安全性?

据了解,安全问题通常不在于API背后的概念,而在于它的编码方式。很多应用开发人员在编写或使用API时没有考虑安全因素,使得应用和数据处于危险之中。当涉及API时,糟糕编写的代码很快就会变成危险代码。

因此,企业及其开发人员必须采取一些措施来加强和确保API在企业环境的安全性。朱磊建议企业加强安全防护确保API的安全性时需做好“权限审核”。他认为,安全性对于企业内部来说,更多的是每个企业部门和部门之间相互的配合。其实就跟API每一个之间的配合是一样的,每个部门负责一个业务线的API的开发、测试,功能性安全的检查。当将这些API全部都拼在一起,合成一个网站或者APP界面的时候,其实更多的还是权限问题。

朱磊表示,对于服务器来说,服务器环境是整个API或者程序运行的基础。我们早期的安全主要是面向于服务器,尤其是服务器的补丁,用户权限,包括一些文件权限、应用权限等。但是随着现在业务的这些发展,API的应用越来越多。服务器运维要控制一部分自己服务器的权限,产品开发团队要负责一部分API权限,两个相互之间对接时要实现很好的控制。这个层面不光是要程序代码当中实现,在相互调动之间去做身份的审核,更多的是在流程设置的时候,要尽量去做一些标准化的接口的对应和平台的对接。

写在最后

针对API的安全防护问题,笔者也谈谈自己的建议,希望企业能够重视以下几点,尽量避免因API的安全问题导致信息泄露事件的发生。

授权用户和认证程序:Web应用程序中通常只有对最终用户进行身份验证,其实API世界也必须验证应用程序。使用身份验证和授权的标准化协议,可以更安全地使用API。

加密传输:总是对敏感数据进行加密,避免纯文本的传输。开发人员应该使用SSL证书,保证web api端点项目和web服务接口间敏感数据的传输安全,防止黑客嗅到这些数据。

保护证书:在特定类型的业务场景中管理应用程序,可以采用SSL VPN、数字签名的令牌多种安全机制。令牌是唯一地标识一个用户的字符串,你可以将这些字符串存储在一个数据库,如果用户输入正确的用户名和密码就可以访问,然后使用API用户访问一个API的方法。

避免静态或嵌入式密码:当你想要改变政策或更新安全时,将所有的逻辑构建到移动应用程序并不是一件好事。有时有些开发人员走捷径,使用简单的密码或者让手机应用程序在本地缓存ID和密码。从安全的角度来说,这是一个巨大的问题,所以必须要避免静态密码。

只公开必要的信息:开发人员通常会把用户的所有信息给API,因为他们不知道哪些数据是必需的。为确保隐私安全,应该只提供需要的数据。

【责任编辑:蓝雨泪 TEL:(010)68476606】

正文到此结束
Loading...