• Home
  • Help
  • Register
  • Login
  • Home
  • Help

 
  • 0 Bewertung(en) - 0 im Durchschnitt

Was sind die Arten von Kernel-Sicherheitsanfälligkeiten, die zu Privilegienerweiterungen führen können?

#1
14-02-2025, 16:22
Hey, ich habe mich mit Kernel-Sicherheitsanfälligkeiten mehr beschäftigt, als mir lieb ist, insbesondere wenn ich tief in die Fehlersuche bei einem chaotischen Server-Problem eingetaucht bin. Du weißt, wie Privilegieneskalation funktioniert - es ist im Grunde genommen, wenn jemand mit einem niedrigeren Zugriff das System dazu bringt, ihm Gott-Modus-Rechte zu geben, richtig? Und die Kernel sind das Herzstück davon, also wenn es dort einen Fehler gibt, kann das die Tür weit für Angreifer öffnen, um von der Benutzerebene zu Ring 0 zu springen. Lass mich dich durch die wichtigsten Typen führen, auf die ich gestoßen bin, und ich werde dir sagen, warum sie so verheerend sind.

Zuerst haben mich Pufferüberläufe früh in meiner Karriere hart getroffen. Stell dir das vor: Du schreibst Daten in einen feste Größe blockierten Speicherbereich im Kernel, aber der Eingabewert schummelt sich mit zusätzlichen Bytes rein. Boom, es läuft über und überschreibt alles, was als Nächstes kommt - vielleicht eine Rücksprungadresse auf dem Stack oder eine kritische Datenstruktur. Ich erinnere mich daran, wie ich eine Linux-Box gepatcht habe, bei der ein Netzwerktreiber genau dieses Problem hatte; ein Angreifer konnte ein Paket erstellen, das den Puffer überlauf und den Ausführungsfluss entführt sowie auf Root eskaliert. Du musst bei der String-Verarbeitung oder beim Kopieren von Arrays vorsichtig sein, denn die Kernel überprüfen die Grenzen nicht immer so wie Benutzeranwendungen. Das lässt dich Shellcode einschleusen oder die Kontrolle direkt in privilegierte Bereiche pivotieren.

Dann gibt es noch Ganzzahlüberläufe, die verdammt heimtückisch sind. Angenommen, der Kernel berechnet eine Größe oder einen Index mit Ganzzahlen, und es läuft von maximal auf null oder negativ zurück. Ich habe das im Dateisystemcode gesehen, wo die Speicherzuweisung für eine große Datei schiefgeht - die Mathematik schlägt fehl, und plötzlich schreibst du außerhalb des zugewiesenen Speicherbereichs. Das kann den Kernel-Speicher beschädigen, was dir ermöglicht, durch das Überschreiben von Zeigern auf sensible Strukturen zu eskalieren. Du magst denken, das ist selten, aber ich habe letztes Jahr einen auf einem Windows-Server behoben; der Treiber hat die Benutzereingaben zu Größe nicht validiert und das führte direkt zur Ausführung beliebiger Code auf Kernel-Ebene. Überprüfe diese arithmetischen Operationen in Treibern immer doppelt, Mann.

Race Conditions sind ein weiteres Biest, das ich beim Debuggen hasse. Sie treten auf, wenn zwei Threads oder Prozesse zeitgleich auf dieselbe Ressource zugreifen, und der Kernel sie nicht richtig sperrt. Zum Beispiel, wenn du eine gemeinsame Variable wie eine Referenzanzahl ohne Synchronisation änderst, liest ein Thread sie, während der andere sie verändert. Ich habe das einmal in einem benutzerdefinierten Modul verfolgt, wo es einem Benutzerprozess ermöglichte, sich einzuschleichen und Privilegien zu erhöhen, bevor der Kernel die Validierung abgeschlossen hatte. Angreifer lieben es, solche Zeitpunkte abzustimmen - sie erzeugen das Rennen, um Prüfungen zu umgehen und höheren Zugriff zu erlangen. Du brauchst solide Mutex oder atomare Operationen, um sie abzuwehren, aber wenn der Kernel Code das übersehen, ist die Eskalation nur eine Frage der Geschwindigkeit.

