Foto di copertina dell'IDOR

IDOR: riferimento oggetto diretto non sicuro

Insicuro Dtamp Ooggetto Rriferimento o IDORO si verifica quando un'applicazione espone inavvertitamente oggetti privati ​​tramite l'input dell'utente. Ad esempio, un sito Web potrebbe consentire di accedere ai profili dei clienti privati ​​inserendo ID utente univoci nell'URL in questo modo:

https://example.com/account?id=32145

Il pericolo, ovviamente, è che un utente malintenzionato possa creare un bot che itera attraverso il numero intero per raschiare informazioni sensibili. Questo vettore di attacco è particolarmente rilevante se il valore ID è incrementale, poiché ogni numero intero successivo è garantito per essere un altro account. In definitiva, questo è un controllo degli accessi vulnerabilità, poiché uno sconosciuto senza privilegi può utilizzare l'input dell'utente per ottenere l'accesso a cose che non dovrebbe.

Carico utile di Burp Intruder
(Burp Intruder payload per iterare su un parametro URL)

Tipi di IDOR

Gli attacchi IDOR potrebbero presentarsi in forme diverse. Di solito, un essere umano potrebbe facilmente individuare queste vulnerabilità ispezionando il traffico HTTP tramite delega, a volte quando la vulnerabilità si trasmette nell'URL, un semplice browser farebbe il lavoro.

Dopo aver ispezionato il traffico HTTP, si dovrebbe esaminare l'effetto diretto e indiretto dell'input di un utente sugli oggetti restituiti dal server. Gli input dell'utente più comunemente usati sono:

  • Intero incrementale: come nell'esempio precedente, quando le risorse sono accessibili tramite un parametro intero incrementale, che di solito è una chiave in una tabella, che può essere facilmente iterato.
  • Date: Allo stesso modo, anche le date possono essere ripetute.
  • Stringhe prevedibili: file che memorizzano informazioni riservate con nomi come "ID-" + nome utente + ".txt".

Tecniche di mitigazione

In definitiva, la mitigazione dell'IDOR si riduce alla presenza di un solido sistema di controllo degli accessi. Ad esempio, un sito Web può verificare a quale account è connesso un utente prima di visualizzare un profilo o non consentire agli utenti non amministratori di scaricare determinati file. In questo modo, anche se un utente malintenzionato può manipolare i parametri per rivelare oggetti non pubblici, l'accesso non autorizzato viene rifiutato.

Molti consigliano di utilizzare valori di parametro difficili da indovinare in modo che l'iterazione attraverso di essi sia difficile se non addirittura impossibile come UUID o qualsiasi hash ad alta entropia. Sebbene sia importante farlo, ciò potrebbe aprire altri vettori di attacco quando questi ID vengono trapelati, come quello che è stato scoperto nell'app mobile di Uber

Questi ID vengono solitamente archiviati come "id display" che è ciò che l'applicazione espone all'utente, mentre internamente il back-end utilizza ancora l'id normale per interrogare il database, unire tabelle e altro.

 Questo cheatsheet OWASP, tuttavia, suggerisce un'altra soluzione: utilizzare hash salati per oscurare i riferimenti diretti.

Rilevamento IDOR 

Esistono diversi modi per rilevare una vulnerabilità IDOR, alcune tecniche sono migliori di altre. Nel corso del tempo apprendiamo che i test manuali o i test ibridi per tale vulnerabilità sono i più accurati rispetto agli strumenti fuzzing o automatizzati.

Sensore a becco d'anatra lanugine il test non è all'altezza del compito. È progettato per rilevare arresti anomali o malfunzionamenti quando un programma viene fornito con un input errato. Ma con IDOR, si vogliono rilevare i casi in cui l'input ben formato funziona ma non dovrebbe. Per le applicazioni che utilizzano pavoneggiarsi per definire le loro API, fuzz-anno-luce è stato sviluppato.
Esistono altri strumenti di rilevamento automatico del runtime là fuori, ma li abbiamo visti fallire ripetutamente, quindi non possiamo consigliarne uno specifico.

Avere la tua applicazione testata a fondo sulla penetrazione tramite un'attenta ispezione è ciò che abbiamo scoperto che funziona meglio. Un approccio ibrido come l'utilizzo Rutto Autorizza è ciò che usiamo nei nostri test di penetrazione che aiuta il tester.

Vulnerabilità comuni come IDOR sono importanti da testare, poiché lasciarle negli ambienti di produzione porta a gravi fughe di dati.

Salta al contenuto