一、概述
静态代码分析是指在不实际执行程序的情况下,对代码语义和行为进行分析,由此找出程序中由于错误的编码导致异常的程序语义或未定义的行为。通俗的说,静态代码分析就是在代码编写的同时就能找出代码的编码错误。你不需要等待所有代码编写完毕,也不需要构建运行环境,编写测试用例。它能在软件开发流程早期就发现代码中的各种问题,从而提高开发效率和软件质量。
静态AST(SAST)技术通常在编程和/或测试软件生命周期(SLC)阶段分析应用程序的源代码,字节代码或二进制代码以查找安全漏洞。
根据上面的流程图需要进行代码审计的语言为java、c、c++、c#、lua脚本
需要最后实现代码审计的技术需要脱壳、解密、反编译
二、方案
因为需要审计的语言较多,下面优先考虑java代码审计
商业:
1.整体采购apk静态审计解决方案,如(爱加密 移动应用安全检测 http://www.ijiami.cn/safe_page)、(梆梆移动应用质量测试https://www.bangcle.com/products/productindex?product_id=34 移动应用测评云平台https://www.bangcle.com/products/productindex?product_id=5)
缺点是不提供脱壳支持
2.提供脱壳-反编译后的代码给到三方进行源代码检测,如(爱加密 源代码审计平台 http://www.ijiami.cn/shenji)(梆梆 移动应用源代码审计https://www.bangcle.com/products/productindex?product_id=28)、fortify 静态代码扫描工具 、(奇安信代码卫士 https://www.qianxin.com/product/detail/pid/14)
报价:待补充
开源:
1.SonarQube https://www.sonarqube.org/
2.FindBugs http://findbugs.sourceforge.net/
3.Chechstyle https://checkstyle.sourceforge.io/
4.codeql 代码分析引擎
5.mobsf app安全测试框架
6.FlowDroid 一款使用Java实现的针对Android的静态污点分析框架 https://github.com/secure-software-engineering/FlowDroid
7.PMD是一个开源的静态代码分析工具。它用于分析一些常见的编程缺陷(未使用的变量、空捕获块、不必要的对象创建等)。https://github.com/pmd/pmd
建议前期使用商采方案后期有一些相应游戏相关代码质量、安全审计的资源和沉淀后在进行自研。
三、参考实现路径
前期先是要大的框架搭建上去后期再去精细化补充,先去完成针对性后期补充全面性,如源代码覆盖准确率、支持更多代码审计、代码审计准确率、审计规则沉淀、针对游戏app定制更为高效准确的代码审计机制。
如果需要采用的商业方案需要后期调研各种商业方案的优缺点。
商业选型的原则:1.支持多个app代码都可以进行使用 2.多并行,需要支持多人使用 3.需要提供api进行接入集成 4.系统稳定
建议采购商业源代码审计方案