Skip to content
KitploitKITPLOIT
ToolsBlog
Einreichen
ToolsBlog
Einreichen

Hacking-, PenTest- und Cybersicherheits-Tools für Ihr Sicherheitsarsenal!

Kitploit ist ein Verzeichnis von Hacking-, Cybersicherheits- und Pentesting-Tools. Entdecken Sie die neuesten Projekt-Updates, um Schwachstellen zu finden, Systeme zu analysieren, Tests zu automatisieren und Ihre Sicherheit zu stärken.

··Feeds·Kontakt·Datenschutz·© 2026 Kitploit

Tool-Verzeichnis

Kategorien

Alle Kategorien anzeigen
Loading categories
Detections-CVE-2026-31431 — Erkennungsregeln, YARA-Signaturen, auditd/Wazuh-Regeln und MISP-Event-Vorlagen für die Linux-Kernel-LPE-Schwachstelle CVE-2026-31431 (Copy Fail). Enthält IoCs, Minderungsmaßnahmen und Exploit-Analyse. | Kitploit
Tools/GitHubGitHub/insomnisec/detections-cve-2026-31431
Management von Indicators of Compromise (IOC)Privilege EscalationSchwachstellenanalyseExploitationForensikBedrohungsanalyseEinbruchserkennungLernen & BildungIncident Response

Beliebteste

Alle anzeigen →

Entdecken Sie die meistgenutzten Tools unserer Community.

Alle Tools erkunden

Durchsuchen Sie unsere Tool-Sammlung

Alle Tools anzeigen →
GitHubinsomnisec/detections-cve-2026-31431

Detections-CVE-2026-31431

Erkennungsregeln, YARA-Signaturen, auditd/Wazuh-Regeln und MISP-Event-Vorlagen für die Linux-Kernel-LPE-Schwachstelle CVE-2026-31431 (Copy Fail). Enthält IoCs, Minderungsmaßnahmen und Exploit-Analyse.

Repository anzeigen
25vor 3 MonatenNoch nicht geprüft
Teilen

UMZUG NACH: https://github.com/insomnisec/public_cve_detections

FÜR BESSERES LANGZEITMANAGEMENT VON ERKENNUNGSVERÖFFENTLICHUNGEN

DIESES REPO WIRD IM JUNI 2026 ENTFERNT

BITTE NUTZEN SIE IN ZUKUNFT DAS ANDERE REPO

CVE-2026-31431 "Copy Fail" – Erkennungs- und Reaktionspaket

Veröffentlicht: 2026-04-30
CVSSv3: 7.8 (Hoch)
Typ: Lokale Privilegienerweiterung (LPE)
Subsystem: Linux-Kernel algif_aead / authencesn Kryptografie-Template
Betroffen: Linux-Kernel 4.14 – 6.18.21 (praktisch alle Distributionen seit 2017)
Referenzen:

  • Xint/Theori Bericht
  • Offizieller PoC
  • oss-security Offenlegung
  • copy.fail

Inhaltsverzeichnis

  1. Zusammenfassung der Schwachstelle
  2. Wie der Exploit funktioniert
  3. Erkennungsgrenzen
  4. Sofortmaßnahmen
  5. YARA-Regel
  6. Auditd-Regeln
  7. Wazuh-Regeln
  8. MISP-Ereignisvorlage
  9. Patchen & Behebung
  10. Referenz der wichtigsten Indikatoren (IoCs)

Zusammenfassung der Schwachstelle

CVE-2026-31431 ist ein Logikfehler, der im Kernel 4.14 (2017) am Schnittpunkt von drei unabhängigen Änderungen eingeführt wurde:

  1. Die authencesn-Vorlage (2011 für IPsec-ESN-Unterstützung hinzugefügt) schreibt 4 Bytes an temporären Daten über die Grenze ihres Ausgabepuffers hinaus.
  2. AF_ALG erhielt 2015 AEAD-Unterstützung, wodurch Benutzerdaten über splice() aus seitenweise zwischengespeicherten Dateien übermittelt werden können.
  3. Im Jahr 2017 wurde algif_aead.c optimiert, um direkt im Speicher zu arbeiten (req->src == req->dst), wodurch lebendige Seiten des Page-Cache in eine beschreibbare Streuliste (Scatterlist) eingefügt wurden.

