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.
325 lines
10 KiB
C
325 lines
10 KiB
C
/*
|
|
* SKELETONKEY — CVE metadata table
|
|
*
|
|
* AUTO-GENERATED by tools/refresh-cve-metadata.py from
|
|
* docs/CVE_METADATA.json. Do not hand-edit; rerun the script.
|
|
* Sources: CISA KEV catalog + NVD CVE API 2.0.
|
|
*/
|
|
|
|
#include "cve_metadata.h"
|
|
|
|
#include <stddef.h>
|
|
#include <string.h>
|
|
|
|
const struct cve_metadata cve_metadata_table[] = {
|
|
{
|
|
.cve = "CVE-2016-5195",
|
|
.cwe = "CWE-362",
|
|
.attack_technique = "T1068",
|
|
.attack_subtechnique = NULL,
|
|
.in_kev = true,
|
|
.kev_date_added = "2022-03-03",
|
|
},
|
|
{
|
|
.cve = "CVE-2017-7308",
|
|
.cwe = "CWE-681",
|
|
.attack_technique = "T1068",
|
|
.attack_subtechnique = NULL,
|
|
.in_kev = false,
|
|
.kev_date_added = "",
|
|
},
|
|
{
|
|
.cve = "CVE-2018-14634",
|
|
.cwe = "CWE-190",
|
|
.attack_technique = "T1068",
|
|
.attack_subtechnique = NULL,
|
|
.in_kev = true,
|
|
.kev_date_added = "2026-01-26",
|
|
},
|
|
{
|
|
.cve = "CVE-2019-13272",
|
|
.cwe = NULL,
|
|
.attack_technique = "T1068",
|
|
.attack_subtechnique = NULL,
|
|
.in_kev = true,
|
|
.kev_date_added = "2021-12-10",
|
|
},
|
|
{
|
|
.cve = "CVE-2019-14287",
|
|
.cwe = "CWE-755",
|
|
.attack_technique = "T1068",
|
|
.attack_subtechnique = NULL,
|
|
.in_kev = false,
|
|
.kev_date_added = "",
|
|
},
|
|
{
|
|
.cve = "CVE-2020-14386",
|
|
.cwe = "CWE-250",
|
|
.attack_technique = "T1068",
|
|
.attack_subtechnique = NULL,
|
|
.in_kev = false,
|
|
.kev_date_added = "",
|
|
},
|
|
{
|
|
.cve = "CVE-2020-29661",
|
|
.cwe = "CWE-416",
|
|
.attack_technique = "T1068",
|
|
.attack_subtechnique = NULL,
|
|
.in_kev = false,
|
|
.kev_date_added = "",
|
|
},
|
|
{
|
|
.cve = "CVE-2021-22555",
|
|
.cwe = "CWE-787",
|
|
.attack_technique = "T1068",
|
|
.attack_subtechnique = NULL,
|
|
.in_kev = true,
|
|
.kev_date_added = "2025-10-06",
|
|
},
|
|
{
|
|
.cve = "CVE-2021-3156",
|
|
.cwe = "CWE-193",
|
|
.attack_technique = "T1068",
|
|
.attack_subtechnique = NULL,
|
|
.in_kev = true,
|
|
.kev_date_added = "2022-04-06",
|
|
},
|
|
{
|
|
.cve = "CVE-2021-33909",
|
|
.cwe = "CWE-190",
|
|
.attack_technique = "T1068",
|
|
.attack_subtechnique = NULL,
|
|
.in_kev = false,
|
|
.kev_date_added = "",
|
|
},
|
|
{
|
|
.cve = "CVE-2021-3493",
|
|
.cwe = "CWE-270",
|
|
.attack_technique = "T1068",
|
|
.attack_subtechnique = NULL,
|
|
.in_kev = true,
|
|
.kev_date_added = "2022-10-20",
|
|
},
|
|
{
|
|
.cve = "CVE-2021-4034",
|
|
.cwe = "CWE-787",
|
|
.attack_technique = "T1068",
|
|
.attack_subtechnique = NULL,
|
|
.in_kev = true,
|
|
.kev_date_added = "2022-06-27",
|
|
},
|
|
{
|
|
.cve = "CVE-2022-0185",
|
|
.cwe = "CWE-190",
|
|
.attack_technique = "T1068",
|
|
.attack_subtechnique = NULL,
|
|
.in_kev = true,
|
|
.kev_date_added = "2024-08-21",
|
|
},
|
|
{
|
|
.cve = "CVE-2022-0492",
|
|
.cwe = "CWE-287",
|
|
.attack_technique = "T1611",
|
|
.attack_subtechnique = NULL,
|
|
.in_kev = true,
|
|
.kev_date_added = "2026-06-02",
|
|
},
|
|
{
|
|
.cve = "CVE-2022-0847",
|
|
.cwe = "CWE-665",
|
|
.attack_technique = "T1068",
|
|
.attack_subtechnique = NULL,
|
|
.in_kev = true,
|
|
.kev_date_added = "2022-04-25",
|
|
},
|
|
{
|
|
.cve = "CVE-2022-25636",
|
|
.cwe = "CWE-269",
|
|
.attack_technique = "T1068",
|
|
.attack_subtechnique = NULL,
|
|
.in_kev = false,
|
|
.kev_date_added = "",
|
|
},
|
|
{
|
|
.cve = "CVE-2022-2588",
|
|
.cwe = "CWE-416",
|
|
.attack_technique = "T1068",
|
|
.attack_subtechnique = NULL,
|
|
.in_kev = false,
|
|
.kev_date_added = "",
|
|
},
|
|
{
|
|
.cve = "CVE-2023-0179",
|
|
.cwe = "CWE-190",
|
|
.attack_technique = "T1068",
|
|
.attack_subtechnique = NULL,
|
|
.in_kev = false,
|
|
.kev_date_added = "",
|
|
},
|
|
{
|
|
.cve = "CVE-2023-0386",
|
|
.cwe = "CWE-282",
|
|
.attack_technique = "T1068",
|
|
.attack_subtechnique = NULL,
|
|
.in_kev = true,
|
|
.kev_date_added = "2025-06-17",
|
|
},
|
|
{
|
|
.cve = "CVE-2023-0458",
|
|
.cwe = "CWE-476",
|
|
.attack_technique = "T1082",
|
|
.attack_subtechnique = NULL,
|
|
.in_kev = false,
|
|
.kev_date_added = "",
|
|
},
|
|
{
|
|
.cve = "CVE-2023-2008",
|
|
.cwe = "CWE-129",
|
|
.attack_technique = "T1068",
|
|
.attack_subtechnique = NULL,
|
|
.in_kev = false,
|
|
.kev_date_added = "",
|
|
},
|
|
{
|
|
.cve = "CVE-2023-22809",
|
|
.cwe = "CWE-269",
|
|
.attack_technique = "T1068",
|
|
.attack_subtechnique = NULL,
|
|
.in_kev = false,
|
|
.kev_date_added = "",
|
|
},
|
|
{
|
|
.cve = "CVE-2023-32233",
|
|
.cwe = "CWE-416",
|
|
.attack_technique = "T1068",
|
|
.attack_subtechnique = NULL,
|
|
.in_kev = false,
|
|
.kev_date_added = "",
|
|
},
|
|
{
|
|
.cve = "CVE-2023-3269",
|
|
.cwe = "CWE-416",
|
|
.attack_technique = "T1068",
|
|
.attack_subtechnique = NULL,
|
|
.in_kev = false,
|
|
.kev_date_added = "",
|
|
},
|
|
{
|
|
.cve = "CVE-2023-4622",
|
|
.cwe = "CWE-416",
|
|
.attack_technique = "T1068",
|
|
.attack_subtechnique = NULL,
|
|
.in_kev = false,
|
|
.kev_date_added = "",
|
|
},
|
|
{
|
|
.cve = "CVE-2024-1086",
|
|
.cwe = "CWE-416",
|
|
.attack_technique = "T1068",
|
|
.attack_subtechnique = NULL,
|
|
.in_kev = true,
|
|
.kev_date_added = "2024-05-30",
|
|
},
|
|
{
|
|
.cve = "CVE-2024-26581",
|
|
.cwe = NULL,
|
|
.attack_technique = "T1068",
|
|
.attack_subtechnique = NULL,
|
|
.in_kev = false,
|
|
.kev_date_added = "",
|
|
},
|
|
{
|
|
.cve = "CVE-2024-50264",
|
|
.cwe = "CWE-416",
|
|
.attack_technique = "T1068",
|
|
.attack_subtechnique = NULL,
|
|
.in_kev = false,
|
|
.kev_date_added = "",
|
|
},
|
|
{
|
|
.cve = "CVE-2025-32462",
|
|
.cwe = "CWE-863",
|
|
.attack_technique = "T1068",
|
|
.attack_subtechnique = NULL,
|
|
.in_kev = false,
|
|
.kev_date_added = "",
|
|
},
|
|
{
|
|
.cve = "CVE-2025-32463",
|
|
.cwe = "CWE-829",
|
|
.attack_technique = "T1068",
|
|
.attack_subtechnique = NULL,
|
|
.in_kev = true,
|
|
.kev_date_added = "2025-09-29",
|
|
},
|
|
{
|
|
.cve = "CVE-2025-6019",
|
|
.cwe = "CWE-250",
|
|
.attack_technique = "T1068",
|
|
.attack_subtechnique = NULL,
|
|
.in_kev = false,
|
|
.kev_date_added = "",
|
|
},
|
|
{
|
|
.cve = "CVE-2026-31635",
|
|
.cwe = "CWE-130",
|
|
.attack_technique = "T1068",
|
|
.attack_subtechnique = NULL,
|
|
.in_kev = false,
|
|
.kev_date_added = "",
|
|
},
|
|
{
|
|
.cve = "CVE-2026-41651",
|
|
.cwe = "CWE-367",
|
|
.attack_technique = "T1068",
|
|
.attack_subtechnique = NULL,
|
|
.in_kev = false,
|
|
.kev_date_added = "",
|
|
},
|
|
{
|
|
.cve = "CVE-2026-43494",
|
|
.cwe = NULL,
|
|
.attack_technique = "T1068",
|
|
.attack_subtechnique = NULL,
|
|
.in_kev = false,
|
|
.kev_date_added = "",
|
|
},
|
|
{
|
|
.cve = "CVE-2026-46243",
|
|
.cwe = "CWE-20",
|
|
.attack_technique = "T1068",
|
|
.attack_subtechnique = NULL,
|
|
.in_kev = false,
|
|
.kev_date_added = "",
|
|
},
|
|
{
|
|
.cve = "CVE-2026-46300",
|
|
.cwe = "CWE-787",
|
|
.attack_technique = "T1068",
|
|
.attack_subtechnique = NULL,
|
|
.in_kev = false,
|
|
.kev_date_added = "",
|
|
},
|
|
{
|
|
.cve = "CVE-2026-46333",
|
|
.cwe = "CWE-269",
|
|
.attack_technique = "T1068",
|
|
.attack_subtechnique = NULL,
|
|
.in_kev = false,
|
|
.kev_date_added = "",
|
|
},
|
|
};
|
|
|
|
const size_t cve_metadata_table_len =
|
|
sizeof(cve_metadata_table) / sizeof(cve_metadata_table[0]);
|
|
|
|
const struct cve_metadata *cve_metadata_lookup(const char *cve)
|
|
{
|
|
if (!cve) return NULL;
|
|
for (size_t i = 0; i < cve_metadata_table_len; i++) {
|
|
if (strcmp(cve_metadata_table[i].cve, cve) == 0)
|
|
return &cve_metadata_table[i];
|
|
}
|
|
return NULL;
|
|
}
|