网络安全 频道

如何加强移动应用开发安全?(二)

如何加强移动应用开发安全?(二)

  人工验证

  在借助威胁建模检查了设计或架构后,开发者应当执行某种水平的人工验证。人工验证的范围和水平由移动应用所带来的风险量决定。移动应用的大小和复杂性决定验证的等级或水平,当然所谓的验证必须依靠反复的代码检查和渗透测试。企业必须确保移动应用的验证专家与内部团队协同工作,而且,最好在企业内部组建一个强大的测试团队。

  完全的动态和静态验证

  动态和静态验证技术仍不太成熟,同样,可用的移动应用的动态验证技术也不多。不过,这并不意味着这些安全技术不能嵌入到安全的移动开发过程中。在有些技术成为主流并且很有效时,开发者就应当开始实行使用静态方法,评估移动应用代码,还要保证不会滥用API,并对其它的安全控制进行正确编码。当然,开发者也可以借助开源项目,使用静态分析查找Java代码中的漏洞,甚至可以将潜在的威胁类型分为多个等级。

  在此重点说一下静态分析。有许多技术可以分析静态代码,查找潜在的漏洞。这些技术往往源自编译技术,主要分为数据流分析、控制流图、污点分析、词法分析等。

  数据流分析用于收集关于静态软件数据的运行时信息,它主要分析基本块、数据流、控制路径等。数据流分析从软件的代码中收集程序的语义信息, 并通过一组简单方程将程序不同位置的语义信息联系起来。通过数据流分析, 分析者不必运行程序就知道可以程序运行时的行为。在进行数据流分析前, 为了便于收集和分析,往往需要把源程序转换成控制流图。

  控制流图是指通过利用代表基本块的节点图来抽象地来表示软件。图中的一个节点代表一个块;定向边用于代表从一个块到另一个块的跳转(路径)。如果一个节点仅有一个退出边,它就被称为“入口”块,如果一个节点仅有一个“入口”边,此节点即为“退出”块。

如何加强移动应用开发安全?(二)

  在上图中的“节点1”即为“入口”块,“节点6”为“退出”块。

  污点分析试图确认被用户的可控输入“污染”的变量,并跟踪这些变量,查找可能易受攻击的功能。如果被污染的变量就没有被净化,它就成为一个漏洞。

  有些编程语言如Perl和Ruby有内置的污点检查,并在某些情况下(如通过CGI接受数据)启用此功能。

  词法分析是一个将字符序列转换为单词(Token)序列的过程。这个阶段的任务是从左到右一个字符一个字符地读入源程序,即对构成源程序的字符流进行扫描然后根据构词规则识别单词(也称单词符号或符号)。

  限制移动应用的访问许可

  开发“应用许可访问”的目的是为了分配或剥夺用户对移动应用的访问权,例如,安卓要求:如果用户要使用移动应用,就应当接受该应用所要求的全部许可。此外,在以root权限使用设备时,还可以根据某个具体的移动应用来管理授权。许可限制可以保护链接,防止移动应用通过不合法的手段去访问某些私有信息。

如何加强移动应用开发安全?(二)

  此文远远不能解决移动应用开发的所有安全问题,作者仅希望它能够起到抛砖引玉作用。建议有志于此的开发者,参考AT&T的企业移动安全标准。 

0
相关文章