functions such as reboot and factory reset ... why would a modern browser allow internal resources to be loaded from an external page
La maggior parte dei router odierni e altri dispositivi collegati in rete saranno amministrati tramite un'interfaccia web. Ciò significa che esiste un server Web con un'applicazione Web in esecuzione sul dispositivo e che l'utente sta utilizzando il browser per accedere a questo dispositivo allo stesso modo con come si utilizza qualsiasi altra pagina Web. Questa interfaccia Web offre quindi all'utente la possibilità di riavviare il sistema o simili facendo clic sui collegamenti specifici nell'interfaccia Web.
Ma per impostazione predefinita un browser consente molte interazioni tra pagine web di origine diversa. È possibile fare clic su un collegamento in una pagina Web per passare a un'altra pagina. Oppure puoi incorporare le immagini da una pagina in un'altra pagina, ecc. Il browser stesso non è a conoscenza di cosa sia una pagina interna e cosa sia una pagina esterna e quali pagine sono autorizzate a collegare / incorporare a un'altra e quali no. Pertanto, le applicazioni Web devono eseguire i controlli autonomamente, ovvero verificare se una richiesta al dispositivo è stata causata da un'origine diversa e in questo caso non eseguirla.
Quindi quello che era eccessivamente permissivo in questo caso specifico non era il browser, ma l'applicazione web in esecuzione sul router. Avrebbe dovuto controllare l'origine della richiesta e non eseguirla se era stata causata da qualche altro sito (richiesta di origine incrociata).
Sfortunatamente questo tipo di bug sono molto comuni. Tali dispositivi sono spesso sviluppati con un budget limitato e la sicurezza aggiunge solo costi ma non funzionalità. A parte questo, la maggior parte degli sviluppatori non è nemmeno consapevole del fatto che il web è per lo più permissivo dal design e che dovrebbero aggiungere le necessarie restrizioni al dispositivo.
Dal momento che tali bug sono così comuni sarebbe ovviamente bello se i browser includessero almeno una certa protezione per tali dispositivi guasti, come limitare l'accesso da siti esterni a quelli interni. Ma sfortunatamente ci sono casi d'uso reali per tali richieste di origine incrociata verso l'IP locale che poi si rompono. E poi ci sono problemi con DNS e proxy. E probabilmente più problemi. Per una discussione più approfondita vedi questo bug di Chromium dove discutono di questo problema da circa 2 anni .