实现高效、高精度的静态应用安全检测

VSole2022-01-18 09:20:33

随着科技的飞速发展,网络空间的主权完整和安全也成为影响国际关系的重要因素,国家之间的竞争也在由物理空间逐渐转向网络空间,国内的网络安全也面临着越来越多的风险和挑战。根据Gartner提供的数据表示,75%的安全攻击是由软件自身漏洞造成的,针对软件漏洞的攻击已成为黑客入侵的主要方式之一,而且攻击者通过挖掘软件代码中的多个安全漏洞,形成攻击链条的不法行为,对关系到国计民生的软件系统带来了重大安全隐患。除此之外,开源文化的盛行在大幅度提升软件开发效率的同时,也增进了潜在的风险,这些开源组件中潜在的安全漏洞很可能被攻击者利用。

面对这些威胁时,传统上以“渗透测试”为主的软件安全检测手段,发现安全漏洞的覆盖率远远不足,且产品上线之前执行的渗透测试相对滞后,安全漏洞修复成本过高。因此在对开发效率和安全要求越来越高的情况下,企业组织还要面临更严峻的挑战:

  • 敏捷开发快速迭代,更短的开发周期,对安全检测响应要求更高;
  • 很多企业在系统上线运行之后采用加固、防火墙、WAF等措施,这些被动防御措施,只能防范已有的安全漏洞,对于未知的安全漏洞无法进行防御,导致软件仍然存在着巨大风险;
  • 在研发阶段没有有效的安全检测手段,缺乏有效的检测工具,或检测工具得不到有效利用。

传统软件测试工作强调左移,要求进行单元测试和接口测试,其实代码中的安全漏洞也属于缺陷,这种安全上的缺陷比功能缺陷为企业带来了更大的风险,所以在研发阶段,有必要引入静态应用安全测试工具(SAST),对代码进行迭代开发的同时,进行迭代检测。介于上述行业背景和技术发展现状,发布本期牛品推荐——开源网安:CodeSec代码审核平台。

标签

静态应用安全测试工具、代码审核工具、代码审计、源代码扫描、开发安全

用户痛点

目前SAST产品市场已经成熟,很多的安全厂商推出SAST类型的检测工具,形成了百花齐放、百家争鸣的情况,这对于很多企业决策者来说,带来了工具选择性的挑战,同时也存在着一些认知上的误区。主要体现在以下几点:

  1. SAST误报率高,对于检测出的漏洞进行复核,工作量较大;
  2. 安全漏洞描述过于专业化,让开发人员很难理解;
  3. 未提供直接的、代码级的修复方案,开发人员需要额外花时间寻找可行的修复方案;
  4. 对于中、大型以上企业往往需要对大量软件进行迭代检测,需要高并发、高可调度的方案;
  5. SAST工具不能够满足企业与现有流程规范的一致性;
  6. SAST工具集成度不够,需要花费人工时间去进行处理。

解决方案

开源网安的“CodeSec 代码审核平台“是全新一代静态应用安全测试(SAST)解决方案,主要用于软件代码安全审核和质量分析,提供漏洞详情和修复方案,能够帮助开发和安全团队在开发阶段早期发现并修复漏洞,提升软件代码安全质量,实现“安全左移”,全面助力企业用户解决上述痛点问题;

首先,由于静态分析技术的局限性,导致静态分析工具存在一定比例的误报率。针对这一问题,开源网安的CodeSec通过采用自研的核心检测引擎,在传统工具多是采用数据流分析的基础上,采用函数摘要、指向分析等进行上下文敏感的分析,进而发现传统检测工具无法检测出的安全缺陷和漏洞,同时,通过对用户开发软件进行共性分析,进一步优化软件产品的检测规则,可以大幅度减少误报。

图:完整的安全弱点概览

其次, CodesSec的安全专家对CWE、OWASP等安全漏洞进行大量研究的基础上,对安全漏洞描述做了全新的描述,包括存在的风险、缓解措施、示例代码、污点轨迹跟踪、定位到代码行等描述信息,能够让开发人员快速理解漏洞的引入点、触发点,找到最佳的修复位置,排除风险。另外,开源网安能够为开发人员提供安全编码方面的培训,对检测报告提供解读服务、远程支持等附加服务,最大程度上帮助开发人员解决安全开发中的实际问题。

第三, CodeSec在检测报出的安全漏洞描述中,提供代码修复示例,能够让开发人员快速修复漏洞。同时,CodeSec团队也在研究安全漏洞自动修复技术,计划在不久的将来推出能够安全漏洞自动修复的版本,进而为代码级解决方案提供全面支撑。

图:详细的漏洞信息与修复方案

第四,在并发检测的需求上,CodeSec采用多进程、多线程方式,每个检测任务在一个线程中进行检测分析,对于查询、审计等采用独立线程进行处理等方式,可以支持多个检测任务并发检测。而对于并发需求更高的用户,可以采用分布式部署方案。

第五,对于企业自身编码规范满足性要求,CodeSec安全专家对工具提供的上千个检测规则与企业自身的编码规则进行对比分析,对于工具不满足的检测规则提供定制,最大程度满足用户要求,保证其业务和标准的延续性。

