摘要:SCA(Software Composition Analysis)软件成分分析,指通过对软件源码、二进制软件包等的静态分析,挖掘其所存在的开源合规、已知漏洞等安全合规风险,是一种业界常见的安全测试手段

华为云DevCloud软件开发平台在2022华为伙伴暨开发者大会重磅推出了4大新能力,其中的二进制成分分析安全检测能力,能够实现对开源软件漏洞的全面排查、快速精准定位问题、并迅速响应修复;本文将对什么是二进制SCA检测服务以及该服务的优势进行解读。

什么是二进制SCA检测服务

SCA(Software Composition Analysis)软件成分分析,指通过对软件源码、二进制软件包等的静态分析,挖掘其所存在的开源合规、已知漏洞等安全合规风险,是一种业界常见的安全测试手段(目前华为云提供二进制SCA检测服务,源码SCA检测服务后续正式发布)。

二进制SCA检测服务,检测对象为二进制软件包/固件,直接从二进制文件中提取常量字符串、部分类名称、函数名称等特征信息,再运用匹配算法进行相似度计算,根据相似度门限来检测出引用的开源软件名称和版本号。

二进制SCA检测对比源码SCA检测的优势

无需依赖源码,操作方便

用户只需上传二进制软件包/固件,服务会采用静态检测技术,不用构建运行环境,不用运行程序即可快速分析二进制软件包/固件中存在的安全风险问题,并输出一份专业的分析报告

图:二进制成分分析-检测处理流程

二进制SCA指纹提取黑科技:Go语言逆向技术之---恢复函数名称算法

在对程序做安全审计、漏洞检测时,通常都需要对程序做逆向分析,我们在没有符号表的情况下,提出了一种恢复函数名称的算法,方便对Go语言二进制文件进行逆向分析,提升分析效率。

Go语言是最近几年发展非常火的一种语言,它具备和C/C++一样的运行速度快的优点,同时又具备开发效率高,支持包管理机制高阶语言特点。其编译出来的二进制文件格式和C/C++一样运行在Linux平台下是elf格式,运行在windows平台下是pe格式,但同时在二进制文件的内部细节上Go语言有自己特有的属性,二进制逆向人员可以利用Go语言这些特有属性来实现对二进制文件进行更精准的逆向分析。

特性1:利用Go语言中特有的节信息来判断elf/pe文件的源代码语言类型,是Go语言还是C、C++语言

通过判断二进制文件中是否存在“.noptrdata”、“.Gopclntab”、“.data.rel.ro.Gopclntab”确定源代码,如果存在上述节名称,则源代码为Go语言。

特性2:在没有符号表的情况下如何恢复函数名称

我们知道在C/C++编译出来的二进制文件中,如果没有符号表信息是没法看到函数名称的,在IDA工具中只能看到地址信息。

Go语言怎么来恢复函数名称呢,可以通过从.data.rel.ro节来恢复函数名,具体查找定位算法如下:

方法1:

解析头信息可以获取magic, quantum, ptr_size, func_tab_count数据,当magic为’\xfb\xff\xff\xff’时,entry_size = 2 * ptr_size为entry结构体大小,func_tab_count 为entry结构体数量;解析entry结构获取到名称信息结构数据位置偏移(需要注意64位和32位Go程序 func_info_offset位置相反),读取名称信息结构体数据,再从中获取到名称字符串位置偏移(name_offset),根据此偏移定位到函数名称字符串起始位置偏移,从该位置解析得到函数名称。

方法2:

1.16版本Go语言结构有些新变化,magic变为’\xfa\xff\xff\xff’,解析头信息获取func_tab_cnt, file_cnt, func_name_off, cu_off, filetab_off, pctab_off, func_tab_off数据,其中func_tab_off为entry数据起始位置,解析entry结构获取code_off, func_info_offset数据,后续解析过程与magic=’\xfb\xff\xff\xff’一致。

通过上述两个方法可以恢复函数真实名称,从而方便对Go语言二进制文件的逆向分析,提升分析效率。

DevCloud软件开发平台基于二进制成分分析技术,可以为开发者提供以下能力支持:

  • 支持多种类型安装包:支持windows、linux、IoT固件包、安卓部署包等常见软件包的安全检测。
  • 检测全面:支持针对开源软件的许可证、漏洞、信息泄露、安全配置等3大项、25小类的安全问题检测。
  • 开源软件覆盖全面:覆盖100+漏洞源、百万级开源组件版本,开源问题全覆盖。
  • 保障迅速:小时级漏洞更新,提升漏洞发现速度,降低安全风险。

作者:郑志强 | 华为云二进制安全测试工具专家

点击关注,第一时间了解华为云新鲜技术~

