主题为“Android应用安全检查实践”的干货共享由网易高级安全开发工程师朱星星分享。他认为,工业和信息化部对移动应用安全检查的要求越来越高,这导致许多开发人员在货架上被拒绝的尴尬。因此,他建议技术开发人员在开发移动应用程序时,应注意以下容易被检测人拒绝的常见测试项目。
1.程序代码安全
“很多人可能认为这个技术内容不大。事实上,当APP上线时,测试人员有一些要求。”朱星星认为,当APP上线时,开发人员需要准备相关的法律声明和隐私政策、申请用户权限的调用系统说明,以及SDK如何收集用户数据和用户数据,都是硬性要求。
2.程序代码保护
程序代码保护是检测人员判断代码保护基本强度的项目之一,也是判断APP开发人员是否有安全开发意识的标准之一。业内常见的程序代码保护有以下几种——客户端APP采用代码混淆技术,增加了防止第三方反向工具反向编译、加固、防篡改机制、防二次包装等技术。
3.密码和安全策略
这个问题在金融应用程序中非常普遍。开发人员通常需要考虑用户在输入帐户密码时是否会被第三方记录截图。朱星星说:“当我们帮助客户解决这个问题时,我们建议客户必须有一个防键盘记录SDK,这样用户每次打开键盘字幕时都会有不同的排名,应用程序可以更安全、更容易通过检查。”。
网易云安全(易盾)安全键盘
4.权限和界面安全
在移动互联网时代,黑客的攻击方式越来越多样化,伪造用户登录页面窃取用户信息就是其中之一。当应用程序通过测试时,测试人员将提供相同的虚假登录页面来测试应用程序是否有预防意识,这需要开发人员在应用程序中给用户一些警告信息,提示登录或关键界面覆盖的警告信息。
5.动态调试
动态调试技术也是软件逆向工程领域的一个非常流行的概念,指破解者利用调试器跟踪软件的运行,寻求破解的方法。朱星星说:“面对破解者的动态调试,我们可以采取加固应用程序的方案,以防止应用程序被动态调试。”
6.SO注入
SO注入也是黑客入侵的常见手段,是安卓APP过检的必备项目。据朱星星介绍,一般来说,有三种解决方案可以解决这个问题——修改linker中的dlopen函数,防止第三方SO加载;定期检测应用加载的第三方SO库。如果发现是注入SO,则卸载加载SO;加固被测系统,防止被测系统动态注入第三方SO。
7.内存数据保护
技术开发者需要解决的重要问题是如何保护自己的程序不被其他程序读取或重写内存。在朱星星的分享中,他提到第三方程序读写了防内存。“我们监控//proc/pid/mem、/proc/tid/mem等文件的读写操作,当这些文件被第三方程序访问时,会触发设置的回调函数,最终通过防注入、防调试等方法实现防内存修改。”
8.隐私和存储数据
如果技术开发人员的代码文档使用明文存储,则很容易出现问题。“事实上,无论应用程序是否有其他问题,如果检测器检测到应用程序中有明文存储,它将被返回。”朱星星在解释这个问题的重要性时警告开发者,在开发阶段必须注意xml、db文件是否存在明文存储问题。
9.日志信息泄露
在移动应用程序的开发过程中,日志信息的安全性是一个非常值得关注的问题。日志信息泄露主要是为了防止打印的标志容易被破解,并分析应用程序的执行逻辑。除了静态代码不能调用标志外,日志信息也不能在动态运行中输出。
10.通信和数据安全
在新一轮全球新技术革命的冲击下,用户的生活方式越来越依赖于在线应用,导致通信数据爆炸性增长。但令人担忧的是,大量的在线数据收集增加了数据泄露的可能性,对信息安全构成了威胁。为了解决这一威胁,朱星星建议对敏感数据进行加密传输,以增加加密通道的安全检测(包括中间人攻击检测等)HTTPS 通信协议等。
免费获取价值¥9800项目解决方案