Das Ergebnis: Ein nicht privilegierter Benutzer kann genau 4 vom Angreifer kontrollierte Bytes in die Page-Cache-Kopie des Kernels jeder lesbaren Datei schreiben – einschließlich setuid-Binärdateien und /etc/passwd – ohne die Datei auf der Festplatte zu berühren. Der funktionierende PoC ist ein 732-Byte-Python-Skript. Keine Race-Condition. Keine distributionsspezifischen Offsets. Zuverlässig unter Ubuntu, RHEL, Amazon Linux und SUSE.

Wie der Exploit funktioniert```

Attacker opens AF_ALG socket (family 38, type 5) └─ Binds to "authencesn(hmac(sha256),cbc(aes))" └─ Sets SOL_ALG (279) options including key and authsize └─ Accepts a connection socket

Attacker opens target file (e.g., /etc/passwd) read-only └─ Uses splice() to feed page-cache pages into the AEAD socket's RX buffer └─ Sends crafted AAD via sendmsg() — bytes 4–7 of AAD = attacker-controlled write value

authencesn performs in-place decryption: └─ scatterwalk_map_and_copy writes seqno_lo into the chained page-cache page └─ recvmsg() returns an error (HMAC fails — expected), but the write already happened

Page-cache now contains attacker-modified copy of the file └─ Kernel executes from page-cache, not disk └─ On-disk file is UNCHANGED — file integrity tools see nothing

root@kitploit:~
Der PoC zielt auf `/etc/passwd`: Er findet den Offset des UID-Feldes des laufenden Benutzers und überschreibt es mit `0000`, dann ruft er `su` auf, um eine Root-Shell zu erhalten.

---

## Erkennungseinschränkungen

> **Lesen Sie diesen Abschnitt, bevor Sie unten Regeln bereitstellen.**

Dieser Exploit hat zwei Eigenschaften, die die Erkennungsabdeckung erheblich einschränken:

**1. Der Schreibvorgang erfolgt in den Page Cache, nicht ins Dateisystem.**
Jedes Erkennungswerkzeug, das Dateisystemereignisse überwacht — `inotify`, `fanotify`, AIDE, Tripwire, auditd-Pfadüberwachungen — wird die Änderung **nicht** beobachten. Die Datei auf der Festplatte wird nie beschrieben. Dies bedeutet, dass die Flags `-p w` (write) in auditd-Pfadüberwachungen für `/usr/bin/su` oder `/etc/passwd` den eigentlichen Exploit-Schreibvorgang nicht erfassen.

**2. Der Mechanismus verwendet legitime Kernel-Schnittstellen.**
`AF_ALG`-Sockets, `splice()` und `authencesn` haben alle legitime Verwendungen (IPsec, Kernel-Selbsttests, sendfile-ähnliche Ein-/Ausgabe). Die Erkennung muss sich auf die *Kombination* dieser Grundbausteine konzentrieren, nicht auf einen einzelnen isoliert, und es sollten Fehlalarme auf Systemen erwartet werden, die IPsec ausführen oder Kernel-Krypto-Tests durchführen.

**Was die Erkennung ERFASSEN KANN:**
- Der `socket(AF_ALG, SOCK_SEQPACKET, 0)`-Systemaufruf
- Der `splice()`-Systemaufruf korreliert mit dem obigen, insbesondere in der Nähe von setuid-Binärzugriffen
- Das PoC-Skript selbst (über YARA)
- Der spezifische Algorithmus-String `authencesn(hmac(sha256),cbc(aes))` im Prozessspeicher oder in Skriptdateien

**Was die Erkennung NICHT ERFASSEN KANN:**
- Den eigentlichen Page-Cache-Schreibvorgang (im Speicher, kein Dateisystemereignis)
- Die Nutzung des modifizierten Page-Cache-Eintrags nach dem Exploit (sieht aus wie ein normaler `su`- oder `passwd`-Aufruf)
- Varianten, die Python oder den spezifischen Algorithmus-String vermeiden

## Sofortige Gegenmaßnahmen

Bevor Sie Erkennungsregeln bereitstellen, wenden Sie diese Gegenmaßnahme auf jedem ungepatchten Host an:```bash
# Disable algif_aead kernel module — blocks the exploit primitive entirely
echo "install algif_aead /bin/false" | sudo tee /etc/modprobe.d/disable-algif-aead.conf
sudo rmmod algif_aead 2>/dev/null || true

