IPBUF安全漏洞报告
English
CVE-2026-33662 CVSS 7.5 高危

CVE-2026-33662 OP-TEE整数下溢致拒绝服务漏洞

披露日期: 2026-04-24

漏洞信息

漏洞编号
CVE-2026-33662
漏洞类型
整数下溢, 拒绝服务
CVSS评分
7.5 高危
攻击向量
网络 (AV:N)
认证要求
无需认证 (PR:N)
用户交互
无需交互 (UI:N)
影响产品
OP-TEE

相关标签

OP-TEE整数下溢拒绝服务DoSRSATEECVE-2026-33662

漏洞概述

OP-TEE在3.8.0至4.10版本的RSA加速功能中存在整数下溢漏洞。攻击者通过选择足够小的模数导致PS大小计算溢出,触发memset越界写入,进而导致系统崩溃,造成拒绝服务。

技术细节

该漏洞位于OP-TEE的`core/drivers/crypto/crypto_api/acipher/rsassa.c`文件中的`emsa_pkcs1_v1_5_encode()`函数。在计算PKCS#1 v1.5编码所需的填充字符串(PS)大小时,系统执行模数大小减去摘要及其他字段大小的操作。若攻击者精心构造并选择一个足够小的RSA模数,该减法操作将发生整数下溢,导致计算结果变为一个极大的无符号整数值。随后,代码基于该错误值调用`memset()`尝试填充0xFF字节,这会引发严重的内存越界写入,覆盖关键内存区域直至OP-TEE崩溃,从而造成拒绝服务。此漏洞仅影响注册了RSA加速功能的平台。

攻击链分析

STEP 1
步骤1:侦察与访问
攻击者需要能够向受影响设备的OP-TEE环境提交加密请求,特别是涉及RSA加速的操作。
STEP 2
步骤2:构造恶意参数
攻击者生成或选择一个异常小的RSA模数,使其小于计算填充所需的摘要大小和固定开销之和。
STEP 3
步骤3:触发整数下溢
将包含小模数的请求发送给OP-TEE,触发`emsa_pkcs1_v1_5_encode`函数中的减法运算,导致PS大小变量发生整数下溢,变为极大值。
STEP 4
步骤4:拒绝服务
程序使用下溢后的值调用`memset`,导致大量内存被错误覆盖,引发OP-TEE崩溃或异常终止。

PoC / 利用代码

⚠️ 仅供安全研究
以下代码仅用于安全研究和授权测试,未经授权使用属于违法行为。
PoC
/* * PoC Concept for CVE-2026-33662 * This demonstrates the logic error leading to integer underflow. */ #include <stdio.h> #include <string.h> #include <stdint.h> // Simulating the vulnerable function logic void vulnerable_encode(size_t modulus_size, size_t digest_size) { printf("Modulus size: %zu, Digest size: %zu\n", modulus_size, digest_size); // The vulnerable calculation: (modulus_size - 3 - digest_size - 8) // If modulus_size is small enough, this underflows size_t ps_size = modulus_size - 11 - digest_size; printf("Calculated PS size: %zu\n", ps_size); if (ps_size > 1024) { printf("[!] Integer underflow detected! PS size is huge.\n"); printf("[!] Calling memset with this size will cause a crash/DoS.\n"); // In the real vulnerability, this memset crashes the TEE // memset(buffer, 0xFF, ps_size); } else { printf("[-] PS size is normal.\n"); } } int main() { // Normal scenario printf("--- Normal Case ---\n"); vulnerable_encode(2048, 32); // Exploit scenario: Using a very small modulus // This causes (64 - 11 - 32) to underflow if types are not handled, // or simply demonstrates the boundary condition. // In the actual bug, the subtraction results in a massive number. printf("\n--- Exploit Case (Small Modulus) ---\n"); // Assuming a context where modulus size is smaller than required overhead + digest vulnerable_encode(40, 32); return 0; }

影响范围

OP-TEE 3.8.0
OP-TEE 3.9.0
OP-TEE 3.10.0
OP-TEE 3.11.0
OP-TEE 3.12.0
OP-TEE 3.13.0
OP-TEE 3.14.0
OP-TEE 3.15.0
OP-TEE 3.16.0
OP-TEE 3.17.0
OP-TEE 3.18.0
OP-TEE 3.19.0
OP-TEE 3.20.0
OP-TEE 3.21.0
OP-TEE 3.22.0
OP-TEE 4.0.0
OP-TEE 4.1.0
OP-TEE 4.2.0
OP-TEE 4.3.0
OP-TEE 4.4.0
OP-TEE 4.5.0
OP-TEE 4.6.0
OP-TEE 4.7.0
OP-TEE 4.8.0
OP-TEE 4.9.0
OP-TEE 4.10.0

防御指南

临时缓解措施
如果无法立即升级,建议通过配置禁用OP-TEE中的RSA加密加速驱动,以防止漏洞被触发,虽然这可能会降低加密性能,但能保证系统可用性。

参考链接

快速导航: 前沿安全 最新收录域名列表 最新威胁情报列表 最新网站排名列表 最新工具资源列表 最新CVE漏洞列表