"Son las 3 de la madrugada de un domingo y el administrador de seguridad está durmiendo plácidamente en su cama, después de varias semanas de incidentes que resolver en la empresa, una carga monstruosa de trabajo y por qué no #firstworldproblems con usuarios y clientes variopintos (como por ejemplo instalar Windows en una Surface). Mientras tanto, una bomba lógica (una hermosa pieza de ingeniería hecha en lenguaje ensamblador) cuidadosamente posicionada por un hacker, en pijama disfrutando de una bebida con taurina desde el sótano de su casa, queda activada de acuerdo al timer previamente configurado para comenzar sus atrocidades nocturnas y se prepara para actuar, detrás de todas las defensas puestas en el perímetro de la topología del admin. Entonces cuando el bicho le pica a una de sus máquinas, de manera automática y precisa, el correlacionador de eventos dispara una alarma que le notifica instantáneamente al administrador que hay un ataque en progreso: "Warning! network compromised, details available". En solo unos minutos y a pesar de lo adormilado que aún se encuentra, el administrador se conecta rápidamente, y de forma segura a su red por medio de una VPN con un cifrado de curva elíptica, accesa a su sistema de intrusión y a su consola central de antimalware, y obtiene un panorama completo del ataque; su origen, su payload, los sistemas infectados... y hasta el nombre/apellidos de la bomba lógica encallada. Algunas configuraciones más tarde, el intento de penetración es bloqueado, gracias a su detector de intrusos y a su antimalware, que incluso le dan el lujo de afirmarle "The attack was uneffective, malicious insider identified. Tango down" y hasta ha realizado algunas llamadas telefónicas a su departamento legal, para que comiencen el rastreo del hacker en cuestión y lo lleven a responder ante la justicia. Vuelve a la cama media hora más tarde con el escenario controlado y resuelto...".
(El chulo de la Seguridad: Knock-out a un malware y a su padre; País de nunca jamás, Ciudad de México [digo de nunca jamás]; Marzo de 2016),
En 1905, Albert Einstein publicó una impactante explicación sobre el movimiento browniano -el movimiento arbitrario de partículas- comparándolo con la clase de movimiento que se observaría en el caminar de un borracho. El andar del borracho: cómo el azar gobierna nuestras vidas es un libro que en realidad me fascinó bastante y justamente adaptó esa comparación en el título. En sus páginas, el autor analiza situaciones en principio azarosas que ponen a prueba nuestro lado más matemático, (aunque ciertamente no intentemos siquiera sacarlo a flote) y cómo al cerebro le cuesta mucho distinguir eventos de esa índole y sobre la idea generalmente equívoca que tenemos sobre varios conceptos de la probabilidad (como la probabilidad condicionada). Nuestra mente intuitiva está diseñada para reconocer patrones (incluso donde no existen) y normalmente es engañada por los hechos aleatorios.
Ahora bien, ¿qué tiene que ver el escenario utópico (pero muy bello) descrito al principio con los pasos de un borracho a medianoche? Pues considerándome un aficionado de la Seguridad Informática y la Tecnología, por supuesto tiene que ver con algo de ello. Sin embargo, quisiera hacer notar el grado de importancia que exige para los usuarios lo que en las siguientes líneas trataré de describir (aunque contenga lenguaje bastante técnico), y sobretodo para los colegas en la materia que, como yo, a diario trabajan con herramientas de detección de intrusos, antivirus, firewalls, etc. y somos objeto de revisar hasta el cansancio logs y alertas con probables ataques o virus acechando continuamente nuestra infraestructura.
Como todo lo que construimos es inequívocamente hecho a imagen y semejanza de lo visualizado por el cerebro, lastimosamente los sistemas de seguridad que nos protegen de amenazas cibernéticas no nos pueden proveer de esa nombrada seguridad al 100%. Más o menos así es la línea que seguimos, ¿no es cierto?.
Resulta que ese tipo de aseveraciones, (que muchas veces las escuchamos sobre un cuadrilátero de marketing y ventas de un producto X o Y tratando de justificar su falta de eficacia) sobre jamás poder llegar al 100% de un modelo/producto de seguridad caen principalmente en una falacia lógica llamada argumento Ad Ignorantiam, la cual alega la incapacidad de presentar pruebas convincentes de lo contrario. Normalmente cuando se habla tajantemente de que un sistema no presenta una seguridad al 100% no se basa el argumento en pruebas rigurosas, sino en meras especulaciones y falta de conocimiento. Es decir, a pesar de que llegar al 100% de seguridad en un sistema es francamente muy muy difícil, se comete vulgarmente esta falacia porque se infiere la verdad (o falsedad según la perspectiva) de esa oración, basándose en la total ignorancia de la misma.
Los dueños de un producto o una marca de Antivirus, Detector de Intrusos, un Firewall, o cualquier producto que ayude a visualizar y eliminar malware basan su efectividad en dos cuestiones clave: el manejo de los falsos positivos y la categorización estadística de los falsos negativos, que constituyen buena parte de lo que ellos llaman un acercamiento razonable hacia el 100% de Seguridad. Los falsos positivos suceden cuando por ejemplo, y pasa muy comunmente, queremos descargarnos un jueguito de Internet, pero nuestro antivirus nos dice que es una aplicación/ataque malicioso y bloquea la descarga, aún cuando en realidad no lo sea. Igual que el cuentito de Pedro y el Lobo. Por otro lado, los falsos negativos son los ataques que si son ataques claramente, pero simplemente nuestro antivirus no puede identificarlos. En estos dos componentes, como mencioné, se basa el desempeño de la mayoría de herramientas de seguridad. Y vamos a ver que casi siempre los vendedores de dichas plataformas aseguran que su porcentaje de falsos positivos es extremadamente bajo, y por supuesto su porcentaje de falsos negativos es todavía más. Incluso se atreven a dar números que rondan entre el 95% - 99% de detección fiable vs 0.1% < de alarmas negativas.
Desafortunadamente estas cuestiones, claves sin duda alguna, no son suficientes para comprender la efectividad y el desempeño del sistema de forma completa. Lo que un usuario realmente quiere saber, (o al menos lo que debería saber) es: de todos los reportes que recibe sobre "ataques", es decir de todos los eventos sucedidos en una red, cuáles representan verdaderos ataques que el antivirus, firewall, o el sistema utilizado está viendo; su porcentaje real. Esta pregunta no puede ser respondida normalmente por los datasheets provistos de los productos, ni por presentaciones promocionales o publicaciones de casos específicos centrados únicamente en un malware o una muestra de datos en particular.
La paradoja del falso positivo
Supongan que se hacen un análisis de sangre para comprobar si tienen una enfermedad mortal. La prueba tiene un 99% de confiabilidad, es decir, un 1% de los resultados del test son incorrectos, mostrando positivo cuando el paciente no tiene la enfermedad -falso positivo- o negativo cuando están enfermos -falso negativo- . Se sabe que uno de cada 10.000 sufre esta enfermedad. Entonces se hacen el test y resultado sale... positivo.
¿Qué les dirá el médico entonces?
a) Le tengo malas noticias.
b) No se preocupe, el riesgo sigue siendo muy bajo.
La respuesta correcta es b), y esta es la explicación: “99% de confiabilidad” significa que si pasan 10.000 tests, un 1% de ellos, 100 resultados, estarán equivocados. Los resultados incorrectos lo más probable es que sean falsos positivos, ya que la enfermedad es bastante rara -solo uno de cada 10.000 la padecen, y habrá en total solo un caso positivo por cada 10.000 personas. Así que, por cada 10.000 personas testadas, habrá unos 99 resultados falsos positivos y solo un verdadero positivo.
Esto se conoce como la “Paradoja del falso positivo”, y ocurre cuando la sensibilidad de una prueba no es suficientemente buena en relación a la condición que se desea probar.
Por supuesto, en el caso de una persona que quiera saber si tiene una enfermedad mortal esta simple explicación estocástica resulta excelente y esperanzadora, pero no es para nada bueno en el ámbito de los sistemas de seguridad, como quizá se puedan empezar a dar cuenta.
Lo explicaremos de manera adecuada en el terreno de la Probabilidad y veremos la desastrosa conclusión:
Pr(X | Y) = 95%
Esta es la probabilidad de que un sistema genere un reporte mostrándonos que hay un ataque. En otras palabras, nuestra tasa de detección (la que siempre nos dicen las marcas de los productos).
Pr(X | Y ) = 0.5%
Esta es la probabilidad de que un sistema genere un reporte de que un ataque, no sea un ataque. Es decir, el falso positivo (en apariencia muy bajo como aparece en varios datasheets de soluciones varias).
De acuerdo a estos valores el sistema luce espléndido. Detecta la mayoría y solo prende falsa alarma es muy pocas ocasiones. Pero como mencioné antes la verdadera interrogante se desprende de aquí: Si el sistema reporta un ataque, ¿cuál es la probabilidad de que realmente sea un ataque?. En términos probabilísticos, deseamos saber Pr(Y | X ).
Para poder calcular lo anterior, requerimos de una pieza extra de información, la distribución de los datos, y esto es cuántos eventos hay ahí, es decir los ataques y no ataques existentes. Supongamos que la respuesta es:
Pr(Y) = 0.001 %
La probabilidad de que un evento en la red es un nuevo ataque, con el cual el administrador debe lidiar de forma manual , lo cual a su vez quiere decir que 99.999 % de eventos, casi la mayoría del tráfico es benigno o es un ataque que es eliminado automáticamente por el Antivirus, Firewall, IPS en cuestión.
Entonces la probabilidad de que un evento no sea un nuevo ataque es simplemente 1 - Pr(Y)
Ahora solamente se aplica el Teorema de Bayes para conocer Pr(Y | X ):
Pr(Y | X) = Pr(X| Y)Pr(Y) / Pr(X | Y)Pr(Y) + Pr(X | Y )Pr(Y ) = 0.002
Conclusión: Como nos muestra el resultado del Teorema, dado un reporte de ataque, la probabilidad de que ese ataque, realmente sea un ataque, valga la redundancia, es únicamente 0.2%.
En otras palabras 99.8% de las veces el sistema está tenebrosamente equivocado. La razón principal, es la distribución de los datos y que en una red compleja hay demasiada actividad y un volumen enorme de información que no necesitan ser atendidos por un administrador.
Se podrán dar cuenta entonces que estos simples cálculos son vitales para realmente pensar la manera (o la propia razón) de implementar una defensa perimetral o de host, en una red coporativa, que por más pequeña que sea no tendrá menos de 100 usuarios. O una personal, no vayamos tan lejos. Si llega el ejecutivo/técnico de una marca diciendo que el producto que implementó en su red tiene una detección del 95% y solo falsas alarmas del 0.5%, uno realmente debe considerar que la verdadera tasa de detección se adquiere analizando eventos en el orden de miles de millones, para darnos una "razonable" estimación de sus porcentajes que es muy poco probable que nos expliquen en sus presentaciones o documentos elaborados para convencer al cliente.
Ciertamente hay muchos otros puntos a considerar para analizar un sistema de seguridad y diversos argumentos a favor y en contra de adquirir uno u otro, sin embargo es importante analizar el lado más profundo y oscuro de cada uno de sus atributos y sus supuestos diferenciadores, pues muchas veces a pesar de que leemos información oficial de los datasheets, o simplemente porque pensamos que tenemos un producto popular utilizado y aparentemente avalado por muchas personas, creemos que es bueno y que es poco práctico cuestionarlo, ya que para varios resulta efectivo y nos confunde el hecho de que se trata de sustentar en casos de éxito con empresas importantes o individuos influyentes. Ciegamente caemos en la falacia "Ad populum": Si muchos lo encuentran aceptable, entonces es aceptable.
Y ustedes, ¿Se sienten realmente seguros en sus computadoras cuando las usan con las defensas que tienen?...Para mis colegas ¿Cuentan con una manera genuina y tangible de medir que sus redes estén blindadas contra cualquier amenaza?.