La Seguridad por Oscuridad en Aplicaciones Web ¿Opiniones o conceptos?

¿Si ofuscas o escondes la firma digital de tu tecnología base estas cometiendo el pecado de la Seguridad por Oscuridad? Esa es una pregunta que me he hecho en las últimas semanas a raíz de varias opiniones que he leído en artículos en Internet, donde lo tratan con un marcado sentido peyorativo.

En esta entrada  quisiera dar mi criterio sobre el tema con cuatro ideas/análisis/reflexiones. Como todo ingeniero, escuché hablar de esto por primera vez cuando era estudiante y en ese momento y en la forma que me lo explicaron, me pareció la verdad más absoluta del universo. La práctica posterior me demostró que hay demasiados grises en el medio como para considerarlo una verdad de perogullo.

Primera Idea: La seguridad por oscuridad es un concepto confuso en el campo de la informática.

La criptografía, área del conocimiento humano, surgió desde que el hombre necesitó enviar un mensaje que solo pudiera entender AliceBob aunque Eva lo pudiera interceptar. Manifestaciones criptográficas han sido atribuidas a civilizaciones primarias como el Antiguo Egipto y Mesopotamia, cuando todavía no existían las máquinas computadoras. Esta mención histórica tiene el propósito de establecer que los problemas de la criptografía son antiguos y que por tanto, cuando ponemos la solución de un viejo problema en un contexto moderno pude causar contradicciones, pero continuemos.

En la criptografía queda muy  claro el  Principio de Kerckhoffs que reza así:

La efectividad del sistema criptográfico no debe depender de que su diseño permanezca en secreto.

Sin embargo, en el campo de la informática no he logrado encontrar una definición común de este concepto y como se aplica. Quizás la más aceptada y formalizada es la emitida por el NIST y dice así:

System security should not depend on the secrecy of the implementation or its. SCARFONE, Karen; JANSEN, Wayne; TRACY, Miles. Guide to general server security. NIST Special Publication, 2008, vol. 800, p. 123.

Que en el idioma de Castilla vendría siendo:

La seguridad de un sistema no debe depender del secreto de su implementación

Claro, lo entendemos, es más bonito decir “seguridad por oscuridad” que “el secreto de su implementación” o que te digan “hacker de sombrero blanco” en lugar de “especialista de seguridad informática” pero bueno, dejando las bromas a un lado, quiero que se fijen en esto:

El NIST no dice que si usted oculta algo está poniendo en riesgo a su sistema, simplemente dice que la seguridad del sistema no debe depender de mantener el secreto de como está constituido el sistema. Queda muy claro que son dos cosas totalmente diferentes.

Si conocen un autor que haya fundamentado el concepto de seguridad por oscuridad en informática, por favor, les agradecería mucho que me hagan llegar la información. Yo les aseguro que no he podido encontrar esa información, más allá de comentarios anecdóticos del tipo: alguien dijo algo y mencionó la palabra obscurity.

Segunda Idea: No importa cuánto escondas que lo que hay detrás, de todos modos te van a atacar.

Esto es cierto y creo que todos lo entendemos. No obstante, quiero adicionar que estos ataques industriales siguen determinados patrones, persiguen rutas específicas y buscan determinadas respuestas en la etapa de reconocimiento. No es lo mismo que la petición de un recursos te devuelva un código 403 (El recurso existe pero no cuentas con los permisos de acceso a él) a un código 404 (El recurso no existe).

Tercera idea: Einstein lo dijo: El tiempo es una dimensión inseparable de nuestra realidad. Úsalo a tu favor.

