
JavaScript 및 Node.js 오픈소스 SAST 스캐너. 가장 흔한 악성 패턴을 탐지하는 정적 분석기 🔬.
JS-X-Ray는 악성 패턴, 보안 취약점, 코드 이상 징후를 식별하기 위한 JavaScript 및 TypeScript SAST입니다. ESLint와 비슷하지만 보안 분석에 특화되어 있다고 생각하면 됩니다. 원래 NodeSecure CLI를 위해 만들어졌지만, JS-X-Ray는 이제 공급망 보호를 위한 독립적이고 진지한 선택지가 되었습니다.
JS-X-Ray는 JS 또는 TS 코드를 Abstract Syntax Tree (AST) 로 파싱하며, RegEx나 Semgrep 규칙을 광범위하게 사용하지 않습니다. 이를 통해 변수 추적, 동적 import 해석, 그리고 패턴 매칭 도구가 놓치는 정교한 난독화 탐지가 가능합니다. 대신 JS-X-Ray는 JavaScript/TypeScript 생태계에만 전적으로 특화되어 있다는 트레이드오프가 있습니다.
require(), import, 동적 import 추적process.env 직렬화, 안전하지 않은 셸 명령eval(), Function() 생성자, ReDoS에 취약한 정규식, SQL 인젝션이 패키지들은 Node 패키지 저장소에서 사용할 수 있으며 npm 또는 yarn으로 쉽게 설치할 수 있습니다.
$ npm i @nodesecure/js-x-ray
# or
$ yarn add @nodesecure/js-x-ray
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 });
전체 API 문서, 경고 카탈로그, 고급 사용법은 @nodesecure/js-x-ray 패키지 README를 참조하세요.
프로젝트에 기여하고자 하는 개발자라면 먼저 CONTRIBUTING 가이드를 읽어야 합니다.
개발을 마친 후에는 다음 스크립트를 실행하여 테스트(및 린터)가 여전히 정상인지 확인하세요:
$ npm run check
[!CAUTION] 새로운 기능을 추가하거나 버그를 수정하는 경우, 반드시 이에 대한 테스트도 포함하세요.
JS-X-Ray 내부 구조를 다루는 기여자를 위해, 다음 리소스는 저수준 유틸리티와 AST 조작 패턴을 문서화합니다:
js-x-ray의 성능은 mitata를 사용하여 측정되고 추적됩니다.
벤치마크를 실행하려면:
workspaces/js-x-ray로 이동합니다.npm run bench를 실행합니다.벤치마크 결과는 workspaces/js-x-ray/benchmark/report.json에 저장됩니다. 이 파일을 수동으로 편집하지 마세요. 모든 pull request에서 자동으로 업데이트됩니다.
이 멋진 분들께 감사드립니다 (emoji key):