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
Tools/GitHubGitHub/seemoo-lab/dtrace-memaccess_cve-2020-27949
Privilege EscalationSpeicherforensikSchwachstellenanalyseExploitationRed TeamingBinary-Exploitation
GitHubseemoo-lab/dtrace-memaccess_cve-2020-27949

dtrace-memaccess_cve-2020-27949

Proof-of-Concept-Exploit für CVE-2020-27949, das beliebiges Lesen/Schreiben von Speicher in macOS-Prozessen über den DTrace-fasttrap-ioctl ohne erhöhte Berechtigungen demonstriert.

Beliebteste

Alle anzeigen →

Entdecken Sie die meistgenutzten Tools unserer Community.

Alle Tools erkunden

Durchsuchen Sie unsere Tool-Sammlung

Alle Tools anzeigen →
Teilen
Repository anzeigen
3391vor 5 JahrenVon Kitploit geprüft

Lesen und Schreiben von Speicher anderer Prozesse mit fasttrap

Das Gerät /dev/fasttrap zum Erstellen von Trap-Nodes in User-Space-Prozessen für die Provider pid und objc hat die Berechtigungen 666. Im Gegensatz zu /dev/dtrace, das ebenfalls 666 ist, fehlt fasttrap eine Berechtigungsprüfung. Dies erlaubt jedem Prozess, ein FASTTRAPIOC_MAKEPROBE- oder FASTTRAPIOC_GETINSTR-ioctl auszugeben.
Ein Angreifer kann mit FASTTRAPIOC_MAKEPROBE in jedem anderen Prozess Proben für beliebige Speicheradressen erstellen. Bei der Aktivierung dieser Proben werden die Werte an der angegebenen Speicheradresse durch eine Trap-Instruktion (0xCC auf x86) ersetzt und der ursprüngliche Wert in einem Shadow Memory abgelegt. Das Abrufen des ursprünglichen Werts ist mit dem FASTTRAPIOC_GETINSTR-ioctl möglich. Dies erlaubt es dem Angreifer, beliebigen Speicher eines anderen Prozesses zu lesen, indem er mehrere Traps platziert.

Diese Schwachstelle wird unter CVE-2020-27949 geführt, behoben in macOS Big Sur 11.1, Security Update 2020-001 Catalina, Security Update 2020-007 Mojave .

Offenlegungszeitplan

  • 2020-07-07 -> Erste Meldung an Apple Product Security.
  • 2020-07-08 <- Bestätigung der Untersuchung.
  • 2020-10-28 -> Anfrage um Statusaktualisierung.
  • 2020-12-07 <- Benachrichtigung über bevorstehendes Update, das das Problem behebt.
  • 2020-12-14 <- Update veröffentlicht.

Anforderungen

  • Der Angreifer kann Code mit normalen Benutzerrechten (nicht erhöht) ausführen.
  • Proben im Opferprozess müssen aktiviert sein (d. h. der Opferprozess muss unter DTrace ausgeführt werden).

Getestete Systemkonfigurationen

  • SIP ist aktiv (keine Ausnahmen)
  • 10.15.5 auf iMac Late 2012
  • 10.15.5 auf MacBook Pro 2020

Auswirkungen

  • Der Angreifer kann Speicher anderer Prozesse lesen, die unter DTrace ausgeführt werden, ohne erhöhte Berechtigungen. Sogar das Lesen von Speicher von Prozessen, die als root laufen, ist möglich.
  • Der Angreifer kann den Wert der Trap-Instruktion (0xCC auf x86) an jede Speicheradresse anderer Prozesse schreiben, die unter DTrace ausgeführt werden, ohne erhöhte Berechtigungen. Sogar das Schreiben von Speicher in Prozesse, die als root laufen, ist möglich. Als Teil anderer Instruktionen oder Sprungadressen kann der Kontrollfluss des Opfers verändert werden, was eine Privilegienausweitung ermöglicht.

Erwartungen

Als Benutzer erwarte ich, dass das Aktivieren von DTrace nur Prozessen mit Root-Berechtigungen erlaubt, andere Prozesse zu verfolgen, zu instrumentieren oder zu modifizieren. DTrace ist ein wertvolles Werkzeug für administrative Aufgaben und bietet Werkzeuge wie dtruss, iotop usw.

Details des Exploits

Unser Opfer (target) ist ein ausführbares Programm, das als root läuft. Der Angreifer (memaccess) ist ein ausführbares Programm, das mit normalen Benutzerrechten läuft. Das Tracing-Skript libc_monitor.d zeichnet die Anzahl der Aufrufe von Funktionen im gemeinsamen Objekt libsystem_c.dylib auf (dies ist nur ein einfaches Beispiel für ein administratives Skript, das ein Maschinenbesitzer ausführen könnte).

  1. Das Opfer wird ausgeführt.
  2. Der Angreifer erstellt eine Probe mit der PID des Opfers und einer Speicheradresse, an der er interessiert ist.
  3. Der Angreifer wartet darauf, dass DTrace den Opferprozess verfolgt. Dies könnte im Rahmen eines administrativen Vorgangs geschehen, bei dem der Maschinenbesitzer Funktionen im Opferprozess verfolgen möchte (z. B. libc_monitor.d).
  4. Wenn DTrace beginnt, das Opfer zu verfolgen, werden die zuvor erstellten Proben aktiviert und somit die ursprünglichen Speicherwerte ersetzt.
  5. Der Angreifer verwendet FASTTRAPIOC_GETINSTR, um die Speicherwerte der erstellten Proben zu lesen.

Schritt 4 ersetzt Speicher im Opferprozess mit dem Wert der Trap-Instruktion. Je nach Anwendung kann ein Angreifer dies nutzen, um einen zuvor bekannten Wert an eine kritische Speicheradresse zu schreiben. Beispielsweise könnte der Angreifer den Seed eines RNG kontrollieren oder kryptografische Schlüssel in einem Prozess ersetzen.

Hinweis: Der Angreifer benötigt niemals erhöhte oder Root-Berechtigungen.
Hinweis 2: Selbstgeschriebene DTrace-Skripte sind nicht erforderlich. Beispielsweise verwendet dapptrace ebenfalls den pid-Provider, um beliebige Funktionen zu verfolgen.

Vorgeschlagener Fix

Implementieren Sie Berechtigungsprüfungen in /dev/fasttrap wie in /dev/dtrace oder entfernen Sie die für alle Benutzer schreibbare Berechtigung.

Hinweis: Wir haben den veröffentlichten Fix nicht geprüft.

Anweisungen

  1. Stellen Sie sicher, dass DTrace verfügbar ist und korrekt funktioniert.
  2. Führen Sie target aus und folgen Sie den Anweisungen auf dem Bildschirm.
Tool herunterladen