Bueno, quizás no con esas palabras exactas pero antes de que Einstein formulara en 1905 su teoría de la relatividad especial, se consideraba el tiempo como una magnitud de valor absoluto en todo el universo. Menciono esto porque a veces se olvida que en una defensa debe utilizarse también el factor tiempo. Voy a poner un ejemplo muy sencillo:

  • Pregunta: ¿Para qué voy a quitar el CHANGELOG.txt si al final van a descubrir que estoy usando Drupal?
    • Respuesta sin tener en cuenta el tiempo: Tienes razón, no vale la pena invertir ni un segundo de esfuerzo en eso.
    • Respuesta teniendo en cuenta el tiempo: Si eliminas los metadatos de tu tecnología del portal principal, obligarás al atacante a tratar de identificar tu tecnología a través de recursos conocidos como el CHANGELOG.txt. Si lo monitoreas, podrás darte cuenta de quien está interesado en conocer la versión de tu CMS y en dependencia del resto de las peticiones realizadas, podrás determinar si estás en presencia de un atacante o no y podrás tomar medidas para neutralizarlo si fuera necesario.

En mi opinión, este es el principal error que se comente cuando se confunde un sistema informático con un sistema criptográfico. Cuando usted lanza un mensaje encriptado al éter, usted no tiene ningun control sobre ese mensaje, no lo puede monitorear y debe suponer que al instante está siendo interceptado. El Delta T es igual a cero. Un sistema informático es diferente, usted sí puede monitorearlo, usted sí puede tomar medidas antes de que la fase de explotación comience. Ocultar u ofuscar determinados elementos sí puede ser utilizado a favor de una defensa en profundidad en un sistema informático.

Cuarta Idea: Todos los libros de Pentesting comienzan hablando de la fase de reconocimiento.

Si los libros de pentesting, intrusión y temas afines siempre comienzan diciendo que los atacantes primero buscan información de los sistemas para conocer sus vulnerabilidades y elaborar un modelo de amenazas. ¿No crees que sería bueno dificultar su accionar? Ya lo dijo el NIST cuando se refiere a los pasos necesarios para una instalación segura de software en el servidor:

For external-facing servers, reconfigure service banners not to report the server and OS type and version, if possible.

Conclusiones

Esconder u ofuscar la tecnología detrás de tus aplicaciones web no va a resolver los problemas de seguridad por si solos. Todo lo contrario, te va a dar una falsa sensación de seguridad, para nada recomendable. Si consideras que un sistema informático es igual que un sistema criptográfico y por tanto no hay utilidad en mantener algunas cosas ocultas, te recomiendo entonces que mantengas todos tus componentes permanentemente actualizados y que la suerte te acompañe de que no te hagan un ataque de día cero.

Si eres de los que cree y aplica la defensa en profundidad en tus aplicaciones web, de seguro ya ofuscas la tecnología base pero si no, te recomiendo que lo incorpores como una más de las capas de protección y sobre todo, recuerda monitorear las rutas que pueden ser de interés para los posibles atacantes.

Estas son mis razones por las que creo que vale la pena ocultar u ofuscar los elementos que pueden servir para identificar la tecnología base y que no te hagan un fingerprint. Sería muy útil e interesante conocer cual es tu opinión al respecto. Espero que te haya gustado la entrada y te pueda ayudar a fortalecer la seguridad en tus aplicaciones web.

S4lud0s y h4st4 el próx1m0 p0st!!!

Anuncios

3 comentarios en “La Seguridad por Oscuridad en Aplicaciones Web ¿Opiniones o conceptos?

  1. Pingback: Aplicando la OTG-AUTHZ-002 para evaluar las restricciones del esquema de autorización | Behique Digital

  2. Pingback: WPScan a fondo para webmaster | Behique Digital

  3. Pingback: ¿Que es un ataque de tipo “Parameter Tampering” y como puede evitarse? | Behique Digital

Responder

Introduce tus datos o haz clic en un icono para iniciar sesión:

Logo de WordPress.com

Estás comentando usando tu cuenta de WordPress.com. Cerrar sesión / Cambiar )

Imagen de Twitter

Estás comentando usando tu cuenta de Twitter. Cerrar sesión / Cambiar )

Foto de Facebook

Estás comentando usando tu cuenta de Facebook. Cerrar sesión / Cambiar )

Google+ photo

Estás comentando usando tu cuenta de Google+. Cerrar sesión / Cambiar )

Conectando a %s