Stellen Sie sicher, dass die Abschwächung aktiv ist mithilfe des offiziellen Detektors:```bash

Exit 0 = not vulnerable / mitigated

Exit 2 = VULNERABLE

python3 test_cve_2026_31431.py

root@kitploit:~
> **Hinweis:** Der Befehl `rmmod` wird fehlschlagen, wenn das Modul nicht geladen ist; das ist akzeptabel. Die `modprobe.d`-Konfiguration verhindert zukünftige Ladungen. Diese Maßnahme hat keine Auswirkungen auf Standard-TLS-, SSH- oder Dateisystemverschlüsselungs-Workloads – sie betrifft nur IPsec mit erweiterten Sequenznummern unter Verwendung der `authencesn`-Vorlage, was außerhalb dedizierter VPN-Gateways ungewöhnlich ist.

---

## YARA-Regel

Speichern als `cve_2026_31431.yar`

> **Scan-Bereich:** Diese Regel ist dazu ausgelegt, Python-Skriptdateien auf der Festplatte oder aus Speicherabbildern zu scannen. Sie wird das bekannte PoC und enge Varianten erkennen. Sie wird die Exploit-Aktivität auf Syscall-Ebene NICHT erkennen – verwenden Sie dafür die auditd/Wazuh-Regeln.```yara
rule CVE_2026_31431_CopyFail_PoC_HighConfidence {
    meta:
        description     = "High-confidence match: CVE-2026-31431 Copy Fail PoC or close variant"
        author          = "Detection Engineering"
        reference       = "https://xint.io/blog/copy-fail-linux-distributions"
        cve             = "CVE-2026-31431"
        date            = "2026-04-30"
        severity        = "High"
        cvss            = "7.8"

    strings:
        // Algorithm string unique to this exploit path — very high fidelity
        $alg_full      = "authencesn(hmac(sha256),cbc(aes))" ascii

        // Specific socket call signature from PoC: AF_ALG=38, SOCK_SEQPACKET=5
        $socket_call   = "socket(38,5,0)" ascii

        // SOL_ALG socket option (decimal 279)
        $solalg        = "setsockopt(279" ascii

        // Hex key/iv payload written via setsockopt in PoC
        $key_payload   = "0800010000000010" ascii

        // splice() usage in context of AEAD operations
        $splice        = "splice(" ascii

        // Target indicators from PoC (page-cache corruption targets)
        $target_passwd = "/etc/passwd" ascii
        $target_su     = "/usr/bin/su" ascii

        // AF_ALG aead bind strings
        $aead_bind     = "\"aead\"" ascii

    condition:
        // High-confidence: unique algorithm string alone is sufficient
        $alg_full
        or
        // Medium-confidence: socket primitive + option number
        ($socket_call and $solalg)
        or
        // Medium-confidence: splice into AEAD socket targeting a setuid path
        ($aead_bind and $splice and ($target_passwd or $target_su))
        or
        // PoC hex payload present alongside splice
        ($key_payload and $splice)
}

