CVE-2026-31719Linux内核中的Kerberos加密模块(krb5enc)存在一个安全漏洞。在处理异步解密请求时,`krb5enc_dispatch_decrypt`函数直接将底层skcipher的完成回调设置为调用者的处理函数,导致跳过了关键的哈希验证步骤。与加密路径正确使用中间回调链不同,解密路径在异步完成时未执行`krb5enc_dispatch_decrypt_hash()`函数,使得完整性校验被完全绕过。攻击者可利用该漏洞在无需认证的情况下,通过网络发送特制数据包触发异步解密,导致系统接受未经完整性验证的数据,从而破坏数据的完整性。
该漏洞源于Linux内核文件`crypto/krb5enc.c`中对异步加密API回调处理的逻辑缺陷。在Kerberos加密封装中,数据完整性依赖于解密后对哈希值的验证。正常流程中,加密操作通过`krb5enc_encrypt_done`中间回调,在异步操作完成后链入哈希计算。然而,解密操作中的`krb5enc_dispatch_decrypt`函数错误地将`req->base.complete`直接指向了调用者的回调。当解密操作异步完成(返回-EINPROGRESS)时,内核直接通知调用者操作完成,而未执行`krb5enc_dispatch_decrypt_hash()`。这意味着攻击者可以篡改密文,接收方在解密后无法检测到数据被修改。此外,该补丁还修复了EBUSY/EINPROGRESS处理不当的问题,确保异步通知能够正确传递。