
js-x-ray @nodesecure/[email protected]
Scanner SAST open-source para JavaScript & Node.js. Um analisador estático para detetar os padrões maliciosos mais comuns 🔬.
JS-X-Ray é um SAST para JavaScript e TypeScript, destinado a identificar padrões maliciosos, vulnerabilidades de segurança e anomalias de código. Pense nele como o ESLint, mas dedicado à análise de segurança. Originalmente criado para o NodeSecure CLI, o JS-X-Ray tornou-se uma opção independente e séria para a proteção da cadeia de suprimentos.
🔎 Como Funciona
O JS-X-Ray analisa código JS ou TS em uma Árvore de Sintaxe Abstrata (AST) sem uso extensivo de RegEx ou regras Semgrep. Isso permite o rastreamento de variáveis, a resolução de importações dinâmicas e a detecção de ofuscação sofisticada que ferramentas de correspondência de padrões deixam passar. A contrapartida é que o JS-X-Ray é puramente dedicado ao ecossistema JavaScript/TypeScript.
💡 Recursos
- Rastreia
require(),importe importações dinâmicas com rastreamento completo de variáveis - Detecta código ofuscado e identifica a ferramenta utilizada (jsfuck, jjencode, obfuscator.io e mais)
- Sinaliza padrões maliciosos: exfiltração de dados, serialização de
process.env, comandos de shell inseguros - Detecta código vulnerável:
eval(), construtorFunction(), regexes propensas a ReDoS, injeção de SQL - Sinaliza algoritmos criptográficos fracos (MD5, SHA1, etc.)
- Extrai indicadores de infraestrutura: URLs, IPs, hostnames, e-mails
- Modos de sensibilidade configuráveis (conservador/agressivo) e sistema de sondas extensível
- Suporta JavaScript e TypeScript
💃 Primeiros Passos
Esses pacotes estão disponíveis no repositório de pacotes do Node e podem ser facilmente instalados com npm ou yarn.
$ npm i @nodesecure/js-x-ray
# or
$ yarn add @nodesecure/js-x-ray
👀 Uso
import { AstAnalyser } from "@nodesecure/js-x-ray";
const scanner = new AstAnalyser();
const { warnings, dependencies } = await scanner.analyseFile("./file.js");
console.log(dependencies);
console.dir(warnings, { depth: null });
Para a documentação completa da API, catálogo de avisos e uso avançado, consulte o README do pacote @nodesecure/js-x-ray.
Workspaces
🐥 Guia para contribuidores
Se você é um desenvolvedor buscando contribuir com o projeto, você deve primeiro ler o guia CONTRIBUTING.
Depois de concluir seu desenvolvimento, verifique se os testes (e o linter) ainda estão bons executando o seguinte script:
$ npm run check
[!CAUTION] Caso você introduza um novo recurso ou corrija um bug, certifique-se de incluir testes para ele também.
APIs Internas
Para contribuidores que trabalham nos internos do JS-X-Ray, os seguintes recursos documentam utilitários de baixo nível e padrões de manipulação de AST:
- Utilitários ESTree - Auxiliares de baixo nível para manipular nós da AST ESTree
- Padrões de atribuição e declaração ESTree (francês) - Guia de referência para padrões de atribuição e declaração JavaScript em forma de AST
Benchmarks
O desempenho do js-x-ray é medido e acompanhado usando mitata.
Para executar os benchmarks:
- Navegue até
workspaces/js-x-ray. - Execute
npm run bench.
Os resultados dos benchmarks são armazenados em workspaces/js-x-ray/benchmark/report.json. Não edite este arquivo manualmente; ele é atualizado automaticamente em cada pull request.
Contribuidores ✨
Agradecimentos a estas pessoas maravilhosas (chave de emojis):
Licença
MIT

