rule CVE_2026_31431_CopyFail_Mechanism {
    meta:
        description     = "Behavioral: AF_ALG AEAD + splice combination suggestive of CVE-2026-31431 technique"
        author          = "Detection Engineering"
        reference       = "https://xint.io/blog/copy-fail-linux-distributions"
        cve             = "CVE-2026-31431"
        date            = "2026-04-30"
        severity        = "Medium"
        note            = "Higher false positive rate than HighConfidence rule — review matches in context"

    strings:
        $authencesn    = "authencesn" ascii nocase
        $af_alg_num    = "socket(38" ascii
        $sol_alg_num   = "279" ascii
        $splice        = "splice(" ascii

    condition:
        ($authencesn and $splice)
        or
        ($af_alg_num and $sol_alg_num and $splice)
}

Auditd-Regeln

Speichern unter /etc/audit/rules.d/cve-2026-31431.rules

Neu laden mit:```bash sudo augenrules --load

or on older systems:

sudo auditctl -R /etc/audit/rules.d/cve-2026-31431.rules

root@kitploit:~
No input text provided. Returning empty output.```bash
## ============================================================
## CVE-2026-31431 "Copy Fail" — Auditd Detection Rules
## ============================================================
## These rules capture the MECHANISM of the exploit (socket +
## splice syscalls) and correlated /etc/passwd access patterns.
##
## IMPORTANT: These rules will NOT detect the page-cache write
## itself — it is an in-memory operation with no filesystem
## event. File path watches (-w) on setuid binaries or
## /etc/passwd will not fire on the exploit write.
##
## Correlate rule hits across audit.key values to build signal:
## A hit on afalg_socket followed closely by a hit on
## splice_syscall from the same process is a strong indicator.
## ============================================================

## --- Core exploit primitive: AF_ALG socket creation ---
## Monitors socket(2) syscall where a0 = 0x26 (38 decimal = AF_ALG)
## This is the first step of the exploit chain.
-a always,exit -F arch=b64 -S socket -F a0=0x26 -k cve_2026_31431_afalg_socket
-a always,exit -F arch=b32 -S socket -F a0=0x26 -k cve_2026_31431_afalg_socket

## --- splice() syscall monitoring ---
## splice() is used to feed page-cache pages into the AEAD socket.
## NOTE: splice() is commonly used for sendfile-like operations.
## Correlate with cve_2026_31431_afalg_socket hits from the same PID.
-a always,exit -F arch=b64 -S splice -k cve_2026_31431_splice
-a always,exit -F arch=b32 -S splice -k cve_2026_31431_splice

## --- /etc/passwd access monitoring ---
## The PoC reads /etc/passwd to locate the UID field offset.
## Read access (-p r) is retained here because the intent is
## to correlate this read with the AF_ALG socket key above,
## not to use the watch as a standalone alert.
-w /etc/passwd -p rwa -k cve_2026_31431_passwd_access

## --- setuid binary execution monitoring ---
## Detects execution of su after page-cache modification.
## The page-cache write makes su execute as root; this catches
## the exploitation outcome, not the write itself.
-w /usr/bin/su   -p xa -k cve_2026_31431_su_exec
-w /usr/bin/sudo -p xa -k cve_2026_31431_sudo_exec

## --- algif_aead module state monitoring ---
## The exploit requires algif_aead to be loaded.
## Monitoring modprobe helps detect attempts to load the module
## on systems where it was previously disabled as a mitigation,
## and confirms whether the mitigation is being bypassed.
-a always,exit -F arch=b64 -S finit_module -S init_module -k cve_2026_31431_module_load
-w /etc/modprobe.d -p wa -k cve_2026_31431_modprobe_conf

Abfragen von Korrelationen

