Il Javascript pericoloso nel file HTML locale può inviare file a Internet in Firefox / Chrome?

6
  1. Scarica example.html -file dal sito web casuale sul desktop del mio computer
  2. Apri example.html -file dal desktop con Google Chrome
  3. Ora Chrome esegue javascript da example.html -file che cerca nei file del computer da desktop o documenti -directory e li invia al sito Web o al server controllato dagli hacker

Può javascript cercare nei miei file dal desktop e inviarli all'attaccante? È possibile?

Se questo scenario è possibile, allora come bloccare questo attacco?

    
posta nptxzs 13.01.2018 - 00:19
fonte

2 risposte

6

Can javascript search through my files from desktop and send them to attacker?

Storicamente, sì , i browser hanno trattato lo schema file: come un'unica origine e l'attacco che descrivi sarebbe stato possibile.

Ma oggi no, Chrome e Firefox applicano criteri di origine identica che limitano l'accesso tra file locali. Tuttavia, Microsoft Edge non limita l'accesso in lettura tra i file locali, come ha notato @dandavis.

Cioè, quando apri un file HTML a file:///downloads/malicious.html in uno di questi browser, uno script in quel documento può non cercare liberamente nel file system e inviare file sensibili domestici. Tuttavia, il modo esatto in cui vengono implementate le SOP nello schema file: varia tra i browser e non è molto ben documentato - e non sembra esserci uno standard stabilito per questo.

Mozilla presenta alcuni dettagli (potenzialmente obsoleti) documentati qui :

Starting in Gecko 1.9 [Mozilla's browser engine], files are allowed to read only certain other files. Specifically, a file can read another file only if the parent directory of the originating file is an ancestor directory of the target file. Directories cannot be loaded this way, however.

For example, if you have a file foo.html which accesses another file bar.html and you have navigated to it from the file index.html, the load will succeed only if bar.html is either in the same directory as index.html or in a directory contained within the same directory as index.html.

Non sono riuscito a trovare alcuna documentazione pertinente per Chrome, ma l'accesso tra file sembra essere completamente bloccato. Ad esempio, Chrome non mi ha consentito di emettere una richiesta di origine incrociata per un URI file: :

Failed to load file:///tmp/malicious.html: Cross origin requests are only supported for protocol schemes: http, data, chrome, chrome-extension, https.

Anche provando ad avere un file: di accesso al documento del DOM di un iframe con lo stesso URI fallito:

Uncaught DOMException: Blocked a frame with origin "null" from accessing a cross-origin frame.

Detto questo, aprire localmente file HTML non attendibili è ancora più pericoloso che caricarli da un sito web. Anche se potrebbero non essere in grado di leggere tutti i file locali, potrebbero comunque utilizzare attacchi come XSSI ( inclusione di script tra siti ) per rendere potenzialmente vulnerabili le informazioni su altri file locali.

    
risposta data 13.01.2018 - 01:09
fonte
1

No, questo non è possibile e con una buona ragione.

Esegui JavaScript senza privilegi in un browser non ha alcuna API per cercare nel filesystem. Inoltre, le API come AJAX e l'accesso ai dati canvas non funzioneranno per i file sul filesystem, impedendo la lettura dei file su percorsi noti. Alcuni browser vanno oltre e non caricano neanche indirettamente nulla (HTML, immagini, CSS, ecc.) Da una directory più in alto del file stesso.

Alcuni browser potrebbero offrire un'API del filesystem per il contenuto privilegiato in un'estensione del browser (usata da Firefox) ma che non sarebbe accessibile ai contenuti web.

L'unico modo in cui potrebbe essere possibile è se il codice avesse un exploit del browser che è uscito dal runtime JavaScript e qualsiasi sandbox a livello di sistema operativo utilizzato dal browser. Un simile exploit probabilmente funzionerebbe altrettanto bene senza prima scaricarlo.

    
risposta data 13.01.2018 - 01:09
fonte

Leggi altre domande sui tag