Canonicalization, questo sconosciuto, anche per il dev team di ASP.NET

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!

Nella stessa categoria

Commenti
rickyvr scrive:
Re: Canonicalization, questo sconosciuto, anche per il dev team di ASP.NET

Ho visto che ne hanno parlato un po' tutti in giro, ognuno dicendo la sua... Non lo faccio anch'io perchè sarebbe un ripetere quello che hai detto tu e che hanno detto gli altri.

Voglio solamente sottolineare, a mio avviso, l'importanza di scrivere codice ed inserire meccanismi ridondanti nelle applicazioni quando si parla di sicurezza. Credo che la soluzione per fare sonni relativamente tranquilli, al di là dell'installazione delle patch di sicurezza, sia quella (come dici tu) di pensare ben oltre le apparenze.

Un codice robusto è un codice che può dare buone garanzie sulla sicurezza. Pensare in grande aiuta a realizzare applicazioni robuste e sicure. Se non altro, si rende la vita difficile a chi cerca di sfruttare eventuali exploit e/o bachi.

Ciao, Ricky.
03/10/2004 ore 23.43 | 8 risposte
andrewz scrive:
Re: Canonicalization, questo sconosciuto, anche per il dev team di ASP.NET

Sono pienamente d'accordo sia con Daniele sia con rickyvr. Ma voglio solo aggiungere un mio pensiero: ma non è allarmismo esagerato quello che si legge tra i vari sviluppatori nei vari blog e/o pagine in rete?

Mi spiego meglio: ho dato un'occhiata in giro ai vari siti e server che ospitano pagine asp.net e che utilizzano l'autenticazione Forms. Non ne ho trovato uno che venisse bucato da quel trucco del "\" o "%5C". E sto parlando anche di server con servizi di hosting economici - mi piacerebbe sapere se anche Aruba è protetto, purtroppo non ho potuto accertarmene. Ma forse la mia è stata solo fortuna!

Che forse il problema di sicurezza del framework sia protetto da altre strutture di sicurezza dagli amministratori dei server che, senza tanti problemi, per la sicurezza interna, avevano già installato da tempo i vari tool come UrlScan?

Che forse il tanto conclamato bug esista nella maggioranza dei casi solo sui computer degli sviluppatori?
04/10/2004 ore 10.12 | 1 risposta
lucascat scrive:
Re: Canonicalization, questo sconosciuto, anche per il dev team di ASP.NET

Siamo sicuri che IIS 6.0 è immune?

Sul sito Microsoft è riportato:

Software Affected
? ASP.NET running on Windows 2000
? ASP.NET running on Windows 2000 Server
? ASP.NET running on Windows XP Professional
? ASP.NET running on Windows Server 2003

Come faccio a testare la mia applicazione per questa vulnerabilità?

Qualcuno ha provato ad installare il
Microsoft ASP.NET ValidatePath Module?

Funziona?
Ciao.
09/10/2004 ore 19.31 | 1 risposta
»»»» Daniele Bochicchio scrive:
Re: Canonicalization, questo sconosciuto, anche per il dev team di ASP.NET

lucascat ha scritto:
Siamo sicuri che IIS 6.0 è immune?


quasi quasi mi offendo per questa domanda
btw, ASP.NET è soggetto a questo problema sulle piattaforme elencate, perchè ASP.NET non è detto che giri in IIS (vedi cassini). se però usi IIS 6 o IIS 5 + UrlScan, allora sei immune perchè ad ASP.NET non arriva l'URL "corretto", bloccato da IIS 6 o UrlScan.

Come faccio a testare la mia applicazione per questa vulnerabilità?


fai una pagina protetta con Forms Auth e ci metti \\ nel Path, con Mozilla. se te la lascia vedere, allora non sei immune.

Qualcuno ha provato ad installare il
Microsoft ASP.NET ValidatePath Module?


non contiene nient'altro che il codice che è menzionato nella pagina, compilato e con un installer che lo registra in GAC e modifica il machine.config.
11/10/2004 ore 9.30 | 1 risposta
lucascat scrive:
Re: Canonicalization, questo sconosciuto, anche per il dev team di ASP.NET

Come faccio a testare la mia applicazione per questa vulnerabilità?


fai una pagina protetta con Forms Auth e ci metti \\ nel Path, con Mozilla. se te la lascia vedere, allora non sei immune.


Non ho capito. Dove devo mettere \\ ?
11/10/2004 ore 17.58 | 1 risposta
»»»» Daniele Bochicchio scrive:
Re: Canonicalization, questo sconosciuto, anche per il dev team di ASP.NET

nell'url.
anzichè usare http://sito/path/pagina.aspx, usa http://sito/path\\pagina.aspx.
11/10/2004 ore 18.17 | 1 risposta
»»»» Daniele Bochicchio scrive:
Re: Canonicalization, questo sconosciuto, anche per il dev team di ASP.NET

se usi IIS 6 o IIS 5 + UrlScan saresti dovuto stare tranquillo a priori
12/10/2004 ore 9.09 | 1 risposta

Aggiungi un nuovo commento »»»
Per inserire un commento, devi registrarti alla nostra community.

© 1998-2008 - ASP.NET, Media Center e tecnologia - Il blog di Daniele Bochicchio

TagCloud
.NET Framework, .NET Framework 2.0, .NET Framework 3.0, .NET Framework 3.5, 10annidi, ADO.NET, AJAX, Architettura, ASP, ASP.NET, ASP.NET 2.0, ASP.NET 2.0 per tutti, ASP.NET 3.5, ASP.NET 3.5 per tutti, ASP.NET AJAX, ASP.NET MVC, ASPItalia.com, Cache, CSS, Custom Control, Database, Databinding, Datagrid, Deployment, HttpHandler, HttpModule, HttpRuntime, IIS, ISAPI, Javascript, LINQ, LINQ to SQL, LogParser, Master Pages, Media Center, Membership API, Microsoft Expression, Mono, MySQL, Object Oriented Programming, Off Topic, Office, Pattern, Profile API, Provider Model, Report, Roles API, Security, Silverlight, Silverlight 2.0, SQL Server, User Control, Visual Studio, Web Service, Windows CardSpace, Windows Client, Windows Communication Foundation, Windows Live Services, Windows Mobile, Windows Presentation Foundation, Windows Server, Windows Vista, WinFS, XAML, XBox 360, XHTML, XML, XSLT
BLOG INFO
  • Post: 846
  • Commenti: 365
  • TrackBacks: 185
  • Feed blog e contenuti tecnici: RSS
  • Feed blog: RSS Atom OPML

MVP
CATEGORIE
I PIÙ LETTI DEL MESE
IN EVIDENZA