Nach der Bereitstellung der Regeln verwenden Sie ausearch, um Treffer über Schlüssel innerhalb eines Zeitfensters zu korrelieren:```bash

Find all CVE-2026-31431 related events in the last hour

sudo ausearch -k cve_2026_31431_afalg_socket -k cve_2026_31431_splice
--start recent -i | aureport --interpret

Check if a specific PID hit both AF_ALG and splice

sudo ausearch -k cve_2026_31431_afalg_socket --start today -i
| grep 'pid=' | awk -F'pid=' '{print $2}' | awk '{print $1}' | sort -u
| while read pid; do sudo ausearch -k cve_2026_31431_splice --start today -i | grep "pid=$pid"
&& echo "[!] PID $pid hit both AF_ALG and splice — investigate" done

root@kitploit:~
---

## Wazuh-Regeln

Speichern Sie als lokale Regeln-Datei (typischerweise `/var/ossec/etc/rules/local_rules.xml`).

> **Voraussetzungen:** Diese Regeln hängen davon ab, dass auditd mit den obigen Regeln konfiguriert ist und der Wazuh auditd-Decoder aktiv ist. Sie stimmen mit dem Feld `audit.key` überein, das von auditd befüllt wird, was die korrekte und zuverlässige Methode zur Verbindung der beiden Systeme ist. Die Regeln verwenden `<if_group>auditd</if_group>` anstelle eines spezifischen `<if_sid>`, um über Wazuh-Versionen hinweg kompatibel zu bleiben.```xml
<!-- ============================================================
     CVE-2026-31431 "Copy Fail" — Wazuh Correlation Rules
     Requires: auditd rules from cve-2026-31431.rules deployed
     ============================================================ -->

<!-- Level 10: AF_ALG socket creation detected -->
<rule id="112001" level="10">
    <if_group>auditd</if_group>
    <field name="audit.key">cve_2026_31431_afalg_socket</field>
    <description>CVE-2026-31431 Copy Fail: AF_ALG socket (family 38) created by unprivileged process</description>
    <group>cve,privilege_escalation,linux,kernel,crypto,</group>
</rule>

<!-- Level 10: splice() syscall detected -->
<rule id="112002" level="10">
    <if_group>auditd</if_group>
    <field name="audit.key">cve_2026_31431_splice</field>
    <description>CVE-2026-31431 Copy Fail: splice() syscall detected — monitor for correlation with AF_ALG socket rule</description>
    <group>cve,privilege_escalation,linux,kernel,</group>
</rule>

<!-- Level 14 CRITICAL: AF_ALG socket followed by splice() from the same source -->
<!-- This chaining is the core exploit mechanism                                 -->
<rule id="112003" level="14">
    <if_matched_sid>112001</if_matched_sid>
    <if_group>auditd</if_group>
    <field name="audit.key">cve_2026_31431_splice</field>
    <same_field>audit.pid</same_field>
    <description>CVE-2026-31431 Copy Fail CRITICAL: AF_ALG socket creation followed by splice() from same process — active exploitation likely</description>
    <group>cve,privilege_escalation,linux,kernel,crypto,high_confidence,</group>
</rule>

<!-- Level 12: /etc/passwd access correlated with AF_ALG activity -->
<rule id="112004" level="12">
    <if_matched_sid>112001</if_matched_sid>
    <if_group>auditd</if_group>
    <field name="audit.key">cve_2026_31431_passwd_access</field>
    <description>CVE-2026-31431 Copy Fail: /etc/passwd access following AF_ALG socket creation — consistent with PoC target selection</description>
    <group>cve,privilege_escalation,linux,kernel,</group>
</rule>

<!-- Level 13: su or sudo executed after AF_ALG socket was created -->
<!-- This may represent execution of the modified page-cache entry  -->
<rule id="112005" level="13">
    <if_matched_sid>112001</if_matched_sid>
    <if_group>auditd</if_group>
    <field name="audit.key">cve_2026_31431_su_exec|cve_2026_31431_sudo_exec</field>
    <description>CVE-2026-31431 Copy Fail: su/sudo execution following AF_ALG socket creation — possible post-exploitation</description>
    <group>cve,privilege_escalation,linux,kernel,</group>
</rule>

