El 0 day de asp.net… modo de evitarlo? y referencias
Buenas…
En la ekoparty de Argentina, Juliano Rizzo y Thai Duong, mostraron un 0 day sobre ASP.NET. A quitarse el sombrero.. donde hay talento lo hay… pero.. hay un pero y muy gordo. Me parece aberrante su decisión de hacerlo público en una conferencia sin avisar a la empresa en cuestión previamente y más el entregar algunos pen drives con el código fuente del exploit.
Volviendo al asunto… un 0 day es una vulnerabilidad nueva, nadie teóricamente sabe que existe y no se puede estar preparado para ella.
He estado leyendo bastante sobre cuál es la parte vulnerable y como se explota. Pero por ahora no hay demasiada documentación de este caso en concreto y mucho son conjeturas de expertos en seguridad y expertos en .NET
Por si os interesa leer sobre ello, personalmente las mejores lecturas que he encontrado sobre el tema son:
http://www.reddit.com/r/programming/comments/dfhnz/think_the_aspnet_padding_oracle_exploit_is_no_big/ (Importante leer los comentarios)
http://threatpost.com/en_us/blogs/new-crypto-attack-affects-millions-aspnet-apps-091310?page=1
http://visualstudiomagazine.com/articles/2010/09/14/aspnet-security-hack.aspx
http://usenix.org/events/woot10/tech/full_papers/Rizzo.pdf
Y la respuesta de MS a día 19/09
http://weblogs.asp.net/scottgu/archive/2010/09/18/important-asp-net-security-vulnerability.aspx
Hay que mirarlo con un poco de ojo crítico… muchas personas opinan sin saber, muchos intentan hacer astillas solo por ser Microsoft, etcétera… no le quito importancia en absoluto. Pero permanezco cauto hasta que encuentre un documento o el código fuente o algo más que opiniones e hilos de discusión.
En resumen… explota una vulnerabilidad relacionada con el algoritmo de cifrado que se utiliza en la autenticación por Forms. Va probando diferentes entradas y detectando la diferencia de respuesta de la aplicación para aprender y finalmente dar con una clave que da acceso.
Hay muchas teorías de que: Habilita Custom errors ya una misma página y ya está… ó eso pasa por no usar SSL ó que cambies de AES a 3DES ó que si tienes una red mínimamente securizada, va a parecer un DoS y se va a bloquear la IP… personalmente aún no tengo una opinión 100% formada.
Pero teniendo en cuenta que es un ataque Padding Oracle… se basa en aprender y recabar información en base a respuestas diferentes resultado de peticiones mal formadas. De modo que la recomendación que hace MS Corporación a través del blog de Scottgu, me parece más que razonable… misma página de error para todo, no demos pistas de nada hasta que esto se aclare un poco más y veamos dónde hay que tocar para arreglarlo.
Happy hacking!
~ds
PD –> Las actividades que más me han gustado y atraido de nuestro mundillo son las de la seguridad y el análisis postmortem. De hecho los ratos más satisfactorios desde que tengo un PC siempre los recuerdo en esos ámbitos :) En seguridad tenía la necesidad de tener que estar siempre al día de todo, tBBDD, fwrks, desarrollo, SO… y además algo de picardía para buscar huecos o hacer algo de ingeniería social. En análisis postmortem tienes que tener muy bien unidos todos los puntos para entender qué esta pasando. Conocer de verdad lo que tienes delante, pq el problema está ahi y sólo dependes de tu capacidad para encontrarlo. Ambas disciplinas me aportaron las mismas sensaciones… la realización cuando das en el clavo y encuentras el hueco, cuando funciona el rootkit o encuentras el problema en el dump.
Ese es el momento álgido y no otro. El momento en el que lo logras. Sonries porque eres un crack, avisas a quién ha hecho el juguete defectuoso y te vas a tomar algo con el resto de geeks con los que currabas en esto. Personalmente dudo que tirar 4 pendrives en una charla, cargarte el fin de semana de muchos admins/developers, dejar daños colaterales a algunos usuarios y ser el chulo de la conferencia cause el mismo subidón que haberlo logrado. IMHO estas acciónes muestran una absoluta falta de ética.