源代码安全审计的工作经验分享

我在渗透测试领域工作11年,积累了大量在实战中进行安全测试的实践经验。这里与您分享一些关于代码安全审计工作的经验。

outputo-20210809-091156-536-ccyd.png

1.代码安全审计说明。

谈到代码安全审计,首先要了解这项工作的内容和意义。编码安全审计工作是调查分析软件系统的业务和技术要求,自动或人工地对软件代码进行分析,发现代码中的安全漏洞。为防止软件系统上线后存在的安全漏洞被黑客或恶意攻击者利用,实施了数据篡改、盗取信息、伪造身份、拒绝服务、抵赖、增加权限等攻击,给软件系统及用户造成了巨大的损失。因此,对代码安全的审核工作还是很有必要的。

2.规范安全审核。

编码安全审计主要包括五个要素:人员、技术、策略、工具和过程。

1)人。“人”是指具有软件安全开发技术能力和知识的工程师,具有丰富的软件安全知识和分析方法知识,从而能够准确、有效地使用专业工具,排除误报、定位缺陷。

2)技术。被测目标系统涉及到的技术有语言、框架、封装、业务流程等。当然,技术的这一部分也应该是首要的要素——人类应有的。

3)战略。“策略”就是进行代码安全审计。

正确选择的策略。实际工作中,我们将使用专业的代码安全审计工具,结合有经验的工程师,对常见的代码安全隐患进行分析,包括:审计和日志(AuditingandLogging)、认证(Authentication)、授权(Authorization)、通信安全(CommunicationSecurity)、数据存取(DataAccess)、部署考虑(DeploymentConsideration)模拟、错误处理(ErrorHandling)、委托(ImpersonnationandDelegation)、输入和数据验证(InputandDataValidation)、参数操作(ParameterManipulation)、敏感数据(SensitiveData)、输入和数据验证(InputandDataValidation)、参数操作(ParameterManipulation)、敏感数据(SensitiveData)和会话管理(SessionManagement),以及其他。本文以使用DMSCA扫描JAVA开放源码框架的工具扫描为例,我们发现这个开放源码框架在不同级别的风险等级。因此,如何制定安全扫描的规则呢?

既要进行“安全审核”,也要遵守各种安全标准,如PCIDSS第三方支付行业数据安全标准、HIPAA健康保险携带与责任法案、FISMA联邦信息安全管理法案、BSIMM软件安全构建成熟度模型等国际通用的标准模型,GB/T20945-2013信息安全技术信息系统安全审计产品技术要求和测试评价方法;GB/T34943-2017CC++语言代码漏洞测试规范、GB/T20945-2013信息安全技术信息系统安全审计产品技术要求和测试评价方法、GB/T34943-2017CC++语言代码漏洞测试规范等标准[3]。这是我们正在讨论的战略。

4)工具。基于我国近年来对信息系统安全问题的日益重视及面临的风险考虑,建议选择国内代码安全审计厂商自主研发的国产代码工具。

5)程序。首先确定代码安全审核的目标。如果可能的话,使用威胁模型导出目标,了解体系结构、技术和需求导出目标。步骤2进行初步扫描,并对安全性问题的结果进行分析。利用静态分析工具或轻量级人工审查来发现应用程序中最应该查找的安全问题,例如缓冲区溢出、跨站点脚本、SQL注入等等,初始扫描允许我们优先考虑风险最高的区域。

分享: