Técnicas de SQL Injection: Un Repaso

Esta madrugada, mientras revisaba un informe de test de intrusión que horas mas tarde pasaría a estar en manos de un cliente ansioso, no pude evitar detenerme por demás en uno de los hallazgos de los que allí se encontraban plasmados. Un SQL Injection.

Habían pasado algunos meses desde la ultima vez que toco reportar un SQLi, y este en particular, llamaba mi atención debido a la simpleza con la que había podido ser aprovechado. Como solemos decir… “De manual”.

Por algún motivo, quizás debido al modo en que esta vulnerabilidad era explicada paso a paso en el informe que tenia entre manos, se hizo vivo en mí el recuerdo de un viejo paper que había escrito años atrás.

Decidí llamar “Técnicas de SQL Injection: Un Repaso”, a un documento en el que plasmaba el resultado de un conjunto de pruebas, en las que había estado trabajando durante varias semanas, con el objeto de compartir inicialmente con los miembros del grupo de investigación que nos reunía por aquel entonces, mi propia experiencia con lo que parecía ser una nueva técnica de ataque a aplicaciones web.

Sorprendentemente, por estos días se cumplen 18 años desde su publicación. Ni más ni menos que el tiempo que toma a un niño, alcanzar su mayoría de edad.

En tiempo pasado

Era el año 2002 y por esos días devoraba toda info a la que tuviera acceso sobre seguridad en aplicaciones web y bases de datos, especialmente los papers de David Litchfield y Chris Anley de NGS Software, Cesar Cerrudo , por aquel entonces parte del equipo de “Application Security Inc” y Pete Finnigan.

Es así, como a la luz de sus investigaciones retratadas en papers de la talla de:

me propuse llevar a la práctica estas técnicas y registrar la experiencia de su aplicación, en un documento que escrito en nuestro propio idioma, pudiera ser de utilidad para la comunidad de seguridad hispanoparlante, que por aquel entonces carecía de material de este tipo en español.

Un poco de historia

¡Qué tiempos aquellos! Recuerdo que la misma semana que este paper fuera publicado, hacia su aparición el boletín MS02-039 describiendo un “Buffer Overruns in SQL Server 2000 Resolution Service”, el cual se creía podía permitir la ejecución de código remoto.

Aunque aún no lo sabíamos, unos meses después, esta vulnerabilidad seria aprovechada por el gusano Slammer para volverse una pesadilla. Dicha historia se encuentra retratada de forma excepcional en un post escrito por David y publicado en “Threatpost.com” en 2010, bajo el título: “The Inside Story of SQL Slammer”.

Ni hablar del documento insignia de OWASP, ya que la primera edición del “OWASP Top Ten” , no vería la luz sino hasta un año después, misma suerte que correría la versión 2.1 del OSSTMM que aparecería en Agosto del 2003 o el marco de trabajo ISSAF, el cual no estaría terminado sino hasta inicios del año 2005.

¿Qué hicimos mal?

¿No es curioso que casi 20 años después, nuestros reportes de pentest aún incluyan este tipo de vulnerabilidades? Estamos hablando de validación de entrada insuficiente…

Al día de hoy, “SQL Injection” sigue compartiendo junto a otros issues de características similares, el primer lugar en la ultima versión del Top Ten de OWASP.

¿A caso los artículos y conferencias sobre los que hemos trabajado todos estos años, no han sido suficientes para concientizar acerca de algo tan básico como los problemas de validación de entradas? ¿Será que en la era de las redes sociales, somos incapaces de encontrar el modo adecuado de conectar con el publico correcto? ¿habremos sido malos comunicadores? o tan solo deberíamos aceptar que el mundo no ve los defectos en el software como algo tan importante.

En resumen

Podría seguir con la autocrítica, pero prefiero dejar de lado los aspectos negativos y aprovechar este espacio para agradecer a cada una de las personas que a lo largo de estos años, se han acercado para contarme el modo en que aquel paper de sql injection, aún con todos sus defectos, los inspiró de algún modo a sumergirse en el apasionante mundo de la seguridad en aplicaciones web.

Es por ello que, dieciocho años después y en coincidencia con el hallazgo de un nuevo “SQLi de manual”, quizás sea un buen momento para celebrar la mayoría de edad de “Técnicas de SQL Injection: Un Repaso”, compartiéndolo una vez más.