secure-scan 1.2.2
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +564 -0
- package/dist/ai/aiAnalyzer.d.ts +99 -0
- package/dist/ai/aiAnalyzer.d.ts.map +1 -0
- package/dist/ai/aiAnalyzer.js +669 -0
- package/dist/ai/aiAnalyzer.js.map +1 -0
- package/dist/ai/index.d.ts +5 -0
- package/dist/ai/index.d.ts.map +1 -0
- package/dist/ai/index.js +21 -0
- package/dist/ai/index.js.map +1 -0
- package/dist/analyzers/base/baseAnalyzer.d.ts +44 -0
- package/dist/analyzers/base/baseAnalyzer.d.ts.map +1 -0
- package/dist/analyzers/base/baseAnalyzer.js +53 -0
- package/dist/analyzers/base/baseAnalyzer.js.map +1 -0
- package/dist/analyzers/base/index.d.ts +5 -0
- package/dist/analyzers/base/index.d.ts.map +1 -0
- package/dist/analyzers/base/index.js +21 -0
- package/dist/analyzers/base/index.js.map +1 -0
- package/dist/analyzers/c-cpp/cppAnalyzer.d.ts +60 -0
- package/dist/analyzers/c-cpp/cppAnalyzer.d.ts.map +1 -0
- package/dist/analyzers/c-cpp/cppAnalyzer.js +218 -0
- package/dist/analyzers/c-cpp/cppAnalyzer.js.map +1 -0
- package/dist/analyzers/c-cpp/index.d.ts +5 -0
- package/dist/analyzers/c-cpp/index.d.ts.map +1 -0
- package/dist/analyzers/c-cpp/index.js +21 -0
- package/dist/analyzers/c-cpp/index.js.map +1 -0
- package/dist/analyzers/core/engine/index.d.ts +5 -0
- package/dist/analyzers/core/engine/index.d.ts.map +1 -0
- package/dist/analyzers/core/engine/index.js +21 -0
- package/dist/analyzers/core/engine/index.js.map +1 -0
- package/dist/analyzers/core/engine/ruleEngine.d.ts +46 -0
- package/dist/analyzers/core/engine/ruleEngine.d.ts.map +1 -0
- package/dist/analyzers/core/engine/ruleEngine.js +173 -0
- package/dist/analyzers/core/engine/ruleEngine.js.map +1 -0
- package/dist/analyzers/core/index.d.ts +8 -0
- package/dist/analyzers/core/index.d.ts.map +1 -0
- package/dist/analyzers/core/index.js +24 -0
- package/dist/analyzers/core/index.js.map +1 -0
- package/dist/analyzers/core/scanner/fileScanner.d.ts +31 -0
- package/dist/analyzers/core/scanner/fileScanner.d.ts.map +1 -0
- package/dist/analyzers/core/scanner/fileScanner.js +199 -0
- package/dist/analyzers/core/scanner/fileScanner.js.map +1 -0
- package/dist/analyzers/core/scanner/index.d.ts +5 -0
- package/dist/analyzers/core/scanner/index.d.ts.map +1 -0
- package/dist/analyzers/core/scanner/index.js +21 -0
- package/dist/analyzers/core/scanner/index.js.map +1 -0
- package/dist/analyzers/core/scoring/index.d.ts +5 -0
- package/dist/analyzers/core/scoring/index.d.ts.map +1 -0
- package/dist/analyzers/core/scoring/index.js +21 -0
- package/dist/analyzers/core/scoring/index.js.map +1 -0
- package/dist/analyzers/core/scoring/riskScoring.d.ts +49 -0
- package/dist/analyzers/core/scoring/riskScoring.d.ts.map +1 -0
- package/dist/analyzers/core/scoring/riskScoring.js +180 -0
- package/dist/analyzers/core/scoring/riskScoring.js.map +1 -0
- package/dist/analyzers/core/securityScanner.d.ts +47 -0
- package/dist/analyzers/core/securityScanner.d.ts.map +1 -0
- package/dist/analyzers/core/securityScanner.js +298 -0
- package/dist/analyzers/core/securityScanner.js.map +1 -0
- package/dist/analyzers/csharp/csharpAnalyzer.d.ts +64 -0
- package/dist/analyzers/csharp/csharpAnalyzer.d.ts.map +1 -0
- package/dist/analyzers/csharp/csharpAnalyzer.js +232 -0
- package/dist/analyzers/csharp/csharpAnalyzer.js.map +1 -0
- package/dist/analyzers/csharp/index.d.ts +5 -0
- package/dist/analyzers/csharp/index.d.ts.map +1 -0
- package/dist/analyzers/csharp/index.js +21 -0
- package/dist/analyzers/csharp/index.js.map +1 -0
- package/dist/analyzers/iac/iacAnalyzer.d.ts +36 -0
- package/dist/analyzers/iac/iacAnalyzer.d.ts.map +1 -0
- package/dist/analyzers/iac/iacAnalyzer.js +182 -0
- package/dist/analyzers/iac/iacAnalyzer.js.map +1 -0
- package/dist/analyzers/iac/index.d.ts +5 -0
- package/dist/analyzers/iac/index.d.ts.map +1 -0
- package/dist/analyzers/iac/index.js +21 -0
- package/dist/analyzers/iac/index.js.map +1 -0
- package/dist/analyzers/index.d.ts +30 -0
- package/dist/analyzers/index.d.ts.map +1 -0
- package/dist/analyzers/index.js +80 -0
- package/dist/analyzers/index.js.map +1 -0
- package/dist/analyzers/java/index.d.ts +5 -0
- package/dist/analyzers/java/index.d.ts.map +1 -0
- package/dist/analyzers/java/index.js +21 -0
- package/dist/analyzers/java/index.js.map +1 -0
- package/dist/analyzers/java/javaAnalyzer.d.ts +64 -0
- package/dist/analyzers/java/javaAnalyzer.d.ts.map +1 -0
- package/dist/analyzers/java/javaAnalyzer.js +224 -0
- package/dist/analyzers/java/javaAnalyzer.js.map +1 -0
- package/dist/analyzers/javascript/astUtils.d.ts +170 -0
- package/dist/analyzers/javascript/astUtils.d.ts.map +1 -0
- package/dist/analyzers/javascript/astUtils.js +700 -0
- package/dist/analyzers/javascript/astUtils.js.map +1 -0
- package/dist/analyzers/javascript/index.d.ts +18 -0
- package/dist/analyzers/javascript/index.d.ts.map +1 -0
- package/dist/analyzers/javascript/index.js +50 -0
- package/dist/analyzers/javascript/index.js.map +1 -0
- package/dist/analyzers/javascript/javascriptAnalyzer.d.ts +111 -0
- package/dist/analyzers/javascript/javascriptAnalyzer.d.ts.map +1 -0
- package/dist/analyzers/javascript/javascriptAnalyzer.js +860 -0
- package/dist/analyzers/javascript/javascriptAnalyzer.js.map +1 -0
- package/dist/analyzers/javascript/malwareDetector.d.ts +102 -0
- package/dist/analyzers/javascript/malwareDetector.d.ts.map +1 -0
- package/dist/analyzers/javascript/malwareDetector.js +616 -0
- package/dist/analyzers/javascript/malwareDetector.js.map +1 -0
- package/dist/analyzers/javascript/packageJsonAnalyzer.d.ts +87 -0
- package/dist/analyzers/javascript/packageJsonAnalyzer.d.ts.map +1 -0
- package/dist/analyzers/javascript/packageJsonAnalyzer.js +553 -0
- package/dist/analyzers/javascript/packageJsonAnalyzer.js.map +1 -0
- package/dist/analyzers/javascript/taintAnalyzer.d.ts +120 -0
- package/dist/analyzers/javascript/taintAnalyzer.d.ts.map +1 -0
- package/dist/analyzers/javascript/taintAnalyzer.js +526 -0
- package/dist/analyzers/javascript/taintAnalyzer.js.map +1 -0
- package/dist/analyzers/php/index.d.ts +5 -0
- package/dist/analyzers/php/index.d.ts.map +1 -0
- package/dist/analyzers/php/index.js +21 -0
- package/dist/analyzers/php/index.js.map +1 -0
- package/dist/analyzers/php/phpAnalyzer.d.ts +56 -0
- package/dist/analyzers/php/phpAnalyzer.d.ts.map +1 -0
- package/dist/analyzers/php/phpAnalyzer.js +202 -0
- package/dist/analyzers/php/phpAnalyzer.js.map +1 -0
- package/dist/analyzers/python/index.d.ts +5 -0
- package/dist/analyzers/python/index.d.ts.map +1 -0
- package/dist/analyzers/python/index.js +21 -0
- package/dist/analyzers/python/index.js.map +1 -0
- package/dist/analyzers/python/pythonAnalyzer.d.ts +64 -0
- package/dist/analyzers/python/pythonAnalyzer.d.ts.map +1 -0
- package/dist/analyzers/python/pythonAnalyzer.js +226 -0
- package/dist/analyzers/python/pythonAnalyzer.js.map +1 -0
- package/dist/cli/index.d.ts +7 -0
- package/dist/cli/index.d.ts.map +1 -0
- package/dist/cli/index.js +281 -0
- package/dist/cli/index.js.map +1 -0
- package/dist/core/engine/index.d.ts +5 -0
- package/dist/core/engine/index.d.ts.map +1 -0
- package/dist/core/engine/index.js +21 -0
- package/dist/core/engine/index.js.map +1 -0
- package/dist/core/engine/ruleEngine.d.ts +46 -0
- package/dist/core/engine/ruleEngine.d.ts.map +1 -0
- package/dist/core/engine/ruleEngine.js +173 -0
- package/dist/core/engine/ruleEngine.js.map +1 -0
- package/dist/core/index.d.ts +8 -0
- package/dist/core/index.d.ts.map +1 -0
- package/dist/core/index.js +24 -0
- package/dist/core/index.js.map +1 -0
- package/dist/core/scanner/fileScanner.d.ts +31 -0
- package/dist/core/scanner/fileScanner.d.ts.map +1 -0
- package/dist/core/scanner/fileScanner.js +199 -0
- package/dist/core/scanner/fileScanner.js.map +1 -0
- package/dist/core/scanner/index.d.ts +5 -0
- package/dist/core/scanner/index.d.ts.map +1 -0
- package/dist/core/scanner/index.js +21 -0
- package/dist/core/scanner/index.js.map +1 -0
- package/dist/core/scoring/index.d.ts +5 -0
- package/dist/core/scoring/index.d.ts.map +1 -0
- package/dist/core/scoring/index.js +21 -0
- package/dist/core/scoring/index.js.map +1 -0
- package/dist/core/scoring/riskScoring.d.ts +49 -0
- package/dist/core/scoring/riskScoring.d.ts.map +1 -0
- package/dist/core/scoring/riskScoring.js +180 -0
- package/dist/core/scoring/riskScoring.js.map +1 -0
- package/dist/core/securityScanner.d.ts +47 -0
- package/dist/core/securityScanner.d.ts.map +1 -0
- package/dist/core/securityScanner.js +298 -0
- package/dist/core/securityScanner.js.map +1 -0
- package/dist/dependencies/aiDependencyAnalyzer.d.ts +96 -0
- package/dist/dependencies/aiDependencyAnalyzer.d.ts.map +1 -0
- package/dist/dependencies/aiDependencyAnalyzer.js +435 -0
- package/dist/dependencies/aiDependencyAnalyzer.js.map +1 -0
- package/dist/dependencies/database/cveDatabase.d.ts +32 -0
- package/dist/dependencies/database/cveDatabase.d.ts.map +1 -0
- package/dist/dependencies/database/cveDatabase.js +393 -0
- package/dist/dependencies/database/cveDatabase.js.map +1 -0
- package/dist/dependencies/database/index.d.ts +6 -0
- package/dist/dependencies/database/index.d.ts.map +1 -0
- package/dist/dependencies/database/index.js +22 -0
- package/dist/dependencies/database/index.js.map +1 -0
- package/dist/dependencies/database/maliciousPackages.d.ts +43 -0
- package/dist/dependencies/database/maliciousPackages.d.ts.map +1 -0
- package/dist/dependencies/database/maliciousPackages.js +279 -0
- package/dist/dependencies/database/maliciousPackages.js.map +1 -0
- package/dist/dependencies/dependencyAnalyzer.d.ts +74 -0
- package/dist/dependencies/dependencyAnalyzer.d.ts.map +1 -0
- package/dist/dependencies/dependencyAnalyzer.js +349 -0
- package/dist/dependencies/dependencyAnalyzer.js.map +1 -0
- package/dist/dependencies/detectors/index.d.ts +7 -0
- package/dist/dependencies/detectors/index.d.ts.map +1 -0
- package/dist/dependencies/detectors/index.js +28 -0
- package/dist/dependencies/detectors/index.js.map +1 -0
- package/dist/dependencies/detectors/securityStandards.d.ts +15 -0
- package/dist/dependencies/detectors/securityStandards.d.ts.map +1 -0
- package/dist/dependencies/detectors/securityStandards.js +178 -0
- package/dist/dependencies/detectors/securityStandards.js.map +1 -0
- package/dist/dependencies/detectors/vulnerabilityDetector.d.ts +53 -0
- package/dist/dependencies/detectors/vulnerabilityDetector.d.ts.map +1 -0
- package/dist/dependencies/detectors/vulnerabilityDetector.js +289 -0
- package/dist/dependencies/detectors/vulnerabilityDetector.js.map +1 -0
- package/dist/dependencies/index.d.ts +14 -0
- package/dist/dependencies/index.d.ts.map +1 -0
- package/dist/dependencies/index.js +43 -0
- package/dist/dependencies/index.js.map +1 -0
- package/dist/dependencies/installed/index.d.ts +8 -0
- package/dist/dependencies/installed/index.d.ts.map +1 -0
- package/dist/dependencies/installed/index.js +24 -0
- package/dist/dependencies/installed/index.js.map +1 -0
- package/dist/dependencies/installed/installedScanner.d.ts +91 -0
- package/dist/dependencies/installed/installedScanner.d.ts.map +1 -0
- package/dist/dependencies/installed/installedScanner.js +766 -0
- package/dist/dependencies/installed/installedScanner.js.map +1 -0
- package/dist/dependencies/installed/malwarePatterns.d.ts +32 -0
- package/dist/dependencies/installed/malwarePatterns.d.ts.map +1 -0
- package/dist/dependencies/installed/malwarePatterns.js +480 -0
- package/dist/dependencies/installed/malwarePatterns.js.map +1 -0
- package/dist/dependencies/installed/types.d.ts +274 -0
- package/dist/dependencies/installed/types.d.ts.map +1 -0
- package/dist/dependencies/installed/types.js +7 -0
- package/dist/dependencies/installed/types.js.map +1 -0
- package/dist/dependencies/parsers/base/baseParser.d.ts +44 -0
- package/dist/dependencies/parsers/base/baseParser.d.ts.map +1 -0
- package/dist/dependencies/parsers/base/baseParser.js +80 -0
- package/dist/dependencies/parsers/base/baseParser.js.map +1 -0
- package/dist/dependencies/parsers/base/index.d.ts +6 -0
- package/dist/dependencies/parsers/base/index.d.ts.map +1 -0
- package/dist/dependencies/parsers/base/index.js +27 -0
- package/dist/dependencies/parsers/base/index.js.map +1 -0
- package/dist/dependencies/parsers/cpp/cppParser.d.ts +36 -0
- package/dist/dependencies/parsers/cpp/cppParser.d.ts.map +1 -0
- package/dist/dependencies/parsers/cpp/cppParser.js +196 -0
- package/dist/dependencies/parsers/cpp/cppParser.js.map +1 -0
- package/dist/dependencies/parsers/cpp/index.d.ts +6 -0
- package/dist/dependencies/parsers/cpp/index.d.ts.map +1 -0
- package/dist/dependencies/parsers/cpp/index.js +27 -0
- package/dist/dependencies/parsers/cpp/index.js.map +1 -0
- package/dist/dependencies/parsers/csharp/csharpParser.d.ts +32 -0
- package/dist/dependencies/parsers/csharp/csharpParser.d.ts.map +1 -0
- package/dist/dependencies/parsers/csharp/csharpParser.js +125 -0
- package/dist/dependencies/parsers/csharp/csharpParser.js.map +1 -0
- package/dist/dependencies/parsers/csharp/index.d.ts +6 -0
- package/dist/dependencies/parsers/csharp/index.d.ts.map +1 -0
- package/dist/dependencies/parsers/csharp/index.js +27 -0
- package/dist/dependencies/parsers/csharp/index.js.map +1 -0
- package/dist/dependencies/parsers/index.d.ts +24 -0
- package/dist/dependencies/parsers/index.d.ts.map +1 -0
- package/dist/dependencies/parsers/index.js +69 -0
- package/dist/dependencies/parsers/index.js.map +1 -0
- package/dist/dependencies/parsers/java/index.d.ts +6 -0
- package/dist/dependencies/parsers/java/index.d.ts.map +1 -0
- package/dist/dependencies/parsers/java/index.js +27 -0
- package/dist/dependencies/parsers/java/index.js.map +1 -0
- package/dist/dependencies/parsers/java/javaParser.d.ts +32 -0
- package/dist/dependencies/parsers/java/javaParser.d.ts.map +1 -0
- package/dist/dependencies/parsers/java/javaParser.js +168 -0
- package/dist/dependencies/parsers/java/javaParser.js.map +1 -0
- package/dist/dependencies/parsers/javascript/index.d.ts +6 -0
- package/dist/dependencies/parsers/javascript/index.d.ts.map +1 -0
- package/dist/dependencies/parsers/javascript/index.js +27 -0
- package/dist/dependencies/parsers/javascript/index.js.map +1 -0
- package/dist/dependencies/parsers/javascript/javascriptParser.d.ts +55 -0
- package/dist/dependencies/parsers/javascript/javascriptParser.d.ts.map +1 -0
- package/dist/dependencies/parsers/javascript/javascriptParser.js +266 -0
- package/dist/dependencies/parsers/javascript/javascriptParser.js.map +1 -0
- package/dist/dependencies/parsers/php/index.d.ts +6 -0
- package/dist/dependencies/parsers/php/index.d.ts.map +1 -0
- package/dist/dependencies/parsers/php/index.js +27 -0
- package/dist/dependencies/parsers/php/index.js.map +1 -0
- package/dist/dependencies/parsers/php/phpParser.d.ts +35 -0
- package/dist/dependencies/parsers/php/phpParser.d.ts.map +1 -0
- package/dist/dependencies/parsers/php/phpParser.js +162 -0
- package/dist/dependencies/parsers/php/phpParser.js.map +1 -0
- package/dist/dependencies/parsers/python/index.d.ts +6 -0
- package/dist/dependencies/parsers/python/index.d.ts.map +1 -0
- package/dist/dependencies/parsers/python/index.js +27 -0
- package/dist/dependencies/parsers/python/index.js.map +1 -0
- package/dist/dependencies/parsers/python/pythonParser.d.ts +60 -0
- package/dist/dependencies/parsers/python/pythonParser.d.ts.map +1 -0
- package/dist/dependencies/parsers/python/pythonParser.js +336 -0
- package/dist/dependencies/parsers/python/pythonParser.js.map +1 -0
- package/dist/dependencies/types.d.ts +280 -0
- package/dist/dependencies/types.d.ts.map +1 -0
- package/dist/dependencies/types.js +59 -0
- package/dist/dependencies/types.js.map +1 -0
- package/dist/i18n/index.d.ts +2 -0
- package/dist/i18n/index.d.ts.map +1 -0
- package/dist/i18n/index.js +18 -0
- package/dist/i18n/index.js.map +1 -0
- package/dist/i18n/translations.d.ts +55 -0
- package/dist/i18n/translations.d.ts.map +1 -0
- package/dist/i18n/translations.js +119 -0
- package/dist/i18n/translations.js.map +1 -0
- package/dist/index.d.ts +14 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +36 -0
- package/dist/index.js.map +1 -0
- package/dist/reports/dependencyReportGenerator.d.ts +20 -0
- package/dist/reports/dependencyReportGenerator.d.ts.map +1 -0
- package/dist/reports/dependencyReportGenerator.js +690 -0
- package/dist/reports/dependencyReportGenerator.js.map +1 -0
- package/dist/reports/htmlReportGenerator.d.ts +43 -0
- package/dist/reports/htmlReportGenerator.d.ts.map +1 -0
- package/dist/reports/htmlReportGenerator.js +793 -0
- package/dist/reports/htmlReportGenerator.js.map +1 -0
- package/dist/reports/index.d.ts +7 -0
- package/dist/reports/index.d.ts.map +1 -0
- package/dist/reports/index.js +23 -0
- package/dist/reports/index.js.map +1 -0
- package/dist/reports/installedDepsReportGenerator.d.ts +14 -0
- package/dist/reports/installedDepsReportGenerator.d.ts.map +1 -0
- package/dist/reports/installedDepsReportGenerator.js +872 -0
- package/dist/reports/installedDepsReportGenerator.js.map +1 -0
- package/dist/rules/index.d.ts +31 -0
- package/dist/rules/index.d.ts.map +1 -0
- package/dist/rules/index.js +95 -0
- package/dist/rules/index.js.map +1 -0
- package/dist/rules/malware/categories/backdoors.d.ts +12 -0
- package/dist/rules/malware/categories/backdoors.d.ts.map +1 -0
- package/dist/rules/malware/categories/backdoors.js +163 -0
- package/dist/rules/malware/categories/backdoors.js.map +1 -0
- package/dist/rules/malware/categories/cryptominers.d.ts +13 -0
- package/dist/rules/malware/categories/cryptominers.d.ts.map +1 -0
- package/dist/rules/malware/categories/cryptominers.js +415 -0
- package/dist/rules/malware/categories/cryptominers.js.map +1 -0
- package/dist/rules/malware/categories/exfiltration.d.ts +20 -0
- package/dist/rules/malware/categories/exfiltration.d.ts.map +1 -0
- package/dist/rules/malware/categories/exfiltration.js +658 -0
- package/dist/rules/malware/categories/exfiltration.js.map +1 -0
- package/dist/rules/malware/categories/keyloggers.d.ts +19 -0
- package/dist/rules/malware/categories/keyloggers.d.ts.map +1 -0
- package/dist/rules/malware/categories/keyloggers.js +763 -0
- package/dist/rules/malware/categories/keyloggers.js.map +1 -0
- package/dist/rules/malware/categories/loaders.d.ts +20 -0
- package/dist/rules/malware/categories/loaders.d.ts.map +1 -0
- package/dist/rules/malware/categories/loaders.js +702 -0
- package/dist/rules/malware/categories/loaders.js.map +1 -0
- package/dist/rules/malware/categories/network.d.ts +19 -0
- package/dist/rules/malware/categories/network.d.ts.map +1 -0
- package/dist/rules/malware/categories/network.js +622 -0
- package/dist/rules/malware/categories/network.js.map +1 -0
- package/dist/rules/malware/categories/obfuscation.d.ts +22 -0
- package/dist/rules/malware/categories/obfuscation.d.ts.map +1 -0
- package/dist/rules/malware/categories/obfuscation.js +766 -0
- package/dist/rules/malware/categories/obfuscation.js.map +1 -0
- package/dist/rules/malware/constants/index.d.ts +281 -0
- package/dist/rules/malware/constants/index.d.ts.map +1 -0
- package/dist/rules/malware/constants/index.js +327 -0
- package/dist/rules/malware/constants/index.js.map +1 -0
- package/dist/rules/malware/engine/index.d.ts +178 -0
- package/dist/rules/malware/engine/index.d.ts.map +1 -0
- package/dist/rules/malware/engine/index.js +552 -0
- package/dist/rules/malware/engine/index.js.map +1 -0
- package/dist/rules/malware/index.d.ts +205 -0
- package/dist/rules/malware/index.d.ts.map +1 -0
- package/dist/rules/malware/index.js +837 -0
- package/dist/rules/malware/index.js.map +1 -0
- package/dist/rules/malware/scoring/index.d.ts +84 -0
- package/dist/rules/malware/scoring/index.d.ts.map +1 -0
- package/dist/rules/malware/scoring/index.js +441 -0
- package/dist/rules/malware/scoring/index.js.map +1 -0
- package/dist/rules/malware/types/index.d.ts +616 -0
- package/dist/rules/malware/types/index.d.ts.map +1 -0
- package/dist/rules/malware/types/index.js +155 -0
- package/dist/rules/malware/types/index.js.map +1 -0
- package/dist/rules/malware/utils/index.d.ts +117 -0
- package/dist/rules/malware/utils/index.d.ts.map +1 -0
- package/dist/rules/malware/utils/index.js +514 -0
- package/dist/rules/malware/utils/index.js.map +1 -0
- package/dist/rules/standards.d.ts +26 -0
- package/dist/rules/standards.d.ts.map +1 -0
- package/dist/rules/standards.js +352 -0
- package/dist/rules/standards.js.map +1 -0
- package/dist/rules/vulnerabilities/constants/index.d.ts +835 -0
- package/dist/rules/vulnerabilities/constants/index.d.ts.map +1 -0
- package/dist/rules/vulnerabilities/constants/index.js +544 -0
- package/dist/rules/vulnerabilities/constants/index.js.map +1 -0
- package/dist/rules/vulnerabilities/engine/index.d.ts +145 -0
- package/dist/rules/vulnerabilities/engine/index.d.ts.map +1 -0
- package/dist/rules/vulnerabilities/engine/index.js +581 -0
- package/dist/rules/vulnerabilities/engine/index.js.map +1 -0
- package/dist/rules/vulnerabilities/index.d.ts +148 -0
- package/dist/rules/vulnerabilities/index.d.ts.map +1 -0
- package/dist/rules/vulnerabilities/index.js +252 -0
- package/dist/rules/vulnerabilities/index.js.map +1 -0
- package/dist/rules/vulnerabilities/rules/authentication.d.ts +8 -0
- package/dist/rules/vulnerabilities/rules/authentication.d.ts.map +1 -0
- package/dist/rules/vulnerabilities/rules/authentication.js +419 -0
- package/dist/rules/vulnerabilities/rules/authentication.js.map +1 -0
- package/dist/rules/vulnerabilities/rules/commandInjection.d.ts +8 -0
- package/dist/rules/vulnerabilities/rules/commandInjection.d.ts.map +1 -0
- package/dist/rules/vulnerabilities/rules/commandInjection.js +300 -0
- package/dist/rules/vulnerabilities/rules/commandInjection.js.map +1 -0
- package/dist/rules/vulnerabilities/rules/csrf.d.ts +8 -0
- package/dist/rules/vulnerabilities/rules/csrf.d.ts.map +1 -0
- package/dist/rules/vulnerabilities/rules/csrf.js +261 -0
- package/dist/rules/vulnerabilities/rules/csrf.js.map +1 -0
- package/dist/rules/vulnerabilities/rules/deserialization.d.ts +8 -0
- package/dist/rules/vulnerabilities/rules/deserialization.d.ts.map +1 -0
- package/dist/rules/vulnerabilities/rules/deserialization.js +336 -0
- package/dist/rules/vulnerabilities/rules/deserialization.js.map +1 -0
- package/dist/rules/vulnerabilities/rules/fileUpload.d.ts +8 -0
- package/dist/rules/vulnerabilities/rules/fileUpload.d.ts.map +1 -0
- package/dist/rules/vulnerabilities/rules/fileUpload.js +325 -0
- package/dist/rules/vulnerabilities/rules/fileUpload.js.map +1 -0
- package/dist/rules/vulnerabilities/rules/hardcodedSecrets.d.ts +8 -0
- package/dist/rules/vulnerabilities/rules/hardcodedSecrets.d.ts.map +1 -0
- package/dist/rules/vulnerabilities/rules/hardcodedSecrets.js +446 -0
- package/dist/rules/vulnerabilities/rules/hardcodedSecrets.js.map +1 -0
- package/dist/rules/vulnerabilities/rules/index.d.ts +17 -0
- package/dist/rules/vulnerabilities/rules/index.d.ts.map +1 -0
- package/dist/rules/vulnerabilities/rules/index.js +47 -0
- package/dist/rules/vulnerabilities/rules/index.js.map +1 -0
- package/dist/rules/vulnerabilities/rules/pathTraversal.d.ts +8 -0
- package/dist/rules/vulnerabilities/rules/pathTraversal.d.ts.map +1 -0
- package/dist/rules/vulnerabilities/rules/pathTraversal.js +351 -0
- package/dist/rules/vulnerabilities/rules/pathTraversal.js.map +1 -0
- package/dist/rules/vulnerabilities/rules/prototypePollution.d.ts +8 -0
- package/dist/rules/vulnerabilities/rules/prototypePollution.d.ts.map +1 -0
- package/dist/rules/vulnerabilities/rules/prototypePollution.js +272 -0
- package/dist/rules/vulnerabilities/rules/prototypePollution.js.map +1 -0
- package/dist/rules/vulnerabilities/rules/securityMisconfiguration.d.ts +8 -0
- package/dist/rules/vulnerabilities/rules/securityMisconfiguration.d.ts.map +1 -0
- package/dist/rules/vulnerabilities/rules/securityMisconfiguration.js +438 -0
- package/dist/rules/vulnerabilities/rules/securityMisconfiguration.js.map +1 -0
- package/dist/rules/vulnerabilities/rules/sqlInjection.d.ts +12 -0
- package/dist/rules/vulnerabilities/rules/sqlInjection.d.ts.map +1 -0
- package/dist/rules/vulnerabilities/rules/sqlInjection.js +636 -0
- package/dist/rules/vulnerabilities/rules/sqlInjection.js.map +1 -0
- package/dist/rules/vulnerabilities/rules/ssrf.d.ts +8 -0
- package/dist/rules/vulnerabilities/rules/ssrf.d.ts.map +1 -0
- package/dist/rules/vulnerabilities/rules/ssrf.js +401 -0
- package/dist/rules/vulnerabilities/rules/ssrf.js.map +1 -0
- package/dist/rules/vulnerabilities/rules/xss.d.ts +11 -0
- package/dist/rules/vulnerabilities/rules/xss.d.ts.map +1 -0
- package/dist/rules/vulnerabilities/rules/xss.js +724 -0
- package/dist/rules/vulnerabilities/rules/xss.js.map +1 -0
- package/dist/rules/vulnerabilities/scoring/index.d.ts +80 -0
- package/dist/rules/vulnerabilities/scoring/index.d.ts.map +1 -0
- package/dist/rules/vulnerabilities/scoring/index.js +414 -0
- package/dist/rules/vulnerabilities/scoring/index.js.map +1 -0
- package/dist/rules/vulnerabilities/types/index.d.ts +830 -0
- package/dist/rules/vulnerabilities/types/index.d.ts.map +1 -0
- package/dist/rules/vulnerabilities/types/index.js +164 -0
- package/dist/rules/vulnerabilities/types/index.js.map +1 -0
- package/dist/rules/vulnerabilities/utils/index.d.ts +206 -0
- package/dist/rules/vulnerabilities/utils/index.d.ts.map +1 -0
- package/dist/rules/vulnerabilities/utils/index.js +615 -0
- package/dist/rules/vulnerabilities/utils/index.js.map +1 -0
- package/dist/types/index.d.ts +359 -0
- package/dist/types/index.d.ts.map +1 -0
- package/dist/types/index.js +61 -0
- package/dist/types/index.js.map +1 -0
- package/dist/utils/index.d.ts +82 -0
- package/dist/utils/index.d.ts.map +1 -0
- package/dist/utils/index.js +326 -0
- package/dist/utils/index.js.map +1 -0
- package/dist/utils/logger.d.ts +40 -0
- package/dist/utils/logger.d.ts.map +1 -0
- package/dist/utils/logger.js +139 -0
- package/dist/utils/logger.js.map +1 -0
- package/docs/ARCHITECTURE.md +320 -0
- package/docs/V1.2.1-IA_Performances.md +116 -0
- package/docs/images/WIN_Defender.png +0 -0
- package/package.json +68 -0
- package/secure-scan.config.json +134 -0
- package/secure-scan.sln +29 -0
- package/src/ai/aiAnalyzer.ts +714 -0
- package/src/ai/index.ts +5 -0
- package/src/analyzers/base/baseAnalyzer.ts +66 -0
- package/src/analyzers/base/index.ts +5 -0
- package/src/analyzers/c-cpp/cppAnalyzer.ts +308 -0
- package/src/analyzers/c-cpp/index.ts +5 -0
- package/src/analyzers/core/engine/index.ts +5 -0
- package/src/analyzers/core/engine/ruleEngine.ts +221 -0
- package/src/analyzers/core/index.ts +8 -0
- package/src/analyzers/core/scanner/fileScanner.ts +204 -0
- package/src/analyzers/core/scanner/index.ts +5 -0
- package/src/analyzers/core/scoring/index.ts +5 -0
- package/src/analyzers/core/scoring/riskScoring.ts +198 -0
- package/src/analyzers/core/securityScanner.ts +321 -0
- package/src/analyzers/csharp/csharpAnalyzer.ts +328 -0
- package/src/analyzers/csharp/index.ts +5 -0
- package/src/analyzers/iac/iacAnalyzer.ts +318 -0
- package/src/analyzers/iac/index.ts +5 -0
- package/src/analyzers/index.ts +67 -0
- package/src/analyzers/java/index.ts +5 -0
- package/src/analyzers/java/javaAnalyzer.ts +320 -0
- package/src/analyzers/javascript/PROMPT_JS_ANALYZER.md +267 -0
- package/src/analyzers/javascript/astUtils.ts +789 -0
- package/src/analyzers/javascript/index.ts +50 -0
- package/src/analyzers/javascript/javascriptAnalyzer.ts +984 -0
- package/src/analyzers/javascript/malwareDetector.ts +697 -0
- package/src/analyzers/javascript/packageJsonAnalyzer.ts +626 -0
- package/src/analyzers/javascript/taintAnalyzer.ts +630 -0
- package/src/analyzers/php/index.ts +5 -0
- package/src/analyzers/php/phpAnalyzer.ts +280 -0
- package/src/analyzers/python/index.ts +5 -0
- package/src/analyzers/python/pythonAnalyzer.ts +319 -0
- package/src/cli/index.ts +276 -0
- package/src/dependencies/aiDependencyAnalyzer.ts +496 -0
- package/src/dependencies/database/cveDatabase.ts +426 -0
- package/src/dependencies/database/index.ts +6 -0
- package/src/dependencies/database/maliciousPackages.ts +286 -0
- package/src/dependencies/dependencyAnalyzer.ts +394 -0
- package/src/dependencies/detectors/index.ts +7 -0
- package/src/dependencies/detectors/securityStandards.ts +200 -0
- package/src/dependencies/detectors/vulnerabilityDetector.ts +343 -0
- package/src/dependencies/index.ts +27 -0
- package/src/dependencies/installed/index.ts +8 -0
- package/src/dependencies/installed/installedScanner.ts +821 -0
- package/src/dependencies/installed/malwarePatterns.ts +492 -0
- package/src/dependencies/installed/types.ts +287 -0
- package/src/dependencies/parsers/base/baseParser.ts +108 -0
- package/src/dependencies/parsers/base/index.ts +6 -0
- package/src/dependencies/parsers/cpp/cppParser.ts +245 -0
- package/src/dependencies/parsers/cpp/index.ts +6 -0
- package/src/dependencies/parsers/csharp/csharpParser.ts +151 -0
- package/src/dependencies/parsers/csharp/index.ts +6 -0
- package/src/dependencies/parsers/index.ts +56 -0
- package/src/dependencies/parsers/java/index.ts +6 -0
- package/src/dependencies/parsers/java/javaParser.ts +203 -0
- package/src/dependencies/parsers/javascript/index.ts +6 -0
- package/src/dependencies/parsers/javascript/javascriptParser.ts +362 -0
- package/src/dependencies/parsers/php/index.ts +6 -0
- package/src/dependencies/parsers/php/phpParser.ts +208 -0
- package/src/dependencies/parsers/python/index.ts +6 -0
- package/src/dependencies/parsers/python/pythonParser.ts +437 -0
- package/src/dependencies/types.ts +330 -0
- package/src/i18n/index.ts +1 -0
- package/src/i18n/translations.ts +194 -0
- package/src/index.ts +16 -0
- package/src/reports/dependencyReportGenerator.ts +717 -0
- package/src/reports/htmlReportGenerator.ts +781 -0
- package/src/reports/index.ts +7 -0
- package/src/reports/installedDepsReportGenerator.ts +899 -0
- package/src/rules/index.ts +58 -0
- package/src/rules/malware/INFO.md +287 -0
- package/src/rules/malware/categories/backdoors.ts +174 -0
- package/src/rules/malware/categories/cryptominers.ts +434 -0
- package/src/rules/malware/categories/exfiltration.ts +677 -0
- package/src/rules/malware/categories/keyloggers.ts +780 -0
- package/src/rules/malware/categories/loaders.ts +721 -0
- package/src/rules/malware/categories/network.ts +639 -0
- package/src/rules/malware/categories/obfuscation.ts +788 -0
- package/src/rules/malware/constants/index.ts +358 -0
- package/src/rules/malware/engine/index.ts +758 -0
- package/src/rules/malware/index.ts +928 -0
- package/src/rules/malware/scoring/index.ts +549 -0
- package/src/rules/malware/types/index.ts +752 -0
- package/src/rules/malware/utils/index.ts +643 -0
- package/src/rules/standards.ts +372 -0
- package/src/rules/vulnerabilities/PROMPT_VULNERABILITIES.md +226 -0
- package/src/rules/vulnerabilities/constants/index.ts +625 -0
- package/src/rules/vulnerabilities/engine/index.ts +831 -0
- package/src/rules/vulnerabilities/index.ts +312 -0
- package/src/rules/vulnerabilities/rules/authentication.ts +426 -0
- package/src/rules/vulnerabilities/rules/commandInjection.ts +307 -0
- package/src/rules/vulnerabilities/rules/csrf.ts +268 -0
- package/src/rules/vulnerabilities/rules/deserialization.ts +343 -0
- package/src/rules/vulnerabilities/rules/fileUpload.ts +332 -0
- package/src/rules/vulnerabilities/rules/hardcodedSecrets.ts +453 -0
- package/src/rules/vulnerabilities/rules/index.ts +17 -0
- package/src/rules/vulnerabilities/rules/pathTraversal.ts +358 -0
- package/src/rules/vulnerabilities/rules/prototypePollution.ts +279 -0
- package/src/rules/vulnerabilities/rules/securityMisconfiguration.ts +445 -0
- package/src/rules/vulnerabilities/rules/sqlInjection.ts +669 -0
- package/src/rules/vulnerabilities/rules/ssrf.ts +408 -0
- package/src/rules/vulnerabilities/rules/xss.ts +753 -0
- package/src/rules/vulnerabilities/scoring/index.ts +543 -0
- package/src/rules/vulnerabilities/types/index.ts +1004 -0
- package/src/rules/vulnerabilities/utils/index.ts +709 -0
- package/src/types/index.ts +391 -0
- package/src/utils/index.ts +306 -0
- package/src/utils/logger.ts +150 -0
- package/test-installed-scanner.ts +136 -0
- package/tsconfig.json +30 -0
|
@@ -0,0 +1,200 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Security Standards for Dependency Analysis
|
|
3
|
+
* Maps dependency risks to OWASP, CWE, MITRE, and SANS standards
|
|
4
|
+
*/
|
|
5
|
+
|
|
6
|
+
import { SecurityStandard } from '../../types';
|
|
7
|
+
import { DependencyRiskCategory } from '../types';
|
|
8
|
+
|
|
9
|
+
/**
|
|
10
|
+
* OWASP A06:2021 - Vulnerable and Outdated Components
|
|
11
|
+
*/
|
|
12
|
+
const OWASP_A06: SecurityStandard = {
|
|
13
|
+
name: 'OWASP',
|
|
14
|
+
id: 'A06:2021',
|
|
15
|
+
title: 'Vulnerable and Outdated Components',
|
|
16
|
+
description: 'Components, such as libraries, frameworks, and other software modules, run with the same privileges as the application. If a vulnerable component is exploited, such an attack can facilitate serious data loss or server takeover.',
|
|
17
|
+
url: 'https://owasp.org/Top10/A06_2021-Vulnerable_and_Outdated_Components/'
|
|
18
|
+
};
|
|
19
|
+
|
|
20
|
+
/**
|
|
21
|
+
* CWE-937 - OWASP Top 10 2017 Category A9 - Using Components with Known Vulnerabilities
|
|
22
|
+
*/
|
|
23
|
+
const CWE_937: SecurityStandard = {
|
|
24
|
+
name: 'CWE',
|
|
25
|
+
id: 'CWE-937',
|
|
26
|
+
title: 'Using Components with Known Vulnerabilities',
|
|
27
|
+
description: 'The product uses a component that has a known vulnerability.',
|
|
28
|
+
url: 'https://cwe.mitre.org/data/definitions/937.html'
|
|
29
|
+
};
|
|
30
|
+
|
|
31
|
+
/**
|
|
32
|
+
* CWE-1035 - OWASP Top 10 2017 Category A9 - Using Components with Known Vulnerabilities
|
|
33
|
+
*/
|
|
34
|
+
const CWE_1035: SecurityStandard = {
|
|
35
|
+
name: 'CWE',
|
|
36
|
+
id: 'CWE-1035',
|
|
37
|
+
title: 'OWASP Top 10 2017 Category A9',
|
|
38
|
+
description: 'Weaknesses in this category are related to the A9 category Using Components with Known Vulnerabilities in the OWASP Top 10 2017.',
|
|
39
|
+
url: 'https://cwe.mitre.org/data/definitions/1035.html'
|
|
40
|
+
};
|
|
41
|
+
|
|
42
|
+
/**
|
|
43
|
+
* CWE-506 - Embedded Malicious Code
|
|
44
|
+
*/
|
|
45
|
+
const CWE_506: SecurityStandard = {
|
|
46
|
+
name: 'CWE',
|
|
47
|
+
id: 'CWE-506',
|
|
48
|
+
title: 'Embedded Malicious Code',
|
|
49
|
+
description: 'The product contains code that appears to be malicious in nature.',
|
|
50
|
+
url: 'https://cwe.mitre.org/data/definitions/506.html'
|
|
51
|
+
};
|
|
52
|
+
|
|
53
|
+
/**
|
|
54
|
+
* CWE-829 - Inclusion of Functionality from Untrusted Control Sphere
|
|
55
|
+
*/
|
|
56
|
+
const CWE_829: SecurityStandard = {
|
|
57
|
+
name: 'CWE',
|
|
58
|
+
id: 'CWE-829',
|
|
59
|
+
title: 'Inclusion of Functionality from Untrusted Control Sphere',
|
|
60
|
+
description: 'The product imports, requires, or includes executable functionality from a source that is outside of the intended control sphere.',
|
|
61
|
+
url: 'https://cwe.mitre.org/data/definitions/829.html'
|
|
62
|
+
};
|
|
63
|
+
|
|
64
|
+
/**
|
|
65
|
+
* CWE-1104 - Use of Unmaintained Third Party Components
|
|
66
|
+
*/
|
|
67
|
+
const CWE_1104: SecurityStandard = {
|
|
68
|
+
name: 'CWE',
|
|
69
|
+
id: 'CWE-1104',
|
|
70
|
+
title: 'Use of Unmaintained Third Party Components',
|
|
71
|
+
description: 'The product relies on third-party components that are not actively supported or maintained by the original developer or a trusted proxy.',
|
|
72
|
+
url: 'https://cwe.mitre.org/data/definitions/1104.html'
|
|
73
|
+
};
|
|
74
|
+
|
|
75
|
+
/**
|
|
76
|
+
* MITRE ATT&CK - Supply Chain Compromise
|
|
77
|
+
*/
|
|
78
|
+
const MITRE_SUPPLY_CHAIN: SecurityStandard = {
|
|
79
|
+
name: 'MITRE',
|
|
80
|
+
id: 'T1195',
|
|
81
|
+
title: 'Supply Chain Compromise',
|
|
82
|
+
description: 'Adversaries may manipulate products or product delivery mechanisms prior to receipt by a final consumer for the purpose of data or system compromise.',
|
|
83
|
+
url: 'https://attack.mitre.org/techniques/T1195/'
|
|
84
|
+
};
|
|
85
|
+
|
|
86
|
+
/**
|
|
87
|
+
* MITRE ATT&CK - Compromise Software Supply Chain
|
|
88
|
+
*/
|
|
89
|
+
const MITRE_T1195_002: SecurityStandard = {
|
|
90
|
+
name: 'MITRE',
|
|
91
|
+
id: 'T1195.002',
|
|
92
|
+
title: 'Compromise Software Supply Chain',
|
|
93
|
+
description: 'Adversaries may manipulate application software prior to receipt by a final consumer for the purpose of data or system compromise.',
|
|
94
|
+
url: 'https://attack.mitre.org/techniques/T1195/002/'
|
|
95
|
+
};
|
|
96
|
+
|
|
97
|
+
/**
|
|
98
|
+
* SANS Top 25 - Related entries
|
|
99
|
+
*/
|
|
100
|
+
const SANS_UNTRUSTED_INPUT: SecurityStandard = {
|
|
101
|
+
name: 'SANS',
|
|
102
|
+
id: 'SANS-1',
|
|
103
|
+
title: 'Improper Neutralization of Special Elements',
|
|
104
|
+
description: 'Failure to properly validate and sanitize input from untrusted sources.',
|
|
105
|
+
url: 'https://www.sans.org/top25-software-errors/'
|
|
106
|
+
};
|
|
107
|
+
|
|
108
|
+
/**
|
|
109
|
+
* Get standards for a specific CWE
|
|
110
|
+
*/
|
|
111
|
+
function getCWEStandard(cweId: string): SecurityStandard | null {
|
|
112
|
+
const cweMap: Record<string, SecurityStandard> = {
|
|
113
|
+
'CWE-937': CWE_937,
|
|
114
|
+
'CWE-1035': CWE_1035,
|
|
115
|
+
'CWE-506': CWE_506,
|
|
116
|
+
'CWE-829': CWE_829,
|
|
117
|
+
'CWE-1104': CWE_1104
|
|
118
|
+
};
|
|
119
|
+
|
|
120
|
+
if (cweMap[cweId]) {
|
|
121
|
+
return cweMap[cweId];
|
|
122
|
+
}
|
|
123
|
+
|
|
124
|
+
// Create a generic CWE standard for unknown CWEs
|
|
125
|
+
const cweNumber = cweId.replace('CWE-', '');
|
|
126
|
+
return {
|
|
127
|
+
name: 'CWE',
|
|
128
|
+
id: cweId,
|
|
129
|
+
title: `CWE-${cweNumber}`,
|
|
130
|
+
description: `Common Weakness Enumeration ${cweNumber}`,
|
|
131
|
+
url: `https://cwe.mitre.org/data/definitions/${cweNumber}.html`
|
|
132
|
+
};
|
|
133
|
+
}
|
|
134
|
+
|
|
135
|
+
/**
|
|
136
|
+
* Get security standards for a dependency risk category
|
|
137
|
+
*/
|
|
138
|
+
export function getStandardsForDependencyRisk(
|
|
139
|
+
category: DependencyRiskCategory,
|
|
140
|
+
cwes?: string[]
|
|
141
|
+
): SecurityStandard[] {
|
|
142
|
+
const standards: SecurityStandard[] = [];
|
|
143
|
+
|
|
144
|
+
// Always include OWASP A06 for dependency risks
|
|
145
|
+
standards.push(OWASP_A06);
|
|
146
|
+
|
|
147
|
+
switch (category) {
|
|
148
|
+
case DependencyRiskCategory.VULNERABILITY:
|
|
149
|
+
standards.push(CWE_937, CWE_1035);
|
|
150
|
+
// Add specific CWEs if provided
|
|
151
|
+
if (cwes) {
|
|
152
|
+
for (const cwe of cwes) {
|
|
153
|
+
const cweStandard = getCWEStandard(cwe);
|
|
154
|
+
if (cweStandard && !standards.some(s => s.id === cweStandard.id)) {
|
|
155
|
+
standards.push(cweStandard);
|
|
156
|
+
}
|
|
157
|
+
}
|
|
158
|
+
}
|
|
159
|
+
break;
|
|
160
|
+
|
|
161
|
+
case DependencyRiskCategory.MALICIOUS:
|
|
162
|
+
standards.push(CWE_506, CWE_829, MITRE_SUPPLY_CHAIN, MITRE_T1195_002);
|
|
163
|
+
break;
|
|
164
|
+
|
|
165
|
+
case DependencyRiskCategory.SUPPLY_CHAIN:
|
|
166
|
+
standards.push(CWE_829, MITRE_SUPPLY_CHAIN, MITRE_T1195_002);
|
|
167
|
+
break;
|
|
168
|
+
|
|
169
|
+
case DependencyRiskCategory.OUTDATED:
|
|
170
|
+
standards.push(CWE_1104);
|
|
171
|
+
break;
|
|
172
|
+
|
|
173
|
+
case DependencyRiskCategory.MAINTENANCE:
|
|
174
|
+
standards.push(CWE_1104);
|
|
175
|
+
break;
|
|
176
|
+
|
|
177
|
+
case DependencyRiskCategory.LICENSE:
|
|
178
|
+
// No specific security standards for license issues
|
|
179
|
+
break;
|
|
180
|
+
}
|
|
181
|
+
|
|
182
|
+
return standards;
|
|
183
|
+
}
|
|
184
|
+
|
|
185
|
+
/**
|
|
186
|
+
* Get all dependency-related security standards
|
|
187
|
+
*/
|
|
188
|
+
export function getAllDependencyStandards(): SecurityStandard[] {
|
|
189
|
+
return [
|
|
190
|
+
OWASP_A06,
|
|
191
|
+
CWE_937,
|
|
192
|
+
CWE_1035,
|
|
193
|
+
CWE_506,
|
|
194
|
+
CWE_829,
|
|
195
|
+
CWE_1104,
|
|
196
|
+
MITRE_SUPPLY_CHAIN,
|
|
197
|
+
MITRE_T1195_002,
|
|
198
|
+
SANS_UNTRUSTED_INPUT
|
|
199
|
+
];
|
|
200
|
+
}
|
|
@@ -0,0 +1,343 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Vulnerability Detector
|
|
3
|
+
* Detects vulnerabilities, supply chain risks, and malicious packages
|
|
4
|
+
*/
|
|
5
|
+
|
|
6
|
+
import {
|
|
7
|
+
Dependency,
|
|
8
|
+
DependencyVulnerability,
|
|
9
|
+
DependencyRiskCategory,
|
|
10
|
+
DependencyRecommendation,
|
|
11
|
+
CVEInfo,
|
|
12
|
+
SupplyChainRisk,
|
|
13
|
+
MalwareIndicator,
|
|
14
|
+
TyposquattingCandidate
|
|
15
|
+
} from '../types';
|
|
16
|
+
import { Severity, SecurityStandard } from '../../types';
|
|
17
|
+
import { generateId } from '../../utils';
|
|
18
|
+
import { getCVEsForPackage } from '../database/cveDatabase';
|
|
19
|
+
import { getMaliciousPackage, isDeprecatedPackage, getPopularPackages } from '../database/maliciousPackages';
|
|
20
|
+
import { getStandardsForDependencyRisk } from './securityStandards';
|
|
21
|
+
import { logger } from '../../utils/logger';
|
|
22
|
+
|
|
23
|
+
/**
|
|
24
|
+
* Vulnerability Detector Class
|
|
25
|
+
* Detects various security issues in dependencies
|
|
26
|
+
*/
|
|
27
|
+
export class VulnerabilityDetector {
|
|
28
|
+
/**
|
|
29
|
+
* Analyze a dependency for vulnerabilities and risks
|
|
30
|
+
*/
|
|
31
|
+
async analyzeDependency(dependency: Dependency): Promise<DependencyVulnerability[]> {
|
|
32
|
+
const vulnerabilities: DependencyVulnerability[] = [];
|
|
33
|
+
|
|
34
|
+
// Check for known malicious packages
|
|
35
|
+
const maliciousCheck = await this.checkMaliciousPackage(dependency);
|
|
36
|
+
if (maliciousCheck) {
|
|
37
|
+
vulnerabilities.push(maliciousCheck);
|
|
38
|
+
}
|
|
39
|
+
|
|
40
|
+
// Check for CVEs
|
|
41
|
+
const cveVulns = await this.checkCVEs(dependency);
|
|
42
|
+
vulnerabilities.push(...cveVulns);
|
|
43
|
+
|
|
44
|
+
// Check for typosquatting
|
|
45
|
+
const typosquatCheck = await this.checkTyposquatting(dependency);
|
|
46
|
+
if (typosquatCheck) {
|
|
47
|
+
vulnerabilities.push(typosquatCheck);
|
|
48
|
+
}
|
|
49
|
+
|
|
50
|
+
// Check for deprecated packages
|
|
51
|
+
const deprecatedCheck = await this.checkDeprecated(dependency);
|
|
52
|
+
if (deprecatedCheck) {
|
|
53
|
+
vulnerabilities.push(deprecatedCheck);
|
|
54
|
+
}
|
|
55
|
+
|
|
56
|
+
// Check for supply chain risks
|
|
57
|
+
const supplyChainRisks = await this.checkSupplyChainRisks(dependency);
|
|
58
|
+
vulnerabilities.push(...supplyChainRisks);
|
|
59
|
+
|
|
60
|
+
return vulnerabilities;
|
|
61
|
+
}
|
|
62
|
+
|
|
63
|
+
/**
|
|
64
|
+
* Check if package is known malicious
|
|
65
|
+
*/
|
|
66
|
+
private async checkMaliciousPackage(dependency: Dependency): Promise<DependencyVulnerability | null> {
|
|
67
|
+
const malicious = getMaliciousPackage(dependency.name, dependency.ecosystem);
|
|
68
|
+
|
|
69
|
+
if (!malicious) return null;
|
|
70
|
+
|
|
71
|
+
// Check if affected version
|
|
72
|
+
if (malicious.affectedVersions && malicious.affectedVersions !== '*') {
|
|
73
|
+
const version = dependency.resolvedVersion || dependency.version;
|
|
74
|
+
const affectedVersions = malicious.affectedVersions.split(',').map(v => v.trim());
|
|
75
|
+
|
|
76
|
+
if (!affectedVersions.some(v => v === version || v === '*')) {
|
|
77
|
+
return null;
|
|
78
|
+
}
|
|
79
|
+
}
|
|
80
|
+
|
|
81
|
+
logger.debug(`[VulnDetector] Malicious package detected: ${dependency.name}`);
|
|
82
|
+
|
|
83
|
+
return {
|
|
84
|
+
id: generateId(),
|
|
85
|
+
dependency,
|
|
86
|
+
severity: Severity.CRITICAL,
|
|
87
|
+
category: DependencyRiskCategory.MALICIOUS,
|
|
88
|
+
title: `Known Malicious Package: ${dependency.name}`,
|
|
89
|
+
description: malicious.description,
|
|
90
|
+
malwareIndicators: malicious.indicators,
|
|
91
|
+
standards: getStandardsForDependencyRisk(DependencyRiskCategory.MALICIOUS),
|
|
92
|
+
recommendation: DependencyRecommendation.REMOVE,
|
|
93
|
+
recommendationDetails: `Immediately remove ${dependency.name} from your project. This package has been reported as malicious. ${malicious.references.length > 0 ? 'See references for more information.' : ''}`,
|
|
94
|
+
confidence: 100,
|
|
95
|
+
timestamp: new Date()
|
|
96
|
+
};
|
|
97
|
+
}
|
|
98
|
+
|
|
99
|
+
/**
|
|
100
|
+
* Check for known CVEs
|
|
101
|
+
*/
|
|
102
|
+
private async checkCVEs(dependency: Dependency): Promise<DependencyVulnerability[]> {
|
|
103
|
+
const vulnerabilities: DependencyVulnerability[] = [];
|
|
104
|
+
const version = dependency.resolvedVersion || dependency.version;
|
|
105
|
+
|
|
106
|
+
// Skip if no version specified
|
|
107
|
+
if (!version || version === '*') {
|
|
108
|
+
return vulnerabilities;
|
|
109
|
+
}
|
|
110
|
+
|
|
111
|
+
const cves = getCVEsForPackage(dependency.name, dependency.ecosystem, version);
|
|
112
|
+
|
|
113
|
+
for (const cve of cves) {
|
|
114
|
+
logger.debug(`[VulnDetector] CVE detected: ${cve.id} in ${dependency.name}@${version}`);
|
|
115
|
+
|
|
116
|
+
vulnerabilities.push({
|
|
117
|
+
id: generateId(),
|
|
118
|
+
dependency,
|
|
119
|
+
severity: cve.severity,
|
|
120
|
+
category: DependencyRiskCategory.VULNERABILITY,
|
|
121
|
+
title: `${cve.id}: ${dependency.name}`,
|
|
122
|
+
description: cve.description,
|
|
123
|
+
cve,
|
|
124
|
+
standards: getStandardsForDependencyRisk(DependencyRiskCategory.VULNERABILITY, cve.cwes),
|
|
125
|
+
recommendation: cve.fixedVersion
|
|
126
|
+
? DependencyRecommendation.UPGRADE
|
|
127
|
+
: DependencyRecommendation.REVIEW,
|
|
128
|
+
recommendationDetails: cve.fixedVersion
|
|
129
|
+
? `Upgrade ${dependency.name} to version ${cve.fixedVersion} or later to fix ${cve.id}.`
|
|
130
|
+
: `Review the usage of ${dependency.name} and consider alternative packages. No fixed version available.`,
|
|
131
|
+
confidence: 95,
|
|
132
|
+
timestamp: new Date()
|
|
133
|
+
});
|
|
134
|
+
}
|
|
135
|
+
|
|
136
|
+
return vulnerabilities;
|
|
137
|
+
}
|
|
138
|
+
|
|
139
|
+
/**
|
|
140
|
+
* Check for typosquatting
|
|
141
|
+
*/
|
|
142
|
+
private async checkTyposquatting(dependency: Dependency): Promise<DependencyVulnerability | null> {
|
|
143
|
+
const popularPackages = getPopularPackages(dependency.ecosystem);
|
|
144
|
+
const candidates = this.findTyposquatCandidates(dependency.name, popularPackages);
|
|
145
|
+
|
|
146
|
+
if (candidates.length === 0) return null;
|
|
147
|
+
|
|
148
|
+
const bestMatch = candidates[0];
|
|
149
|
+
|
|
150
|
+
// Only flag if similarity is high enough (potential typosquat)
|
|
151
|
+
if (bestMatch.similarityScore < 80) return null;
|
|
152
|
+
|
|
153
|
+
logger.debug(`[VulnDetector] Potential typosquatting: ${dependency.name} similar to ${bestMatch.legitimatePackage}`);
|
|
154
|
+
|
|
155
|
+
return {
|
|
156
|
+
id: generateId(),
|
|
157
|
+
dependency,
|
|
158
|
+
severity: Severity.HIGH,
|
|
159
|
+
category: DependencyRiskCategory.SUPPLY_CHAIN,
|
|
160
|
+
title: `Potential Typosquatting: ${dependency.name}`,
|
|
161
|
+
description: `The package "${dependency.name}" is very similar to the popular package "${bestMatch.legitimatePackage}" (${bestMatch.similarityScore}% similarity). This could be a typosquatting attempt.`,
|
|
162
|
+
supplyChainRisks: [SupplyChainRisk.TYPOSQUATTING],
|
|
163
|
+
standards: getStandardsForDependencyRisk(DependencyRiskCategory.SUPPLY_CHAIN),
|
|
164
|
+
recommendation: DependencyRecommendation.REVIEW,
|
|
165
|
+
recommendationDetails: `Verify that "${dependency.name}" is the intended package and not a typosquat of "${bestMatch.legitimatePackage}". If this is a mistake, replace with the correct package.`,
|
|
166
|
+
confidence: bestMatch.similarityScore,
|
|
167
|
+
timestamp: new Date()
|
|
168
|
+
};
|
|
169
|
+
}
|
|
170
|
+
|
|
171
|
+
/**
|
|
172
|
+
* Find typosquatting candidates
|
|
173
|
+
*/
|
|
174
|
+
private findTyposquatCandidates(name: string, popularPackages: string[]): TyposquattingCandidate[] {
|
|
175
|
+
const candidates: TyposquattingCandidate[] = [];
|
|
176
|
+
const normalizedName = name.toLowerCase();
|
|
177
|
+
|
|
178
|
+
for (const popular of popularPackages) {
|
|
179
|
+
const normalizedPopular = popular.toLowerCase();
|
|
180
|
+
|
|
181
|
+
// Skip if same package
|
|
182
|
+
if (normalizedName === normalizedPopular) continue;
|
|
183
|
+
|
|
184
|
+
const similarity = this.calculateSimilarity(normalizedName, normalizedPopular);
|
|
185
|
+
|
|
186
|
+
if (similarity >= 70) {
|
|
187
|
+
const typosquatType = this.detectTyposquatType(normalizedName, normalizedPopular);
|
|
188
|
+
|
|
189
|
+
candidates.push({
|
|
190
|
+
suspiciousName: name,
|
|
191
|
+
legitimatePackage: popular,
|
|
192
|
+
similarityScore: similarity,
|
|
193
|
+
typosquatType
|
|
194
|
+
});
|
|
195
|
+
}
|
|
196
|
+
}
|
|
197
|
+
|
|
198
|
+
// Sort by similarity score descending
|
|
199
|
+
return candidates.sort((a, b) => b.similarityScore - a.similarityScore);
|
|
200
|
+
}
|
|
201
|
+
|
|
202
|
+
/**
|
|
203
|
+
* Calculate string similarity (Levenshtein distance based)
|
|
204
|
+
*/
|
|
205
|
+
private calculateSimilarity(a: string, b: string): number {
|
|
206
|
+
const distance = this.levenshteinDistance(a, b);
|
|
207
|
+
const maxLength = Math.max(a.length, b.length);
|
|
208
|
+
return Math.round((1 - distance / maxLength) * 100);
|
|
209
|
+
}
|
|
210
|
+
|
|
211
|
+
/**
|
|
212
|
+
* Levenshtein distance algorithm
|
|
213
|
+
*/
|
|
214
|
+
private levenshteinDistance(a: string, b: string): number {
|
|
215
|
+
const matrix: number[][] = [];
|
|
216
|
+
|
|
217
|
+
for (let i = 0; i <= b.length; i++) {
|
|
218
|
+
matrix[i] = [i];
|
|
219
|
+
}
|
|
220
|
+
for (let j = 0; j <= a.length; j++) {
|
|
221
|
+
matrix[0][j] = j;
|
|
222
|
+
}
|
|
223
|
+
|
|
224
|
+
for (let i = 1; i <= b.length; i++) {
|
|
225
|
+
for (let j = 1; j <= a.length; j++) {
|
|
226
|
+
if (b.charAt(i - 1) === a.charAt(j - 1)) {
|
|
227
|
+
matrix[i][j] = matrix[i - 1][j - 1];
|
|
228
|
+
} else {
|
|
229
|
+
matrix[i][j] = Math.min(
|
|
230
|
+
matrix[i - 1][j - 1] + 1,
|
|
231
|
+
matrix[i][j - 1] + 1,
|
|
232
|
+
matrix[i - 1][j] + 1
|
|
233
|
+
);
|
|
234
|
+
}
|
|
235
|
+
}
|
|
236
|
+
}
|
|
237
|
+
|
|
238
|
+
return matrix[b.length][a.length];
|
|
239
|
+
}
|
|
240
|
+
|
|
241
|
+
/**
|
|
242
|
+
* Detect type of typosquat
|
|
243
|
+
*/
|
|
244
|
+
private detectTyposquatType(suspicious: string, legitimate: string): TyposquattingCandidate['typosquatType'] {
|
|
245
|
+
const lenDiff = Math.abs(suspicious.length - legitimate.length);
|
|
246
|
+
|
|
247
|
+
if (lenDiff === 1) {
|
|
248
|
+
if (suspicious.length > legitimate.length) {
|
|
249
|
+
return 'extra_char';
|
|
250
|
+
} else {
|
|
251
|
+
return 'missing_char';
|
|
252
|
+
}
|
|
253
|
+
}
|
|
254
|
+
|
|
255
|
+
if (lenDiff === 0) {
|
|
256
|
+
// Check for homograph (e.g., l vs 1, o vs 0)
|
|
257
|
+
const homographs = [['l', '1'], ['o', '0'], ['i', 'l'], ['rn', 'm']];
|
|
258
|
+
for (const [a, b] of homographs) {
|
|
259
|
+
if (suspicious.includes(a) && legitimate.includes(b)) {
|
|
260
|
+
return 'homograph';
|
|
261
|
+
}
|
|
262
|
+
if (suspicious.includes(b) && legitimate.includes(a)) {
|
|
263
|
+
return 'homograph';
|
|
264
|
+
}
|
|
265
|
+
}
|
|
266
|
+
return 'character_swap';
|
|
267
|
+
}
|
|
268
|
+
|
|
269
|
+
return 'bit_flip';
|
|
270
|
+
}
|
|
271
|
+
|
|
272
|
+
/**
|
|
273
|
+
* Check for deprecated packages
|
|
274
|
+
*/
|
|
275
|
+
private async checkDeprecated(dependency: Dependency): Promise<DependencyVulnerability | null> {
|
|
276
|
+
const { deprecated, info } = isDeprecatedPackage(dependency.name);
|
|
277
|
+
|
|
278
|
+
if (!deprecated || !info) return null;
|
|
279
|
+
|
|
280
|
+
// Check ecosystem match
|
|
281
|
+
if (info.ecosystem !== dependency.ecosystem) return null;
|
|
282
|
+
|
|
283
|
+
logger.debug(`[VulnDetector] Deprecated package: ${dependency.name}`);
|
|
284
|
+
|
|
285
|
+
return {
|
|
286
|
+
id: generateId(),
|
|
287
|
+
dependency,
|
|
288
|
+
severity: Severity.LOW,
|
|
289
|
+
category: DependencyRiskCategory.OUTDATED,
|
|
290
|
+
title: `Deprecated Package: ${dependency.name}`,
|
|
291
|
+
description: `The package "${dependency.name}" is deprecated. ${info.reason}`,
|
|
292
|
+
standards: getStandardsForDependencyRisk(DependencyRiskCategory.OUTDATED),
|
|
293
|
+
recommendation: info.replacement
|
|
294
|
+
? DependencyRecommendation.REPLACE
|
|
295
|
+
: DependencyRecommendation.REVIEW,
|
|
296
|
+
recommendationDetails: info.replacement
|
|
297
|
+
? `Replace ${dependency.name} with ${info.replacement}.`
|
|
298
|
+
: `Review usage of ${dependency.name} and consider alternatives.`,
|
|
299
|
+
confidence: 90,
|
|
300
|
+
timestamp: new Date()
|
|
301
|
+
};
|
|
302
|
+
}
|
|
303
|
+
|
|
304
|
+
/**
|
|
305
|
+
* Check for supply chain risks
|
|
306
|
+
*/
|
|
307
|
+
private async checkSupplyChainRisks(dependency: Dependency): Promise<DependencyVulnerability[]> {
|
|
308
|
+
const vulnerabilities: DependencyVulnerability[] = [];
|
|
309
|
+
const risks: SupplyChainRisk[] = [];
|
|
310
|
+
|
|
311
|
+
// Check for suspicious version patterns
|
|
312
|
+
const version = dependency.resolvedVersion || dependency.version;
|
|
313
|
+
|
|
314
|
+
// Flag 0.0.x versions as potentially new/untested
|
|
315
|
+
if (version && /^0\.0\.\d+/.test(version)) {
|
|
316
|
+
risks.push(SupplyChainRisk.NEW_PACKAGE);
|
|
317
|
+
}
|
|
318
|
+
|
|
319
|
+
// Flag packages with very recent versions (could be suspicious release)
|
|
320
|
+
// Note: This would need actual publish date data in production
|
|
321
|
+
|
|
322
|
+
if (risks.length > 0) {
|
|
323
|
+
vulnerabilities.push({
|
|
324
|
+
id: generateId(),
|
|
325
|
+
dependency,
|
|
326
|
+
severity: Severity.INFO,
|
|
327
|
+
category: DependencyRiskCategory.SUPPLY_CHAIN,
|
|
328
|
+
title: `Supply Chain Risk: ${dependency.name}`,
|
|
329
|
+
description: `The package "${dependency.name}" has potential supply chain risks: ${risks.join(', ')}`,
|
|
330
|
+
supplyChainRisks: risks,
|
|
331
|
+
standards: getStandardsForDependencyRisk(DependencyRiskCategory.SUPPLY_CHAIN),
|
|
332
|
+
recommendation: DependencyRecommendation.MONITOR,
|
|
333
|
+
recommendationDetails: `Monitor ${dependency.name} for any suspicious activity or updates. Consider pinning to a specific trusted version.`,
|
|
334
|
+
confidence: 60,
|
|
335
|
+
timestamp: new Date()
|
|
336
|
+
});
|
|
337
|
+
}
|
|
338
|
+
|
|
339
|
+
return vulnerabilities;
|
|
340
|
+
}
|
|
341
|
+
}
|
|
342
|
+
|
|
343
|
+
export default VulnerabilityDetector;
|
|
@@ -0,0 +1,27 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Dependency Analysis Module Exports
|
|
3
|
+
* Software Composition Analysis (SCA) for Secure-Scan
|
|
4
|
+
*/
|
|
5
|
+
|
|
6
|
+
// Types
|
|
7
|
+
export * from './types';
|
|
8
|
+
|
|
9
|
+
// Parsers
|
|
10
|
+
export * from './parsers';
|
|
11
|
+
|
|
12
|
+
// Detectors
|
|
13
|
+
export * from './detectors';
|
|
14
|
+
|
|
15
|
+
// Database
|
|
16
|
+
export * from './database';
|
|
17
|
+
|
|
18
|
+
// Main analyzer
|
|
19
|
+
export * from './dependencyAnalyzer';
|
|
20
|
+
export { default as DependencyAnalyzer } from './dependencyAnalyzer';
|
|
21
|
+
|
|
22
|
+
// AI Analyzer
|
|
23
|
+
export * from './aiDependencyAnalyzer';
|
|
24
|
+
export { default as AIDependencyAnalyzer } from './aiDependencyAnalyzer';
|
|
25
|
+
|
|
26
|
+
// Installed Dependencies Scanner (Malware Detection)
|
|
27
|
+
export * from './installed';
|