源代码审计

源代码审计工作通过分析当前应用系统的源代码,熟悉业务系统,从应用系统结构方面检查其各模块和功能之间的关联、权限验证等内容;从安全性方面检查其脆弱性和缺陷。在明确当前安全现状和需求的情况下,对下一步的编码安全规范性建设有重大的意义。

代码安全审计=代码安全测试+代码安全开发;除了交给安全人员外,开发人员也应该参与进来。但综合来看代码审计是一个很专业的工作。

源代码审计工作利用一定的编程规范和标准,针对应用程序源代码,从结构、脆弱性以及缺陷等方面进行审查,以发现当前应用程序中存在的安全缺陷以及代码的规范性缺陷。黑盒的是渗透测试,白盒的是代码审计。

安全圈里有句老话:一切的用户输入都是有害的。的确,我们的所有安全测试都是基于这一点的.既然用户的一切输入都是有害的那么怎样使这个危害显现出来呢,这就引入了安全的另一句话:有害的数据进入了危险的函数便产生了漏洞 ,因此我们可以总结出安全的两个基本点:数据和函数 ,我们所做的所有安全相关的工作都是基于这两点。源代码审计也不例外。

审核目的

源代码审计工作是通过对当前系统各模块的源代码进行审查,以检查代码在程序编写上可能引起的安全性和脆弱性问题。
码安全审计的主要宗旨就是在编码环节,以自我审计的方式去尽量减少和消除这些不安全的编码方式和编码习惯,确保不会有安全漏洞的产生。

审核依据

源代码审计工作主要突出代码编写的缺陷和脆弱性,以OWASP TOP 10 为检查依据,针对OWASP统计的问题作重点检查。

OWASP(开放式Web应用程序安全项目)是一个开放的社区,由非营利组织 OWASP基金会支持的项目。对所有致力于改进应用程序安全的人士开放,旨在提高对应用程序安全性的认识。其最具权威的就是“10项最严重的Web 应用程序安全风险列表” ,总结并更新Web应用程序中最可能、最常见、最危险的十大漏洞,是开发、测试、服务、咨询人员应知应会的知识,以下为2020的十大漏洞:

  1. 注入
  2. 失效身份验证和会话管理
  3. 敏感信息泄露
  4. XML外部实体注入攻击(XXE)
  5. 存取控制中断
  6. 安全性错误配置
  7. 跨站脚本攻击(XSS)
  8. 不安全的反序列化
  9. 使用具有已知漏洞的组件
  10. 日志记录和监控不足

审计范围

根据系统给出的代码,对其WEB应用作脆弱性和缺陷、以及结构上的检查。通过了解业务系统,确定重点检查模块以及重要文件,提供可行性的解决方法。

审计方法

通过白盒(代码审计)的方式检查应用系统的安全性,白盒测试所采用的方法是工具审查+人工确认+人工抽取代码检查,依照OWASP TOP 10所披露的脆弱性,根据业务流来检查目标系统的脆弱性、缺陷以及结构上的问题。
本次源代码审计分为三个阶段:

信息收集

此阶段中,源代码审计人员熟悉待审计WEB应用的结构设计、功能模块,并与客户相关人员商议、协调审计重点及源代码提供等方面的信息。

代码安全性分析

此阶段中,源代码审计人员会使用工具对源代码的脆弱性和安全缺陷进行初步的分析,然后根据客户关注的重点对部分代码进行手工审计,主要包含以下内容:
输入/输出验证。SQL注入、跨站脚本、拒绝服务攻击,对上传文件的控制等因为未能较好的控制用户提交的内容造成的问题;
安全功能。请求的参数没有限制范围导致信息泄露,Cookie超时机制和有效域控制,权限控制、日志审计等方面的内容;
程序异常处理。忽略处理的异常、异常处理不恰当造成的信息泄露或是不便于进行错误定位等问题;

级别定义

安全弱点与信息资产密切相关,在一定条件或环境下可能被威胁利用,从而造成资产损失。弱点的出现有各种原因,如软件开发过程中的质量问题,系统管理员的配置问题以及安全管理方面的问题,它们的共同特性就是给攻击者提供了对信息资产进行攻击的机会。
参照国际通行标准和经验,我们在本次代码审计中将代码中存在的弱点的严重程度分为3个等级,分别是高(H)、中(M)、低(L),如下表所示:

漏洞级别说明(当该漏洞被利用时引起后果的严重性)
安全漏洞一旦被利用,将直接导致攻击者获得超级用户权限机密信息
安全漏洞一旦被利用,将直接导致攻击者获得一般的系统访问权限或敏感信息;或者能通过该漏洞进一步获取超级用户权限和机密信息
安全漏洞一旦被利用,可能泄漏一些系统信息或有价值的信息,导致攻击者能够利用这些信息进行深入的攻击和探测,以获取大的权限和更多的信息。

脆弱性和缺陷编程意见

永远不要相信用户的输入
用户的输入主要包括以下几类:

  • WEB访问请求中URL的参数部分;
  • HTML表单通过POST或GET请求提交的数据;
  • 在客户端临时保存的数据(也就是Cookie);
  • 数据库查询。

安全功能方面

  • 不要过于信任应用程序访问控制规则;
  • 身份鉴别系统和会话管理可能会被绕过或是被篡改;
  • 存储的敏感信息可能被抽取。

其它:

  • 服务器:安装最新的补丁,降低WEB应用运行用户的权限,适当设置应用所在目录的读写权限。
  • WEB服务器软件:不要开启目录浏览、写入、脚本资源访问等功能。
  • 错误处理:必须关闭详细错误显示,比较好的处理方式是开启错误重定向功能在出错后重定向到指定页面(如网站首页),并且这个页面不能把异常信息发送给客户端。
  • 代码质量:主要是指可用性、可维护性、运行效率、重复代码量等等指标,高质量的代码不仅易于维护,而且运行效率高,因为当受到拒绝服务攻击时可以有效降低对系统的影响。好的代码依赖于合理的系统架构、优秀的程序编写人员和严谨的工作作风。
  • 1
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

熊野君

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值