OpenHarmony浅析
阅读下OpenHarmony的gitee仓库 组件成分系统架构内核层、系统服务层、框架层、应用层 内核层内核层包括内核子系统与驱动子系统,内核子系统包括Linux kernel和lite os,Linux Kernel为标准全量系统;lite os为RTOS系统,分为轻量系统和小型系统,轻量系统适合硬件资源极其有限的硬件设备(ARM Cortex-M),,小型系统则介于标准系统与轻量系统之间(ARM...
Hi3861 OTA功能介绍
StashRecvDataToBuffer函数功能分析函数功能概述StashRecvDataToBuffer函数是OTA升级过程中的核心数据存储函数,负责将接收到的升级数据缓存到内存或写入到存储设备的HAL层。 函数签名1static int StashRecvDataToBuffer(unsigned char *buffer, unsigned int startAddr, unsigned int endAddr) 参数说明 buffer: 要存储的数据缓冲区 startAddr: 数据的起始地址(相对于当前组件的偏移) endAddr: 数据的结束地址(相对于当前组件的偏移) 函数执行流程1. 信息组件处理分支123456if (g_currentDloadComp.isInfoComp) { if (CopyToDloadCompBuffer(buffer, (endAddr - startAddr)) != OHOS_SUCCESS) { printf("StashRecvDataToBuffer...
CVE-2021-37975复现
CVE-2021-37975复现环境配置 v8源码 tag: 9.4.146.16 depot_tools 修改depot_tools python版本为<3.10(python3_bin_reldir.txt) 漏洞背景知识CVE-2021-37975 是产生在V8 GC模块的UAF漏洞,利用堆喷可以在原地址申请一个对象,新对象跟释放对象的类型不一致,可以造成类型混淆,从而实现利用。 WeakMapjs中的WeakMap不支持迭代以及key(),values()和entries()方法,只有以下方法: weakMap.get(key) weakMap.set(key, value) weakMap.delete(key) weakMap.has(key)也就是说,想要获取value,只能通过get方法,传入key获取。当key被delete时,value无法被访问。在GC过程中,当weakMap的key能被访问时,value也能被访问,即key, value都为黑色。当delete后,两者都为白色。 四种数据结构 next_ephemerons: 当(key,...
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检测到空指针引用错误,产生崩溃时的函数调用链如下图:
Write Barrier
V8 Write Barrier 在垃圾回收(Garbage Collection, GC)中,write barrier(写屏障) 是一种机制,用于在程序运行时,监控和记录堆内存中对象引用的变化,以便垃圾回收器能够正确地管理内存。它是一个非常重要的优化技术,尤其是在现代垃圾回收器中,比如 V8 引擎的 GC。 写屏障的作用写屏障的主要作用是在对象引用发生变化时,通知垃圾回收器,从而使垃圾回收器能够高效地完成以下任务: 1. 支持分代垃圾回收(Generational GC)在分代垃圾回收中,堆被分为两代: 新生代(Young Generation):存放生命周期较短的对象。 老年代(Old Generation):存放生命周期较长的对象。 分代垃圾回收的一个关键点是记录老年代对象对新生代对象的引用,因为垃圾回收器在回收新生代时,只扫描新生代对象和这些老年代到新生代的引用,而不扫描整个老年代。 写屏障的作用在于: 当老年代对象的某个字段指向了一个新生代对象时,写屏障会记录这个引用关系,通常通过一个记忆集(Remembered...
Mark Compact Sweep
V8的内存回收机制之Mark-Compact的Sweep功能其定义位于//v8/src/heap/mark-compact.cc的MarkCompactCollector::Sweep函数:完成工作: 按照特定顺序清理v8堆中的各个内存空间(大对象,普通页,新生代对象) 检查是否为MemoryChunk::BLACK_ALLOCATED标志位,代表为存活对象,不是则进行下一步检查 检查是否标记过,是则代表存活,否则代表对象已死亡,需要释放;普通页以及新生代内存释放操作在evacuate阶段进行。showLineNumbers123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869void MarkCompactCollector::Sweep() { DCHECK(!sweeper_->sweeping_in_progress()); ...
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,...
鸿蒙CTF出题
很荣幸能给鸿蒙CTF出题,最近一直在忙别的活,因此出题有不足的地方请见谅。。。(听说决赛上一开始没给固件然后大家都卡在了提固件上,出题人就情不自禁地轻哼起来XD 以下为出题过程的记录总结,可能思路存在跳跃、逻辑不清晰、前后不一致等问题,请各位师傅见谅 1. 出题思路在openharmony的系统内存放了升级包固件的解密程序,即已获得旧版本固件shell(或者说有能力获取shell),需要利用升级程序中的解密程序解包更新后的加密固件。flag则打包存放在更新加密固件中。 2. 环境搭建使用的工具和环境 Windows 11 Ubuntu 20.04 Visual Studio Code DevEco Device Tool 小熊派Hi3861开发板 0x01 搭建开发环境(Windows)下载安装DevEco Device...
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...
.jpg)
.jpg)
.jpg)
.jpg)
.jpg)
.jpg)
.jpg)
.jpg)
.jpg)
.jpg)
.jpg)
.jpg)
.jpg)