Escalation orizzontale dei privilegi

Escalation orizzontale dei privilegi

Essere loggato non è la stessa cosa che essere autorizzato.

Cos’è Escalation orizzontale dei privilegi?

Il riferimento insicuro all'oggetto diretto vive nell'intervallo tra due controlli che sembrano uno solo. Il middleware di sessione dimostra chi sta chiamando. Niente chiede se questo chiamante può leggere questo record. Aprirai il tuo estratto conto su un'app di denaro, cambierai una cifra nell'ID e leggerai il saldo e le transazioni di uno sconosciuto con la tua sessione valida. Quindi aggiungi il confronto della proprietà che restituisce 403 quando il proprietario del record non è l'utente della sessione e scopri perché gli UUID casuali e i limiti di velocità sono approfonditi piuttosto che la correzione.

Cosa imparerai in Escalation orizzontale dei privilegi

Escalation orizzontale dei privilegi — Fasi della formazione

  1. Una normale visione del cliente

    Sablefin è un'app di denaro a cui chiunque può iscriversi. Bob lo ha fatto, con un'identità usa e getta, e ora è solo un cliente che guarda il proprio account come tutti gli altri. Apre il suo estratto conto mensile. Niente qui gli è vietato. È il suo account, i suoi dati, il suo login.

  2. Guarda la richiesta

    Prima di modificare qualsiasi cosa, Bob vuole vedere la richiesta effettuata dalla sua app per caricare questa pagina. Apre gli strumenti di rete del browser e ricarica la pagina, quindi la chiamata inviata dall'app per recuperare la sua dichiarazione viene catturata.

  3. L'endpoint e l'ID

    Gli strumenti di rete hanno catturato la chiamata. È un semplice GET per l'API delle istruzioni e l'intero indirizzo dell'istruzione di Bob è un singolo numero intero alla fine del percorso.

  4. Il segno che dimostra chi è

    La stessa richiesta catturata trasporta il token di sessione di Bob. Il server lo legge per confermare che il chiamante è un cliente registrato.

  5. Cambia una cifra

    Bob non toccherà mai più l'interfaccia dell'app. Modifica direttamente la richiesta catturata, eliminando l'ID di uno e inviandolo nuovamente con il proprio token ancora allegato. Se il server restituisce un'istruzione che non è sua, non ne controlla mai la proprietà: si fida dell'id nell'URL per decidere cosa restituire.

  6. Il conto di qualcun altro

    Nome diverso, numero di conto diverso, saldo diverso e token di Bob ancora sulla richiesta. Il server non aveva motivo di fornirlo e lo ha comunque servito. È sufficiente un ID adiacente per confermare il bug. Tutto ciò che va oltre questo punto è uno script di dieci righe che percorre lo spazio id durante la notte mentre Bob dorme.

  7. Verifica della conoscenza

    Hai appena visto un cliente registrato leggere l'estratto conto di un altro cliente modificando un numero. Blocca il perché.

  8. Arriva l'allerta

    Possiedi il servizio di contabilità clienti di Sablefin. Durante la notte, il rilevamento delle anomalie ha segnalato una sessione che estraeva una dichiarazione dopo l'altra da account che non erano i suoi. Le operazioni di sicurezza ti hanno inviato via email i dettagli.

  9. Apri il gestore

    Apri il gestore delle istruzioni e guarda come decide cosa restituire.

  10. Individua il difetto

    Il gestore recupera l'istruzione tramite l'id nell'URL e la restituisce. Tra quelle due righe l'assegno che dovrebbe esserci non c'è.

Copertura dei framework di sicurezza

OWASP Top 10

  • A01:2025 Broken Access Control
  • A01:2021 Broken Access Control

CWE

  • CWE-639 Authorization Bypass Through User-Controlled Key
  • CWE-862 Missing Authorization

CIS Controls

  • CIS 16 Application Software Security

NIST CSF

  • PR.AT-02 Individuals in specialized roles are provided with awareness and training so that they possess the knowledge and skills to perform relevant tasks with cybersecurity risks in mind
  • PR.PS Platform Security