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
cve-2026-31431-mitigation — Seccomp-basierte Abschwächung für CVE-2026-31431, eine Linux-Kernel-LPE. Blockiert AF_ALG-Sockets über ein PAM-Modul und einen eigenständigen Wrapper, mit automatischer Erkennung gepatchter Kernel. | Kitploit
Tools/GitHubGitHub/linux-zs/cve-2026-31431-mitigation
DefensivwerkzeugeSchwachstellenanalyseKonfigurationsprüfungSicherheitsvirtualisierung
GitHublinux-zs/cve-2026-31431-mitigation

cve-2026-31431-mitigation

Seccomp-basierte Abschwächung für CVE-2026-31431, eine Linux-Kernel-LPE. Blockiert AF_ALG-Sockets über ein PAM-Modul und einen eigenständigen Wrapper, mit automatischer Erkennung gepatchter Kernel.

Repository anzeigen

Beliebteste

Alle anzeigen →

Entdecken Sie die meistgenutzten Tools unserer Community.

Alle Tools erkunden

Durchsuchen Sie unsere Tool-Sammlung

Alle Tools anzeigen →
8vor 4 MonatenNoch nicht geprüft
Teilen

CVE-2026-31431 seccomp-Mitigation

Eine leichtgewichtige, reversible seccomp-basierte Mitigation für CVE-2026-31431, eine lokale Privilegieneskalations-Schwachstelle im algif_aead-/authencesn-Krypto-Subsystem des Linux-Kernels.

中文文档


Überblick über die Schwachstelle

Typ: Lokale Privilegieneskalation (LPE)

Betroffene Komponente: Linux-Kernel crypto/algif_aead.c – In-Place-AEAD-Operation

Angriffsprimitive: Ein 4-Byte-kontrollierbarer Schreibzugriff in den Page-Cache einer beliebigen lesbaren Datei über den Scratch-Write-Pfad des authencesn-AEAD-Algorithmus. Durch das Zielen auf /etc/passwd kann ein Angreifer seine UID auf 0 (root) ändern und über su eine Root-Shell erhalten.

Betroffene Kernel: Bestätigt auf Kernel 6.12+, 6.17+, 6.18+ und ebenfalls reproduziert auf RHEL/CentOS-4.18/5.14-Kerneln.

Verifizierte Umgebungen: Rocky Linux 8 (Kernel 4.18) und Rocky Linux 9 (Kernel 5.14) – Exploit vollständig blockiert, sichere Entfernung bestätigt.

Grundursache: Commit 72548b093ee3 führte die In-Place-AEAD-Operation ein. Wenn gespleißte Page-Cache-Seiten als Ziel-Scatterlist verwendet werden, wird das AAD-Feld seqno_lo während der AEAD-Entschlüsselung fälschlicherweise zurück in den Page-Cache geschrieben.

Upstream-Fix: Rückkehr zur Out-of-Place-AEAD-Operation.

Wie diese Mitigation funktioniert

Diese Lösung besteht aus zwei Komponenten:

  1. PAM-Modul (pam_block_afalg.so) – Die primäre Verteidigung. Wird von PAM beim Öffnen einer Sitzung (pam_sm_open_session) geladen und wendet einen seccomp-BPF-Filter an, der socket(AF_ALG, ...) blockiert, bevor Benutzercode ausgeführt wird. Dies deckt ALLE PAM-authentifizierten Sitzungen ab: su -c, su -, SSH, TTY-Login usw.

  2. Standalone-Binary (block_afalg) – Optional. Kann bestimmte Programme für Nicht-PAM-Szenarien umschließen (z. B. Cron-Jobs, systemd-Dienste, manuelle Aufrufe).

Der seccomp-Filter:

  • Blockiert nur socket(AF_ALG, ...) (gibt EACCES zurück)
  • Null Auswirkung auf alle anderen Syscalls (einschließlich setuid, su, sudo)
  • Wird von allen Kindprozessen geerbt (fork + exec)
  • Erkennt gepatchte Kernel automatisch und wird zu einem No-op

Architektur

root@kitploit:~
PAM-Sitzungsöffnung (su, ssh, login usw.)
  |
  v
pam_block_afalg.so (pam_sm_open_session)
  |
  +-- Prüfung: Ist der Kernel verwundbar? (socket(AF_ALG) versuchen)
  |     |
  |     +-- Nein --> PAM_SUCCESS zurückgeben (No-op)
  |     |
  |     +-- Ja --> prctl(PR_SET_SECCOMP, BPF-Filter)
  |                   |
  |                   +-- seccomp-Filter aktiv auf sshd-Kindprozess
  |                   +-- wird von der Benutzer-Shell und ALLEN Kindprozessen geerbt
  |                   +-- socket(AF_ALG, ...) gibt EACCES zurück
  v
Benutzer-Shell / Befehl läuft mit seccomp-Schutz
  |
  +-- su, sudo und alle anderen Syscalls funktionieren normal
  +-- Nur der AF_ALG-Socket ist blockiert

