Skip to content
KitploitKITPLOIT
StrumentiBlog
Invia
StrumentiBlog
Invia

Strumenti di Hacking, PenTest e Cybersecurity per il tuo Arsenale di Sicurezza!

Kitploit è una directory di strumenti di hacking, cybersecurity e pentesting. Scopri gli ultimi aggiornamenti dei progetti per trovare vulnerabilità, analizzare sistemi, automatizzare i test e rafforzare la tua sicurezza.

··Feed·Contatto·Privacy·© 2026 Kitploit

Directory degli strumenti

Categorie

Vedi tutte le categorie
Loading categories
dtrace-memaccess_cve-2020-27949 | Kitploit
Strumenti/GitHubGitHub/seemoo-lab/dtrace-memaccess_cve-2020-27949
Escalation di PrivilegiMemory ForensicsAnalisi delle VulnerabilitàExploitRed TeamingBinary Exploitation
GitHubseemoo-lab/dtrace-memaccess_cve-2020-27949

dtrace-memaccess_cve-2020-27949

Vedi Repository

Più Popolari

Vedi tutti →

Scopri gli strumenti più utilizzati dalla nostra community.

Esplora tutti gli strumenti

Sfoglia la nostra collezione di strumenti

Vedi tutti gli strumenti →
Condividi
3395 anni faRevisionato da Kitploit

Lettura e scrittura della memoria di altri processi tramite fasttrap

Il dispositivo /dev/fasttrap per creare nodi trap nei processi in spazio utente per i provider pid e objc ha i permessi 666. A differenza di /dev/dtrace, anch'esso 666, fasttrap non dispone di un controllo dei permessi. Ciò consente a qualsiasi processo di emettere un ioctl FASTTRAPIOC_MAKEPROBE o FASTTRAPIOC_GETINSTR.
Un attaccante può creare probe in qualsiasi altro processo per qualsiasi posizione di memoria utilizzando FASTTRAPIOC_MAKEPROBE. All'attivazione di questi probe, i valori nella posizione di memoria specificata vengono sostituiti con un'istruzione trap (0xCC su x86) e il valore originale viene inserito in una memoria shadow. Il recupero del valore originale è possibile con l'ioctl FASTTRAPIOC_GETINSTR. Ciò consente all'attaccante di leggere memoria arbitraria di un altro processo inserendo più trap.

Questa vulnerabilità è tracciata come CVE-2020-27949, corretta in macOS Big Sur 11.1, Security Update 2020-001 Catalina, Security Update 2020-007 Mojave .

Cronologia della divulgazione

  • 2020-07-07 -> Divulgazione iniziale ad Apple Product Security.
  • 2020-07-08 <- Conferma dell'indagine.
  • 2020-10-28 -> Richiesta di aggiornamento sullo stato.
  • 2020-12-07 <- Notifica di un prossimo aggiornamento che risolve il problema.
  • 2020-12-14 <- Aggiornamento rilasciato.

Requisiti

  • L'attaccante può eseguire codice con permessi utente normali (non elevati)
  • I probe nel processo vittima devono essere abilitati (cioè la vittima deve essere eseguita sotto DTrace)

Configurazioni di sistema testate

  • SIP è attivo (nessuna eccezione)
  • 10.15.5 su iMac Late 2012
  • 10.15.5 su MacBook Pro 2020

Impatto

  • L'attaccante può leggere la memoria di altri processi eseguiti sotto DTrace senza permessi elevati. È possibile leggere memoria anche da processi in esecuzione come root.
  • L'attaccante può scrivere il valore dell'istruzione trap (0xCC su x86) in qualsiasi posizione di memoria di altri processi eseguiti sotto DTrace senza permessi elevati. È possibile scrivere memoria anche in processi in esecuzione come root. Come parte di altre istruzioni o indirizzi di salto, il flusso di controllo della vittima può essere alterato, consentendo l'escalation dei privilegi.

Aspettative

Come utente, mi aspetto che l'abilitazione di DTrace consenta solo ai processi con permessi di root di tracciare, instrumentare o modificare altri processi. DTrace è uno strumento prezioso per attività amministrative che offre strumenti come dtruss, iotop, ecc.

Dettagli dell'exploit

La nostra vittima (target) è un eseguibile che gira come root. L'attaccante (memaccess) è un eseguibile che gira con permessi utente normali. Lo script di tracing libc_monitor.d registra il numero di chiamate alle funzioni nell'oggetto condiviso libsystem_c.dylib (questo è solo un semplice esempio di script amministrativo che un proprietario di una macchina potrebbe eseguire).

  1. La vittima viene eseguita
  2. L'attaccante crea un probe con il PID della vittima e una posizione di memoria a cui è interessato.
  3. L'attaccante attende che DTrace tracci il processo vittima. Questo potrebbe accadere come parte di un'operazione amministrativa in cui il proprietario della macchina vuole tracciare funzioni nel processo vittima (ad es. libc_monitor.d).
  4. Quando DTrace inizia a tracciare la vittima, i probe creati in precedenza verranno abilitati, sostituendo così i valori di memoria originali.
  5. L'attaccante usa FASTTRAPIOC_GETINSTR per leggere i valori di memoria dei probe creati.

Il passaggio 4 sostituisce la memoria nel processo vittima con il valore dell'istruzione trap. A seconda dell'applicazione, un attaccante può usare questo per scrivere un valore precedentemente noto in una posizione di memoria critica. Ad esempio, l'attaccante potrebbe controllare il seed di un RNG o sostituire chiavi crittografiche in un processo.

Nota: l'attaccante non richiede mai permessi elevati o di root.
Nota 2: non sono richiesti script DTrace scritti appositamente. Ad esempio, anche dapptrace usa il provider pid per tracciare qualsiasi funzione.

Fix proposto

Implementare controlli dei privilegi in /dev/fasttrap come in /dev/dtrace o rimuovere il permesso di scrittura per tutti (world-writable).

Nota: non abbiamo verificato il fix rilasciato.

Istruzioni

  1. Assicurarsi che DTrace sia disponibile e funzioni correttamente
  2. Eseguire target e seguire le istruzioni a schermo
Scarica lo strumento