一、cwe_checker是什么?

1.1、介绍

cwe_checker是一套用于检测常见错误类的检查,例如空指针引用和缓冲区溢出。这些错误类正式称为通用弱点枚举(CWE)。

这些检查基于各种分析技术,从简单的启发式到基于抽象解释的数据流分析。 它的主要目标是帮助分析师快速找到潜在的易受攻击的代码路径。

它的主要关注点是在Linux和Unix操作系统上常见的ELF二进制文件。cwe_checker 使用 Ghidra 将二进制文件反汇编为一种通用的中间表示,并在此 IR 上实现自己的分析。因此,分析可以在大多数CPU架构(Ghidra 可以反汇编)上运行,这使得 cwe_checker 成为固件分析的宝贵工具。

1.2、特点

  • 设置非常简单,只需构建 Docker 容器!

  • 它分析了几种 CPU 架构的 ELF 二进制文件,包括 x86、ARM、MIPS 和 PPC

  • 由于其基于插件的架构,它是可扩展的

  • 它是可配置的,例如 将分析应用于新 API查看在 Ghidra 中注释的结果

  • cwe_checker 可以作为插件集成到 FACT 中

1.3、已分析的CWE 警告列表

cwe_checker 将二进制文件作为输入,基于二进制文件的静态分析运行多项检查,然后输出在分析期间发现的 CWE 警告列表。

到目前为止,实施了以下分析:

  • CWE-78: OS Command Injection (currently disabled on standard runs)   操作系统命令注入

  • CWE-119 and its variants CWE-125 and CWE-787: Buffer Overflow   缓冲区溢出

  • CWE-134: Use of Externally-Controlled Format String   使用外部控制的格式字符串

  • CWE-190: Integer Overflow or Wraparound   整数溢出或环绕

  • CWE-215: Information Exposure Through Debug Information  通过Debug信息导致的信息暴露

  • CWE-243: Creation of chroot Jail Without Changing Working Directory  未改变工作目录时创建chroot Jail

  • CWE-332: Insufficient Entropy in PRNG     PRNG中信息熵不充分

  • CWE-367: Time-of-check Time-of-use (TOCTOU) Race Condition 检查时间与使用时间(TOCTOU)的竞争条件

  • CWE-416: Use After Free and its variant CWE-415: Double Free  释放后使用

  • CWE-426: Untrusted Search Path  不受信任的搜索路径

  • CWE-467: Use of sizeof() on a Pointer Type  在指针类型上使用sizeof()

  • CWE-476: NULL Pointer Dereference  空指针引用

  • CWE-560: Use of umask() with chmod-style Argument  在chmod类型参数中使用umask()

  • CWE-676: Use of Potentially Dangerous Function  潜在危险函数的使用

  • CWE-782: Exposed IOCTL with Insufficient Access Control  无充分访问控制条件下暴露IOCTL

二、基本使用

1、拉取镜像

docker pull fkiecad/cwe_checker:stable

2、使用下面这个命令即可用这个镜像里的工具去测试二进制

docker run -v /PATH/TO/BINARY:/input  fkiecad/cwe_checker:stable  /input --json --quiet

参数:

  • PATH/TO/BINARY:二进制的路径

  • /input:二进制的名字

3、运行成功,出现如下页面

3.1、有cwe漏洞样本

root@node1:~# docker run  -it -v /data/.../squashfs-root/usr/sbin/IGD:/input fkiecad/cwe_checker:stable  /input --json --quiet
[{"name": "CWE467","version": "0.2","addresses": ["0000aa7c"],"tids": ["instr_0000aa7c_1"],"symbols": [],"other": [],"description": "(Use of sizeof on a Pointer Type) sizeof on pointer at 0000aa7c (strncpy)."},{"name": "CWE676","version": "0.1","addresses": ["00009b20"],"tids": ["instr_00009b20_1"],"symbols": ["FUN_00009adc"],"other": [["dangerous_function","strlen"]],"description": "(Use of Potentially Dangerous Function) FUN_00009adc (00009b20) -> strlen"},{"name": "CWE676","version": "0.1","addresses": ["00009b3c"],"tids": ["instr_00009b3c_1"],"symbols": ["FUN_00009adc"],"other": [["dangerous_function","strncpy"]],"description": "(Use of Potentially Dangerous Function) FUN_00009adc (00009b3c) -> strncpy"}
]

3.2、无cwe漏洞样本

root@node1:~# docker run  -it -v /nas/podding_unpack/e3471988-9afb-41ef-9357-661890181cbf/9c1daf21b640f463f097c12d82a8dadcb608433b3bb8415ae30b76259b8ba906/_升级帮助.doc.extracted/151A:/input  fkiecad/cwe_checker:stable  /input --json --quiet
Execution of Ghidra plugin failed: Process was terminated.
ERROR REPORT: Import failed for file: /input (HeadlessAnalyzer)
ERROR The AutoImporter could not successfully load /input with the provided import parameters. Please ensure that any specified processor/cspec arguments are compatible with the loader that is used during import and try again. (HeadlessAnalyzer)

