Nixpkgs security tracker

Login with GitHub

Suggestion detail

Dismissed
(max. allowed matches exceeded)
created 11 hours ago Activity log
  • Created & dismissed (max. allowed matches exceeded) suggestion
fuse: clear intr_entry in fuse_resend and fuse_remove_pending_req

In the Linux kernel, the following vulnerability has been resolved: fuse: clear intr_entry in fuse_resend and fuse_remove_pending_req When fuse_resend() moves a request from fpq->processing back to fiq->pending, it sets FR_PENDING and clears FR_SENT but does not remove the requests intr_entry from fiq->interrupts. If the request had FR_INTERRUPTED set from a prior signal, intr_entry remains dangling on fiq->interrupts. When the requesting task then receives a fatal signal, fuse_remove_pending_req() sees FR_PENDING=1, removes the request from fiq->pending and frees it via the refcount path, also without cleaning intr_entry. The stale intr_entry causes use-after-free when fuse_read_interrupt() iterates fiq->interrupts: - list_del_init(&req->intr_entry) -> UAF write on freed slab - req->in.h.unique -> UAF read, data leaked to userspace Remove intr_entry from fiq->interrupts in fuse_resend() for interrupted requests before they are placed back on fiq->pending. Add a WARN_ON if the intr_entry is not empty on request destruction.

Affected products

Linux
  • <f8fce75fedf73ac72aa09163deb8f4291fdcaad2
  • =<6.18.*
  • <6.9
  • =<6.12.*
  • <893479015cb6442fd389d3b553ab3036c9541715
  • =<7.1.*
  • =<*
  • <1d8ecd0cd696a5df0b2f72046a4ccee5d2a8ec2c
  • ==6.9
  • <7366e6f4d2b4c7002b13fb01219e83679dad4127