mensuneo
03-feb-2006, 11:24
#3) Penetrar y parchear
Hay un viejo dicho que reza: "No puedes hacer una pulsera de seda a partir de la oreja de una cerda". Es verdad excepto si acabas usando tanta seda para parchear la oreja de la cerda que la reemplazas completamente. Desafortunadamente, cuando un software repleto de errores se corrige casi siempre se corrige añadiendo nuevo código, en lugar de quitar los antiguos trozos de la oreja de la cerda.
"Penetrar y parchear" es una idea estúpida que se podría expresar perfectamente en el lenguaje de programación BASIC:
10 GOSUB BUSCAR_AGUJEROS
20 IF AGUJERO_ENCONTRADO = FALSE THEN GOTO 50
30 GOSUB CORREGIR_AGUJERO
40 GOTO 10
50 GOSUB AUTOCONGRATULARSE
60 GOSUB SER_HACKEADO_EVENTUALMENTE
70 GOTO 10
En otras palabras, atacas tu firewall/software/sitioweb/lo que sea desde fuera, identificas un fallo en él, lo corriges y luego vuelves a buscar. Haciendo esto no mejoras la calidad del código a largo plazo aunque Dirección pueda agradecer la aparente brillantez de dicha estrategia a corto plazo. En otras palabras, el problema con "Penetrar y parchear" es que no hace mejorar la arquitectura de tu código/implementación/sistema; por el contrario lo único que hace es conseguir que sea más duro a base de probar y fallar. El artículo de Richard Fenyman's "Personal Observations on the Reliability of the Space Shuttle" era lectura obligada para todos los ingenieros de software que he contratado. Contenía ideas bien explicadas y profundizaba acerca de las expectaciones sobre dependencia del software y cómo se alcanzaba en sistemas complejos. En resumen, su significado para los programadores es: "Excepto en el caso de que tu sistema esté pensado para ser hackeado no debería ser hackeable."
"Penetrar y Parchear" está por todas partes y es la idea estúpida que lidera la moda actual (activa desde hace cerca de 10 años) de anuncio de vulnerabilidades y actualizaciones a través de parches. Según los "investigadores de vulnerabilidades" están ayudando a la comunidad encontrando agujeros de seguridad en el software y están corrigiéndolos antes de que los hackers los encuentren y los exploten. Según las empresas están haciendo lo correcto publicando lo antes posible parches para adelantarse a los hackers y a sus intentos de explotar dichos agujeros de seguridad. Ambos grupos están comportándose de forma estúpida ya que si las empresas estuvieran escribiendo código que estuviese diseñado para ser seguro y dependiente entonces el trabajo de investigación de vulnerabilidades sería una tarea tediosa y poco gratificante!
Permíteme decirlo de otra forma: si "Penetrar y Parchear" fuera efectivo ya habríamos dejado de encontrar agujeros de seguridad en Internet Explorer a estas alturas. ¿Cómo ha ido? ¿2 o 3 vulnerabilidades al mes durante 10 años? Si nos fijamos en aplicaciones diseñadas para trabajar en Internet podemos ver que hay un número de ellas que contínuamente tienen problemas de seguridad. Y a la vez, también hay un número de aplicaciones bien pensadas desde el principio como Qmail, Postfix, etc que han sido diseñadas de tal forma que el número de bugs que han aparecido para dichas aplicaciones ha sido ínfimo. La misma lógica se aplica a "tests de penetración". Conozco redes que han sido testeadas en busca de agujeros de seguridad y que han sido hackeadas y hechas trizas rutinariamente. Esto ocurre porque su arquitectura (o sus prácticas de seguridad) están tan fundamentalmente equivocado que ninguna cantidad de parches van a mantener a los hackers fuera. Tan solo quitan a Dirección y a los auditores de seguridad de encima de los administradores de redes.
También conozco redes para las que es literalmente inútil hacer tests de penetración ya que han sido diseñadas desde el principio para ser permeables solo en ciertas direcciones y solo para cierto tráfico destinado a unos servidores específicos configurados a propósito y que ejecutan software especialmente seguro. Lanzar tests de penetración para bugs de Apache contra un servidor que corre bajo un código personalizado en C ejecutado en una porción aislada de un sistema embedido es completamente inútil. Por esto, "Penetrar y Parchear" no tiene sentido ya que sabes que o bien vas a encontrar infinidad de bugs o bien sabes que es imposible encontrar nada comprensible.
Un claro síntoma de que tienes un caso de "Penetrar y Parchear" es cuando te das cuenta de que tu sistema es vulnerable al "bug de la semana". Eso quiere decir que te has puesto en una situación en la que cada vez que los hackers inventan un nuevo arma automáticamente eres vulnerable. ¿No suena estúpido? Tu software y tus sistemas deberían ser seguros por diseño y deberían haber sido diseñados para controlar fallos desde el principio.
#4) Hackear es Guay
Una de las mejoras formas de deshacerse de las cucarachas de tu cocina es esparcir migas de pan debajo de las encimeras, ¿verdad? ¡No! Es una idea estúpida. Una de las mejores formas de desalentar el hacking en Internet es darles a los hackers acciones, comprar los libros que escriben sobre exploits, tomar clases sobre "kung fu de hacking extremo" y pagarles decenas de miles de euros para hacer "tests de penetración" contra tus sistemas, ¿verdad? ¡No! "Hackear es guay" es una idea estúpida.
En la época en la que yo estaba aprendiendo a andar, Donn Parker investigó los aspectos de comportamiento de hackear y la seguridad informática. Nadie lo podría decir más claro que él: "La informática a distancia libera a los criminales de su requerimiento histórico de estar próximos a sus crímenes. El anonimato y la libertad de no enfrentarse directamente a su víctima han incrementado emocionalmente las posibilidades de cometer un crimen; por ejemplo, la víctima sólo fue un ordenador inanimado, no una persona real ni una empresa. Las personas tímidas podrían volverse criminales. La proliferación de sistemas y modos de proceder idénticos y la automatización de los negocios hicieron posible e incrementario las economías de automatizar crímenes y construir poderosas herramientas criminales y scripts con gran facilidad."
Oculto en la observación de Parker está el hecho de que hackear es un problema social. No es en absoluto un problema tecnológico. "Las personas tímidas podrían volverse criminales." Internet ha dado un espacio completamente nuevo a las personalidades poco sociables. La cuarta cosa más estúpida que los practicantes de seguridad informática pueden hacer es alentar a los hackers poniéndolos en un pedestal. Los medios de comunicación toman parte directamente en esta macabra idea al mostrar a los hackers como "jóvenes genios" o "brillantes tecnólogos" - por supuesto, si eres un periodista de la CNN, cualquiera que pueda instalar Linux entra dentro de la categoría de "brillante tecnólogo". Me resulta interesante comparar las reacciones de la sociedad hacia los hackers como "jóvenes genios" y contra los spammers como "artistas de baja categoría". En realidad me agrada ver cómo spammers, phishers y otros farsantes están adoptando a los hackers y a sus técnicas ya que de esta manera se invertirá la vista de la sociedad hacia los hackers mejor que de cualquier otra forma.
Si eres un practicante de seguridad, enseñarte a tí mismo cómo hackear forma parte también de la estúpida idea de "Hackear es Guay". Piénsalo: aprender cómo usar un montón de exploits y cómo usarlos significa que estás invirtiendo tiempo en aprender a usar un montón de herramientas y técnicas que van a estar desfasadas tan pronto como todo el mundo se haya protegido contra ese fallo en concreto. Significa que has hecho que una parte de tus conocimientos sean dependientes de "Penetrar y Parchear" y que vas a tener que formar parte de una carrera si no quieres que tus conocimientos queden obsoletos. ¿No sería más lógico aprender cómo diseñar sistemas seguros que estén construídos a prueba de hacks que aprender cómo identificar sistemas de seguridad estúpidos?
Mi predicción es que la idea de que "Hackear es Guay" estará muerta en los próximos 10 años. Me gusta fantasear con la idea de que será reemplazada por la idea opuesta "Una Buena Ingeniería es Guay" pero hasta el momento no tiene visos de ocurrir.
Hay un viejo dicho que reza: "No puedes hacer una pulsera de seda a partir de la oreja de una cerda". Es verdad excepto si acabas usando tanta seda para parchear la oreja de la cerda que la reemplazas completamente. Desafortunadamente, cuando un software repleto de errores se corrige casi siempre se corrige añadiendo nuevo código, en lugar de quitar los antiguos trozos de la oreja de la cerda.
"Penetrar y parchear" es una idea estúpida que se podría expresar perfectamente en el lenguaje de programación BASIC:
10 GOSUB BUSCAR_AGUJEROS
20 IF AGUJERO_ENCONTRADO = FALSE THEN GOTO 50
30 GOSUB CORREGIR_AGUJERO
40 GOTO 10
50 GOSUB AUTOCONGRATULARSE
60 GOSUB SER_HACKEADO_EVENTUALMENTE
70 GOTO 10
En otras palabras, atacas tu firewall/software/sitioweb/lo que sea desde fuera, identificas un fallo en él, lo corriges y luego vuelves a buscar. Haciendo esto no mejoras la calidad del código a largo plazo aunque Dirección pueda agradecer la aparente brillantez de dicha estrategia a corto plazo. En otras palabras, el problema con "Penetrar y parchear" es que no hace mejorar la arquitectura de tu código/implementación/sistema; por el contrario lo único que hace es conseguir que sea más duro a base de probar y fallar. El artículo de Richard Fenyman's "Personal Observations on the Reliability of the Space Shuttle" era lectura obligada para todos los ingenieros de software que he contratado. Contenía ideas bien explicadas y profundizaba acerca de las expectaciones sobre dependencia del software y cómo se alcanzaba en sistemas complejos. En resumen, su significado para los programadores es: "Excepto en el caso de que tu sistema esté pensado para ser hackeado no debería ser hackeable."
"Penetrar y Parchear" está por todas partes y es la idea estúpida que lidera la moda actual (activa desde hace cerca de 10 años) de anuncio de vulnerabilidades y actualizaciones a través de parches. Según los "investigadores de vulnerabilidades" están ayudando a la comunidad encontrando agujeros de seguridad en el software y están corrigiéndolos antes de que los hackers los encuentren y los exploten. Según las empresas están haciendo lo correcto publicando lo antes posible parches para adelantarse a los hackers y a sus intentos de explotar dichos agujeros de seguridad. Ambos grupos están comportándose de forma estúpida ya que si las empresas estuvieran escribiendo código que estuviese diseñado para ser seguro y dependiente entonces el trabajo de investigación de vulnerabilidades sería una tarea tediosa y poco gratificante!
Permíteme decirlo de otra forma: si "Penetrar y Parchear" fuera efectivo ya habríamos dejado de encontrar agujeros de seguridad en Internet Explorer a estas alturas. ¿Cómo ha ido? ¿2 o 3 vulnerabilidades al mes durante 10 años? Si nos fijamos en aplicaciones diseñadas para trabajar en Internet podemos ver que hay un número de ellas que contínuamente tienen problemas de seguridad. Y a la vez, también hay un número de aplicaciones bien pensadas desde el principio como Qmail, Postfix, etc que han sido diseñadas de tal forma que el número de bugs que han aparecido para dichas aplicaciones ha sido ínfimo. La misma lógica se aplica a "tests de penetración". Conozco redes que han sido testeadas en busca de agujeros de seguridad y que han sido hackeadas y hechas trizas rutinariamente. Esto ocurre porque su arquitectura (o sus prácticas de seguridad) están tan fundamentalmente equivocado que ninguna cantidad de parches van a mantener a los hackers fuera. Tan solo quitan a Dirección y a los auditores de seguridad de encima de los administradores de redes.
También conozco redes para las que es literalmente inútil hacer tests de penetración ya que han sido diseñadas desde el principio para ser permeables solo en ciertas direcciones y solo para cierto tráfico destinado a unos servidores específicos configurados a propósito y que ejecutan software especialmente seguro. Lanzar tests de penetración para bugs de Apache contra un servidor que corre bajo un código personalizado en C ejecutado en una porción aislada de un sistema embedido es completamente inútil. Por esto, "Penetrar y Parchear" no tiene sentido ya que sabes que o bien vas a encontrar infinidad de bugs o bien sabes que es imposible encontrar nada comprensible.
Un claro síntoma de que tienes un caso de "Penetrar y Parchear" es cuando te das cuenta de que tu sistema es vulnerable al "bug de la semana". Eso quiere decir que te has puesto en una situación en la que cada vez que los hackers inventan un nuevo arma automáticamente eres vulnerable. ¿No suena estúpido? Tu software y tus sistemas deberían ser seguros por diseño y deberían haber sido diseñados para controlar fallos desde el principio.
#4) Hackear es Guay
Una de las mejoras formas de deshacerse de las cucarachas de tu cocina es esparcir migas de pan debajo de las encimeras, ¿verdad? ¡No! Es una idea estúpida. Una de las mejores formas de desalentar el hacking en Internet es darles a los hackers acciones, comprar los libros que escriben sobre exploits, tomar clases sobre "kung fu de hacking extremo" y pagarles decenas de miles de euros para hacer "tests de penetración" contra tus sistemas, ¿verdad? ¡No! "Hackear es guay" es una idea estúpida.
En la época en la que yo estaba aprendiendo a andar, Donn Parker investigó los aspectos de comportamiento de hackear y la seguridad informática. Nadie lo podría decir más claro que él: "La informática a distancia libera a los criminales de su requerimiento histórico de estar próximos a sus crímenes. El anonimato y la libertad de no enfrentarse directamente a su víctima han incrementado emocionalmente las posibilidades de cometer un crimen; por ejemplo, la víctima sólo fue un ordenador inanimado, no una persona real ni una empresa. Las personas tímidas podrían volverse criminales. La proliferación de sistemas y modos de proceder idénticos y la automatización de los negocios hicieron posible e incrementario las economías de automatizar crímenes y construir poderosas herramientas criminales y scripts con gran facilidad."
Oculto en la observación de Parker está el hecho de que hackear es un problema social. No es en absoluto un problema tecnológico. "Las personas tímidas podrían volverse criminales." Internet ha dado un espacio completamente nuevo a las personalidades poco sociables. La cuarta cosa más estúpida que los practicantes de seguridad informática pueden hacer es alentar a los hackers poniéndolos en un pedestal. Los medios de comunicación toman parte directamente en esta macabra idea al mostrar a los hackers como "jóvenes genios" o "brillantes tecnólogos" - por supuesto, si eres un periodista de la CNN, cualquiera que pueda instalar Linux entra dentro de la categoría de "brillante tecnólogo". Me resulta interesante comparar las reacciones de la sociedad hacia los hackers como "jóvenes genios" y contra los spammers como "artistas de baja categoría". En realidad me agrada ver cómo spammers, phishers y otros farsantes están adoptando a los hackers y a sus técnicas ya que de esta manera se invertirá la vista de la sociedad hacia los hackers mejor que de cualquier otra forma.
Si eres un practicante de seguridad, enseñarte a tí mismo cómo hackear forma parte también de la estúpida idea de "Hackear es Guay". Piénsalo: aprender cómo usar un montón de exploits y cómo usarlos significa que estás invirtiendo tiempo en aprender a usar un montón de herramientas y técnicas que van a estar desfasadas tan pronto como todo el mundo se haya protegido contra ese fallo en concreto. Significa que has hecho que una parte de tus conocimientos sean dependientes de "Penetrar y Parchear" y que vas a tener que formar parte de una carrera si no quieres que tus conocimientos queden obsoletos. ¿No sería más lógico aprender cómo diseñar sistemas seguros que estén construídos a prueba de hacks que aprender cómo identificar sistemas de seguridad estúpidos?
Mi predicción es que la idea de que "Hackear es Guay" estará muerta en los próximos 10 años. Me gusta fantasear con la idea de que será reemplazada por la idea opuesta "Una Buena Ingeniería es Guay" pero hasta el momento no tiene visos de ocurrir.