Saltar al contenido

Un problema de seguridad muy serio

27 enero 2010

Estimado lector,

Este aviso es para que usted sepa que al leer este blog está sufriendo un grave problema para su seguridad. He configurado el mismo para que, a través de un ataque denominado KLM, se robe información personal de su PC y sea enviada al autor del blog.

Me gustaría que se detengan un segundo en este tramo a pensar. ¿Qué pensaron al leer este mensaje? Este pibe está loco, es un tarado, no sabe lo que dice. O peor aún: es un paranoico, está hablando de algo súper sofisticado que sólo él puede entender.

Bueno, resulta que ayer estaba charlando con un lector del blog (chateando para ser exactos) sobre el dilema de reportar o no reportar una vulnerabilidad (tema que ya he tocado en el post “El culpable equivocado” y creo que en alguno otro también). Digamos que la idea se resume muy sencilla: uno encuentra una vulnerabilidad en un sitio web, la reporta por correo electrónico al webmaster y no recibe respuesta. Digamos que esta es la situación clásica. Después hay otras alternativas más alegres (y mucho menos frecuentes) de recibir una respuesta agradeciendo (aunque después no hagan nada) y otras más tristes que incluyen insultos, acusaciones (también menos frecuentes). La respuesta preferida es el silencio.

Pero no me pregunten por qué, ayer me quedé pensando que solemos equivocarnos en la conclusión que sacamos, que suele ser: a nadie le importa la seguridad.

Pero ayer me hice una pregunta que creo que es más esencial. Cuando un programador web “promedio” recibe un correo describiendo una serie de vulnerabilidades en su aplicación, ¿lo entiende?

No, no estoy jodiendo, me pregunto en serio si un programador recibe un mail que dice que un individuo X pudo probar un SQL Injection, un XSS, ¿sabe de que le hablan? Es más, voy a ser más básico. Si el correo dice “su aplicación tiene un problema de seguridad”, ¿sabe qué puede significar un problema de seguridad? Estoy seguro que muchos programadores pensarán que es un problema de que la aplicación se cuelgue, o algo por el estilo.

Porque cuando uno aprende a ser programador, lo llenan de libros de usabilidad, pero de seguridad nada. Y yo les juro, queridos lectores, que me pregunto cuántos programadores web no entenderán un corno cuando les llega un correo de un “geek” con palabras raras. La mayoría pensarán que está loco el que escribió el correo. Lo mismo que parecía sobre mi mensaje del principio del post. Que carece de sentido.

Sí, ya se que hay gente a la que no le importa la seguridad. Lo sé. Son muchos. Pero también estoy seguro que en muchos casos hay una profunda y triste ignorancia. Lo bueno, es que la ignorancia es más fácil de competir que la estupidez, sólo hay que educar. Estoy seguro que si más programadores tendrían conocimientos básicos sobre seguridad en aplicaciones, darían más atención a este tipo de avisos.