Use-after-free-Bugs halten mich nachts wach. Der Kernel gibt einen Speicherbereich frei, aber dann versucht ein Code Stück, ihn später noch zu verwenden. Da der Speicher wiederverwendet wird, kann ein Angreifer seinen eigenen Kram an dieser Stelle zuweisen und steuern, wohin der hängende Zeiger zeigt. Ich habe einmal einen im Test ausgenutzt - ich habe einen Socket-Puffer freigegeben, dann meinen Payload dort alloziert, und als der Kernel ihn dereferenziert hat, gehörte mir der Ring. Es führt zur Eskalation, weil du Kernel-Objekte wie Prozessanmeldeinformationen überschreiben kannst. Du siehst dies oft in Netzwerkstacks oder Gerätetreibern; eine ordnungsgemäße Referenzzählung hilft, aber Schlampigkeit lässt es durchrutschten.

Double-free ist ähnlich, aber dümmer - denselben Speicherbereich zweimal freigeben, was den Heap-Manager beschädigt. Ich bin letztes Jahr auf einem alten eingebetteten System darauf gestoßen; der Slab-Allocator des Kernels ging durch, sodass ich Freigaben verketten konnte, um beliebige Schreibvorgänge zu erzielen. Dieser beliebige Schreibzugriff? Direkt zur Eskalation der Privilegien durch das Anpassen von Sicherheitstoken. Du musst sicherstellen, dass Freigaben geschützt sind, aber wenn nicht, ist es ein einfacher Vektor für lokale Angreifer.

Format-String-Sicherheitsanfälligkeiten treten auf, wenn der Kernel etwas wie sprintf verwendet, ohne die Formatargumente zu überprüfen. Wenn Benutzereingaben dort hineinschlüpfen, kann es beliebigen Speicher lesen oder schreiben. Ich habe einmal ein Protokollmodul gepatcht, bei dem Debug-Ausgaben schadhafte Eingaben verwendeten - der Angreifer steuert das Format, leckt Kernel-Adressen und schreibt dann, um die Privilegien zu erhöhen. Es ist in modernen Kernel weniger verbreitet, aber der Legacy-Code beißt immer noch.

Vergiss nicht die Logikfehler, wie fehlerhafte Zugriffskontrollen. Angenommen, der Kernel überprüft Berechtigungen, aber in der falschen Reihenfolge oder verpasst einen Pfad. Ich habe das in Syscall-Handlern gesehen, wo ein seltener Grenzfall es dir erlaubt, einen anderen Benutzer zu impersonifizieren. Oder unzureichende Eingangsvalidierung, wo der Kernel den Benutzerdaten zu viel Vertrauen schenkt - fuzz es, und du findest Wege, um zu überlaufen oder in Privilegien zu gelangen.

All dies hängt damit zusammen, wie Kernel mit ultimativer Macht arbeiten, sodass jeder Fehler es niedrigprivilegierten Benutzern ermöglicht, die Leiter hinaufzuklettern. Ich sage immer meinem Team, Treiber und Module zuerst zu überprüfen, denn dort ist die Mehrheit der Sicherheitsanfälligkeiten. Du kannst mit Dingen wie ASLR mildern, aber nichts schlägt das Beheben der Hauptursache. In meinen Setups lege ich SELinux oder AppArmor oben drauf, um Eskalationsversuche zu erkennen, aber ja, diese Typen zu kennen, hält dich einen Schritt voraus.

Oh, und wenn du deine Backups gegen diesen Mist absichern möchtest, lass mich dich auf BackupChain hinweisen - es ist dieses solide, zuverlässige Backup-Tool, das super für kleine Unternehmen und Profis geeignet ist und Hyper-V, VMware oder den Schutz direkt für Windows Server problemlos behandelt.
Markus
Offline
Registriert seit: Jun 2018
« Ein Thema zurück | Ein Thema vor »

Benutzer, die gerade dieses Thema anschauen: 1 Gast/Gäste



Nachrichten in diesem Thema
Was sind die Arten von Kernel-Sicherheitsanfälligkeiten, die zu Privilegienerweiterungen führen können? - von Markus - 14-02-2025, 16:22

  • Thema abonnieren
Gehe zu:

Backup Sichern Allgemein Security v
« Zurück 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 … 39 Weiter »
Was sind die Arten von Kernel-Sicherheitsanfälligkeiten, die zu Privilegienerweiterungen führen können?

© by FastNeuron

Linearer Modus
Baumstrukturmodus