最后一点,基于用户需要检测工具与其它工具进行集成的要求,CodeSec能够与Git、GitLab、GitHub、SVN、TFS、Perforce、Mercurial、Jira、禅道、Bugzilla、Eclipse、IDEA、VS-Code、Visual Studio、Android Studio等工具集成,基本上可以满足大部分用户要求。

图:支持与Jira对接

用户反馈

开源网安为金融、通信、政府、交通、评测机构等用户部署了上百套 CodeSec 代码审核平台,在有多项目高并发需求的大型企业中建立代码审核SaaS平台,帮助企业避免因为应用程序漏洞而造成的损失。以下是两个典型案例的用户反馈:

“开源网安CodeSec代码审核平台为我市若干信息系统提供代码审计服务,并为信息中心技术人员提供专业的安全培训,帮助信息技术人员提升了软件安全能力;同时,信息中心安全人员通过CodeSec代码审核平台对内部系统的源代码进行安全扫描,便于日常安全运营。”

——某市信息中心

“CodeSec代码审核平台将安全控制线提前,大幅降低安全人员工作量,源代码安全扫码覆盖我司上百个应用,保障上线前的安全,大幅度提升软件的安全质量同时,也满足了用户对供应商软件安全的要求。”

——某大型基础软件企业

安全牛评

“代码安全”是软件安全之“根”,而“浸入式”的代码安全是最低成本的安全解决方案。提高易用性,提高漏洞检出率,降低漏洞修改难度,修复方案的可落地性是对静态安全工具提出的严峻挑战,同时,检测能力、核心漏洞库的管理、安全规则的应用,这些方面如何减少开发者的使用成本是源码安全工具的另一个挑战。

本次牛品推荐的方案将源码检测与多种常用的开发项目管理的流程结合起来而不仅局限于对DevOps平台的集成,可以使源码级测试得到更广泛的应用,提高代码开发迭代的效率与质量。而打破传统测试的方法,将多种源码级测试能力结合起来,是开源网安的另一个优势点。

漏洞挖掘静态函数
本作品采用《CC 协议》,转载必须注明作者和本文链接
在学习漏洞的时候,按照0Day2书中第24章第1节的内容进行学习的,这章本来是远程拒绝服务的漏洞(CVE-2009-3103),但是当我在网上搜索这个漏洞的EXP时,意外的发现了Srv2.sys模块中的另一个漏洞(CVE-2009-2532),而这个漏洞竟然可以实现远程任意代码执行,诶,这我就不困了,然后顺手两个漏洞一起分析了,把Srv2.sys模块对数据包的接收处理过程逆向了一遍,了解了其中的漏
这里建议doc文档,图片可以贴的详细一些。爆破完好了,一样的6。想给它一个清晰完整的定义其实是非常困难的。
一、漏洞挖掘的前期–信息收集 虽然是前期,但是却是我认为最重要的一部分; 很多人挖洞的时候说不知道如何入手,其实挖洞就是信息收集+常规owasp top 10+逻辑漏洞(重要的可能就是思路猥琐一点),这些漏洞的测试方法本身不是特别复杂,一般混迹在安全圈子的人都能复现漏洞。接下来我就着重说一下我在信息收集方面的心得。
针对被分析目标程序,手工构造特殊输入条件,观察输出、目标状态变化等,获得漏洞的分析技术。输入包括有效的和无效的输入,输出包括正常输出和非正常输出。安全公告或补丁发布说明书中一般不指明漏洞的准确位置和原因,黑客很难仅根据该声明利用漏洞。代码流分析主要是通过设置断点动态跟踪目标程序代码流,以检测有缺陷的函数调用及其参数。
主要的环境准备参见上一篇文章,这里介绍本篇文章中会用的的模拟工具以及另一个静态分析工具。
涉及系统命令调用和执行的函数在接收用户的参数输入时未做检查过滤,或者攻击者可以通过编码及其他替换手段绕过安全限制注入命令串,导致执行攻击指定的命令。
今天分享的主题是开源软件漏洞挖掘实践,主要讲对于企业项目、开源项目审计的认识以及做代码审计的经验。
一前言为了帮助更加方便的进行漏洞挖掘工作,前面我们通过了几篇文章详解的给大家介绍了动态调试技术、过反调试技术、Hook技术、过反Hook技术、抓包技术等,掌握了这些可以很方便的开展App漏洞挖掘工作,而最后我们还需要掌握一定的脱壳技巧,进行进一步助力我们漏洞挖掘的效率。本文第二节主要讲述Android启动流程和加壳原理。本文第三节主要介绍整体加壳的实现。本文第四节主要讲当下脱壳点的概念。
依赖于特定硬件环境的固件无法完整模拟,需要hook掉其中依赖于硬件的函数。LD_PRELOAD的劫持对于特定函数的劫持技术分为动态注入劫持和静态注入劫持两种。网上针对LD_PRELOAD的劫持也有大量的描述
VSole
网络安全专家