Premetto: è un bug pericoloso, ma i fattori mitiganti sono talmente tanti che devi proprio scegliere di essere esposto a questo richiscio.
In primis basta ed avanza IIS 6, che fa un lavoro di canonicalization sull'URL, trasformando tutto nell'equivalente carattere corrispondente. E se proprio siete ancora antichi ed avete deciso di non usare il miglior web server che esiste sulla faccia del pianeta (cioè state ancora usando IIS 5 ;) allora è arrivato il momento di far gestire i vostri server da qualcuno che prende sul serio la sicurezza. Perchè non installare, in 4 anni o quasi che esiste, UrlScan, è volere farsi del male. Spesso i bug sono pericolosi perchè li possiamo solo subire, senza poter essere proattivi, tante altre volte sfruttano solo errori di configurazione o mancanza di cultura della sicurezza. Ogni tanto rileggo questo articolo, per certi versi un po' estremo, e vedo che nonostante siano passati quasi due anni, più che migliorare siamo sullo stazionario.
Eppure avrò sentito non so quante volte la brava gente del dev team di ASP.NET parlare di canonicalization ed ora ci sono caduti :(
La soluzione migliore, comunque, quella che uso e che consiglio di utilizzare è un sistema di autorizzazione fatto ad hoc. Ultimamente mi è presa la mania del pattern Front Controller ed in questo ambito è davvero semplice sfruttare direttamente un controllo degli accessi, senza appoggiarsi ad ASP.NET (che in fin dei conti fa la stessa identica cosa).
Va comunque bene sfruttare il meccanismo di ASP.NET, che è comodissimo, ma se nelle pagina imparassimo a fare User.IsInRole(ruolo), in maniera programmatica oltre che sfruttando l'HttpModule UrlAuthorization di ASP.NET, forse vivremmo tutti più felici. E' una ripetizione, certamente, ma la sicurezza è anche e soprattutto ripetere più e più volte gli stessi, a volte noiosi, controlli. Perchè il software lo scrivono gli esseri umani e finchè sarà così, gli errori ci saranno sempre. L'importante è farsi trovare pronti ed applicare le patch (ufficiali o auto prodotte) a mano. E cercare di pensare sempre oltre le apparenze. Scrivere codice è un'arte e come tale richiede un po' di fantasia, oltre che tantissima buona tecnica!
Per inserire un commento, devi avere un account.
Fai il login e torna a questa pagina, oppure registrati alla nostra community.
- Heartbleed Bug, OpenSSL, IIS e .NET Framework, il 9 aprile 2014 alle 18:51
- AppFabric Caching, SQL Server e cache in throttling, il 17 gennaio 2012 alle 08:54
- Il concetto di consumo in Windows Azure, il 6 febbraio 2010 alle 13:35
- Vulnerabilità per IIS 6.0 e punti e virgola, il 30 dicembre 2009 alle 19:37
- Warm-up dell'applicazione con IIS 7.5, il 15 ottobre 2009 alle 09:44
- IIS 7.0 in Windows Server 2008 R2, il 12 gennaio 2009 alle 10:16