binfmt_misc: use exe_file_deny_write_access() for the interpreter clone
3Vexday Risk Score
No sign of exploitation. No public exploitation artifact known so far.
ssvc Trackepss 0.2%
exploitation probability
0.2%top 89% of all CVEs
observed exploitation
nono source reports it
In the Linux kernel, the following vulnerability has been resolved:
binfmt_misc: use exe_file_deny_write_access() for the interpreter clone
For MISC_FMT_OPEN_FILE entries load_misc_binary() clones the
registered interpreter file and denies write access to the clone via
plain deny_write_access(). The clone is installed as
bprm->interpreter and later released by the exec machinery through
exe_file_allow_write_access() which skips the i_writecount increment
for files with FMODE_FSNOTIFY_HSM set.
The deny and allow side can therefore come to different conclusions
when pre-content watches are in play: if a pre-content watch is added
to the interpreter after registration every subsequent exec through
that entry takes a write denial on the clone that is never paired
with a write allowance, driving the interpreter inode's i_writecount
further down with each exec and leaving the interpreter unwritable
even after the entry and all its users are gone.
Take the write denial via exe_file_deny_write_access() so both sides
of the pairing base their decision on the same file mode, and
propagate failure instead of silently ignoring it: an interpreter
that is concurrently open for writing now fails the exec with
ETXTBSY, exactly like an interpreter freshly opened via open_exec()
would.
Affected products
Linux · LinuxReferences
https://git.kernel.org/stable/c/255a758697da87a205e072e0cfc35897b8f743b1https://git.kernel.org/stable/c/2bd860b7e752a51185960143cab9fec7bf32c84ehttps://git.kernel.org/stable/c/2fdf8b07bee5ef99ec77773a6be05fbb8ee5cdb9https://git.kernel.org/stable/c/c65eb018c12179b5e2c7afe1f0956298576fecechttps://git.kernel.org/stable/c/eea4b7c7711b1e425272d23352af157f45f4c3e3https://git.kernel.org/stable/c/f0edbaf487e4653a680a7abb91c1df94cb7886aahttps://git.kernel.org/stable/c/f1e7ea3c8e070f19771cdaef55bbeda1359ad490https://git.kernel.org/stable/c/fa5990ca8fd917003e526036bcc50413edb9722c