www.wikidata.de-de.nina.az
Dieser Artikel befasst sich mit der Kernelerweiterung Fur andere Bedeutungen siehe Pax Begriffsklarung In diesem Artikel oder Abschnitt fehlen noch folgende wichtige Informationen Entwicklungeschichte fehlt siehe englische Wikipedia Hilf der Wikipedia indem du sie recherchierst und einfugst PaX ist ein Sicherheitspatch fur den Linux Kernel der einen Geringste Rechte Schutz englisch least privilege fur Speicherseiten implementiert Der Ansatz der geringsten Rechte erlaubt Computerprogrammen nur diejenigen Aktionen durchzufuhren die sie fur einen ordentlichen regularen Ablauf benotigen und verbietet alle daruber hinausgehenden PaX wurde 2000 erstmals veroffentlicht PaX markiert Datenbereiche des Speichers als nicht ausfuhrbar Programmbereiche als nichtbeschreibbar und ordnet den Programmspeicher zufallig an Das erste verhindert direkte Code Ausfuhrung wahrend das letztere sogenannte return to libc Angriffe ret2libc stark erschwert ein Erfolg eines solchen Angriffes hangt dann vor allem vom Zufall ab es verhindert aber nicht das Uberschreiben von Variablen und Pointern PaX wurde durch das PaX Team geschrieben Der Hauptautor von PaX mochte anonym bleiben PaX hat eine eigene Version des Linux Maskottchens Tux Inhaltsverzeichnis 1 Bedeutung 1 1 Einschrankungen 2 Geschichte 3 Was PaX bietet 3 1 Schutz des Programmspeichers 4 Distributionen die PaX verwenden 5 Referenzen 6 Weblinks 7 EinzelnachweiseBedeutung BearbeitenViele wenn nicht fast alle Sicherheitslucken bei Computern sind auf Fehler in Programmen zuruckzufuhren die es ermoglichen die Funktion eines Programms zu verandern effektiv also ein Umschreiben des Programms wahrend dessen Ausfuhrung erlauben So zeigen die ersten 44 Ubuntu Security Notices dass 41 der Angriffsmoglichkeiten aus buffer overflows resultieren 11 aus integer overflows und 16 von anderer falscher Behandlung von nicht erwartungsgemassen Daten Diese Typen von Programmfehlern ermoglichen es oft Schadcode einzuschleusen und auszufuhren im Beispiel machen sie 61 aus ohne Berucksichtigung von Uberschneidungen Die oben durchgefuhrte Analyse ist sehr ungenau eine umfangreichere Untersuchung wurde sicherlich andere Zahlen ergeben sowohl hoher als auch tiefer zeigt aber grundsatzlich die Problematik Viele Wurmer Viren und Ubernahmeversuche beruhen auf der Veranderung von Speicherinhalten so dass Schadcode ausgefuhrt wird oder auf der Ausfuhrung von Speicherinhalten durch Falschadressierung die eigentlich Daten darstellen sollen Wenn die Ausfuhrung solcher Anweisungen verhindert werden konnte wurde solche Schadsoftware nur noch wenig bis gar keinen Schaden anrichten konnen sogar nach Installation auf dem Computer viele konnten uberhaupt nicht mehr installiert werden z B der Sasser Wurm PaX wurde entworfen um genau dies fur eine grosse Anzahl moglicher Angriffe zu tun und zwar auf einem sehr allgemeinen breit anwendbarem Weg Er verhindert die Ausfuhrung von missbrauchlichem Code durch Kontrolle des Zugriffes auf den Speicher lesen schreiben Zugriff auf Programmcode sowie Kombinationen davon und dies ohne die Ausfuhrung von normalem Code zu verhindern Mit einem kleinen Overhead reduziert PaX dadurch viele Exploits auf Denial of Service Angriffe Exploits die dem Angreifer normalerweise root Zugriff Zugriff auf wichtige Daten oder anderen Schaden anzurichten erlauben wurden wurden das betroffene Programm nunmehr absturzen und das restliche System unbehelligt lassen Ein DoS Angriff ist zwar unangenehm und resultiert oft in Verlust von Zeit oder anderen Ressourcen jedoch werden meistens keine Daten kompromittiert wenn PaX eingreift Trotzdem kann ein DoS Angriff in gewissen Umgebungen nicht akzeptabel sein es gibt level of service Vertrage oder andere Bedingungen die einen erfolgreichen Einbruch in ein System weniger kostenintensiv machen als die Reduktion oder Verlust der Verfugbarkeit eines Dienstes In diesem Licht betrachtet ist der Ansatz von PaX nicht uberall angemessen In vielen Fallen jedoch ist es eine brauchbare Methode um vertrauliche Daten vor Sicherheitsbruchen zu schutzen Viele Programmierfehler verursachen eine Verfalschung des Speicherinhaltes Von den Fehlern die dies ermoglichen und absichtlich herbeigefuhrt werden konnen ermoglichen einige das Programm verschiedene Dinge durchfuhren zu lassen fur die es nicht vorgesehen wurde wie z B eine privilegierte Shell zu erhalten Der Fokus von PaX ist nicht das Finden und Korrigieren solcher Fehler sondern das Verhindern und Isolieren der Exploits dieser Fehler Wie im oberen Absatz erwahnt wird eine Untermenge dieser Fehler in ihrer Schwere heruntergestuft Programme werden beendet statt ihre Dienste fehlerbehaftet weiterhin anzubieten PaX verhindert Pufferuberlaufe nicht direkt Stattdessen verhindert es dass viele dieser und ahnlicher Programmierfehler ausgenutzt werden um unberechtigt Zugriff auf ein Computersystem zu erhalten Andere Systeme wie Stack Smashing Protector und StackGuard versuchen Pufferuberlaufe direkt zu verhindern und das entsprechende Programm bei Entdeckung zu beenden Dieser Ansatz wird Stack Smashing genannt und versucht die Angriffe abzuwehren bevor sie uberhaupt durchgefuhrt werden konnen Der allgemeinere Ansatz von PaX hingegen verhindert Schaden nachdem der Angriff begonnen hat Obwohl beide Methoden dieselben Ziele erreichen konnen sind sie nicht vollig redundant Dadurch wird ein Betriebssystem bei Verwendung beider Methoden prinzipiell sicherer Es gibt bereits Linux Distributionen die beide Methoden benutzen Einschrankungen Bearbeiten PaX kann Fehler im Design von Programmen oder des Kernels die einen Missbrauch der angebotenen Funktionen erlauben nicht verhindern Diese Fehler sind im Prinzip so auch nicht feststellbar Als Beispiel mag man einen Script Interpreter betrachten der Zugriff auf Dateien und Netzwerk erlaubt und diese Funktionen ungenugend schutzt Der Angreifer konnte auf Dateien von anderen Benutzern zugreifen ohne dabei am Programm etwas verbiegen zu mussen PaX kann auch nicht alle Formatstring Angriffe abwehren die beliebiges Lesen und Schreiben in Datenbereiche des Speichers durch bereits existierenden Code erlauben der Angreifer braucht weder interne Adressen zu wissen noch fremden Code einzuschleusen um diesen Typ Angriff durchfuhren zu konnen Die PaX Dokumentation beschreibt die folgenden drei Klassen von Angriffen vor denen PaX zu schutzen versucht Sie behandelt sowohl Angriffe die PaX abwehrt als auch solche die nicht abgewehrt werden Alle setzen ein vollstandiges positionsunabhangiges Programm mit Schutz des Programmspeichers und zufalliger Anordnung des Adressbereiches voraus Folgende Angriffe konnen dann blockiert werden Angriffe die fremden Code einschleusen und ausfuhren Angriffe die existierenden Code nicht in dem vom Programmierer vorgesehenen Ablauf ausfuhren ret2libc Angriffe die existierenden Code mit falschen Daten ausfuhrenDie dritte Klasse ist trotz PaX moglich wenn der Angreifer keine Kenntnis von Adressen des angegriffenen Programms benotigt Die zweite und dritte Klasse sind dann zuverlassig moglich wenn der Angreifer zwar Kenntnis von Adressen benotigt diese aber durch Auslesen des Adressbereiches des angegriffenen Programms erlangen kann Dies ist moglich wenn das Ziel einen entsprechenden sicherheitskritischen Programmierfehler hat der den Zugriff auf diese Informationen erlaubt z B wenn der Angreifer Zugriff auf proc pid maps hat Es existiert hierfur ein Patch der alle Werte fur Adressbereiche und Inodes in jeder Informationsquelle die vom Userland erreichbar ist ausnullt Dieser Patch ist zurzeit jedoch nicht in PaX enthalten Die zweite und dritte Klasse sind mit geringer Erfolgswahrscheinlichkeit moglich wenn der Angreifer Kenntnis von Adressen benotigt diese aber nicht erhalten kann brute force und raten ausgenommen Die ASLR Dokumentation 1 beschreibt wie man die geringe Erfolgswahrscheinlichkeit genauer messen kann Die erste Klasse ist moglich wenn der Angreifer das Programm benutzen kann um eine Datei anzulegen zu beschreiben und via mmap in den Speicher einblenden kann Dies verlangt jedoch dass die Angriffsmethoden der zweiten Klasse moglich sind es gelten also dieselben Bedingungen wie ebenda beschrieben Obwohl nicht Teil von PaX wird unter anderem empfohlen dass produktive Systeme Kontrollmechanismen einsetzen die solche Angriffe verhindern Verantwortungsvolle Systemadministration ist trotz PaX immer noch notwendig PaX verhindert oben beschriebene Angriffe dennoch besteht die Moglichkeit eines erfolgreichen Angriffes Geschichte BearbeitenDies ist eine noch nicht vervollstandigte Liste der Geschichte von PaX sie sollte bearbeitet werden soweit neue Informationen gegeben sind Oktober 2000 PaX Erstveroffentlichung mit normaler PAGEEXEC Methode November 2000 erste Integration von MPROTECT veroffentlicht Juni 2001 ASLR mmap randomization implementiert nicht veroffentlicht Juli 2001 ASLR veroffentlicht August 2001 ASLR mit zusatzlichem Stapelspeicher stack und PIE randomization veroffentlicht Juli 2002 VMA Mirroring und RANDEXEC veroffentlicht Oktober 2002 SEGMEXEC veroffentlicht Oktober 2002 ASLR mit zusatzlicher Kernel Stack randomization veroffentlicht Februar 2003 EI PAX ELF Markierungsmethode eingefuhrt April 2003 KERNEXEC nicht ausfuhrbare kernel pages veroffentlicht Juli 2003 ASLR mit zusatzlicher brk randomization veroffentlicht Februar 2004 PT PAX FLAGS ELF Markierungsmethode eingefuhrt Mai 2004 PAGEEXEC mit Code Segment Limit Tracking fur verbesserte Leistung erweitert 4 Marz 2005 VMA Mirroring Schwachstelle angekundigt neue Version von PaX und grsecurity veroffentlicht alle vorherigen Versionen mit SEGMEXEC und RANDEXEC haben eine Rechteausweitung als Schwachstelle 1 April 2005 Wegen der Schwachstelle sollte das PaX Projekt einen neuen Entwickler bekommen doch da sich niemand fand hat der alte Entwickler das Projekt in Wartung gestellt Was PaX bietet BearbeitenSchutz des Programmspeichers Bearbeiten nbsp Fig 1 Speichersegmente eines Programms Blaue Segmente bezeichnen Code grune Daten Einer der Hauptmerkmale von PaX ist der Schutz von Programmbereichen des Speichers Dieser Schutz verwendet das NX Bit auf bestimmten Prozessoren um die Ausfuhrung von fremden Code zu verhindern dies fangt Angriffe ab die auf Injektion von fremden Code oder Shellcode beruhen Auf IA 32 CPUs ist das NX Bit nicht vorhanden PaX kann in diesem Fall dessen Funktionalitat auf verschiedenen Wegen emulieren Viele Betriebssysteme einschliesslich Linux nutzen auf x86 Prozessoren dessen NX Bit falls vorhanden um korrekte Einschrankungen auf den Speicher anzuwenden Fig 1 zeigt eine einfache Zusammenstellung von Speichersegmenten in einem Programm mit einer geladenen Bibliothek grune Segmente sind dabei Daten blaue sind Programmcode Unter normalen Umstanden sieht der Adressbereich auf AMD64 und anderen derartigen Prozessoren ahnlich wie dieses Bild aus mit klar definierten Daten und Codesegmenten Unglucklicherweise verwehrt Linux standardmassig einem Programm nicht seinen Speicherschutz zu andern jedes Programm kann Codesegmente als beschreibbar und Datensegmente als ausfuhrbar kennzeichnen PaX verhindert solche Anderungen sowie es auch moglichst hohe Einschrankungen garantiert die eine normale Ausfuhrung erlauben Wenn die verschiedenen Schutzvorkehrungen des Programmspeichers aktiviert sind einschliesslich der mprotect Einschrankungen garantiert PaX dass keinerlei Speicherzuordnungen in irgendeiner Weise als ausfuhrbarer Programmcode markiert werden konnen nachdem es moglich gewesen ware den Zustand dieser Bereiche zu andern Der Effekt dieser Massnahme ist dass es unmoglich wird Speicherbereiche auszufuhren wahrend oder nachdem sie verandert werden konnen bis diese Bereiche schliesslich wieder freigegeben werden und damit dass kein Code in das Programm eingefuhrt werden kann ob nun schadlich oder nicht weder von einer internen noch einer externen Quelle Die Tatsache dass Programme Datenbereiche nicht ausfuhren konnen obwohl die dort gespeicherten Daten dafur vorgesehen waren stellt ein unuberwindliches Problem fur ebendiese Programme dar Ein Beispiel hierfur sind die Just in time Compiler fur Java jedoch konnen viele dieser Programme vom Programmierer so geandert werden dass sie nicht auf dieser Funktionalitat beruhen Die anderen konnen durch den Systemadministrator gekennzeichnet werden PaX wendet dann die Einschrankungen fur diese nicht an Das PaX Team musste einige Entscheidungen im Bezug auf die Behandlung des mmap Aufrufes treffen Diese Funktion wird dazu verwendet gemeinsamen Speicher Shared Memory abzubilden oder dynamische Bibliotheken shared libraries zu laden Daher benotigt der Aufruf beschreibbare oder ausfuhrbare Speicherbereiche abhangig von den jeweiligen Bedingungen Die aktuelle Implementierung von PaX unterstutzt beschreibbare anonyme Speicherabbildungen standardmassig beschreibbare Abbildungen einer Datei sind nur beschreibbar wenn der mmap Aufruf das Schreibrecht angibt Es werden jedoch nie Abbildungen zuruckgegeben die beschreib und ausfuhrbar sind sogar wenn der Aufruf diese Rechte explizit angibt In diesem Artikel oder Abschnitt fehlen noch folgende wichtige Informationen Folgende Abschnitte wurden nicht abgeschlossen Sie bedurfen mindestens einer Ubersetzung aus dem englischen Artikel Hilf der Wikipedia indem du sie recherchierst und einfugst Distributionen die PaX verwenden BearbeitenGentoo mit gepatchtem Kernel sys kernel hardened sources Alpine nutzte bis Version 3 8 einen mit PaX gepatchten Kernel und bot passende Gnome Pakete 2 Referenzen BearbeitenPaX documentation In pax grsecurity netWeblinks BearbeitenPaX homepage In pax grsecurity net Ein geharteter Linux Kernel mit PaX und Grsecurity In itsecblog de 21 August 2013Einzelnachweise Bearbeiten Address Space Layout Randomization In pax grsecurity net abgerufen am 7 Juni 2021 About Alpine Linux In alpinelinux org 2021 abgerufen am 7 Juli 2021 Abgerufen von https de wikipedia org w index php title PaX amp oldid 236996125