Gritos de lobo en ciberseguridad
El niño que gritó lobo se remonta a una fábula en la que un pastorcillo se burlaba de los demás aldeanos diciéndoles que un lobo estaba atacando al rebaño. Los aldeanos le creyeron al principio, pero él sólo se reía con ellos. Cuando el pastorcillo repitió su broma, los aldeanos empezaron a ignorarle y, en un momento dado, llegó un lobo de verdad y atacó a las ovejas. El niño "gritó lobo", pero ya nadie le creyó.
Las herramientas de ciberseguridad han actuado como niños pastores: tienden a dar muchas falsas alarmas, lo que fatiga a los desarrolladores a la hora de prestarles atención. Esto hace que los desarrolladores pierdan tiempo y pierdan la confianza en las herramientas. Para trabajar con eficiencia y eficacia en ciberseguridad, se necesita un buen filtro que evite esos falsos positivos. Eso es exactamente lo que hace AutoTriage para las vulnerabilidades SAST.
Verdadero ejemplo positivo
A continuación se muestra un ejemplo de hallazgo SAST. SAST son las siglas de Static Application Security Testing, traducido libremente como: detectar patrones peligrosos en el código fuente, sin ejecutar el código. Se trata de un potente método para detectar muchos tipos diferentes de vulnerabilidades.
En este ejemplo, vemos que AutoTriage marca una muestra como "muy prioritaria de corregir". El hallazgo de SAST apunta a una posible vulnerabilidad NoSQL. El código representa un punto final de inicio de sesión en el que los usuarios pueden proporcionar un nombre y una contraseña. Hay una llamada a la base de datos para buscar un registro que coincida con el nombre y la contraseña.
The problem here is that NoSQL allows you to insert objects like { $ne: undefined }. In that case, the match will be based on anything that is different from undefined. Imagine that an attacker would upload something like this:
{
name: LeoIVX,
password: { $ne: undefined }
}
En ese caso, el atacante podría iniciar sesión como el Papa (si el Papa tuviera una cuenta con ese nombre de usuario en esa plataforma de software), ya que la contraseña siempre coincidiría con la consulta.

En este caso, el hallazgo de SAST fue un verdadero positivo. En este caso, AutoTriage hace algo más que confirmar: también aumenta la prioridad, ya que esta vulnerabilidad es más fácil de explotar y tiene una gravedad mayor que el hallazgo medio de SAST.
Cuando se informa de un problema de este tipo, debe solucionarlo lo antes posible. No hay método más rápido que utilizar la herramienta AutoFix de Aikido. Esto creará una solicitud de extracción (o solicitud de fusión) con un solo clic. En este caso el resultado es:

AutoFix siempre sugerirá la solución más sencilla que resuelva adecuadamente la vulnerabilidad. En este caso, basta con cambiar tanto el nombre como la contraseña para proteger el punto final y cumplir la intención del desarrollador.
Por favor, ten en cuenta que las contraseñas nunca deben ser comparadas directamente y que en su lugar se deben utilizar hashes de contraseñas - este ejemplo se utilizó en aras de la simplicidad. El LLM utilizado por AutoFix tiene instrucciones explícitas de no arreglar ningún otro problema que no sea la vulnerabilidad reportada, por lo que los pull requests siguen la mejor práctica de resolver un problema a la vez.
Ejemplo de falso positivo
Como ya se ha mencionado, el verdadero problema de las herramientas SAST es el número de falsas alarmas que producen. Un ejemplo de esto se puede encontrar a continuación. Existe una posible inyección SQL en la que se inyecta un "productName" en una consulta SQL. Además, este 'productName' proviene del cuerpo de la petición, por lo que está controlado por el usuario. Afortunadamente, existe una lista permitida que comprueba si productName es "iPhone15", "Galaxy S24", "MacBook Pro" o "ThinkPad X1". Esto garantiza que productName no puede contener una carga útil de ataque como productName = "iPhone15'; DROP TABLE products; - - ".

Una lista permitida como la de este ejemplo es una contramedida eficaz contra la inyección SQL. Pero los escáneres heredados como Semgrep no pueden evaluar la eficacia de dichas listas de permisos.
Los grandes modelos lingüísticos (LLM) ofrecen aquí una gran oportunidad: pueden comprender mucho más contexto del código fuente y filtrar muestras como ésta.
La narrativa del aikido: "Seguridad sin tonterías
Cuando las empresas de software buscan proveedores de AppSec, suelen comparar las distintas soluciones disponibles en el mercado. Una forma típica en que las empresas menos experimentadas comparan proveedores es contando el número de vulnerabilidades encontradas en su código fuente. No será una sorpresa que tiendan a creer que más vulnerabilidades equivalen a mejores herramientas. A veces eligen a su proveedor basándose en esta pobre evaluación. En consecuencia, algunas empresas de AppSec dudan en filtrar los falsos positivos, ya que obtendrían peores resultados en esta comparación tan frecuente.
En Aikido adoptamos un enfoque diferente. Nuestro lema "No Bullsh*t" significa que queremos ayudar a los clientes en la medida de lo posible, incluso cuando esto implique la pérdida de algunas operaciones a corto plazo. AI AutoTriage es un claro ejemplo de ello, ya que esta característica diferencia la oferta de Aikido de otras del mercado.
Disponibilidad
Hemos habilitado esta función para 50 reglas SAST en diferentes lenguajes, incluidos javascript/ typescript, python, java, .NET y php. Estamos añadiendo más reglas a un ritmo rápido.
Esta función está habilitada para todos, incluidas las cuentas gratuitas. Dicho esto, las cuentas gratuitas pueden alcanzar el número máximo de llamadas LLM con bastante facilidad.
CI Gating
CI gating es el proceso en el que Aikido busca vulnerabilidades en cada pull request. AI AutoTriage ahora también está habilitado para esta función, lo que hace que el flujo de trabajo sea mucho más conveniente.
Imagina que has introducido una vulnerabilidad de path traversal en un pull request y has aplicado un AutoFix. Esa corrección normalmente usaría una lista de patrones antes de leer o escribir el archivo. Dado que las denylists son difíciles de interpretar con patrones codificados, incluso la versión corregida seguiría marcada como problema. Esto se ha resuelto ahora gracias a la aplicación de nuestro AutoTriage directamente en la tubería CI.
Conclusión
Hemos lanzado una potente función para filtrar los falsos positivos de SAST y también para ayudar a priorizar las muestras positivas verdaderas. Está disponible para que todo el mundo la pruebe, incluso para las cuentas gratuitas. Esta función es un gran paso adelante para reducir el efecto "Cry Wolf" en ciberseguridad, ayudando a los desarrolladores a centrarse en lo que realmente importa: resolver vulnerabilidades reales y disponer de más tiempo para crear funciones para sus clientes.