代码审计笔记之开篇

这篇具有很好参考价值的文章主要介绍了代码审计笔记之开篇。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

思想

代码审计是从软件测试发展而来,早起一般采用常规软件测试与渗透测试的手段来发现源码漏洞,但是随着软件规模的越来越大,架构越来越复杂,安全漏洞和后门也越来越多越来越隐蔽,这使得传统的软件测试方法很难检出源码源码中的安全漏洞,于是通过源码来识别程序中安全漏洞的思想开始出现。可以说代码审计的出现有效解决了传统测试与渗透测试无法“细致入微”经常出现漏测的问题。

要求

既然是通过源码来识别程序中的漏洞,那么对于人员也就有了较高的要求,总结来讲以下四点,我们可以有针对的进行学习。
1、漏洞理解能力;
对于漏洞成因的深入理解,是Web漏洞挖掘的基础,而且Web应用中的漏洞在不同语言中表现形式基本一致,这使得这项能力的培养性价比非常高。
2、源码阅读能力;
能够通过阅读源码,理解其中逻辑。并且能够通过阅读文档和提问解决遇到的问题。
3、动态调试能力;
在代码逻辑复杂的情况下,通过多次调试或关键位置设置断点辅助理解源码逻辑。
4、工具使用能力;
主要为自动化代码审计工具与开发工具,因为当前代码审计的开展方式一般采用自动化+人工的方式进行,所以自动化审计工具与开发工具都需要会用。

方法

据统计,由输入数据引发的安全问题,在源代码安全漏洞中占比高达90%。所以源码审计的核心思路在于跟踪这些外部输入,是否被安全的处理。具体方法有。

通读代码法

通读代码的主要是使用先整体后局部的方法,对的整体架构以及具体业务功能进行分析;

先整体

源码框架分析
了解源码使用的底层框架(如gin,spring,django等),根据底层框架不禁可以快速推测其使可能存在的安全问题,并且可以帮助我们更加快速的厘清源码的目录结构。
源码依赖分析
根据依赖提供的API推测系统可能存在的功能,以及根据依赖判断其可能存在的开源组件漏洞(如fastjson反序列化)。
配置文件分析
通过对于配置文件的分析,可以推测系统可能存在的功能,并且可以关注配置文件中的关键key值是否加密处理,避免被结合其他漏洞进行利用。
源码路径分析
根据文件夹名称推测程序实现了哪些功能,了解一些常用框架的目录组织方式可以帮助我们更好的应对源码路径分析。

如果能找到对于源码的说明文档,建议优先快速浏览一遍,好的文档可以帮助我们快速了解一个项目。

后局部

过滤文件分析
过滤文件(功能)在代码审计中有着至关重要的地位,其直接关系到不同漏洞挖掘的优先级,以及漏洞是否会被真正的利用成功。如nginx的代理规则分析,网关服务的过滤规则分析,服务的filter链分析等;
接口权限梳理
通过了过滤规则的分析,即可对于授权接口与未授权接口进行区分梳理,通常情况下未授权接口的分析与测试优先级要优先于授权接口,因为其利用成本更加低廉,危害更大。
身份认证分析
分析完接口后一般会对于身份认证进行优先分析,如突破身份认证的屏障后后续漏洞的利用成本也会相应变低。
具体功能分析
按照自己的喜好开始分模块的阅读源码。或者止步与身份认证的分析,开始采用危险函数或功能点定向审计的方式进行分析,因为有了前面的分析,我们对于代码的架构,过滤,权限等关键设计已经有了一定的了解,这使得使用危险函数回溯与功能点定向审计的准确率,与审计效率大幅度提升。

危险函数回溯审计法

危险函数回溯方法,是以危险函数或危险配置的关注字入手,逆向追踪参数传递过程,如果参数在传递过程可以被用户操纵且没有得到过滤处理则可以初步判断存在问题。

功能点定向审计法

功能点定向审计是先根据要测试的功能,先找到它的前端调用接口,再逐步跟进排查后端代码逻辑与调用关系,以发现代码执行过程中的漏洞,通常情况下需要我们对于系统功能有一定的了解,且对于功能点可能会有哪些漏洞有一定的了解。这样才不至于盲目乱测。

自动化审计法

自动化代码审计核心为使用工具对于源码进行扫描,再通过人工去对于审计内容进行核查,选择工具需要重点考察其两个能力;
1、污点识别能力,污点识别能力决定着测试的漏报情况
2、污点最终能力,污点追踪能力决定着测试的误报情况
目前较为常用的自动化工具有:SemGrep,CodeQL,Fortify_SCA。
综合来看
1、SemGrep:漏报少,误报多,因为是纯静态的污点识别,几乎无污点最终能力;
2、CodeQL:漏报多,误报少,因为基于ast分析,所以误报少,但是其污点识别的规则较为有限,需要长期的积累完善,较为适合扫描有限几个漏洞,且有专人维护的场景;
3、Fortify_SCA:漏报适中,误报适中,因为是商业化工具,整体来讲比较均衡,适合不想折腾又有自动化代码扫描的需求;
代码审计笔记之开篇

