Contesto
Nel nostro team di sviluppo, dobbiamo costruire un componente. Questo componente è uno lato client completo scritto in Javascript.
Un'applicazione web client che desideri incorporare questo componente lo chiamerà come di seguito:
<iframe id="fullScreenIframe" src="http://my-server.com/component?param1=val1¶m2=..."></iframe>
Ilproblema
Unodeiparametriaccettatidalcomponenterendenervosialcunidinoi.Ilparametroorigin
vieneutilizzatopergenerareuncollegamentoperriportarel'utenteall'applicazioneWebclient.
Eccocomeilcomponentegestiscequestoparametro:
$(document).ready(function(){varorigin=urlParameters["origin"];// Dynamically built from the current document url
if(origin != undefined){
// The link to take the user back...
$("#welcomePage").attr("href",origin);
// Another link in the breadcrumb using the same 'origin' parameter
$("#simulationPage").attr("href", "index.html"+"?origin="+origin);
}
// ...
}
Ciò che gli abbiamo già detto
- Sito web di phishing
Anche se il parametro origin
viene passato a jQuery, qualsiasi sito Web può essere utilizzato in una truffa di phishing. Un utente può essere invitato a (ri) inserire le proprie credenziali pensando di trovarsi su un sito reale. Il buco qui sarà il componente.
- Lista bianca con valori validi
I valori validi di origin
possono essere archiviati in remoto in una whitelist. Il componente controllerebbe la whitelist prima di generare il collegamento. Un collegamento predefinito può essere generato se viene trovato un valore imprevisto.
Questi due argomenti non lo convincono. Vuole essere dimostrato che il parametro origin
può essere un buco di sicurezza. Quindi ragazzi, cosa gli direste?
A proposito, sto cercando un buon PoC che mostri la debolezza del parametro origin
.