Hoy en día, la mayor parte de las aplicaciones y las plataformas web utilizan certificados de manera que se pueda verificar fácilmente si el tráfico que envía y recibe es legítimo o puede estar suplantado por piratas informáticos. Aunque el ejemplo más caro de esto lo podemos encontrar en los navegadores al intentar visitar páginas web, existen otro tipo de conexiones a plataformas web, a través de APIs, que, debido a las características de sus lenguajes de programación, no están protegidas correctamente.
La empresa de seguridad web Sucuri ha llevado a cabo un experimento en el que intenta comprobar la seguridad de los diferentes lenguajes de programación web. En este experimento se ha comprobado cómo reaccionan los diferentes lenguajes de programación web frente al uso de certificados falsos, revocados, auto-firmados o caducados para comprobar la seguridad de nuestros datos al hacer uso de las plataformas web.
Según el estudio, ninguna versión de Python, PHP ni de Google Go son capaces de reconocer y bloquear el uso de certificados revocados debido a que los propios lenguajes de programación carecen de las medidas de seguridad necesarias para poder detectarlos. Con el paso de los meses, Python y PHP se han actualizando para mejorar la seguridad de estos de manera que las versiones más utilizadas sí son capaces de reconocer certificados caducados o incorrectos, aunque siguen sin detectar el uso de los revocados.
Este experimento ha demostrado que los piratas informáticos pueden atacar directamente a las API de las plataformas que, de estar escritas en alguno de los lenguajes de programación vulnerables, pueden llegar a permitir ataques MITM donde se capture y modifique el tráfico sin que el certificado sea rechazado. Bibliotecas adicionales como cURL tampoco añaden a los lenguajes de programación la posibilidad de identificar estos certificados.
Los expertos de seguridad de Sucuri han publicado también una serie de scripts para comprobar la seguridad de las conexiones verificadas de los diferentes lenguajes de programación, los cuales se pueden descargar desde el siguiente enlace. La empresa de seguridad ha utilizado dichos scripts para comprobar el comportamiento de los lenguajes de programación web más utilizados, con los siguientes resultados:
Esto abre una serie de brechas de seguridad. Si, por ejemplo, una plataforma utiliza por defecto un certificado y piratas informáticos se hacen con él, normalmente este se revoca para evitar suplantaciones de identidad y se genera otro. Mientras que los navegadores y muchas aplicaciones son capaces de detectar y bloquear estos certificados revocados, las API programas en PHP, Python e incluso en Go, el lenguaje de programación web más moderno y desarrollado por Google, no son capaces de detectarlos.
Como hemos dicho, aunque utilicemos las versiones más recientes de los lenguajes de programación, no existe esta verificación y, debido a la complejidad de la misma, lo más seguro es que tampoco la veamos a corto plazo. Al final, el responsable de que ninguna API haga uso de estos certificados es el propio administrador web quien, utilizando herramientas como BadSSL, debe detectar e impedir la ejecución de APIs que utilicen copias falsas o revocadas de los mismos.
¿Crees que la falta de seguridad respecto a los certificados revocados puede ser un problema?
Quizá te interese: