Imagina que estás revisando el código de una aplicación financiera y, entre miles de líneas, encuentras una llamada a crypto.createSign('RSA-SHA256'). Esa única línea —aparentemente inofensiva— podría comprometer toda la seguridad de tu sistema frente a ordenadores cuánticos. Hace unos meses, en Q2BSTUDIO, nos enfrentamos a este problema real cuando un cliente nos pidió auditar su software a medida para identificar vulnerabilidades criptográficas post-cuánticas. Construir un escáner AST que detectara estos patrones no solo fue un desafío técnico fascinante, sino que nos llevó a repensar cómo la ciberseguridad debe evolucionar en la era de la computación cuántica.
La idea era simple pero ambiciosa: recorrer todos los archivos JavaScript y TypeScript de un proyecto, analizar el código sin ejecutarlo, y señalar exactamente dónde se usan algoritmos como RSA, DSA, ECDSA o SHA-256. El problema es que una búsqueda textual con grep o includes falla estrepitosamente: los comentarios, las cadenas dinámicas o las variables que contienen el nombre del método engañan a cualquier expresión regular. La solución que adoptamos fue la misma que usamos en nuestros servicios de IA y cloud: trabajar con árboles de sintaxis abstracta (AST).
Un AST es una representación estructural del código fuente que un parser genera después de leerlo. Por ejemplo, la llamada crypto.createSign('RSA-SHA256') se convierte en un árbol donde la raíz es un CallExpression, su hijo izquierdo es un MemberExpression (con objeto crypto y propiedad createSign), y el argumento es un StringLiteral con valor 'RSA-SHA256'. Al recorrer ese árbol con @babel/traverse, podemos disparar una acción cada vez que encontramos un nodo de tipo CallExpression y verificar si cumple con los patrones de vulnerabilidad cuántica.
En Q2BSTUDIO, aplicamos esta misma técnica en múltiples frentes. Por un lado, para proyectos de ciberseguridad donde necesitamos auditar cientos de miles de líneas de código heredado. Por otro lado, en soluciones de cloud AWS/Azure, donde los pipelines de CI/CD deben rechazar automáticamente cualquier commit que introduzca criptografía débil frente a algoritmos cuánticos como Shor o Grover. Y también en nuestros sistemas de BI/Power BI, donde la integridad de los datos depende de firmas digitales robustas.
El proceso de construcción del escáner comenzó con la elección de las herramientas adecuadas. @babel/parser nos permite leer cualquier archivo (JS, JSX, TS, TSX, MJS, CJS) y generar el AST correspondiente. Configuramos sourceType: 'unambiguous' para que el parser decida automáticamente si el archivo usa módulos ES o CommonJS, y habilitamos los plugins de JSX y TypeScript para cubrir proyectos React y TypeScript. Luego, con @babel/traverse, recorremos cada nodo y registramos las coincidencias peligrosas.
La detección de createSign con RSA o DSA es directa: cuando el recorrido encuentra un CallExpression, comprobamos que el callee sea un MemberExpression con nombre createSign. Luego examinamos el primer argumento: si es un string literal que contiene 'RSA' o 'DSA' (sin distinguir mayúsculas/minúsculas), lo marcamos como riesgo crítico con peso 35. Algo similar hacemos con generateKeyPairSync: si el primer argumento es 'rsa' o 'ec', lo etiquetamos como crítico. Para createHash('sha256'), el riesgo es medio (peso 8), porque SHA-256 no es vulnerable a Shor, pero Grover reduce su seguridad efectiva de 256 bits a ~128 bits.
Pero el escáner no se detiene en un solo archivo. Implementamos un recorrido recursivo del directorio del proyecto, saltando carpetas como node_modules, .git, dist o build. Solo analizamos extensiones .js, .jsx, .ts, .tsx, .mjs, .cjs. De esta forma, cualquier proyecto, sin importar su tamaño, puede ser auditado en segundos. Además, combinamos este análisis AST con un escaneo de dependencias (Layer 1): revisamos el package.json contra una base de datos de librerías conocidas por usar criptografía cuántico-vulnerable, como elliptic, ethers o node-rsa. La puntuación final se calcula como 100 - suma de pesos, con deduplicación para no penalizar dos veces el mismo hallazgo.
Una de las sorpresas más impactantes durante el desarrollo fue descubrir que muchos proyectos modernos —incluso startups con poca trayectoria— utilizan curvas elípticas como secp256k1 (la misma de Bitcoin) sin ser conscientes de que Shor las rompe por completo. Empresas que confían en ethers.js para firmar transacciones blockchain están exponiendo sus activos digitales a un riesgo enorme. En Q2BSTUDIO, cuando desplegamos soluciones de automatización de procesos o agentes IA, siempre incluimos este tipo de auditorías como parte de nuestro proceso de calidad.
La experiencia nos enseñó que la seguridad post-cuántica no es un tema lejano. Los ordenadores cuánticos están avanzando rápidamente, y los estándares del NIST ya están definiendo algoritmos de reemplazo (como CRYSTALS-Kyber o Dilithium). Cualquier código que hoy use RSA, DSA, ECDSA o SHA-256 debería ser migrado cuanto antes. Nuestro escáner AST no solo identifica esas líneas, sino que también genera un informe con pesos que permiten priorizar las correcciones. Por ejemplo, un hallazgo crítico con peso 35 merece atención inmediata, mientras que uno medio con peso 8 puede planificarse a medio plazo.
En la práctica, este escáner se ha integrado en flujos de trabajo de CI/CD para clientes de Q2BSTUDIO. Cuando un desarrollador sube un commit que introduce crypto.createSign('RSA-SHA256'), el pipeline falla y el equipo recibe una notificación con la línea exacta y el archivo. Esto evita que el código vulnerable llegue a producción. Además, para proyectos legacy, ofrecemos un servicio de auditoría completa donde combinamos el escáner AST con análisis de dependencias y pruebas de penetración manuales.
La clave del éxito fue no depender de expresiones regulares. El AST nos da una comprensión semántica del código: sabemos que crypto.createSign('RSA-SHA256') es una llamada a función, no un comentario. También podemos manejar casos complejos como const sign = crypto.createSign; sign('RSA-SHA256') —aunque el nombre del método esté en una variable, el AST nos permite rastrear el flujo si extendemos el análisis. Para la primera versión optamos por simplicidad, pero las capacidades son ampliables.
Construir este escáner no solo fue un ejercicio técnico; fue una decisión de negocio. En Q2BSTUDIO, entendemos que la inteligencia artificial y el cloud computing deben ir de la mano con la seguridad. Por eso, cada vez que diseñamos una solución de software a medida, incorporamos desde el inicio la detección de vulnerabilidades criptográficas. Nuestros clientes en sectores como fintech, salud o logística valoran especialmente este enfoque proactivo.
Si tienes un proyecto JavaScript o TypeScript y quieres saber tu puntuación cuántica, puedes ejecutar nuestro escáner con npx quantum-audit . (o con --json para integrarlo en CI). El resultado te mostrará cada línea vulnerable, su peso y el algoritmo implicado. Y si prefieres una auditoría profesional, en Q2BSTUDIO te ayudamos a migrar a criptografía post-cuántica y a reforzar toda tu infraestructura en AWS, Azure o Google Cloud. La era cuántica ya está aquí. ¿Está tu código preparado?