cwe_checker初识别相关推荐

  1. Python -TkinterGUI初识别

    GUI初识别 组件对象,事件 from tkinter import * from tkinter import messageboxroot = TK()#创建窗口btn01 = Button(ro ...

  2. mysql数据库的增删改查命令_MySQL 初识别语句,数据库、表、行的增删改查

    一.MySQL 开场语句 1.登陆 mysql -u root -p ; #回车然后输入密码 2.退出 eixt | quit #二者选其一 3.查看数据文件路径(配置文件中学习的) show glo ...

  3. 9月14日学习内容整理:初识别面向对象

    1.面向过程和面向对象: (1)面向过程:针对结果编程,流水线式思维,得出固定的结果.优点是好想,但是扩展性差,容易引起安全问题 (2)面向对象:对象就是一个实实在在的,可以准确描述出来的实体 2.定 ...

  4. PSIM软件学习---01初识别PSIM软件

      PSIM是趋向于电力电子领域以及电机控制领域的仿真应用包软件.PSIM全称Power Simulation.PSIM是由SIMCAD 和SIMVIEM两个软件来组成的.   PSIM软件最大的特点 ...

  5. 【单片机学习笔记】(31):串口调试技巧、TFT触摸屏初识别、stm32F4与F1对比使用(全系列初始化概览)、YSF4的光耦隔离保护、外部中断与定时器消抖相结合的按键检

    串口调试技巧 可以将调试时会用到,但实际演示是不需要用到的代码用 #if xxx   //这里放调试代码 #endif xxx是 一个宏定义,如果等于0则不编译相关代码,如果为1则编译相关代码 TFT ...

  6. 分布式基础--初识别分布式与CAP

  7. 学会用python识别图像

    用 Python 进行 OCR 图像识别 Python中文社区 全球Python中文开发者的精神部落 数据采集就怕遇到图片,只能看不能复制怎么办.手动将文字提取出来,要耗费很大的工作量. 例如下图,某 ...

  8. 微信旧岛小程序章节目录

    索引 第一章 申请appkey ## 标题##我是 标题 第二章 准备工作 小程序开发工具介绍和第三方开发工具介绍 第三章 小程序基础知识 与新特性 1.小程序的4种文件类型 2.小程序的组织结构 3 ...

  9. [C语言]static关键字--#define 定义常量和宏--初识指针--初识C语言(四)

    文章目录 前言 一,static关键字 二,#define 定义常量和宏 三,初识指针 总结 前言 本节主要记录初识C语言第四节内容. 内容包括:static关键字------#define 定义常量 ...

  10. 消失的“金九银十” 互联网的下一个五年在哪里?

    互联网发展到现在,经历了PC时代,移动端时代.而今传统互联网的红利也已基本结束,消费互联网已进入尾声,在接下来5年,将是产业互联网时代!也就是互联网+硬件,软件融合硬件的模式 在这样的背景下我们And ...

最新文章

  1. windows10中git 远程仓库使用
  2. 科学家利用BCI技术来缓解幻肢疼痛
  3. Linux下用 lsof 命令查找指定端口被哪个进程占用
  4. 图文详解远程部署ASP.NET MVC 5项目
  5. 道指mt4代码_剑指offer算法题052:正则表达式匹配
  6. 前端学习(1400):多人管理20代码优化
  7. 实例13:python
  8. WebForm与MVC模式优缺点
  9. shell应用之简单计算器
  10. 210页的《pandas官方文档中文版》.pdf
  11. android广告平台哪个好用,最新!59个信息流广告平台数据榜单!
  12. Matlab曲线拟合工具箱CFTOOL实例解析
  13. 微信小程序入门9-微信开放平台unionId机制介绍
  14. Tasker 一个配置实现微信朗读,微信消息播报+基础版的防撤回
  15. 海内外弟子追思百岁国医大师邓铁涛
  16. Angular4学习笔记(一):准备和环境搭建
  17. 【基础算法】Gossip协议
  18. WIN_DOS经典大全
  19. csgo调出参数_CSGO参数设置
  20. 《java编程思想》第七章 复用类

热门文章

  1. 胡泳滨maya python
  2. 什么软件测试显卡故障,Win7电脑显卡故障怎样检测软件的方法
  3. 一流科技登上开源供应商名录
  4. 僵尸进程以及如何处理僵尸进程
  5. rpg学院 unity_使用Unity开发RPG游戏完整指南(中)
  6. pyhton matplotlib可视化图像基础(二维函数图、柱状图、饼图、直方图以及折线图)...
  7. 再起风云的社交电商,到底是穷途末路还是柳暗花明?
  8. 【PCIe】【翻译】AER 内核驱动 《pcieaer-howto》PCI Express高级错误报告驱动程序指南
  9. FASS分布式全闪存储技术白皮书
  10. 威伦触摸屏入门布局提升题