CVE-2024-40900

Summary

In the Linux kernel, the following vulnerability has been resolved:

cachefiles: remove requests from xarray during flushing requests

Even with CACHEFILES_DEAD set, we can still read the requests, so in the following concurrency the request may be used after it has been freed:

 mount  |   daemon_thread1    |    daemon_thread2

cachefiles_ondemand_init_object cachefiles_ondemand_send_req REQ_A = kzalloc(sizeof(*req) + data_len) wait_for_completion(&REQ_A->done) cachefiles_daemon_read cachefiles_ondemand_daemon_read // close dev fd cachefiles_flush_reqs complete(&REQ_A->done) kfree(REQ_A) xa_lock(&cache->reqs); cachefiles_ondemand_select_req req->msg.opcode != CACHEFILES_OP_READ // req use-after-free !!! xa_unlock(&cache->reqs); xa_destroy(&cache->reqs)

Hence remove requests from cache->reqs when flushing them to avoid accessing freed requests.

Affected Software

VendorProductVersion RangeStatus
LinuxLinuxc8383054506c77b814489c09877b5db83fd4abf2 < 9f13aacdd4ee9a7644b2a3c96d67113cd083c9c7affected
LinuxLinuxc8383054506c77b814489c09877b5db83fd4abf2 < 50d0e55356ba5b84ffb51c42704126124257e598affected
LinuxLinuxc8383054506c77b814489c09877b5db83fd4abf2 < 37e19cf86a520d65de1de9cb330415c332a40d19affected
LinuxLinuxc8383054506c77b814489c09877b5db83fd4abf2 < 0fc75c5940fa634d84e64c93bfc388e1274ed013affected
LinuxLinux5.19affected
LinuxLinux0 < 5.19unaffected
LinuxLinux6.1.95 <= 6.1.*unaffected
LinuxLinux6.6.35 <= 6.6.*unaffected
LinuxLinux6.9.6 <= 6.9.*unaffected
LinuxLinux6.10 <= *unaffected

Weaknesses

ADP Enrichment

CVE Program Container

Additional References

CISA ADP Vulnrichment

  • SSVC:
  • Exploitation: none
    • Automatable: no
    • Technical Impact: partial

References