Considera il seguente scenario:
Alice desidera visitare il sito Web di Victor mentre era al lavoro presso Initech. Il sito Web di Victor è ospitato su un sistema di nomi di dominio alternativo a cui il DNS di Initech non fa il peer. Eve (che desidera facilitare lo scambio di conoscenza libero e aperto) ospita una pagina web contenente JS che esegue la risoluzione del nome di dominio e il mascheramento dell'URL in modo che quando Alice visita victor.eve.tld
un iFrame carica victor.alt
in base all'indirizzo IP statico che Victor ha designato nel record victor.alt
DNS.
Per mascherare il nome di dominio senza interruzioni, Victor deve inserire l'autorizzazione CORS nelle intestazioni dal suo sito per ballare attorno alla politica di origine singola. Tuttavia, Victor sospetta che Michael stia cercando di hackerare il server Web di Eve e di creare JS dannoso nella pagina web di Eve (il genitore dell'iFrame). Victor vuole verificare che Michael non abbia modificato il contenuto del frame principale prima di abilitare l'autorizzazione CORS.
Victor ha una copia del sito di Eve e può includere gli hash del materiale senza contattare il server di Eve, quindi se ha accesso in lettura, può abbinare il contenuto. Micheal non ha accesso ai server Initech e le connessioni da entrambi i siti sono protette tramite TLS: supponiamo che Micheal non possa effettuare un attacco man-in-the-middle.
È possibile che iFrame verifichi il contenuto della finestra genitore:
- utilizzando la qualsiasi configurazione CORS?
- consentendo l'accesso in sola lettura?
- limitando l'accesso della finestra genitore al contenuto di iFrame?
Esistono precedenti discussioni riguardanti verifica JS lato client da una cache non affidabile (con una connessione trusted, senza MtM) ma questa situazione richiede la convalida dal materiale che viene recuperato. Ci sono anche numerosi post riguardanti l'uso di codice iFrames to sandbox non affidabile . Tuttavia, le domande di sandboxing di iFrame tendono a ruotare attorno a una finestra genitore che si fida del bambino, così come la maggior parte della letteratura esterna sull'argomento (frame-busting, ecc.).
Inoltre, il server di Eve non può partecipare attivamente al processo: può solo servire file statici HTML, JS e CSS. Victor non può fornire informazioni tramite il server di Eve, può solo interagire con i propri server di terze parti.