二进制SCA指纹提取黑科技:Go语言逆向技术的更多相关文章

  1. 这些JavaScript编程黑科技

    1.单行写一个评级组件 "★★★★★☆☆☆☆☆".slice(5 - rate, 10 - rate);定义一个变量rate是1到5的值,然后执行上面代码,看图 才发现插件什么的都 ...

  2. 一文带你了解 HTTP 黑科技

    这是 HTTP 系列的第三篇文章,此篇文章为 HTTP 的进阶文章. 在前面两篇文章中我们讲述了 HTTP 的入门,HTTP 所有常用标头的概述,这篇文章我们来聊一下 HTTP 的一些 黑科技. HT ...

  3. 漏洞检测方法如何选?详解源代码与二进制SCA检测原理

    摘要:本文探讨的是SCA具体的检测原理,源代码SCA检测和二进制SCA检测有哪些相同点和不同点,在进行安全审计.漏洞检测上各自又有什么样的优势和适用场景. 本文分享自华为云社区<源代码与二进制文 ...

  4. ACM: FZU 2105 Digits Count - 位运算的线段树【黑科技福利】

     FZU 2105  Digits Count Time Limit:10000MS     Memory Limit:262144KB     64bit IO Format:%I64d & ...

  5. Cnblogs关于嵌入js和css的一些黑科技

    #pong .spoiler{cursor:none;display:inline-block;line-height:1.5;}sup{cursor:help;color:#3BA03B;} Pon ...

  6. 【转载】史上最全:TensorFlow 好玩的技术、应用和你不知道的黑科技

    [导读]TensorFlow 在 2015 年年底一出现就受到了极大的关注,经过一年多的发展,已经成为了在机器学习.深度学习项目中最受欢迎的框架之一.自发布以来,TensorFlow 不断在完善并增加 ...

  7. MIT 黑科技:通过脑电波和手势控制机器人

    简评:麻省理工黑科技,虽然现在能实现的操作还很简单,但前景(想象空间)非常巨大. 通常,控制机器人并不容易,常规手段就是编程.但是地球上从来不缺天马行空的科学家,今日 MIT 的计算机科学与人工智能实 ...

  8. 微软AI发布会,集齐六大亮点召唤黑科技!

    7月12日,微软合作伙伴大会Inspire在华盛顿特区如火如荼地举行.同一天,在相隔5个时区的伦敦,微软还举办了一场关于人工智能的发布会.这是一场智能技术和情感体验两相交融的科技盛宴,既有黑科技,也有 ...

  9. qt的应用层主要是大型3d,vr,管理软件和器械嵌入软件(有上千个下一代软件黑科技项目是qt的,美国宇航局,欧洲宇航局,超级战舰DDG1000)

    作者:Nebula.Trek链接:https://www.zhihu.com/question/24316868/answer/118944490来源:知乎著作权归作者所有.商业转载请联系作者获得授权 ...

  10. Python黑科技:FuckIt.py

    说起 Python 强大的地方,你可能想到是它的优雅.简洁.开发速度快,社区活跃度高.但真正使得这门语言经久不衰的一个重要原因是它的无所不能,因为社区有各种各样的第三库,使得我们用Python实现一个 ...

随机推荐

  1. 给wordpress后台侧栏菜单添加自定义字段的方法

    我们在使用wordpress做网站的时候,难免有一些需要在后台设置侧栏菜单下添加自定义字段的情况.下面就简单说说一下,如何在后台设置侧栏菜单下添加自定义字段? 在这里我们主要是使用wordpress的 ...

  2. 虹科案例 | 虹科Domo商业智能,助力保险公司逃离繁杂数据池!

    金融行业的发展充满着不确定性,一个具备强大承保能力和精算专业知识的资金池,对于身处该领域的公司和个人都是十分必要的. 在全国城市联盟(NLC)的协助下成立的NCL Mutual会员制互助保险公司,为各 ...

  3. ELK-WEB中文版化-redis高性能加速

    1.ELK-WEB中文汉化版支持:(kibana所在机器执行)Kibana WEB平台所有的字段均显示为英文,目前5.x版本默认没有中文汉化版插件或者汉化包(7.x版本支持汉化默认有汉化),感谢Git ...

  4. 鬼谷子的钱袋(lgP2320)

    主要思路:二进制拆分. 先将 \(m\) 进行二进制拆分. 注意金币总数有限,也就是说拆分后可能会多出来一组.多出来的这组如果不是 \(2^n\) 就不需要考虑了,因为不会和前面的重复. 接下来考虑重 ...

  5. 通过mybatis-plus的自定义拦截器实现控制 mybatis-plus的全局逻辑删除字段的控制 (修改其最终执行的sql中的where条件)

    需求:过滤部分请求不实现mybatis-plus的逻辑删除 看到网上关于mybatis-plus的自定义拦截器的文章有的少 想了想自己写了一篇 欢迎参考 指正 通过springboot的拦截器 在请求 ...

  6. 淘天Java一面,难度适中!(上篇)

    1.公司介绍 淘天集团是阿里巴巴集团全资拥有的业务集团,全球领先的科技商业公司. 淘天集团以淘宝 APP 为主要服务载体,构建国内国际供给.线上线下场景.远场近场履约相结合的商业矩阵,汇聚数十万全球和 ...

  7. 如何优雅使用 vuex

    大纲 本文内容更多的是讲讲使用 vuex 的一些心得想法,所以大概会讲述下面这些点: Q1:我为什么会想使用 vuex 来管理数据状态交互? Q2:使用 vuex 框架有哪些缺点或者说副作用? Q3: ...

  8. 轻松一刻|Walrus CLI与CI/CD工具集成,轻松部署2048游戏

    Walrus 是一款开源的基于平台工程理念.以应用为中心.以完整应用系统自动化编排交付为目标进行设计开发的云原生应用平台,简化和自动化应用部署与发布流程并与现有的 CI/CD 流水线无缝集成.今天我们 ...

  9. jmeter-jsr223取样器的使用

    相比于BeanShell 取样器,JSR223取样器具有可大大提高性能的功能(编译)如果需要,一定要使用JSR223取样器编写脚本是更好的选择!!! 属性描述名称:显示的此取样器的描述性名称,可自定义 ...

  10. java-导出pdf

    前言:   纯代码画pdf格式 <!-- iText PDF --> <dependency> <groupId>com.itextpdf</groupId& ...