``这个比较建立再已知所有功能的情况下,因为部分测试方法在不知道有对应功能的情况下是很难展开的

良好: 该方法很有可能发现漏洞;
一般: 该方法有机会发现一些漏洞,但不被认为是一个好的选择;
较差: 该方法几乎没有或根本没有机会找到列出的漏洞;

以上为对于代码审计的常用方法的说明,在测试不同类型时选择最合适的技术是测试人员的基本素养,一般情况下想完整完成一个项目各种代码审计技术会相互结合使用,而且代码审计也会与渗透测试结合使用。当前以源码为主导的渗透测试手段在某些特定场景下已经开始逐渐替代传统的黑盒渗透测试,所以学习好代码审计已经变得比较重要。文章来源地址https://www.toymoban.com/news/detail-457542.html

到了这里,关于代码审计笔记之开篇的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 华为HCIE学习之open stack开篇(笔记)

    云计算是一种服务模式,而虚拟化是一种具体的技术。 Openstack是一个云操作系统,它通过各种组件对下层的各种资源进行整合、管理、调度。 如cinder,我们在界面上点击创建硬盘,然后通过cinder-api等一系列cinder组件的传递最后传递到driver,通过driver控制存储创建一个lun 相当

    2024年01月18日
    浏览(32)
  • 代码审计-审计工具介绍-DAST+SAST+IAST项目

    DAST: 动态应用程序安全测试( Dynamic  Application Security Testing)技术在测试或运行阶段分析应用程序的动态运行状态。它模拟黑客行为对应用程序进行动态攻击,分析应用程序的反应,从而确定该Web应用是否易受攻击。 SAST: 静态应用程序安全测试( Static  Application Securi

    2024年02月12日
    浏览(32)
  • 500行代码手写docker开篇-goland远程编译环境配置

    本系列教程主要是为了弄清楚容器化的原理,纸上得来终觉浅,绝知此事要躬行,理论始终不及动手实践来的深刻,所以这个系列会用go语言实现一个类似docker的容器化功能,最终能够容器化的运行一个进程。 代码最终运行效果 本系列源码已经上传到github,地址如下: 在开始

    2024年02月05日
    浏览(53)
  • VauditDemo靶场代码审计

    将下载好的 VAuditDemo_Debug 目录复制到 phpstudy 的 www 目录下,然后将其文件名字修改成 VAuditDemo ,当然你也可以修改成其他的 运行phpstudy并且访问install目录下的 install.php ,这里我访问的是 http://127.0.0.1/VAuditDemo/install/install.php 查看以上服务是否支持后点击安装,数据库的默认账

    2024年02月13日
    浏览(30)
  • 代码审计基础知识

    目录 一、代码审计简介 二、源代码泄露 1.常见的备份文件 (1)文本备份文件 (2)整站源代码备份文件 2.Git泄露 (1)通过特征搜索 (2).git泄露 3.svn泄露 4.利用漏洞泄露 三、代码审计的方法与技巧 1.小型代码 2.大型代码 3.审计工具 代码审计就是检查源代码汇总的安全缺陷

    2023年04月08日
    浏览(24)
  • 代码安全审计

    什么是代码安全审计 代码安全审计是指有开发和安全经验的人员,通过阅读开发文档和源代码,以自动化分析工具或者人工分析为手段,对应用程序进行深入分析,高效全面的发现系统代码的编码缺陷以及开发人员不安全的编程习惯,并指导开发人员进行修复,保障应用系统

    2024年02月13日
    浏览(31)
  • Java代码审计

    本文原创作者:谷哥的小弟 作者博客地址:http://blog.csdn.net/lfdfhl 代码审计是一种安全测试方法,它通过对软件应用程序代码的静态分析和动态测试来确定应用程序中存在的安全漏洞。其主要目的是检测应用程序中可能被攻击者利用的安全漏洞,如输入验证问题、访问控制问

    2024年02月12日
    浏览(32)
  • 代码审计——XSS详解

    跨站脚本攻击(Cross Site Script)是一种将恶意JavaScript代码插入到其他Web用户页面里执行以达到攻击目的的漏洞。 攻击者利用应用程序的动态展示数据功能,在html页面里嵌入恶意代码。当用户浏览该页之时,这些嵌入在html中的恶意代码会被执行,用户浏览器被攻击者控制,从

    2024年02月10日
    浏览(34)
  • 借助AI进行代码审计

    (下面示例代码来自于一款开源VPN源代码,非客户源代码) 最近做代码审计,由于代码量较大,对于一些缺陷涉及到较长的代码片段或复杂的代码时,我会借助AI工具进行分析和确认,的确加快了代码审计的速度。例如利用静态分析工具的扫描结果中有下面缺陷: 当鼠标定位

    2024年01月16日
    浏览(33)
  • PHP代码审计(全)

    官方文档:php.net php官方文档是非常详情,好用的,在遇到不清楚作用的函数时可以进行查询 白盒测试做代码审计最主要的知识是要去了解一个漏洞应该有哪些防御方式,因为大部分的漏洞都是因为修复没有做的全面,或者修复没有考虑到一些情况导致漏洞。 MVC: C:分发处

    2024年02月11日
    浏览(30)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包