OpenFHE开源全同态加密库漏洞CVE-2024-56430
OpenFHE是OpenFHE公司一个开源全同态加密库,一个比较成熟的使用C++写的同态加密库,实现了基于RLWE的常见的同态加密方案。
OpenFHE 实现了包括BGV,BFV,CKKS,FHEW/TFHE,具体实现版本是剩余整数系统(RNS)变体,即使用64位整数去表示大整数。
一、基本情况
OpenFHE 支持公钥加密、私钥加密、同态加法、层级同态乘法、自举(bootstrapping)、密钥交换,OpenFHE github可查阅最新进展。
栋科技漏洞库关注到OpenFHE受影响版本中存在一个安全漏洞,该安全漏洞现已被追踪为CVE-2024-56430,该漏洞的CVSS评分为6.5。
二、漏洞分析
CVE-2024-56430是OpenFHE 1.2.3版本存在的安全漏洞,在lib/binfhe-base-scheme.cpp的BinFHEContext::EvalFloor中有空指针解引用。
具体而言,该漏洞源于lib/binfhe-base-scheme.cpp文件的BinFHEContext::EvalFloor中存在一个空指针取消引用,从而导致了漏洞的发生。
漏洞代码位于/binfhe/lib/binfhe-base-scheme.cpp路径中的地L307-L308行,漏洞代码如下:
LWECiphertext BinFHEScheme::EvalFloor(const std::shared_ptr<BinFHECryptoParams>& params, const RingGSWBTKey& EK,
ConstLWECiphertext& ct, const NativeInteger& beta, uint32_t roundbits) const {
四、漏洞复现
1、POC代码
2、代码编译后执行报分段错误:
3、漏洞分析
根据上面的错误信息,可以知道程序正在尝试访问空指针,从而导致分段错误。
PoC代码中传递了一个空指针(nullptr)BinFHEContext::EvalFloor,但BinFHEContext::EvalFloor没有处理空指针类型,导致分段错误。
四、影响范围
OpenFHE <= 1.2.3
五、修复建议
OpenFHE > 1.2.3
六、参考链接