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,320 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Java Analyzer
|
|
3
|
+
* Specialized analyzer for Java code
|
|
4
|
+
*/
|
|
5
|
+
|
|
6
|
+
import { BaseAnalyzer } from '../base';
|
|
7
|
+
import { ScannedFile, Finding, Rule, SupportedLanguage, Severity, ThreatType, FindingCategory } from '../../types';
|
|
8
|
+
import { generateId, extractCodeContext } from '../../utils';
|
|
9
|
+
import { getStandardsForThreat } from '../../rules/standards';
|
|
10
|
+
|
|
11
|
+
/**
|
|
12
|
+
* Java Analyzer Class
|
|
13
|
+
*/
|
|
14
|
+
export class JavaAnalyzer extends BaseAnalyzer {
|
|
15
|
+
name = 'Java Analyzer';
|
|
16
|
+
languages: SupportedLanguage[] = ['java'];
|
|
17
|
+
version = '1.0.0';
|
|
18
|
+
|
|
19
|
+
/**
|
|
20
|
+
* Analyze Java file
|
|
21
|
+
*/
|
|
22
|
+
async analyze(file: ScannedFile, rules: Rule[]): Promise<Finding[]> {
|
|
23
|
+
const findings: Finding[] = [];
|
|
24
|
+
|
|
25
|
+
// Filter rules for Java
|
|
26
|
+
const javaRules = rules.filter(r => r.languages.includes('java'));
|
|
27
|
+
|
|
28
|
+
// Run rule engine
|
|
29
|
+
const ruleFindings = await this.ruleEngine.analyzeFile(file, javaRules);
|
|
30
|
+
findings.push(...ruleFindings);
|
|
31
|
+
|
|
32
|
+
// Additional Java-specific analysis
|
|
33
|
+
const customFindings = await this.customAnalysis(file);
|
|
34
|
+
findings.push(...customFindings);
|
|
35
|
+
|
|
36
|
+
return findings;
|
|
37
|
+
}
|
|
38
|
+
|
|
39
|
+
/**
|
|
40
|
+
* Custom Java-specific analysis
|
|
41
|
+
*/
|
|
42
|
+
private async customAnalysis(file: ScannedFile): Promise<Finding[]> {
|
|
43
|
+
const findings: Finding[] = [];
|
|
44
|
+
const lines = file.content.split('\n');
|
|
45
|
+
|
|
46
|
+
for (let i = 0; i < lines.length; i++) {
|
|
47
|
+
const line = lines[i];
|
|
48
|
+
const lineNum = i + 1;
|
|
49
|
+
|
|
50
|
+
// Check for ObjectInputStream deserialization
|
|
51
|
+
if (this.checkDeserializationSinks(line)) {
|
|
52
|
+
findings.push(this.createFinding(
|
|
53
|
+
file,
|
|
54
|
+
lineNum,
|
|
55
|
+
'Unsafe Deserialization',
|
|
56
|
+
'ObjectInputStream.readObject() can execute arbitrary code.',
|
|
57
|
+
Severity.CRITICAL,
|
|
58
|
+
ThreatType.INSECURE_DESERIALIZATION
|
|
59
|
+
));
|
|
60
|
+
}
|
|
61
|
+
|
|
62
|
+
// Check for Runtime.exec
|
|
63
|
+
if (this.checkRuntimeExec(line)) {
|
|
64
|
+
findings.push(this.createFinding(
|
|
65
|
+
file,
|
|
66
|
+
lineNum,
|
|
67
|
+
'Potential Command Injection',
|
|
68
|
+
'Runtime.exec() with dynamic input can lead to command injection.',
|
|
69
|
+
Severity.CRITICAL,
|
|
70
|
+
ThreatType.COMMAND_INJECTION
|
|
71
|
+
));
|
|
72
|
+
}
|
|
73
|
+
|
|
74
|
+
// Check for SQL injection patterns
|
|
75
|
+
if (this.checkSqlInjection(line)) {
|
|
76
|
+
findings.push(this.createFinding(
|
|
77
|
+
file,
|
|
78
|
+
lineNum,
|
|
79
|
+
'Potential SQL Injection',
|
|
80
|
+
'String concatenation in SQL query detected. Use PreparedStatement.',
|
|
81
|
+
Severity.CRITICAL,
|
|
82
|
+
ThreatType.SQL_INJECTION
|
|
83
|
+
));
|
|
84
|
+
}
|
|
85
|
+
|
|
86
|
+
// Check for XXE vulnerabilities
|
|
87
|
+
if (this.checkXxe(line)) {
|
|
88
|
+
findings.push(this.createFinding(
|
|
89
|
+
file,
|
|
90
|
+
lineNum,
|
|
91
|
+
'Potential XXE Vulnerability',
|
|
92
|
+
'XML parser may be vulnerable to XXE attacks.',
|
|
93
|
+
Severity.HIGH,
|
|
94
|
+
ThreatType.DANGEROUS_FUNCTION
|
|
95
|
+
));
|
|
96
|
+
}
|
|
97
|
+
|
|
98
|
+
// Check for path traversal
|
|
99
|
+
if (this.checkPathTraversal(line)) {
|
|
100
|
+
findings.push(this.createFinding(
|
|
101
|
+
file,
|
|
102
|
+
lineNum,
|
|
103
|
+
'Potential Path Traversal',
|
|
104
|
+
'File operations with user-controlled input detected.',
|
|
105
|
+
Severity.HIGH,
|
|
106
|
+
ThreatType.PATH_TRAVERSAL
|
|
107
|
+
));
|
|
108
|
+
}
|
|
109
|
+
|
|
110
|
+
// Check for insecure random
|
|
111
|
+
if (this.checkInsecureRandom(line)) {
|
|
112
|
+
findings.push(this.createFinding(
|
|
113
|
+
file,
|
|
114
|
+
lineNum,
|
|
115
|
+
'Insecure Random Number Generator',
|
|
116
|
+
'java.util.Random is not cryptographically secure.',
|
|
117
|
+
Severity.MEDIUM,
|
|
118
|
+
ThreatType.WEAK_RANDOM
|
|
119
|
+
));
|
|
120
|
+
}
|
|
121
|
+
|
|
122
|
+
// Check for weak crypto
|
|
123
|
+
if (this.checkWeakCrypto(line)) {
|
|
124
|
+
findings.push(this.createFinding(
|
|
125
|
+
file,
|
|
126
|
+
lineNum,
|
|
127
|
+
'Weak Cryptographic Algorithm',
|
|
128
|
+
'Use of weak or deprecated cryptographic algorithm.',
|
|
129
|
+
Severity.MEDIUM,
|
|
130
|
+
ThreatType.INSECURE_CRYPTO
|
|
131
|
+
));
|
|
132
|
+
}
|
|
133
|
+
|
|
134
|
+
// Check for LDAP injection
|
|
135
|
+
if (this.checkLdapInjection(line)) {
|
|
136
|
+
findings.push(this.createFinding(
|
|
137
|
+
file,
|
|
138
|
+
lineNum,
|
|
139
|
+
'Potential LDAP Injection',
|
|
140
|
+
'LDAP query with user-controlled input detected.',
|
|
141
|
+
Severity.HIGH,
|
|
142
|
+
ThreatType.LDAP_INJECTION
|
|
143
|
+
));
|
|
144
|
+
}
|
|
145
|
+
|
|
146
|
+
// Check for Spring Expression Language injection
|
|
147
|
+
if (this.checkSpelInjection(line)) {
|
|
148
|
+
findings.push(this.createFinding(
|
|
149
|
+
file,
|
|
150
|
+
lineNum,
|
|
151
|
+
'SpEL Expression Injection',
|
|
152
|
+
'Spring Expression Language with user input can lead to RCE.',
|
|
153
|
+
Severity.CRITICAL,
|
|
154
|
+
ThreatType.COMMAND_INJECTION
|
|
155
|
+
));
|
|
156
|
+
}
|
|
157
|
+
}
|
|
158
|
+
|
|
159
|
+
return findings;
|
|
160
|
+
}
|
|
161
|
+
|
|
162
|
+
/**
|
|
163
|
+
* Check for deserialization sinks
|
|
164
|
+
*/
|
|
165
|
+
private checkDeserializationSinks(line: string): boolean {
|
|
166
|
+
const patterns = [
|
|
167
|
+
/ObjectInputStream\s*\(/,
|
|
168
|
+
/\.readObject\s*\(\s*\)/,
|
|
169
|
+
/XMLDecoder\s*\(/,
|
|
170
|
+
/XStream\s*\(\s*\)/,
|
|
171
|
+
/ObjectMapper\s*\(\s*\).*enableDefaultTyping/
|
|
172
|
+
];
|
|
173
|
+
return patterns.some(p => p.test(line));
|
|
174
|
+
}
|
|
175
|
+
|
|
176
|
+
/**
|
|
177
|
+
* Check for Runtime.exec
|
|
178
|
+
*/
|
|
179
|
+
private checkRuntimeExec(line: string): boolean {
|
|
180
|
+
const patterns = [
|
|
181
|
+
/Runtime\.getRuntime\s*\(\s*\)\.exec\s*\(/,
|
|
182
|
+
/ProcessBuilder\s*\([^)]*\+/,
|
|
183
|
+
/new\s+ProcessBuilder\s*\([^)]*\$/
|
|
184
|
+
];
|
|
185
|
+
return patterns.some(p => p.test(line));
|
|
186
|
+
}
|
|
187
|
+
|
|
188
|
+
/**
|
|
189
|
+
* Check for SQL injection
|
|
190
|
+
*/
|
|
191
|
+
private checkSqlInjection(line: string): boolean {
|
|
192
|
+
const patterns = [
|
|
193
|
+
/Statement\s*\.\s*execute(?:Query|Update)?\s*\([^)]*\+/,
|
|
194
|
+
/createStatement\s*\(\s*\).*execute/,
|
|
195
|
+
/["']SELECT[^'"]*["']\s*\+/i,
|
|
196
|
+
/["']INSERT[^'"]*["']\s*\+/i,
|
|
197
|
+
/["']UPDATE[^'"]*["']\s*\+/i,
|
|
198
|
+
/["']DELETE[^'"]*["']\s*\+/i
|
|
199
|
+
];
|
|
200
|
+
return patterns.some(p => p.test(line));
|
|
201
|
+
}
|
|
202
|
+
|
|
203
|
+
/**
|
|
204
|
+
* Check for XXE vulnerabilities
|
|
205
|
+
*/
|
|
206
|
+
private checkXxe(line: string): boolean {
|
|
207
|
+
const patterns = [
|
|
208
|
+
/DocumentBuilderFactory\.newInstance\s*\(\s*\)/,
|
|
209
|
+
/SAXParserFactory\.newInstance\s*\(\s*\)/,
|
|
210
|
+
/XMLInputFactory\.newInstance\s*\(\s*\)/,
|
|
211
|
+
/TransformerFactory\.newInstance\s*\(\s*\)/
|
|
212
|
+
];
|
|
213
|
+
// Only flag if not followed by secure configuration
|
|
214
|
+
if (patterns.some(p => p.test(line))) {
|
|
215
|
+
// Check for secure configuration (simplified)
|
|
216
|
+
if (!/setFeature.*disallow-doctype-decl/i.test(line) &&
|
|
217
|
+
!/setFeature.*external-general-entities/i.test(line)) {
|
|
218
|
+
return true;
|
|
219
|
+
}
|
|
220
|
+
}
|
|
221
|
+
return false;
|
|
222
|
+
}
|
|
223
|
+
|
|
224
|
+
/**
|
|
225
|
+
* Check for path traversal
|
|
226
|
+
*/
|
|
227
|
+
private checkPathTraversal(line: string): boolean {
|
|
228
|
+
const patterns = [
|
|
229
|
+
/new\s+File\s*\([^)]*\+/,
|
|
230
|
+
/new\s+FileInputStream\s*\([^)]*\+/,
|
|
231
|
+
/new\s+FileOutputStream\s*\([^)]*\+/,
|
|
232
|
+
/Paths\.get\s*\([^)]*\+/,
|
|
233
|
+
/Files\.(?:read|write|copy|move)\s*\([^)]*request/i
|
|
234
|
+
];
|
|
235
|
+
return patterns.some(p => p.test(line));
|
|
236
|
+
}
|
|
237
|
+
|
|
238
|
+
/**
|
|
239
|
+
* Check for insecure random
|
|
240
|
+
*/
|
|
241
|
+
private checkInsecureRandom(line: string): boolean {
|
|
242
|
+
return /new\s+Random\s*\(\s*\)/.test(line) && !/SecureRandom/.test(line);
|
|
243
|
+
}
|
|
244
|
+
|
|
245
|
+
/**
|
|
246
|
+
* Check for weak crypto
|
|
247
|
+
*/
|
|
248
|
+
private checkWeakCrypto(line: string): boolean {
|
|
249
|
+
const patterns = [
|
|
250
|
+
/Cipher\.getInstance\s*\(\s*["'](?:DES|DESede|RC2|RC4|Blowfish)["']/i,
|
|
251
|
+
/MessageDigest\.getInstance\s*\(\s*["'](?:MD5|SHA-1|SHA1)["']/i,
|
|
252
|
+
/KeyGenerator\.getInstance\s*\(\s*["'](?:DES|DESede)["']/i
|
|
253
|
+
];
|
|
254
|
+
return patterns.some(p => p.test(line));
|
|
255
|
+
}
|
|
256
|
+
|
|
257
|
+
/**
|
|
258
|
+
* Check for LDAP injection
|
|
259
|
+
*/
|
|
260
|
+
private checkLdapInjection(line: string): boolean {
|
|
261
|
+
const patterns = [
|
|
262
|
+
/new\s+InitialDirContext\s*\([^)]*\+/,
|
|
263
|
+
/ctx\.search\s*\([^)]*\+/,
|
|
264
|
+
/SearchControls/
|
|
265
|
+
];
|
|
266
|
+
return patterns.some(p => p.test(line)) && /\+\s*[a-zA-Z]/.test(line);
|
|
267
|
+
}
|
|
268
|
+
|
|
269
|
+
/**
|
|
270
|
+
* Check for SpEL injection
|
|
271
|
+
*/
|
|
272
|
+
private checkSpelInjection(line: string): boolean {
|
|
273
|
+
const patterns = [
|
|
274
|
+
/SpelExpressionParser\s*\(\s*\).*parseExpression\s*\([^)]*\+/,
|
|
275
|
+
/ExpressionParser.*parseExpression\s*\([^)]*request/i
|
|
276
|
+
];
|
|
277
|
+
return patterns.some(p => p.test(line));
|
|
278
|
+
}
|
|
279
|
+
|
|
280
|
+
/**
|
|
281
|
+
* Create generic finding
|
|
282
|
+
*/
|
|
283
|
+
private createFinding(
|
|
284
|
+
file: ScannedFile,
|
|
285
|
+
lineNum: number,
|
|
286
|
+
title: string,
|
|
287
|
+
description: string,
|
|
288
|
+
severity: Severity,
|
|
289
|
+
threatType: ThreatType
|
|
290
|
+
): Finding {
|
|
291
|
+
const context = extractCodeContext(file.content, lineNum, 2);
|
|
292
|
+
|
|
293
|
+
return {
|
|
294
|
+
id: generateId(),
|
|
295
|
+
title,
|
|
296
|
+
description,
|
|
297
|
+
severity,
|
|
298
|
+
threatType,
|
|
299
|
+
category: FindingCategory.VULNERABILITY,
|
|
300
|
+
location: {
|
|
301
|
+
file: file.relativePath,
|
|
302
|
+
startLine: lineNum,
|
|
303
|
+
endLine: lineNum
|
|
304
|
+
},
|
|
305
|
+
snippet: {
|
|
306
|
+
code: context.code,
|
|
307
|
+
contextBefore: context.contextBefore,
|
|
308
|
+
contextAfter: context.contextAfter
|
|
309
|
+
},
|
|
310
|
+
standards: getStandardsForThreat(threatType),
|
|
311
|
+
remediation: 'Review and fix the identified issue.',
|
|
312
|
+
confidence: 75,
|
|
313
|
+
analyzer: this.name,
|
|
314
|
+
timestamp: new Date(),
|
|
315
|
+
tags: ['java']
|
|
316
|
+
};
|
|
317
|
+
}
|
|
318
|
+
}
|
|
319
|
+
|
|
320
|
+
export default JavaAnalyzer;
|
|
@@ -0,0 +1,267 @@
|
|
|
1
|
+
🔐 PROMPT — Mejora Avanzada del Módulo JavaScript
|
|
2
|
+
Secure-Scan | javascriptAnalyzer.ts
|
|
3
|
+
🎯 Rol del Agente
|
|
4
|
+
|
|
5
|
+
Actúa simultáneamente como:
|
|
6
|
+
|
|
7
|
+
Senior JavaScript Security Engineer
|
|
8
|
+
|
|
9
|
+
Malware Analyst especializado en JavaScript / npm
|
|
10
|
+
|
|
11
|
+
Application Security Lead (AppSec)
|
|
12
|
+
|
|
13
|
+
Arquitecto SAST Enterprise
|
|
14
|
+
|
|
15
|
+
Toma decisiones técnicas profesionales, priorizando precisión, cobertura, performance y seguridad, sin violar principios éticos ni legales.
|
|
16
|
+
|
|
17
|
+
🧠 Contexto del Proyecto
|
|
18
|
+
|
|
19
|
+
Secure-Scan es una herramienta de Análisis Estático de Seguridad de Aplicaciones (SAST) que analiza repositorios de código sin ejecutarlos, diseñada para detectar:
|
|
20
|
+
|
|
21
|
+
Vulnerabilidades OWASP
|
|
22
|
+
|
|
23
|
+
Código malicioso
|
|
24
|
+
|
|
25
|
+
Amenazas de supply chain
|
|
26
|
+
|
|
27
|
+
El archivo javascriptAnalyzer.ts es un módulo especializado en JavaScript y TypeScript, y debe mejorarse de forma incremental, manteniendo compatibilidad con BaseAnalyzer.
|
|
28
|
+
|
|
29
|
+
🎯 Objetivo de Esta Mejora
|
|
30
|
+
|
|
31
|
+
Mejorar TODOS los aspectos del módulo:
|
|
32
|
+
|
|
33
|
+
✅ Detección avanzada de malware
|
|
34
|
+
|
|
35
|
+
✅ Detección profunda de vulnerabilidades OWASP
|
|
36
|
+
|
|
37
|
+
✅ Mayor precisión (reducción de falsos positivos)
|
|
38
|
+
|
|
39
|
+
✅ Mayor cobertura (más técnicas y casos reales)
|
|
40
|
+
|
|
41
|
+
✅ Mejor performance, sin sacrificar exactitud
|
|
42
|
+
|
|
43
|
+
🧩 Enfoque Técnico Obligatorio
|
|
44
|
+
🔍 Tipo de Análisis
|
|
45
|
+
|
|
46
|
+
Análisis híbrido, con prioridad en:
|
|
47
|
+
|
|
48
|
+
AST (principal)
|
|
49
|
+
|
|
50
|
+
Regex / firmas solo como fallback
|
|
51
|
+
|
|
52
|
+
📐 Herramientas Conceptuales a Emular
|
|
53
|
+
|
|
54
|
+
No integrar directamente, pero diseñar el análisis inspirado en:
|
|
55
|
+
|
|
56
|
+
Semgrep → estructura AST y patrones semánticos
|
|
57
|
+
|
|
58
|
+
YARA → firmas de malware (regex controladas)
|
|
59
|
+
|
|
60
|
+
CodeQL → flujos peligrosos (taint analysis)
|
|
61
|
+
|
|
62
|
+
🌳 AST y Parsing
|
|
63
|
+
|
|
64
|
+
Usar Babel Parser para JavaScript y TypeScript
|
|
65
|
+
|
|
66
|
+
Migrar reglas críticas (XSS, RCE, Prototype Pollution) a AST
|
|
67
|
+
|
|
68
|
+
Evitar detecciones basadas solo en strings cuando sea posible
|
|
69
|
+
|
|
70
|
+
🔁 Taint Analysis (Obligatorio)
|
|
71
|
+
|
|
72
|
+
Implementar taint analysis básico pero efectivo, capaz de detectar flujos reales:
|
|
73
|
+
|
|
74
|
+
Fuentes (Sources)
|
|
75
|
+
|
|
76
|
+
req.body
|
|
77
|
+
|
|
78
|
+
req.query
|
|
79
|
+
|
|
80
|
+
req.params
|
|
81
|
+
|
|
82
|
+
process.env
|
|
83
|
+
|
|
84
|
+
localStorage
|
|
85
|
+
|
|
86
|
+
document.location
|
|
87
|
+
|
|
88
|
+
postMessage
|
|
89
|
+
|
|
90
|
+
Sinks (Sinks)
|
|
91
|
+
|
|
92
|
+
innerHTML
|
|
93
|
+
|
|
94
|
+
document.write
|
|
95
|
+
|
|
96
|
+
eval
|
|
97
|
+
|
|
98
|
+
Function()
|
|
99
|
+
|
|
100
|
+
child_process.exec
|
|
101
|
+
|
|
102
|
+
spawn
|
|
103
|
+
|
|
104
|
+
execFile
|
|
105
|
+
|
|
106
|
+
fetch / axios (SSRF)
|
|
107
|
+
|
|
108
|
+
Detectar flujos como:
|
|
109
|
+
|
|
110
|
+
req.body → innerHTML
|
|
111
|
+
|
|
112
|
+
process.env → exec
|
|
113
|
+
|
|
114
|
+
🦠 Malware a Detectar (Cobertura Total)
|
|
115
|
+
Tipos
|
|
116
|
+
|
|
117
|
+
Supply-chain malware (npm)
|
|
118
|
+
|
|
119
|
+
Cryptominers JS
|
|
120
|
+
|
|
121
|
+
Stealers (cookies, tokens, localStorage)
|
|
122
|
+
|
|
123
|
+
Backdoors lógicos
|
|
124
|
+
|
|
125
|
+
Droppers / loaders
|
|
126
|
+
|
|
127
|
+
Payloads ofuscados
|
|
128
|
+
|
|
129
|
+
Técnicas
|
|
130
|
+
|
|
131
|
+
Base64 → decode → eval
|
|
132
|
+
|
|
133
|
+
new Function()
|
|
134
|
+
|
|
135
|
+
WebAssembly sospechoso
|
|
136
|
+
|
|
137
|
+
Anti-debugging JS
|
|
138
|
+
|
|
139
|
+
Código auto-modificable
|
|
140
|
+
|
|
141
|
+
Uso anómalo de encoding / crypto
|
|
142
|
+
|
|
143
|
+
📦 Análisis Profundo de package.json
|
|
144
|
+
|
|
145
|
+
Analizar estáticamente:
|
|
146
|
+
|
|
147
|
+
scripts
|
|
148
|
+
|
|
149
|
+
dependencies
|
|
150
|
+
|
|
151
|
+
devDependencies
|
|
152
|
+
|
|
153
|
+
engines
|
|
154
|
+
|
|
155
|
+
preinstall / postinstall
|
|
156
|
+
|
|
157
|
+
Detectar:
|
|
158
|
+
|
|
159
|
+
Typosquatting
|
|
160
|
+
|
|
161
|
+
Paquetes abandonados
|
|
162
|
+
|
|
163
|
+
Scripts ofuscados
|
|
164
|
+
|
|
165
|
+
Comandos peligrosos (curl | sh, powershell, eval)
|
|
166
|
+
|
|
167
|
+
🧠 Uso de Inteligencia Artificial
|
|
168
|
+
|
|
169
|
+
La IA debe apoyar en:
|
|
170
|
+
|
|
171
|
+
Clasificación de severidad
|
|
172
|
+
|
|
173
|
+
Detección de patrones no triviales
|
|
174
|
+
|
|
175
|
+
Reducción de falsos positivos
|
|
176
|
+
|
|
177
|
+
Explicación del hallazgo
|
|
178
|
+
|
|
179
|
+
Debe poder analizar:
|
|
180
|
+
|
|
181
|
+
Fragmentos de código
|
|
182
|
+
|
|
183
|
+
Metadatos
|
|
184
|
+
|
|
185
|
+
Ambos combinados
|
|
186
|
+
|
|
187
|
+
El diseño debe permitir IA local o por API, de forma desacoplada.
|
|
188
|
+
|
|
189
|
+
📊 Hallazgos y Reportes
|
|
190
|
+
|
|
191
|
+
Cada hallazgo debe incluir:
|
|
192
|
+
|
|
193
|
+
Código vulnerable exacto
|
|
194
|
+
|
|
195
|
+
Contexto y snippet
|
|
196
|
+
|
|
197
|
+
Call stack aproximado (si aplica)
|
|
198
|
+
|
|
199
|
+
Referencias OWASP / CWE automáticas
|
|
200
|
+
|
|
201
|
+
Categoría:
|
|
202
|
+
|
|
203
|
+
Malware
|
|
204
|
+
|
|
205
|
+
Vulnerabilidad
|
|
206
|
+
|
|
207
|
+
Severidad justificada
|
|
208
|
+
|
|
209
|
+
Recomendación + ejemplo de fix seguro
|
|
210
|
+
|
|
211
|
+
El lenguaje debe ser:
|
|
212
|
+
|
|
213
|
+
Profesional (auditoría)
|
|
214
|
+
|
|
215
|
+
Comprensible para desarrolladores
|
|
216
|
+
|
|
217
|
+
⚙️ Performance y Seguridad
|
|
218
|
+
|
|
219
|
+
Implementar:
|
|
220
|
+
|
|
221
|
+
🔁 Análisis paralelo
|
|
222
|
+
|
|
223
|
+
⏱️ Timeouts solo si se detectan bucles anómalos
|
|
224
|
+
|
|
225
|
+
🧠 Límites de memoria, priorizando precisión
|
|
226
|
+
|
|
227
|
+
Protecciones contra:
|
|
228
|
+
|
|
229
|
+
Código altamente ofuscado
|
|
230
|
+
|
|
231
|
+
ReDoS por regex
|
|
232
|
+
|
|
233
|
+
Archivos excesivamente grandes
|
|
234
|
+
|
|
235
|
+
🧪 Calidad del Código
|
|
236
|
+
|
|
237
|
+
El código generado debe:
|
|
238
|
+
|
|
239
|
+
Seguir principios SOLID
|
|
240
|
+
|
|
241
|
+
Ser 100% testeable
|
|
242
|
+
|
|
243
|
+
Incluir tests unitarios
|
|
244
|
+
|
|
245
|
+
Mantener compatibilidad con BaseAnalyzer
|
|
246
|
+
|
|
247
|
+
Se permite introducir:
|
|
248
|
+
|
|
249
|
+
Nuevas clases
|
|
250
|
+
|
|
251
|
+
Nuevas interfaces
|
|
252
|
+
|
|
253
|
+
Helpers reutilizables
|
|
254
|
+
|
|
255
|
+
🚀 Instrucción Final
|
|
256
|
+
|
|
257
|
+
Mejora incrementalmente el archivo javascriptAnalyzer.ts, documentando cada decisión técnica, agregando detección avanzada de malware y vulnerabilidades, sin ejecutar código analizado y manteniendo el enfoque SAST enterprise.
|
|
258
|
+
|
|
259
|
+
Prioridad:
|
|
260
|
+
|
|
261
|
+
Seguridad
|
|
262
|
+
|
|
263
|
+
Precisión
|
|
264
|
+
|
|
265
|
+
Cobertura
|
|
266
|
+
|
|
267
|
+
Performance
|