CVE-2026-41898rust-openssl是Rust编程语言的OpenSSL绑定库。在版本0.9.24至0.10.78之前,该库存在严重的缓冲区溢出漏洞。由于`SslContextBuilder`中的多个回调函数(如`set_psk_client_callback`)的FFI蹦床代码未对用户闭包返回的`usize`值与传入的缓冲区`&mut [u8]`进行边界检查,直接将返回值传递给OpenSSL。攻击者可利用此缺陷导致缓冲区溢出,进而引发内存破坏、程序崩溃或潜在的任意代码执行。该漏洞在CVSS v3.1评分为9.8,属于严重级别。
该漏洞源于rust-openssl库中外部函数接口(FFI)层的逻辑缺陷。具体而言,`SslContextBuilder::set_psk_client_callback`、`set_psk_server_callback`、`set_cookie_generate_cb`以及`set_stateless_cookie_generate_cb`等函数的FFI蹦床实现存在安全疏忽。当这些回调函数被触发时,用户提供的闭包会返回一个`usize`类型的值,表示写入数据的长度。然而,蹦床代码直接将此值传递给底层的OpenSSL库,并未验证该长度是否超过了OpenSSL预先分配的缓冲区大小(即`&mut [u8]`切片的长度)。这种缺乏边界检查的行为导致了缓冲区溢出。攻击者可以通过构造恶意的PSK(预共享密钥)或Cookie生成的回调返回值,控制写入长度,从而覆盖相邻的内存区域。由于OpenSSL处理敏感的加密操作,这种内存破坏可能被进一步利用来绕过安全机制或执行任意代码。