Imagina que estàs revisant el codi d'una aplicació financera i, entre milers de línies, trobes una crida a crypto.createSign('RSA-SHA256'). Aquella única línia —aparentment inofensiva— podria comprometre tota la seguretat del teu sistema davant d'ordinadors quàntics. Fa uns mesos, a Q2BSTUDIO, vam afrontar aquest problema real quan un client ens va demanar auditar el seu programari a mida per identificar vulnerabilitats criptogràfiques post-quàntiques. Construir un escàner AST que detectés aquests patrons no només va ser un repte tècnic fascinant, sinó que ens va portar a repensar com la ciberseguretat ha d'evolucionar en l'era de la computació quàntica.
La idea era senzilla però ambiciosa: recórrer tots els fitxers JavaScript i TypeScript d'un projecte, analitzar el codi sense executar-lo, i assenyalar exactament on s'usen algorismes com RSA, DSA, ECDSA o SHA-256. El problema és que una cerca textual amb grep o includes falla estrepitosament: els comentaris, les cadenes dinàmiques o les variables que contenen el nom del mètode enganyen qualsevol expressió regular. La solució que vam adoptar és la mateixa que fem servir als nostres serveis de IA i cloud: treballar amb arbres de sintaxi abstracta (AST).
Un AST és una representació estructural del codi font que un parser genera després de llegir-lo. Per exemple, la crida crypto.createSign('RSA-SHA256') es converteix en un arbre on l'arrel és un CallExpression, el seu fill esquerre és un MemberExpression (amb objecte crypto i propietat createSign), i l'argument és un StringLiteral amb valor 'RSA-SHA256'. En recórrer aquell arbre amb @babel/traverse, podem disparar una acció cada vegada que trobem un node de tipus CallExpression i verificar si compleix amb els patrons de vulnerabilitat quàntica.
A Q2BSTUDIO, apliquem aquesta mateixa tècnica en múltiples fronts. D'una banda, per a projectes de ciberseguretat on necessitem auditar centenars de milers de línies de codi heretat. De l'altra, en solucions de cloud AWS/Azure, on els pipelines de CI/CD han de rebutjar automàticament qualsevol commit que introdueixi criptografia feble davant d'algorismes quàntics com Shor o Grover. I també als nostres sistemes de BI/Power BI, on la integritat de les dades depèn de signatures digitals robustes.
El procés de construcció de l'escàner va començar amb l'elecció de les eines adequades. @babel/parser ens permet llegir qualsevol fitxer (JS, JSX, TS, TSX, MJS, CJS) i generar l'AST corresponent. Configurem sourceType: 'unambiguous' perquè el parser decideixi automàticament si el fitxer utilitza mòduls ES o CommonJS, i habilitem els plugins de JSX i TypeScript per cobrir projectes React i TypeScript. Després, amb @babel/traverse, recorrem cada node i registrem les coincidències perilloses.
La detecció de createSign amb RSA o DSA és directa: quan el recorregut troba un CallExpression, comprovem que el callee sigui un MemberExpression amb nom createSign. Després examinem el primer argument: si és un string literal que conté 'RSA' o 'DSA' (sense distingir majúscules/minúscules), el marquem com a risc crític amb pes 35. Una cosa similar fem amb generateKeyPairSync: si el primer argument és 'rsa' o 'ec', l'etiquetem com a crític. Per a createHash('sha256'), el risc és mitjà (pes 8), perquè SHA-256 no és vulnerable a Shor, però Grover redueix la seva seguretat efectiva de 256 bits a ~128 bits.
Però l'escàner no s'atura en un sol fitxer. Implementem un recorregut recursiu del directori del projecte, saltant carpetes com node_modules, .git, dist o build. Només analitzem extensions .js, .jsx, .ts, .tsx, .mjs, .cjs. D'aquesta manera, qualsevol projecte, sense importar la seva mida, pot ser auditat en segons. A més, combinem aquesta anàlisi AST amb un escaneig de dependències (Layer 1): revisem el package.json contra una base de dades de llibreries conegudes per utilitzar criptografia quàntic-vulnerable, com elliptic, ethers o node-rsa. La puntuació final es calcula com 100 - suma de pesos, amb deduplicació per no penalitzar dues vegades la mateixa troballa.
Una de les sorpreses més impactants durant el desenvolupament va ser descobrir que molts projectes moderns — fins i tot startups amb poca trajectòria — utilitzen corbes el·líptiques com secp256k1 (la mateixa de Bitcoin) sense ser conscients que Shor les trenca completament. Empreses que confien en ethers.js per signar transaccions blockchain estan exposant els seus actius digitals a un risc enorme. A Q2BSTUDIO, quan despleguem solucions d'automatització de processos o agents IA, sempre incloem aquest tipus d'auditories com a part del nostre procés de qualitat.
L'experiència ens va ensenyar que la seguretat post-quàntica no és un tema llunyà. Els ordinadors quàntics avancen ràpidament, i els estàndards del NIST ja estan definint algorismes de reemplaçament (com CRYSTALS-Kyber o Dilithium). Qualsevol codi que avui utilitzi RSA, DSA, ECDSA o SHA-256 hauria de ser migrat com més aviat millor. El nostre escàner AST no només identifica aquelles línies, sinó que també genera un informe amb pesos que permeten prioritzar les correccions. Per exemple, una troballa crítica amb pes 35 mereix atenció immediata, mentre que una de mitjana amb pes 8 es pot planificar a mitjà termini.
A la pràctica, aquest escàner s'ha integrat en fluxos de treball de CI/CD per a clients de Q2BSTUDIO. Quan un desenvolupador puja un commit que introdueix crypto.createSign('RSA-SHA256'), el pipeline falla i l'equip rep una notificació amb la línia exacta i el fitxer. Això evita que el codi vulnerable arribi a producció. A més, per a projectes legacy, oferim un servei d'auditoria completa on combinem l'escàner AST amb anàlisi de dependències i proves de penetració manuals.
La clau de l'èxit va ser no dependre d'expressions regulars. L'AST ens dona una comprensió semàntica del codi: sabem que crypto.createSign('RSA-SHA256') és una crida a funció, no un comentari. També podem manejar casos complexos com const sign = crypto.createSign; sign('RSA-SHA256') — tot i que el nom del mètode estigui en una variable, l'AST ens permet rastrejar el flux si estenem l'anàlisi. Per a la primera versió vam optar per simplicitat, però les capacitats són ampliables.
Construir aquest escàner no va ser només un exercici tècnic; va ser una decisió de negoci. A Q2BSTUDIO, entenem que la intel·ligència artificial i el cloud computing han d'anar de la mà amb la seguretat. Per això, cada vegada que dissenyem una solució de programari a mida, incorporem des de l'inici la detecció de vulnerabilitats criptogràfiques. Els nostres clients en sectors com fintech, salut o logística valoren especialment aquest enfocament proactiu.
Si tens un projecte JavaScript o TypeScript i vols saber la teva puntuació quàntica, pots executar el nostre escàner amb npx quantum-audit . (o amb --json per integrar-lo a CI). El resultat et mostrarà cada línia vulnerable, el seu pes i l'algorisme implicat. I si prefereixes una auditoria professional, a Q2BSTUDIO t'ajudem a migrar a criptografia post-quàntica i a reforçar tota la teva infraestructura a AWS, Azure o Google Cloud. L'era quàntica ja és aquí. Està el teu codi preparat?