Dateien

DateiZweck
pam_block_afalg.cPAM-Modul-Quellcode. Wendet seccomp-Filter beim Sitzungsöffnen an.

Anforderungen

  • Linux-Kernel mit seccomp-Unterstützung (die meisten modernen Kernel)
  • gcc (für die Kompilierung)
  • libpam (Laufzeit, normalerweise vorinstalliert)
  • Root-/sudo-Zugriff (für die Installation)
  • x86_64-Architektur (BPF-Filter verwendet x86_64-Syscall-Nummern)

Schnellstart

root@kitploit:~
# 1. PAM-Modul kompilieren
gcc -Wall -O2 -fPIC -shared -o pam_block_afalg.so pam_block_afalg.c \
    /usr/lib64/libpam.so.0

# 2. Installieren (fügt PAM-Konfigurationen automatisch zu su, sshd, login hinzu)
sudo ./deploy.sh install

# 3. Verifizieren (muss eine NEUE Sitzung sein)
cat /proc/self/status | grep Seccomp
# Sollte anzeigen: Seccomp: 2

python3 -c "
import socket
try:
    s = socket.socket(38,2,0); s.close()
    print('VULNERABLE')
except OSError:
    print('BLOCKED')
"
# Sollte anzeigen: BLOCKED

# 4. Deinstallieren
sudo ./deploy.sh remove

Befehlsreferenz

BefehlBeschreibung
deploy.sh installPAM-Modul kompilieren, nach /lib64/security/ installieren, PAM-Konfigurationen automatisch hinzufügen
deploy.sh removeVollständige Deinstallation: Modul entfernen, PAM-Konfigurationen bereinigen, Dateien löschen

Standalone-Verwendung

Für Nicht-PAM-Szenarien block_afalg direkt verwenden:

root@kitploit:~
# Kompilieren
gcc -Wall -O2 -o block_afalg block_afalg.c

# Einen Befehl mit blockiertem AF_ALG ausführen
./block_afalg python3 your_script.py
./block_afalg bash

Verifizierung

Prüfen, ob der Kernel verwundbar ist

root@kitploit:~
python3 -c "
import socket
try:
    s = socket.socket(38, socket.SOCK_SEQPACKET, 0)
    s.close()
    print('VULNERABLE: AF_ALG socket available')
except:
    print('SAFE: AF_ALG socket blocked or unavailable')
"

Verifizieren, dass das PAM-Modul aktiv ist

root@kitploit:~
# Seccomp-Status prüfen
cat /proc/self/status | grep Seccomp
# Seccomp: 0 = nicht geschützt
# Seccomp: 2 = geschützt

# AF_ALG-Socket testen
python3 -c "
import socket
try:
    s = socket.socket(38,2,0)
    s.close()
    print('AF_ALG available - NOT protected')
except OSError:
    print('AF_ALG blocked - PROTECTED')
"

# PAM-Logs prüfen
grep pam_block_afalg /var/log/secure
# Sollte anzeigen: seccomp filter applied, AF_ALG blocked

Einschränkungen

  • Nur x86_64: Der BPF-Filter verwendet die hartkodierte Syscall-Nummer 41 (__NR_socket auf x86_64). Für andere Architekturen muss die Syscall-Nummer aktualisiert werden.
  • PAM-abhängig: Schützt nur Sitzungen, die über PAM laufen. Direkte exec()-Aufrufe ohne PAM sind nicht abgedeckt (dafür block_afalg verwenden).
  • Kein Deaktivieren zur Laufzeit: Sobald der seccomp-Filter auf einen Prozess angewendet wurde, kann er nicht mehr entfernt werden. Die Kernel-Prüfung stellt sicher, dass er nur bei Bedarf angewendet wird.
  • Nur neue Sitzungen: Bestehende Sitzungen, die vor der Modulinstallation gestartet wurden, werden nicht nachträglich geschützt.

Wann zu entfernen

  1. Offizieller Kernel-Patch ist angewendet – Das PAM-Modul erkennt dies automatisch, aber Sie können trotzdem mit remove aufräumen.
  2. RHEL/CentOS veröffentlicht einen gepatchten Kernel – yum update kernel und dann das Modul entfernen.

Lizenz

Dieses Tool wird ausschließlich für autorisierte Sicherheitstests und defensive Zwecke bereitgestellt. Verwenden Sie es nur auf Systemen, die Ihnen gehören oder für die Sie ausdrücklich zur Bewertung autorisiert sind.

Tool herunterladen
pam_minimal.hMinimale PAM-Typdefinitionen (kompiliert ohne pam-devel).
block_afalg.cStandalone-seccomp-Wrapper-Binary. Für Nicht-PAM-Verwendung.
deploy.shBereitstellungsskript. Kompiliert, installiert und verwaltet das PAM-Modul.
deploy.sh statusInstallationsstatus, PAM-Konfigurationen und Kernel-Status anzeigen