ada56b0db3
release / build (arm64) (push) Waiting to run
release / build (x86_64) (push) Waiting to run
release / build (x86_64-static / musl) (push) Waiting to run
release / build (arm64-static / musl) (push) Waiting to run
release / release (push) Blocked by required conditions
CIFSwitch is the newest kernel-7-era LPE not already in the corpus: a
~19-year-old logic flaw in fs/smb/client/cifs_spnego.c where the
cifs.spnego request-key type accepts key descriptions created by
userspace (add_key(2)/request_key(2)) without verifying the request came
from the in-kernel CIFS client. The description's authority-bearing
fields (pid/uid/creduid/upcall_target) are trusted by the root cifs.upcall
helper; with user+mount namespace tricks an unprivileged user coerces
cifs.upcall into loading an attacker NSS module as root. Fixed upstream by
3da1fdf4efbc (merged 7.1-rc5); CWE-20; not in CISA KEV.
Takes the corpus to 42 modules / 37 CVEs.
🟡 honest port — full chain not VM-verified. detect() gates on the kernel
version (Debian backports 5.10.257/6.1.174/6.12.90/7.0.10) AND on the
cifs userspace path (cifs.upcall / cifs.spnego request-key rule), so a
vulnerable kernel without cifs-utils is PRECOND_FAIL not a false positive
(override via SKELETONKEY_CIFS_ASSUME_PRESENT=1/0). exploit() fires only
the non-destructive add_key(2) cifs.spnego probe (no upcall, loads
nothing, revoked immediately) and returns EXPLOIT_FAIL without a euid-0
witness — the namespace+NSS root-pop is not bundled until VM-verified.
--mitigate blocklists the cifs module; --cleanup reverts.
Wired everywhere: registry, Makefile, safety rank (86), 6 detect() test
rows (env-driven precondition override), CVE_METADATA.json + cve_metadata.c
+ KEV_CROSSREF.md (sorted insert, CWE-20/T1068/not-KEV), README + CVES.md
+ website counts (42/37) and a yellow module pill, RELEASE_NOTES v0.9.10,
verify-vm target (sweep pending). Credit: Asim Manizada. Version 0.9.10.
58 lines
2.1 KiB
C
58 lines
2.1 KiB
C
/*
|
|
* SKELETONKEY — canonical "register every module family" enumeration.
|
|
*
|
|
* Kept in its own translation unit so registry.c stays standalone:
|
|
* the kernel_range unit-test binary links registry.c (for the basic
|
|
* register / count / find API) without pulling in every module's
|
|
* symbol. The main binary and detect-integration test link this
|
|
* file too and get the full lineup.
|
|
*
|
|
* Adding a new module is one new register_<family>() declaration in
|
|
* registry.h plus one call below — the integration test picks it up
|
|
* via skeletonkey_register_all_modules() in its main().
|
|
*/
|
|
|
|
#include "registry.h"
|
|
|
|
void skeletonkey_register_all_modules(void)
|
|
{
|
|
skeletonkey_register_copy_fail_family();
|
|
skeletonkey_register_dirty_pipe();
|
|
skeletonkey_register_entrybleed();
|
|
skeletonkey_register_pwnkit();
|
|
skeletonkey_register_nf_tables();
|
|
skeletonkey_register_overlayfs();
|
|
skeletonkey_register_cls_route4();
|
|
skeletonkey_register_dirty_cow();
|
|
skeletonkey_register_ptrace_traceme();
|
|
skeletonkey_register_netfilter_xtcompat();
|
|
skeletonkey_register_af_packet();
|
|
skeletonkey_register_fuse_legacy();
|
|
skeletonkey_register_stackrot();
|
|
skeletonkey_register_af_packet2();
|
|
skeletonkey_register_cgroup_release_agent();
|
|
skeletonkey_register_overlayfs_setuid();
|
|
skeletonkey_register_nft_set_uaf();
|
|
skeletonkey_register_af_unix_gc();
|
|
skeletonkey_register_nft_fwd_dup();
|
|
skeletonkey_register_nft_payload();
|
|
skeletonkey_register_sudo_samedit();
|
|
skeletonkey_register_sequoia();
|
|
skeletonkey_register_sudoedit_editor();
|
|
skeletonkey_register_vmwgfx();
|
|
skeletonkey_register_dirtydecrypt();
|
|
skeletonkey_register_fragnesia();
|
|
skeletonkey_register_pack2theroot();
|
|
skeletonkey_register_sudo_chwoot();
|
|
skeletonkey_register_udisks_libblockdev();
|
|
skeletonkey_register_pintheft();
|
|
skeletonkey_register_mutagen_astronomy();
|
|
skeletonkey_register_sudo_runas_neg1();
|
|
skeletonkey_register_tioscpgrp();
|
|
skeletonkey_register_vsock_uaf();
|
|
skeletonkey_register_nft_pipapo();
|
|
skeletonkey_register_ptrace_pidfd();
|
|
skeletonkey_register_sudo_host();
|
|
skeletonkey_register_cifswitch();
|
|
}
|