Cosa vuol dire rappresentazione canonica e il suo potenziale vulnerabilità a siti web
-
19-09-2019 - |
Domanda
Ho cercato su google per un senso di rappresentazione canonica e alzato documenti che sono interamente troppo criptico. Qualcuno può fornire una rapida spiegazione di rappresentazione canonica e anche quali sono alcune vulnerabilità tipiche di siti web per attacchi di rappresentazione canonica?
Soluzione
Canonicalisation è il processo mediante il quale si prende un input, ad esempio un nome di file, o una stringa, e di trasformarlo in una rappresentazione standard.
Per esempio, se l'applicazione web consente solo l'accesso ai file in C: \ siti \ mydomain quindi tipicamente qualsiasi ingresso riferendosi a nomi di file è canonicalised ad essere un percorso fisico, diretto, piuttosto che uno che utilizza i percorsi relativi. Se si voleva aprire C: \ siti \ mydomain \ esempio \ example.txt un ingresso in quella funzione potrebbero essere ad esempio \ example.txt. E 'difficile capire se questo va al di fuori dei confini del tuo sito web, in modo che la funzione di canonicalizzazione avrebbe guardato la directory di applicazione e cambiare la situazione percorso relativo in un fisico, C: \ siti \ mydomain \ esempio \ example.txt. Questo è ovviamente più facile da controllare, come si fa semplicemente una stringa confrontare sul all'inizio del percorso del file.
Per gli ingressi HTML si prende ingressi come% 20 e li canonicalise da unencoding, quindi questo si trasformerebbe in uno spazio. Questa è una buona idea come il numero di modi diversi di codifica sono numerosi, canonicalizzazione significa che si desidera controllare la stringa decodificata solo, anziché cercare di coprire tutte le varianti di codifica.
In sostanza si sta prendendo in ingresso, che è logicamente equivalente e convertirli in un modulo standard che è quindi possibile agire.
Altri suggerimenti
La seguente spiegazione è dal "Application Security e Sviluppo STIG" trovato qui :
3.11 rappresentazione canonica sorgono problemi rappresentazione canonica quando il nome di una risorsa è utilizzata per Resource Access Control. Ci sono più metodi di rappresentazione nomi delle risorse su un sistema informatico. Una domanda basandosi unicamente su una nome della risorsa per controllare l'accesso può erroneamente effettuare un controllo di accesso decisione se viene specificato il nome in un formato non riconosciuto.
Ad esempio, in Windows, può essere notepad.exe rappresentato dal seguente file e combinazioni di nomi percorso:
C: \ Windows \ System32 \ notepad.exe
% SystemRoot% \ System32 \ notepad.exe
\ \ C:? \ Windows \ System32 \ notepad.exe
\ Host \ c $ \ Windows \ system32 \ notepad.exe
Una domanda di tentare di limitare l'accesso al file basata unicamente sulla percorso e il nome in modo improprio può concedere o negare l'accesso. Lo stesso problema può rivolgersi ad altre risorse nominate un sistema, come ad esempio un hardware e soft-link, URL, tubo, condividere, directory, nome del dispositivo, o all'interno dei dati file, se la codifica alternate meccanismi sono utilizzati con i dati.
Il seguenti elementi possono indicare il potenziale problemi di rappresentazione canonica in un applicazione:
• Controllo accessi decisioni sulla base di un nome di risorsa.
• La mancata per ridurre un nome risorsa la sua forma canonica prima dell'uso.
In Per ridurre al minimo canonica problemi di rappresentazione della applicazione, i seguenti procedure:
• Non fare affidamento esclusivamente su i nomi delle risorse per controllare l'accesso.
• Se utilizzando i nomi delle risorse per il controllo accesso, convalidare i nomi per garantire essi sono nel formato corretto; rifiutare tutti i nomi non montare la nota buona criteri.
• Utilizzo del sistema operativo basato su meccanismi di controllo di accesso come permessi e ACL.
Canonicalisation significa ridurre i dati ricevuti alla sua forma più semplice, è utilizzato per la convalida di ingresso.
Canonical (credo) significa che l'ingresso della console è "comportamento tipico". Non canonica significa che l'ingresso è non standard e richiede conoscenze specifiche, come ad esempio il comportamento di ingresso di "vi" su linux.