<!-- Level 12: Attempt to load algif_aead after it was disabled as a mitigation -->
<rule id="112006" level="12">
    <if_group>auditd</if_group>
    <field name="audit.key">cve_2026_31431_module_load</field>
    <field name="audit.exe" type="pcre2">^.*(python|python3|insmod|modprobe).*$</field>
    <description>CVE-2026-31431 Copy Fail: Kernel module load attempt — verify algif_aead mitigation has not been bypassed</description>
    <group>cve,privilege_escalation,linux,kernel,</group>
</rule>

<!-- Level 13: modprobe.d config modified — possible mitigation removal -->
<rule id="112007" level="13">
    <if_group>auditd</if_group>
    <field name="audit.key">cve_2026_31431_modprobe_conf</field>
    <description>CVE-2026-31431 Copy Fail: /etc/modprobe.d modified — verify algif_aead disable config has not been removed</description>
    <group>cve,privilege_escalation,linux,kernel,</group>
</rule>

MISP-Ereignisvorlage

Speichern Sie als misp_cve_2026_31431.json und importieren Sie über MISP → Ereignisse → Import.

Hinweis: Ersetzen Sie die untenstehenden Platzhalter-UUIDs vor dem Import durch frisch generierte UUID4s für Ihre Umgebung. Platzhalterwerte werden in einem konsistenten Format zur besseren Lesbarkeit angezeigt.```json { "Event": { "uuid": "7f3a2d1e-8b4c-4f9a-a3e2-6d5c1b8e9f0a", "info": "CVE-2026-31431 Copy Fail — Linux LPE via authencesn page-cache write", "threat_level_id": "2", "analysis": "2", "date": "2026-04-30", "Attribute": [ { "type": "vulnerability", "category": "External analysis", "to_ids": false, "uuid": "1a2b3c4d-5e6f-7a8b-9c0d-1e2f3a4b5c6d", "comment": "CVE identifier", "value": "CVE-2026-31431" }, { "type": "text", "category": "Other", "to_ids": false, "uuid": "2b3c4d5e-6f7a-8b9c-0d1e-2f3a4b5c6d7e", "comment": "Vulnerability description", "value": "Logic flaw in Linux kernel authencesn cryptographic template. An unprivileged local user can write 4 attacker-controlled bytes into the page cache of any readable file via AF_ALG + splice(), enabling local privilege escalation. No race condition required. Affects kernels 4.14 through 6.18.21." }, { "type": "text", "category": "Other", "to_ids": false, "uuid": "3c4d5e6f-7a8b-9c0d-1e2f-3a4b5c6d7e8f", "comment": "Attack vector summary", "value": "socket(38, 5, 0) [AF_ALG/SOCK_SEQPACKET] → bind authencesn(hmac(sha256),cbc(aes)) → setsockopt(SOL_ALG/279) → splice() page-cache pages into AEAD socket → 4-byte controlled write into page cache of target file" }, { "type": "text", "category": "Other", "to_ids": false, "uuid": "4d5e6f7a-8b9c-0d1e-2f3a-4b5c6d7e8f9a", "comment": "Affected kernel range", "value": "Linux kernel 4.14 (commit 72548b093ee3) through 6.18.21" }, { "type": "text", "category": "Other", "to_ids": false, "uuid": "5e6f7a8b-9c0d-1e2f-3a4b-5c6d7e8f9a0b", "comment": "Introducing commit (root cause)", "value": "72548b093ee38a6d4f2a19e6ef1948ae05c181f7 — algif_aead in-place AEAD optimization (2017)" }, { "type": "text", "category": "Other", "to_ids": false, "uuid": "6f7a8b9c-0d1e-2f3a-4b5c-6d7e8f9a0b1c", "comment": "Fix commit — kernel 6.18.22 stable", "value": "fafe0fa2995a0f7073c1c358d7d3145bcc9aedd8" }, { "type": "text", "category": "Other", "to_ids": false, "uuid": "7a8b9c0d-1e2f-3a4b-5c6d-7e8f9a0b1c2d", "comment": "Fix commit — kernel 6.19.12 stable", "value": "ce42ee423e58dffa5ec03524054c9d8bfd4f6237" }, { "type": "text", "category": "Other", "to_ids": false, "uuid": "8b9c0d1e-2f3a-4b5c-6d7e-8f9a0b1c2d3e", "comment": "Fix commit — kernel 7.0 mainline", "value": "a664bf3d603dc3bdcf9ae47cc21e0daec706d7a5" }, { "type": "text", "category": "Other", "to_ids": true, "uuid": "9c0d1e2f-3a4b-5c6d-7e8f-9a0b1c2d3e4f", "comment": "IoC: Socket family (AF_ALG)", "value": "socket family 38 (AF_ALG)" }, { "type": "text", "category": "Other", "to_ids": true, "uuid": "0d1e2f3a-4b5c-6d7e-8f9a-0b1c2d3e4f5a", "comment": "IoC: Socket type (SOCK_SEQPACKET)", "value": "socket type 5 (SOCK_SEQPACKET)" }, { "type": "text", "category": "Other", "to_ids": true, "uuid": "1e2f3a4b-5c6d-7e8f-9a0b-1c2d3e4f5a6b", "comment": "IoC: Socket option (SOL_ALG = 279)", "value": "setsockopt level 279 (SOL_ALG)" }, { "type": "text", "category": "Other", "to_ids": true, "uuid": "2f3a4b5c-6d7e-8f9a-0b1c-2d3e4f5a6b7c", "comment": "IoC: Algorithm string (highest fidelity)", "value": "authencesn(hmac(sha256),cbc(aes))" }, { "type": "text", "category": "Other", "to_ids": true, "uuid": "3a4b5c6d-7e8f-9a0b-1c2d-3e4f5a6b7c8d", "comment": "IoC: Primary PoC target file", "value": "/etc/passwd (UID field offset targeted by PoC)" }, { "type": "text", "category": "Other", "to_ids": true, "uuid": "4b5c6d7e-8f9a-0b1c-2d3e-4f5a6b7c8d9e", "comment": "IoC: Secondary targets (setuid binaries)", "value": "/usr/bin/su, /usr/bin/sudo" }, { "type": "text", "category": "Other", "to_ids": false, "uuid": "5c6d7e8f-9a0b-1c2d-3e4f-5a6b7c8d9e0f", "comment": "Immediate mitigation", "value": "echo 'install algif_aead /bin/false' > /etc/modprobe.d/disable-algif-aead.conf && rmmod algif_aead" }, { "type": "url", "category": "External analysis", "to_ids": false, "uuid": "6d7e8f9a-0b1c-2d3e-4f5a-6b7c8d9e0f1a", "comment": "Official write-up", "value": "" }, { "type": "url", "category": "External analysis", "to_ids": false, "uuid": "7e8f9a0b-1c2d-3e4f-5a6b-7c8d9e0f1a2b", "comment": "Official PoC repository", "value": "" } ], "Object": [ { "name": "vulnerability", "meta-category": "vulnerability", "Attribute": [ { "type": "vulnerability", "object_relation": "id", "value": "CVE-2026-31431" }, { "type": "cvss-score", "object_relation": "cvss-score", "value": "7.8" }, { "type": "text", "object_relation": "summary", "value": "Linux kernel authencesn LPE via AF_ALG + splice() page-cache write" } ] } ] } }

root@kitploit:~
---

## Patchen und Behebung

### Kernel-Patch

| Zweig | Behobene Version | Fix-Commit |
|--------|--------------|------------|
| Stabil 6.18.x | 6.18.22 | `fafe0fa2995a0f7073c1c358d7d3145bcc9aedd8` |
| Stabil 6.19.x | 6.19.12 | `ce42ee423e58dffa5ec03524054c9d8bfd4f6237` |
| Mainline | 7.0 | `a664bf3d603dc3bdcf9ae47cc21e0daec706d7a5` |

Der Patch kehrt die In-Place-AEAD-Optimierung von 2017 in `algif_aead.c` zurück zum Out-of-Place-Betrieb, um sicherzustellen, dass Page-Cache-Seiten niemals in einer beschreibbaren Scatterlist platziert werden.

### Verteilungsspezifische Anleitung

| Verteilung | Aktion |
|---|---|
| Ubuntu | `apt-get update && apt-get upgrade linux-image-generic`; prüfen auf USN-Hinweis |
| RHEL / Rocky / Alma | `dnf update kernel`; prüfen auf RHSB-Hinweis |
| Amazon Linux 2023 | `dnf update kernel`; prüfen auf ALAS-Hinweis |
| SUSE / openSUSE | `zypper update kernel-default`; prüfen auf SUSE SA-Hinweis |
| Debian | Sicherheits-Tracker prüfen; Backport-Patch kann vor Kernel-Update eintreffen |
| Arch | `pacman -Syu` (Rolling; übernimmt Upstream-Fix, sobald er verfügbar ist) |

### Integritätsüberprüfung nach Exposition

Wenn Sie vermuten, dass vor dem Patchen eine Ausnutzung auf einem Host stattgefunden hat:```bash
# 1. Check if /etc/passwd UID fields have been tampered
# (compare against a known-good backup or secondary host)
awk -F: '$3 ~ /^0+$/ && $1 != "root" {print "SUSPICIOUS UID 0 ENTRY:", $0}' /etc/passwd

