Trovare da soli il difetto più comune: il cliente che vede i dati di un altro (IDOR)

Si chiama IDOR, ha un nome che spaventa e un meccanismo banale: un numero nell'indirizzo che, cambiato, restituisce i dati di qualcun altro. Si verifica in dieci minuti.

8 minSviluppatori, CTO, chi mantiene un portale o un gestionale

Cosa portare a casa

Risposta breve

IDOR sta per Insecure Direct Object Reference: riferimento diretto e non protetto a un oggetto. In parole semplici: l'applicazione mostra un dato basandosi su un identificativo che compare nell'indirizzo o nella richiesta (per esempio ordine numero 1042), ma non verifica che chi lo chiede abbia davvero il diritto di vederlo. Cambiando quel numero, si ottengono i dati di un altro. È fra i difetti più diffusi nei portali clienti e nei gestionali, ed è verificabile senza strumenti speciali.

Un IDOR è un difetto di autorizzazione, non di autenticazione: l'utente è loggato correttamente, semplicemente arriva a dati che non sono suoi.

Nascondere il pulsante o il link non chiude la porta: se l'indirizzo funziona lo stesso, il difetto c'è.

Si verifica con due account di prova e una richiesta: se l'oggetto dell'uno è raggiungibile dalla sessione dell'altro, è confermato.

Va fatto solo sulla vostra applicazione e con autorizzazione scritta. La stessa prova su un sistema altrui è un reato.

Data Hub

CONSOO

Torna alle guide

La regola prima di tutto: solo sul vostro, solo con permesso

Cosa cercate, in una frase

State cercando un punto dell'applicazione in cui un dato viene servito in base a un identificativo che l'utente può vedere e modificare — un numero nell'indirizzo, un campo nascosto in un modulo, un valore in una richiesta — senza che il server controlli che quel dato appartenga davvero a chi lo chiede. Se lo trovate, avete trovato un IDOR.

Dove si annida più spesso
Punto dell'appEsempio di indirizzo sospetto
Dettaglio di un ordine/ordini/1042
Download di una fattura o di un documento/documenti/scarica?id=580
Profilo o dati anagrafici/utenti/317/profilo
Messaggio o ticket di assistenza/ticket/9021
Campo nascosto in un moduloun input di tipo hidden con dentro un id cliente

La regola pratica: ogni volta che vedete un numero che identifica una cosa vostra, chiedetevi cosa succede se al suo posto ci fosse il numero di una cosa di qualcun altro.

La verifica, passo per passo

  1. 01

    Create due account di prova

    Chiamateli Anna e Bruno. Devono essere due clienti distinti, come due utenti reali qualsiasi. Fate creare a ciascuno un dato proprio: un ordine, un documento, un ticket.

  2. 02

    Da Anna, annotate l'identificativo del suo oggetto

    Aprite il dettaglio dell'ordine di Anna e guardate l'indirizzo o la richiesta di rete (negli strumenti per sviluppatori del browser, scheda Rete). Segnate il numero che identifica quell'ordine, per esempio 1042.

  3. 03

    Passate nei panni di Bruno

    Fate il logout da Anna e il login come Bruno, in modo che il browser usi la sessione di Bruno. Bruno non deve avere nulla a che fare con l'ordine 1042.

  4. 04

    Da Bruno, chiedete l'oggetto di Anna

    Nella sessione di Bruno, provate a raggiungere lo stesso indirizzo dell'ordine 1042. Potete farlo dal browser, oppure ripetere la richiesta di rete cambiando solo il numero.

  5. 05

    Leggete l'esito

    Se il server risponde con un rifiuto (tipicamente un codice 403 «vietato» o 404 «non trovato»), il controllo di autorizzazione c'è e funziona. Se invece Bruno vede l'ordine di Anna — con codice 200 «ok» e i dati in chiaro — avete confermato un IDOR.

Gli errori che rendono la verifica inutile

  • Provare con lo stesso account: se Anna apre l'ordine di Anna, ovviamente funziona. Il difetto si vede solo passando da un utente all'altro.
  • Fermarsi al fatto che il link non è cliccabile: un pulsante nascosto non è un permesso. Se l'indirizzo digitato a mano funziona, la porta è aperta.
  • Controllare solo la pagina e non il download: spesso la pagina è protetta ma il link diretto al file no. Provate entrambi.
  • Dimenticare i campi nascosti dei moduli: un id cliente in un campo hidden è modificabile esattamente come un numero nell'indirizzo.

Se lo trovate: cosa dire a chi deve sistemarlo

La correzione non sta nel nascondere meglio l'identificativo, e nemmeno nel renderlo un codice lungo e casuale — che riduce la probabilità di indovinarlo ma non chiude la porta. La correzione è una sola: il server, a ogni richiesta, deve verificare che l'oggetto richiesto appartenga all'utente che lo chiede, prima di restituirlo. È un controllo di autorizzazione lato server, punto per punto.

Risorse collegate utili

Domande frequenti

Serve un programma speciale per fare questa verifica?

No. Bastano due account di prova e il browser, con gli strumenti per sviluppatori che ha già dentro (la scheda Rete). Chi lavora con le API può ripetere la richiesta con un qualsiasi strumento da riga di comando cambiando l'identificativo e la sessione. La verifica di base non richiede nulla oltre a questo.

Il mio identificativo è un codice lungo e casuale, sono al sicuro?

Siete più protetti dal tentativo di indovinarlo, ma non è la stessa cosa che essere al sicuro. Se quel codice trapela — in un log, in un indirizzo condiviso, in una vecchia email — e il server continua a non controllare la proprietà, chi ce l'ha accede lo stesso. Il codice casuale è una serratura migliore su una porta che dovrebbe comunque chiedere chi siete.

Cosa rischio a fare questa prova?

Sul vostro sistema, con account di prova, nulla: state solo leggendo dati che avete creato voi. Il rischio è farla fuori dal vostro perimetro: sistemi di terzi, o in produzione senza avvisare chi di dovere. Per questo la prima regola è che si esegue solo su ciò che è vostro o autorizzato per iscritto.

Ho trovato un IDOR: è grave?

Dipende da cosa espone. Un IDOR sui dati anagrafici o sui documenti dei clienti è serio, perché è una violazione di dati personali con i relativi obblighi. La gravità si misura con un metodo pubblico (CVSS), non a sensazione, e quel punteggio è ciò che aiuta a decidere se va sistemato oggi o si può programmare. Se ne avete trovato uno, è ragionevole far guardare l'app per intero.

Ne avete trovato uno, o non siete sicuri di aver guardato nei punti giusti? Un test di sicurezza applicativo controlla in modo sistematico tutti i punti in cui questo difetto si nasconde. Parliamone in una consulenza gratuita.

CONSOO trasforma idee su software, AI e integrazioni in un percorso tecnico chiaro per PMI.

  • 30 minuti, online
  • Nessun impegno
  • Analisi del tuo caso reale
  • Risposta entro 24 ore