CVE-2021-3449漏洞原理分析与复现
CVE-2021-3449空指针引用漏洞原理分析漏洞描述该漏洞为公开漏洞,漏洞编号为CVE-2021-3449,漏洞类型为空指针引用漏洞,存在于OpenSSL的1.1.1-1.1.1j版本,包含11.1.4目标PA设备中的开源组件OpenSSL版本1.1.1g。官方描述信息如下: 漏洞原理当TLS 1.2服务器在重新协商时,若客户端发送的ClientHello消息省略了初始握手存在的signature_algorithms扩展,但包含signature_algorithms_cert扩展,会触发空指针解引用,导致服务崩溃(拒绝服务攻击)。 发送恶意ClientHello请求后,在下图代码1732行tls1_lookup_sigalg函数位置发生空指针引用漏洞,其中由于signature_algorithms被省略,导致ptmp指针为空,出现空指针引用漏洞。 漏洞验证当建立renegotiation信息时,存在空指针引用漏洞。验证漏洞POC报文如下: 发送POC,测试程序ASAN检测到空指针引用错误,产生崩溃时的函数调用链如下图:
CVE-2021-23840漏洞原理分析与复现
CVE-2021-23840整数溢出漏洞漏洞概述该漏洞为公开漏洞,漏洞编号为CVE-2021-3449,漏洞类型为空指针引用漏洞,存在于OpenSSL的1.1.1-1.1.1i版本,包含11.1.4目标PA设备中的开源组件OpenSSL版本1.1.1g。官方描述信息如下: 漏洞原理比对修复版本,在修复版本增加的内容check如下: 根据其注释,要求(inl-j) & ~(bl -1)的值不能超过 INT_MAX - bl。 存在漏洞代码如下,在漏洞函数evp_EncryptDecryptUpdate内第350行进入if(i !=0)分支,在第351行进入else分支,此时openssl会进行加密算法的padding部分,即将不是规定分组大小整数倍的长度补充到分组大小整数倍。此时会将*outl +=...
V8内存回收机制
V8内存回收机制V8 采用的垃圾回收算法(2019年)内存回收机制的基本组成部分 识别存活/已死亡对象 回收死亡对象的内存 整合分片化内存(可选) v8垃圾回收机制分为Major GC和Minor GC两种内存回收器 Major GC:Mark Compact(针对整个堆空间) Minor GC:Scavenge & Minor Mark Sweep(针对新生代) Major GC (Full Mark-Compact)major gc负责从整个堆内存中回收垃圾内存。 上图为最简单的版本,将Major GC 分为三个阶段: marking,...
IoT Fuzz论文调研
IoT领域有关Fuzz论文的汇总调研,随缘更新~ 主要关注模糊测试分析的IoT目标对象、白/灰/黑测试、模拟级别、基于工具等信息 论文名称 期刊会议 目标 模糊测试 模拟级别 基于工具 Firmadyne NDSS 2016 Linux服务 系统模拟 Firm-AFL USENIX 2019 Linux服务 灰盒 系统+用户模拟增强 QEMU,TriForce,DECAF FirmAE ACSAC 2020 Linux服务 系统模拟 EQUAFL ISSTA 2022 Linux服务 灰盒 用户模拟 QEMU Greenhouse USENIX 2023 Linux服务 灰盒 用户模拟 IoTFuzzer NDSS 2018 带App的IoT设备 黑盒 硬件设备 Diane SP 2021 带App的IoT设备 黑盒 硬件设备 P2IM USENIX 2020 裸机 黑盒 系统模拟 uEmu USENIX 2021 裸机 灰盒 系统模拟 Fuzzware USENIX...
Sok论文阅读
题目:SoK: Prudent Evaluation Practices for Fuzzing 期刊/会议:2024 IEEE Symposium on Security and Privacy (SP) 作者:Moritz Schloegel (CISPA) 论文简介对2018到2023年的有关fuzz的论文(150篇A类期刊)进行了总结,并且提出需要有一个更加精确谨慎的评估方法,确保成果工作的可重复性,可验证性 These case studies allow us to assess the practical reproducibility of fuzzing research and identify archetypal pitfalls in the evaluation design. Unfortunately, our reproduced results reveal several deficiencies in the studied papers, and we are unable to fully support and...
国内GPT中转配置方案
国内GPT中转配置方案官网主页:https://api.bianxie.ai/ 软件/代码/插件接入使用便携AI聚合API需要两个数据: BASE_URL:有的软件里也叫API URL或者OPENAI_API_BASE,都是一个意思,就是说你从这个链接调用服务; API Key:就是令牌,以sk-开头的一长串字符。 客户端工具:https://github.com/Dooy/chatgpt-web-midjourney-proxy 配置BASE_URL和API_KEY即可直接使用 GPT API使用参考模版以一个调用LLM读取报文协议生成模糊测试初始化种子的demo为例 文件目录树: 12345678❯ tree .├── config│ ├── config.yaml│ └── prompts│ ├── generate_seeds.txt│ └── packet└── ...
Vim配置方案
Vim配置方案参考链接: Vim的终极配置方案,完美的写代码界面! ——.vimrc[通俗易懂] vim插件管理器:Vundle的介绍及安装(很全) 在~/.vimrc修改配置即可: 安装Vundle安装插件工具 1git clone https://github.com/VundleVim/Vundle.vim.git ~/.vim/bundle/Vundle.vim 在~/.vimrc头部添加以下信息(下面的几个Plugin是例子): 12345678910111213141516171819202122232425262728293031323334353637383940414243set nocompatible " be iMproved, requiredfiletype off " required" set the runtime path to include Vundle and initializeset...
PromptFuzz论文阅读
题目:Prompt Fuzzing for Fuzz Driver Generation 期刊/会议:CCS 2024 作者:Hao Chen (腾讯Big data Lab) 论文简介主题:提出了一种新的基于提示词对库文件进行fuzz的方法。 背景:对标准库的fuzz存在几个难点 api函数覆盖度不够(hopper给予解决,但其种子的输入空间太大) 种子输入空间太大,如何生成高质量的种子才能进入到较深的分支。 整体架构: Instructive Program Generation:提取库的类型定义以及api函数定义,喂给大模型初步生成fuzz driver( Program Instance)。 Erroneous Program Validation:运行Program Instance(有fuzz语料库),去除错误程序(检查运行状态),同时获取代码覆盖率。 Coverage Guide Mutation:将其代码覆盖率反馈给大模型,对Program Instance进行变异,添加或删除api函数。 Constrained Fuzzer...
Kernel ROP入门学习
参考链接:a3大佬 01. Kernel ROP - basic所需要构造执行的ROPchain为commit_creds(prepare_kernel_cerd(&init_task))或commit_creds(&init_cred)(这个似乎更方便,要去找对应内核的源码,然后用ida打开vmlinux查看其对应位置) 当成功执行如上函数之后,当前线程的cred结构体便会变为init进程的cred的拷贝,也就获得了root权限,此时在用户态起一个shell便能获得root shell。 旧版本内核上所用的提权方法commit_creds(prepare_kernel_cred(NULL))已经不再能被使用,在高版本的内核当中prepare_kernel_cred(NULL)将不再返回一个root...
2025-05-16-CICSN_2017_babydriver学习
PWN kernel入门题。 环境配置题目地址:https://github.com/ctf-wiki/ctf-challenges/blob/master/pwn/kernel/CISCN2017-babydriver/babydriver.tar 解压后,文件目录结构如下: 12345678910111213❯ tree ..├── babydriver│ ├── boot.sh # 启动脚本│ ├── bzImage # 内核│ └── rootfs.cpio # 文件系统├── babydriver.i64├── babydriver.ko # 内核模块├── babydriver.tar├── cred # cred exp├── cred.c├── tty_struct # tty_struct exp└── tty_struct.c 进入babydriver目录,直接运行sudo ./boot.sh即可把内核跑起来 如果启动 boot.sh 失败,需要虚拟机开一下 虚拟化 Intel VT-x/EPT 或...