Advertisement
13 comentarios dejar un →
  1. 27 enero 2010 5:32 PM

    Aunque el que lea el reporte no sepa qué es una vulnerabilidad desde el punto de vista técnico, como te dije ayer, NO puede no importarle cuando alguien menciona la palabra SEGURIDAD.

    Si además en el reporte se incluye información técnica y detallada, no puede ser pasado por alto por más que no entienda del tema. Me parece una demostración de incompetencia total.

    • 27 enero 2010 6:03 PM

      Jaja, por aquí llegaste. Lo que pasa es que las palabras no tienen un valor intrínseco, sino que depende de la connotación que uno le de. El valor que les das vos a la palabra seguridad es porque sabés ciertas cosas, que quizás otro no sepa.
      Ojo, no estoy defendiendo a los que ignoran los mensajes. Creo que hay miles de errores. Lo que digo es que muchas veces la ignorancia nos puede jugar muy en contra, y que leer un mensaje que no se entiende puede disparar diversas actitudes que no siempre tienen que ver con el valor que se le de a la seguridad.
      Abrazo y gracias por participar en el debate y por la idea. :-)

  2. 28 enero 2010 9:36 AM

    LOL me acuerdo del post sobre el bache de seguridad de Nokia ( http://unmundobinario.com/2009/12/22/la-seguridad-en-segundo-plano/ )

    Personalmente creo que las buenas pràcticas de seguridad deberìan ser independientes del presupuesto asignado para un proyecto; lamentablemente en el 95% de las empresas con las que trabajé no se verifica esa regla.

    Muchos consideran la seguridad como pequeños grupos dispensables de procesos y generalmente se equivocan en el momento de evaluar el nivel de dispensabilidad.
    Un bache de seguridad d tipo XSS mezclado con un bache tipo SQLI o blind SQLI pueden generar un tremendisimo problema de PXSS o sea Permanent Cross Site Scripting el cual a su vez te abre la puerta para que puedas utilizar comodamente BeEF y monitorear o controlar la navegaciòn de las personas que estàn visitando el sitio atacado.
    En este caso todos los esfuerzos del Server Admin han sido inutiles porque el ataque se propaga a nivel client por varios errores combinados de los programadores.

    Llegando a este punto Seba me atrevo a sostener que los programadores o empresas que no responden ante el aviso de una vulnerabilidad en su aplicaciòn son descaradamente IRRESPONSABLES, errores cometemos todos al escibir còdigo pero si te señalan el error y no le das bola sos casi complice de los que utilizan la vulnerbilidad con fines delictivos.

    Que opinas?

    • 28 enero 2010 10:01 AM

      Javier,

      Entiendo tu punto de vista. Mi idea no es desligar responsabilidades de todo tipo, y estoy convencido que el mundo está lleno de irresponsables y de gente que no le importa la seguridad.

      De todas formas, insisto, creo que muchas veces los sitios web de entidades que a priori pueden ser muy importantes están mantenidos por juniors, por gente con escasa experiencia, e insisto que el hecho de no entender un corno lo que diga el email de un geek puede ser atenuante y que probablemente mucha de la gente que ignora estos mensajes, si los entendiera les daría otra atención. Sin ir más lejos, el párrafo donde vos mencionás el un supuesto ataque estoy seguro que será inentendible para la mayoría de los mortales. :-)

      Abrazo.

    • 28 enero 2010 10:11 AM

      Vos sos mas bueno que yo ;) , parami no entender un mail de seguridad implica horas de investigaciòn. Si alguien me dice, “Che flaco tenes un problema de vulnerabilidad tipo sanguche de jamon y queso a la romana con contorno de fritas” antes que nada busco, si no encuentro pregunto, siempre tengo un par de chiflados geeks como vos o como Andrés Riancho que saben la historia y la elaboraciòn de los ataqu tipo sanguche de jamon y queso con pitigertkitic y chuculuketiriuc :)

      Lo importante es que uno tiene siempre posibilidades de aprender y cuando te llega un email con terminos extraños es casi una bendiciòn, como un empujoncito mas para conocer algo nuevo

    • 28 enero 2010 10:15 AM

      Entiendo tu postura y sí: yo soy más bueno.

      Esto me hace acordar a cuando Sheldon en TBBT no se quiere subir al auto de Penny por la luz de alerta. ¿Cuántas veces hicimos eso nosotros? ¿Cuántas veces nos fuimos de nuestra casa y nos acordamos que dejamos la ventana abierta? (es una metafora, jaja).

      Quiero decir, que en mi opinión cuando vos decís “para mi no entender un mail de seguridad implica horas de investigación”, creo que vos pensás eso en parte por tus conocimientos, y que con educación se puede lograr que alguien piense lo mismo.

      Insisto, no estoy hablando de todos los casos. Digo que en algunos casos puede pasar con más frecuencia de la que creemos. Los irresponsables están, lo se.

  3. 28 enero 2010 10:45 AM

    …… soy polemico

    me acuerdo la primera vez que me dijeron lo que era LFI (local file inclusion). Yo habìa, con mucho orgullo, terminado un script que incluìa archivos usando la query string (siglos atràs) conocìa PHP hacìa 4 meses. Cuando el capo me dijo “divertido pero mirà lo que pasa si……” y casi me desmayo heheheh. Entonces le dije “como hago para evitar esto” y ahì empezò la historia.

    Moraleja, creo que es una cuestiòn de actitud y no de instrucciòn/educaciòn como decis vos. Las personas que programan, aunque sean junior, tiene la instrucciòn/educaciòn necesaria para saltear ese obstacul o al màximo decirle a alguien “che, este me escribiò en chino…..quien entiende chino?”.
    Yo soy un azno total con el auto, si alguin por la calle me dice “flaco el ruidito que hace el motor no es para nada bueno”, al toque me voy hasta el mecanico, no solo por mi, sino porque capaz que explota y achura a los que esten cerca.

    ….soy polemico o soy pesado o ambos :)

    • 28 enero 2010 10:49 AM

      en seguridad( informatica o no)
      la desidia ES negligecia => irresponsbilidad

    • 28 enero 2010 10:59 AM

      Sos polémico, pesado y mal tipo con los programadores. ;-)

      Insisto, y ya seré breve: tu actitud es producto de tu formación y tus conocimientos (aunque no sean específicos en la materia).

  4. 28 enero 2010 11:49 AM

    :( me dijiste federico! buaaaaaaa!!! ahora no nos tomamos nada la birrita que charlamos por skype :P

  5. 28 enero 2010 12:42 PM

    Estoy de acuerdo con Javier, que sean juniors no justifica la falta de interés que demuestran (ser junior no implica ser incompetente :P , sólo tener poca experiencia/conocimientos) cuando les hablás de algo que no entienden y encima se los detallás y les decís que es un problema.

  6. 28 enero 2010 11:02 PM

    Si al desarrollador le llega un correo con palabras raras como bien dices, como “xss” “sql injection” etc etc, es muy probable que no lo tome en cuenta, sin embargo, en mi caso, lo que hago antes que todo es aclararle que tiene un problema de *seguridad* y luego de eso, le expongo las vulnerabilidades. La mayoria de las veces les envio un email simplemente diciendole que tiene agujeros de seguridad importantes y que si estan interesados en corregirlos o saber cuales son, que me respondan el correo pero jamas lo hacen. Paso exactamente lo mismo cuando ocurrio lo que pusiste como ejemplo (El culpable equivocado).

    saludos

  7. 6 febrero 2010 5:58 PM

    Recuerdo una excelente charla de Andrés Riancho sobre seguridad de aplicaciones web, en la que dijo en un momento, hablando de vulnerabilidades clásicas que existen hace mil y se siguen repitiendo, que no se puede culpar al programador por problemas de seguridad en su codificación, si no se lo capacita al respecto.

    Pero ¿se puede hablar de un programador promedio? En mi opinión, difícil. El programador puede ser desde un tipo adulto con 5 años de estudio formal universitario, hasta un adolescente hijo del dueño de un videoclub que aprendió lo mínimo para armarle algunos programas a papá.

    Enfrentémoslo, la idea que tenemos de lo que debe saber sobre seguridad un programador es una loca idea nuestra. El programador programa y si funciona, listo.

    Si el programador es universitario, ¿desde cuando se incluyen materias o conceptos suficientes para programación de aplicaciones web seguras? Porque incluso programadores universitarios de hace más de 10 años aprendieron HTML y demás cosas por su cuenta o en cursos, pero la parte de seguridad, sólo si les pareció interesante. Bueno y si no es universitario listo olvidate, todo depende de donde se mueva y si alguna vez le picó el bicho de saber que es XSS o SQLi y como evitarlo.

    Quiero decir que esto está así porque en Internet todo es libre, free speech, o sea una joda, una gran joda. No se necesita demostrar nada para montar algo en Internet, no te exigen nada.

    Cualquiera que pueda hacer funcionar un sitio Web lo pone en linea y listo. Sea el hijo del dueño del videoclub o sean los de Facebook. Ambos lleno de fallas de seguridad, uno por falta de capacitación, los otros por … lo mismo y que nadie le exige gastar tiempo y dinero en eso hasta que … hasta que amenace a su negocio. (los usuarios siempre víctimas, el único interés es que no se vayan.)

    Por ejemplo, se le exige más a un gasista para instalar un calefón o una estufa que a un programador. El gasista tiene que validar su idoneidad en el oficio, dar un exámen y sacar una licencia o matrícula que lo habilita para eso. Tiene un motivo, si hay un artefacto a gas mal instalado, alguien va a morir.

    Pero en Internet, no, (por ahora). Solo te van a robar de tu banco o infectar la PC (o las dos cosas.)

    ¿Querés pedirle más a un programador? Capacitalo, enseñale, exigí que lo evalúen antes de empezar a trabajar, considerá el presupuesto de tiempo y dinero que vas a dedicar a los aspectos de seguridad del diseño, desarrollo, prueba y puesta en marcha, test de penetración y demás.

    El único control que afecta a hacer algo en nombre de la programación segura por ahora en Internet es la legislación o normativa de cada país y que se hace cumplir (LOPD, entidades financieras, SOX, HIPAA o las normas de la industria como PCI).

    Y de la actitud de como responde cada programador al reportar una falla… no nos calentemos tanto, es el resultado de las circunstancias mencionadas y otras más por el estilo.

    Para finalizar este largo comentario una anécdota (o caso para el Guiness) una vez me mandaron, como agradecimiento a reportar un problema en un sitio web, una botella de un muy buen vino.

Deja un comentario

Fill in your details below or click an icon to log in:

Gravatar
Logo de WordPress.com

You are commenting using your WordPress.com account. Log Out / Cambiar )

Twitter picture

You are commenting using your Twitter account. Log Out / Cambiar )

Facebook photo

You are commenting using your Facebook account. Log Out / Cambiar )

Connecting to %s

Seguir

Get every new post delivered to your Inbox.