L'API Github consente di effettuare richieste utilizzando CORS [ 1 ]. Le richieste CORS sono consentite solo da alcuni domini autorizzati:
Any domain that is registered as an OAuth Application is accepted.
Osservo quanto segue:
- La lista bianca dei domini è completamente arbitary. Chiunque può installare un'applicazione github oauth per qualsiasi dominio. [ 2 ], senza alcun tipo di verifica del dominio in atto. Ciò significa che cose come
localhost
,dropbox.com
sono già inserite nella whitelist. - La whitelist perde ogni senso per una persona con un intento malevolo, dal momento che può semplicemente falsificare le intestazioni Origin per qualsiasi app / dominio.
La Guida alla sicurezza HTML5 presenta i seguenti punti sulla sicurezza CORS: [ 3 ]
- Un utente malintenzionato potrebbe utilizzare Javascript con richieste CORS per far sì che gli attacchi sembrino provenire dalla vittima. (Punto 3 in Universal Allow).
- Una certa quantità di fiducia viene inserita nell'intestazione di origine.
There is a certain amount of trust placed on the Origin’ header. If the basis of this trust is not fully understood then it is possible to make mistakes. The Origin’ header only indicates that the request is from a particular domain, it does not guarantee this fact. The request could actually be from a Perl script which spoofs the Origin header.
- Una persona deve registrare un dominio (o utilizzare domini già autorizzati come dropbox.com) per far funzionare le richieste CORS. Ciò potrebbe ancora portare a uno scenario di attacco "pure html" .
- Tutte le API di github sono già disponibili tramite JSONP [ 4 ]. Anche non autenticato, il che significa che l'attacco "puro html" potrebbe avvenire in ogni caso.
La mia domanda è: Github guadagna qualcosa (da un punto di sicurezza) con la whitelisting dei domini (per l'accesso API) o è solo un senso di sicurezza mal riposto?