- 博客(218)
- 资源 (4)
- 收藏
- 关注
翻译 CVE-2021-22555利用过程翻译
原文链接:https://google.github.io/security-research/pocs/linux/cve-2021-22555/writeup.html本文基本属于翻译,原文解释的很清楚,我按自己的理解来记录下。漏洞位于netfilter。原作者利用此漏洞获得了两万美金的奖励。漏洞比较老,存在将近15年之久,从这个漏洞来看,内核其实类似的漏洞应该还有不少。今年貌似爆出了类似的漏洞 https://github.com/Bonfee/CVE-2022-0995 。今天又看到一个:htt
2022-03-30 16:19:54
1457
原创 cove-salus-vm.rs时序逻辑
启动时序:硬件→SBI→Host VM初始化→Guest VM创建→vCPU添加/唤醒;运行时序:vCPU.run()指令循环→陷阱捕获→Host处理陷阱→vCPU继续/退出;中断时序:物理中断→Host接管→中断解析/注入→vCPU唤醒处理→重回休眠。
2025-12-05 11:58:52
545
原创 cove-salus-tellus测试程序时序逻辑
初始化→TVM创建→运行循环→资源回收的全生命周期;关键API调用(cove_host/中断/AIA相关)的执行顺序;Trap处理的分支逻辑(ECALL/缺页/中断)。
2025-12-05 10:30:33
198
原创 IDE Key Management的密钥协商过程
IDE Key Management(IDE_KM)的密钥协商过程是实现的安全流程,核心是在主机(如Root Port)与PCIe设备(如Endpoint)之间建立信任关系,并生成/分发IDE流所需的加密/完整性密钥。以下是。
2025-12-03 14:00:12
888
翻译 TEE Device Interface Security Protocol - TDISP翻译
基于虚拟化的可信执行环境(TEE)用于承载机密计算工作负载,这类工作负载可与宿主环境隔离,即无需信任虚拟机监控器(VMM)。为与传统虚拟机区分,此类 TEE 此后称为可信执行环境虚拟机(TVM)。当设备的某一部分(即“可信执行环境设备接口”,TDI——直接分配的单元,例如使用 SR-IOV 时的虚拟功能(VF))被分配给 TVM 时,需为该组合建立并维护可信执行环境。
2025-12-02 17:25:06
16
原创 PCIE DOE(Data Object Exchange) 软件执行流程
/ 1. PCIe DOE 基础帧结构(PCI-SIG 定义,🔶1-36、🔶1-306)// 协议ID:0x0001=PCI-SIG DOE(固定)// 消息类型:0x00=请求,0x01=响应,0x02=错误// Payload 长度(字节,需4字节对齐)// 保留字段,填充0// 可变长度Payload(实际数据)// 2. SPDM 安全消息结构(嵌套在 DOE Payload 中,🔶1-187、🔶1-304)// SPDM 会话ID(标识安全会话)
2025-12-02 16:23:26
1126
原创 TDISP(TEE Device Interface Security Protocol)软件操作流程
/ 1. SPDM会话相关定义(🔶1-37、🔶1-187)// SPDM会话ID// AES-256-GCM加密密钥(TDISP要求)// 初始向量// 会话是否激活// 2. IDE流配置(🔶1-52、🔶1-625)// IDE流ID// 4个子流的AES密钥(覆盖所有子流类型)// 密钥是否已配置// 3. TDI状态与配置(🔶1-207、🔶1-210)TDI_CONFIG_UNLOCKED = 0, // 初始配置态。
2025-12-02 16:05:15
842
原创 多die系统PCIE同步初始化技术深度研究
在多die系统中,每个die都可能包含多个PCIe控制器,这些控制器需要在相同的时序和参数配置下工作,以确保整个系统的PCIe拓扑结构的一致性。例如,在AMD EPYC架构中,中央IO Die需要通过Infinity Fabric向各个计算Die下发统一的PCIe初始化指令,包括PCIe控制器配置、链路训练参数等,确保所有计算Die的PCIe指令都能适配总线规则。在多die系统中,如何确保所有die的PCIe控制器能够按照统一的时序和标准完成初始化,直接关系到整个系统的性能和稳定性。
2025-11-16 13:55:35
586
原创 SPI 驱动协议 逻辑
SPI(Serial Peripheral Interface)是一种同步线同步步串行通信协议,其数据传输时序由四根线控制。
2025-10-30 10:42:37
921
原创 `OpenProtocol` 函数分析
在中,函数通过// 引导服务结构体中注册 OpenProtocol 函数// ... 其他服务函数OpenProtocol, // OpenProtocol 函数指针CloseProtocol, // 对应关闭协议的函数OpenProtocolInformation, // 查询协议打开信息的函数// ... 其他服务函数EFI_STATUSEFIAPIIN EFI_HANDLE ControllerHandle2, // 必须与 ControllerHandle 相同。
2025-10-14 15:42:32
254
原创 PenglaiZone使用记录2
PerCpuGuidedEventContext[CpuNumber]->HeaderGuid == 00000000-0000-0000-0000-000000000000貌似存在问题。,高 32 位(bit 32-63)不存在,全部视为保留。piMmStandaloneMmCpuDriverEntry 传递EFI_MM_ENTRY_CONTEXT 到MmEntryPoint。的顺序,并给出字段名、宽度、访问属性、复位值(硬件相关,这里给常见值)以及功能一句话说明。设置DriverEntryPoint。
2025-09-28 14:39:26
1004
原创 PenglaiZone使用记录
代码跟踪后发现启动CpuDriverEntryPoint的guid 来自sbi中硬编码的0x20000地址空间,目前没发现这块地址写入逻辑。以下是部分这块地址相关操作逻辑。操作内存空间:原则上讲,某个动作设置MmNsCommBufBase后,SMM调用SBI_RPMI_MM_SRV_COMPLETE触发协议完成操作。这个协议会在注册协议时自动触发MmGuidedEventNotify事件。按照sbi —> spm_mm_init --> mm --> edk2–>DxeMain
2025-09-28 14:38:08
758
原创 软件如何通过jtag 口控制菊花链上不同的设备
通过JTAG接口控制菊花链(Daisy Chain)上的多个设备,需要利用JTAG协议的菊花链特性,通过移位寄存器串联各设备的JTAG接口,并通过软件精确控制数据移位来定位目标设备。
2025-09-25 10:25:59
859
原创 部署docker密钥管理系统
部署一个基于Docker的密钥管理系统(KMS)可以选择开源方案如HashiCorp Vault,它是目前主流的密钥管理工具,支持密钥存储、动态生成、访问控制等功能。
2025-09-18 10:10:28
471
原创 jtag协议处理流程
JTAG协议的数据流本质是“基于状态机的串行移位传输”:先通过IR扫描选择操作类型(指令),再通过DR扫描传输实际数据(地址、命令、结果)。这种机制使JTAG能通过少量信号线(4~5根)实现对芯片内部多个模块的控制,广泛用于调试、测试和配置场景。理解数据流的核心是掌握TAP状态机的切换逻辑和IR/DR的串行移位规则。
2025-09-17 18:12:04
982
原创 python 控制jtag
使用 Python 控制 JTAG 来操作芯片的 fuse(熔丝)通常需要通过(如 J-Link、FT2232H 等),利用适配器的驱动库间接发送 JTAG 指令。以下是一个基于pyftdi。
2025-09-17 17:31:22
298
原创 zehpyr启动流程
如 arm_init()、riscv_init()</small><small>semaphore.c、mutex.c 等</small><small>各驱动的 init() 函数</small><small>reset.S 开头
2025-09-17 17:14:32
1107
原创 qemu Zephyr开启命令行
假设应用目录为 my_shell_app west build -b qemu_riscv64 my_shell_app自定义命令执行成功!参数:test。
2025-09-17 15:54:44
326
原创 penglai-TVM代码解析sbi_tvm
TVM是RISC-V架构中用于内存保护的特性,通过设置MSTATUS寄存器的TVM位,使特权模式下的内存访问(如页表修改)触发陷阱(Trap),由监控器(SBI层)统一管控。TVM特性的初始化与使能跨hart(硬件线程)的TVM状态同步通过IPI(处理器间中断)通知其他hart更新TVM配置初始化:系统启动时通过分配资源,注册IPI事件。触发同步:某hart调用,本地启用TVM并通过IPI通知其他hart。远程处理:目标hart收到IPI后,复制配置,启用TVM并等待同步完成。确认同步。
2025-09-12 14:26:44
636
翻译 OpenSBI 1.3 官方文档《Domain Support》中文翻译
域(Domain)是 OpenSBI 提供的。建议开发者在具体硬件平台上进行验证测试。
2025-08-14 10:27:09
79
原创 qemu vcpu的创建过程
这段代码的主要功能是根据 QEMU 的配置(MTTCG 或 RR 模式,以及是否启用指令计数)初始化 TCG 加速器的操作函数。这些操作函数定义了 vCPU 线程的启动、唤醒、中断处理以及调试支持等行为。
2025-07-10 16:30:42
1544
原创 qemu 关于numa的核心管理
通过以上对应关系,可以清晰看到QEMU的NUMA模拟算法如何从解析用户输入开始,经过验证、补全,最终构建出符合要求的NUMA拓扑,实现对真实NUMA架构的虚拟化模拟。
2025-07-09 10:36:56
534
原创 linux内核对于NUMA的管理
等机制,尽可能减少跨节点内存访问。调优的关键在于:根据应用特性(内存密集型/CPU密集型)选择合适的内存分配策略和进程亲和性设置,避免“远程内存陷阱”。在Linux内核中,NUMA(Non-Uniform Memory Access)调度算法的核心目标是。以下是与NUMA调度相关的重要内核参数(可通过。Linux内核提供多种内存分配策略,通过。Linux内核的NUMA调度算法通过。
2025-07-09 10:03:06
968
原创 在RISC-V开发板上更换SBI
在RISC-V开发板上更换SBI(Supervisor Binary Interface,超级visor二进制接口)是一个常见需求,特别是当你需要升级固件功能、修复安全漏洞或适配特定硬件时。SBI是RISC-V架构中M模式(机器模式)固件与S模式(超级visor模式)内核之间的接口规范,类似x86架构的BIOS/UEFI。选择合适的方法和版本,确保SBI与硬件及上层软件兼容,是顺利完成更换的关键。运行内核或测试程序,验证SBI提供的服务(如时钟、中断处理)是否正常。根据开发板型号选择合适的SBI实现。
2025-07-07 10:32:57
910
原创 penglaispmp--enclave_mm关于region管理的逻辑
基于PMP的内存隔离:通过PMP寄存器将enclave内存与其他区域隔离,初始权限为“无访问”,仅在需要时(如内核初始化enclave)临时开放权限。伙伴系统的内存管理:采用伙伴系统实现高效的内存分配与释放,支持块的拆分与合并,减少碎片。线程安全:通过自旋锁()保证多线程环境下对pmp_bitmap和伙伴系统链表的操作原子性。
2025-07-04 10:49:08
903
原创 sbi-firmware代码解析
基于opensbi-1.2 分析这段代码是一个 RISC-V 架构下的固件启动程序,用于在系统启动时执行初始化操作、重定位代码、设置内存保护、处理中断和异常,并最终将控制权传递给下一个启动阶段。以下是逐步解释:这个启动程序确保在 RISC-V 系统启动时正确配置寄存器、内存和设备树,并为后续的启动过程准备好参数和模式。这段代码是一个 RISC-V 架构下的固件启动程序的一部分,它处理动态信息的验证和保存,以确保启动过程的正确性和安全性。以下是逐步解释:处理错误的动态信息:如果动态信息验证失败,进入一个无
2025-07-03 14:03:08
863
原创 penglai pmp 内存权限配置过程
这段代码是一个平台初始化函数 ,用于配置 RISC-V 架构下的物理内存保护(PMP)寄存器。PMP 寄存器用于控制对物理内存的访问权限,确保只有授权的访问才能进行。下面是逐步解释:定义PMP配置结构体:定义了一个 结构体变量,用于存储 PMP 配置信息,包括物理地址、大小、模式和权限。清除 PMP1:这行代码用于清除 PMP 寄存器 1 的配置。PMP1 被保留用于允许内核在飞地(enclave)内存中配置页表。 函数用于清除指定的 PMP 寄存器并同步状态。打印初始化信息:打印一条信
2025-07-03 11:38:09
643
原创 penglai sbi 内存管理单元 walk_enclave_pt
这段代码实现了一个函数 ,用于在一个内存管理单元(MMU)的页表结构中查找特定虚拟地址对应的页表项。这个函数在 RISC-V 架构下工作,用于遍历多级页表以找到对应虚拟地址的页表项。以下是代码的详细解释:1.1. 函数参数:1.2. 变量定义:1.3. 遍历页表层级:1.4. 返回叶子页表项:这个函数是内存管理中的一个关键部分,用于在多级页表中查找特定虚拟地址对应的页表项,以便进行内存映射或其他内存管理操作。该函数用于在多级页表结构中确定虚拟地址在某一特定层级的索引位置。它根据虚拟地址的位移和页表层级来计
2025-07-03 10:58:34
1010
原创 牛顿迭代公式
梯度下降通过负梯度方向的迭代更新,将复杂的高维函数优化问题转化为逐步逼近最小值的可计算过程。其有效性依赖于梯度本身的数学性质(方向导数极值性)与算法参数(如学习率)的合理选择,成为现代优化理论与工程实践的基础工具。
2025-05-14 17:42:32
215
原创 损失函数概念
衡量模型的预测误差。指导模型优化。反映任务目标。提供训练反馈。帮助模型泛化。选择合适的损失函数对于模型的成功至关重要,因为它直接决定了模型的学习目标和优化方向。
2025-04-27 10:20:03
539
原创 样本处理过程
每个样本包含 3 个时间步的数据,例如[1, 2, 3]。x_train是每个样本的前 2 个时间步,即[1, 2]。y_train是每个样本的第 3 个时间步,即[3]。x_train是从前 6 个样本中提取的前 2 个时间步:[[1, 2],[2, 3],[3, 4],[4, 5],[5, 6],[6, 7]]y_train是从前 6 个样本中提取的第 3 个时间步:[3, 4, 5, 6, 7, 8]每个样本包含 3 个时间步的数据,例如[7, 8, 9]。x_test。
2025-04-25 14:48:22
475
原创 数据归一化
数据归一化(Normalization)是一种常见的数据预处理技术,目的是将数据缩放到一个特定的范围内,通常是 [0, 1] 或 [-1, 1]。归一化的主要目的是消除不同特征之间的量纲差异,使得模型在训练时能够更好地收敛,尤其是对于基于距离的算法(如KNN、SVM)或梯度下降优化的算法(如神经网络)。通过这种方式,所有数据都被映射到了 [-1, 1] 的范围内,从而实现了归一化。列的数据缩放到 [-1, 1] 的范围内。
2025-04-25 10:49:31
378
原创 UEFI镜像结构布局
引导扇区:负责启动加载过程。UEFI 固件映像:包含固件的主体代码和数据。配置数据库:存储固件的配置信息。签名和验证数据:确保固件的完整性和合法性。备用区域:提供固件的备份副本,以防主副本损坏。详细描述结构图描述了一个典型的 UEFI 镜像在物理存储设备(如 SPI 闪存或硬盘)中的分层布局。1. 引导扇区(Boot Sector)作用:兼容传统 BIOS 启动模式,或作为 UEFI 启动的补充入口(例如从 MBR 磁盘启动)。内容。
2025-04-03 18:16:25
1343
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人
RSS订阅