# 2. Drop the page cache to flush any in-memory modifications
# WARNING: This impacts performance temporarily
sync && echo 3 | sudo tee /proc/sys/vm/drop_caches

# 3. Verify setuid binaries against package manager
rpm -Va --nomtime 2>/dev/null | grep -E '^.{0,8}5.*su$|^.{0,8}5.*sudo$'   # RHEL/rpm
debsums -s 2>/dev/null | grep -E 'su|sudo'                                  # Debian/Ubuntu

# 4. Re-examine recently logged su/sudo invocations for unexpected UID transitions
journalctl -u sudo --since "48 hours ago" | grep "session opened for user root"

Wichtig: Standard-Tools zur Dateiintegrität (AIDE, Tripwire, debsums, rpm -Va) prüfen On-Disk-Hashes und zeigen die Binärdatei selbst nach einer Page-Cache-Ausnutzung als unverändert an. Der Page-Cache wird auf natürliche Weise durch einen Neustart oder drop_caches geleert. Auf einem neu gestarteten System ist die Page-Cache-Korruption verschwunden, aber der Angreifer könnte bereits auf andere Weise eine Persistenz etabliert haben.


Wichtige IoCs-Referenz


Das Erkennungspaket wird gegen den offiziellen PoC unter theori-io/copy-fail-CVE-2026-31431 gepflegt. Wenn Sie Ausbeutungsvarianten beobachten, die nicht von diesen Regeln abgedeckt werden, erstellen Sie bitte ein Issue im Haupt-PoC-Repository.

Tool herunterladen
https://xint.io/blog/copy-fail-linux-distributions
https://github.com/theori-io/copy-fail-CVE-2026-31431
IndikatorWertVertrauen
AF_ALG-Socket-Familie38 (erstes Argument für socket())Mittel — legitime Verwendungen existieren
Socket-Typ5 (SOCK_SEQPACKET)Mittel
SOL_ALG-Optionsebene279 (erstes Argument für setsockopt())Mittel
Algorithmus-Stringauthencesn(hmac(sha256),cbc(aes))Hoch — ungewöhnlich außerhalb von IPsec ESN
Syscall-Kettesocket(38) → setsockopt(279) → splice()Hoch
PoC-Key-Payload0800010000000010 (hex, in setsockopt)Hoch für bekannten PoC
Primäres PoC-Ziel/etc/passwd UID-FeldMittel
Sekundäre Ziele/usr/bin/su, /usr/bin/sudoMittel
Kernel-Modulalgif_aeadKontextabhängig