codeslick-cli 1.0.0
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 +458 -0
- package/__tests__/cli-reporter.test.ts +86 -0
- package/__tests__/config-loader.test.ts +247 -0
- package/__tests__/local-scanner.test.ts +245 -0
- package/bin/codeslick.cjs +153 -0
- package/dist/packages/cli/src/commands/auth.d.ts +36 -0
- package/dist/packages/cli/src/commands/auth.d.ts.map +1 -0
- package/dist/packages/cli/src/commands/auth.js +226 -0
- package/dist/packages/cli/src/commands/auth.js.map +1 -0
- package/dist/packages/cli/src/commands/config.d.ts +37 -0
- package/dist/packages/cli/src/commands/config.d.ts.map +1 -0
- package/dist/packages/cli/src/commands/config.js +196 -0
- package/dist/packages/cli/src/commands/config.js.map +1 -0
- package/dist/packages/cli/src/commands/init.d.ts +32 -0
- package/dist/packages/cli/src/commands/init.d.ts.map +1 -0
- package/dist/packages/cli/src/commands/init.js +171 -0
- package/dist/packages/cli/src/commands/init.js.map +1 -0
- package/dist/packages/cli/src/commands/scan.d.ts +40 -0
- package/dist/packages/cli/src/commands/scan.d.ts.map +1 -0
- package/dist/packages/cli/src/commands/scan.js +204 -0
- package/dist/packages/cli/src/commands/scan.js.map +1 -0
- package/dist/packages/cli/src/config/config-loader.d.ts +67 -0
- package/dist/packages/cli/src/config/config-loader.d.ts.map +1 -0
- package/dist/packages/cli/src/config/config-loader.js +146 -0
- package/dist/packages/cli/src/config/config-loader.js.map +1 -0
- package/dist/packages/cli/src/reporters/cli-reporter.d.ts +69 -0
- package/dist/packages/cli/src/reporters/cli-reporter.d.ts.map +1 -0
- package/dist/packages/cli/src/reporters/cli-reporter.js +244 -0
- package/dist/packages/cli/src/reporters/cli-reporter.js.map +1 -0
- package/dist/packages/cli/src/scanner/local-scanner.d.ts +92 -0
- package/dist/packages/cli/src/scanner/local-scanner.d.ts.map +1 -0
- package/dist/packages/cli/src/scanner/local-scanner.js +221 -0
- package/dist/packages/cli/src/scanner/local-scanner.js.map +1 -0
- package/dist/src/lib/analyzers/helpers/ai-code-detection-utils.d.ts +88 -0
- package/dist/src/lib/analyzers/helpers/ai-code-detection-utils.d.ts.map +1 -0
- package/dist/src/lib/analyzers/helpers/ai-code-detection-utils.js +371 -0
- package/dist/src/lib/analyzers/helpers/ai-code-detection-utils.js.map +1 -0
- package/dist/src/lib/analyzers/helpers/jsx-helpers.d.ts +63 -0
- package/dist/src/lib/analyzers/helpers/jsx-helpers.d.ts.map +1 -0
- package/dist/src/lib/analyzers/helpers/jsx-helpers.js +95 -0
- package/dist/src/lib/analyzers/helpers/jsx-helpers.js.map +1 -0
- package/dist/src/lib/analyzers/helpers/variable-tracker.d.ts +59 -0
- package/dist/src/lib/analyzers/helpers/variable-tracker.d.ts.map +1 -0
- package/dist/src/lib/analyzers/helpers/variable-tracker.js +231 -0
- package/dist/src/lib/analyzers/helpers/variable-tracker.js.map +1 -0
- package/dist/src/lib/analyzers/java/security-checks/access-control.d.ts +20 -0
- package/dist/src/lib/analyzers/java/security-checks/access-control.d.ts.map +1 -0
- package/dist/src/lib/analyzers/java/security-checks/access-control.js +129 -0
- package/dist/src/lib/analyzers/java/security-checks/access-control.js.map +1 -0
- package/dist/src/lib/analyzers/java/security-checks/ai-generated-code.d.ts +25 -0
- package/dist/src/lib/analyzers/java/security-checks/ai-generated-code.d.ts.map +1 -0
- package/dist/src/lib/analyzers/java/security-checks/ai-generated-code.js +221 -0
- package/dist/src/lib/analyzers/java/security-checks/ai-generated-code.js.map +1 -0
- package/dist/src/lib/analyzers/java/security-checks/code-quality.d.ts +18 -0
- package/dist/src/lib/analyzers/java/security-checks/code-quality.d.ts.map +1 -0
- package/dist/src/lib/analyzers/java/security-checks/code-quality.js +84 -0
- package/dist/src/lib/analyzers/java/security-checks/code-quality.js.map +1 -0
- package/dist/src/lib/analyzers/java/security-checks/crypto-validation.d.ts +18 -0
- package/dist/src/lib/analyzers/java/security-checks/crypto-validation.d.ts.map +1 -0
- package/dist/src/lib/analyzers/java/security-checks/crypto-validation.js +161 -0
- package/dist/src/lib/analyzers/java/security-checks/crypto-validation.js.map +1 -0
- package/dist/src/lib/analyzers/java/security-checks/deserialization-xxe.d.ts +20 -0
- package/dist/src/lib/analyzers/java/security-checks/deserialization-xxe.d.ts.map +1 -0
- package/dist/src/lib/analyzers/java/security-checks/deserialization-xxe.js +163 -0
- package/dist/src/lib/analyzers/java/security-checks/deserialization-xxe.js.map +1 -0
- package/dist/src/lib/analyzers/java/security-checks/enhanced-supply-chain.d.ts +24 -0
- package/dist/src/lib/analyzers/java/security-checks/enhanced-supply-chain.d.ts.map +1 -0
- package/dist/src/lib/analyzers/java/security-checks/enhanced-supply-chain.js +178 -0
- package/dist/src/lib/analyzers/java/security-checks/enhanced-supply-chain.js.map +1 -0
- package/dist/src/lib/analyzers/java/security-checks/exception-handling.d.ts +25 -0
- package/dist/src/lib/analyzers/java/security-checks/exception-handling.d.ts.map +1 -0
- package/dist/src/lib/analyzers/java/security-checks/exception-handling.js +179 -0
- package/dist/src/lib/analyzers/java/security-checks/exception-handling.js.map +1 -0
- package/dist/src/lib/analyzers/java/security-checks/file-operations.d.ts +17 -0
- package/dist/src/lib/analyzers/java/security-checks/file-operations.d.ts.map +1 -0
- package/dist/src/lib/analyzers/java/security-checks/file-operations.js +67 -0
- package/dist/src/lib/analyzers/java/security-checks/file-operations.js.map +1 -0
- package/dist/src/lib/analyzers/java/security-checks/framework-security.d.ts +25 -0
- package/dist/src/lib/analyzers/java/security-checks/framework-security.d.ts.map +1 -0
- package/dist/src/lib/analyzers/java/security-checks/framework-security.js +396 -0
- package/dist/src/lib/analyzers/java/security-checks/framework-security.js.map +1 -0
- package/dist/src/lib/analyzers/java/security-checks/hardcoded-credentials.d.ts +20 -0
- package/dist/src/lib/analyzers/java/security-checks/hardcoded-credentials.d.ts.map +1 -0
- package/dist/src/lib/analyzers/java/security-checks/hardcoded-credentials.js +123 -0
- package/dist/src/lib/analyzers/java/security-checks/hardcoded-credentials.js.map +1 -0
- package/dist/src/lib/analyzers/java/security-checks/injection-attacks.d.ts +23 -0
- package/dist/src/lib/analyzers/java/security-checks/injection-attacks.d.ts.map +1 -0
- package/dist/src/lib/analyzers/java/security-checks/injection-attacks.js +201 -0
- package/dist/src/lib/analyzers/java/security-checks/injection-attacks.js.map +1 -0
- package/dist/src/lib/analyzers/java/security-checks/insecure-design.d.ts +20 -0
- package/dist/src/lib/analyzers/java/security-checks/insecure-design.d.ts.map +1 -0
- package/dist/src/lib/analyzers/java/security-checks/insecure-design.js +121 -0
- package/dist/src/lib/analyzers/java/security-checks/insecure-design.js.map +1 -0
- package/dist/src/lib/analyzers/java/security-checks/logging-failures.d.ts +20 -0
- package/dist/src/lib/analyzers/java/security-checks/logging-failures.d.ts.map +1 -0
- package/dist/src/lib/analyzers/java/security-checks/logging-failures.js +89 -0
- package/dist/src/lib/analyzers/java/security-checks/logging-failures.js.map +1 -0
- package/dist/src/lib/analyzers/java/security-checks/security-misconfiguration.d.ts +26 -0
- package/dist/src/lib/analyzers/java/security-checks/security-misconfiguration.d.ts.map +1 -0
- package/dist/src/lib/analyzers/java/security-checks/security-misconfiguration.js +309 -0
- package/dist/src/lib/analyzers/java/security-checks/security-misconfiguration.js.map +1 -0
- package/dist/src/lib/analyzers/java/security-checks/unsafe-patterns.d.ts +18 -0
- package/dist/src/lib/analyzers/java/security-checks/unsafe-patterns.d.ts.map +1 -0
- package/dist/src/lib/analyzers/java/security-checks/unsafe-patterns.js +114 -0
- package/dist/src/lib/analyzers/java/security-checks/unsafe-patterns.js.map +1 -0
- package/dist/src/lib/analyzers/java/utils/createVulnerability.d.ts +58 -0
- package/dist/src/lib/analyzers/java/utils/createVulnerability.d.ts.map +1 -0
- package/dist/src/lib/analyzers/java/utils/createVulnerability.js +71 -0
- package/dist/src/lib/analyzers/java/utils/createVulnerability.js.map +1 -0
- package/dist/src/lib/analyzers/java-analyzer.d.ts +209 -0
- package/dist/src/lib/analyzers/java-analyzer.d.ts.map +1 -0
- package/dist/src/lib/analyzers/java-analyzer.js +1720 -0
- package/dist/src/lib/analyzers/java-analyzer.js.map +1 -0
- package/dist/src/lib/analyzers/javascript/quality-checks/ai-hallucinations.d.ts +27 -0
- package/dist/src/lib/analyzers/javascript/quality-checks/ai-hallucinations.d.ts.map +1 -0
- package/dist/src/lib/analyzers/javascript/quality-checks/ai-hallucinations.js +123 -0
- package/dist/src/lib/analyzers/javascript/quality-checks/ai-hallucinations.js.map +1 -0
- package/dist/src/lib/analyzers/javascript/quality-checks/async-patterns.d.ts +44 -0
- package/dist/src/lib/analyzers/javascript/quality-checks/async-patterns.d.ts.map +1 -0
- package/dist/src/lib/analyzers/javascript/quality-checks/async-patterns.js +224 -0
- package/dist/src/lib/analyzers/javascript/quality-checks/async-patterns.js.map +1 -0
- package/dist/src/lib/analyzers/javascript/quality-checks/code-patterns.d.ts +50 -0
- package/dist/src/lib/analyzers/javascript/quality-checks/code-patterns.d.ts.map +1 -0
- package/dist/src/lib/analyzers/javascript/quality-checks/code-patterns.js +284 -0
- package/dist/src/lib/analyzers/javascript/quality-checks/code-patterns.js.map +1 -0
- package/dist/src/lib/analyzers/javascript/quality-checks/comparison-issues.d.ts +27 -0
- package/dist/src/lib/analyzers/javascript/quality-checks/comparison-issues.d.ts.map +1 -0
- package/dist/src/lib/analyzers/javascript/quality-checks/comparison-issues.js +86 -0
- package/dist/src/lib/analyzers/javascript/quality-checks/comparison-issues.js.map +1 -0
- package/dist/src/lib/analyzers/javascript/quality-checks/reference-errors.d.ts +32 -0
- package/dist/src/lib/analyzers/javascript/quality-checks/reference-errors.d.ts.map +1 -0
- package/dist/src/lib/analyzers/javascript/quality-checks/reference-errors.js +44 -0
- package/dist/src/lib/analyzers/javascript/quality-checks/reference-errors.js.map +1 -0
- package/dist/src/lib/analyzers/javascript/security-checks/access-control.d.ts +22 -0
- package/dist/src/lib/analyzers/javascript/security-checks/access-control.d.ts.map +1 -0
- package/dist/src/lib/analyzers/javascript/security-checks/access-control.js +168 -0
- package/dist/src/lib/analyzers/javascript/security-checks/access-control.js.map +1 -0
- package/dist/src/lib/analyzers/javascript/security-checks/ai-generated-code.d.ts +25 -0
- package/dist/src/lib/analyzers/javascript/security-checks/ai-generated-code.d.ts.map +1 -0
- package/dist/src/lib/analyzers/javascript/security-checks/ai-generated-code.js +232 -0
- package/dist/src/lib/analyzers/javascript/security-checks/ai-generated-code.js.map +1 -0
- package/dist/src/lib/analyzers/javascript/security-checks/authentication-failures.d.ts +27 -0
- package/dist/src/lib/analyzers/javascript/security-checks/authentication-failures.d.ts.map +1 -0
- package/dist/src/lib/analyzers/javascript/security-checks/authentication-failures.js +222 -0
- package/dist/src/lib/analyzers/javascript/security-checks/authentication-failures.js.map +1 -0
- package/dist/src/lib/analyzers/javascript/security-checks/credential-crypto.d.ts +28 -0
- package/dist/src/lib/analyzers/javascript/security-checks/credential-crypto.d.ts.map +1 -0
- package/dist/src/lib/analyzers/javascript/security-checks/credential-crypto.js +176 -0
- package/dist/src/lib/analyzers/javascript/security-checks/credential-crypto.js.map +1 -0
- package/dist/src/lib/analyzers/javascript/security-checks/enhanced-supply-chain.d.ts +23 -0
- package/dist/src/lib/analyzers/javascript/security-checks/enhanced-supply-chain.d.ts.map +1 -0
- package/dist/src/lib/analyzers/javascript/security-checks/enhanced-supply-chain.js +113 -0
- package/dist/src/lib/analyzers/javascript/security-checks/enhanced-supply-chain.js.map +1 -0
- package/dist/src/lib/analyzers/javascript/security-checks/exception-handling.d.ts +28 -0
- package/dist/src/lib/analyzers/javascript/security-checks/exception-handling.d.ts.map +1 -0
- package/dist/src/lib/analyzers/javascript/security-checks/exception-handling.js +227 -0
- package/dist/src/lib/analyzers/javascript/security-checks/exception-handling.js.map +1 -0
- package/dist/src/lib/analyzers/javascript/security-checks/injection-attacks.d.ts +32 -0
- package/dist/src/lib/analyzers/javascript/security-checks/injection-attacks.d.ts.map +1 -0
- package/dist/src/lib/analyzers/javascript/security-checks/injection-attacks.js +260 -0
- package/dist/src/lib/analyzers/javascript/security-checks/injection-attacks.js.map +1 -0
- package/dist/src/lib/analyzers/javascript/security-checks/insecure-design.d.ts +26 -0
- package/dist/src/lib/analyzers/javascript/security-checks/insecure-design.d.ts.map +1 -0
- package/dist/src/lib/analyzers/javascript/security-checks/insecure-design.js +164 -0
- package/dist/src/lib/analyzers/javascript/security-checks/insecure-design.js.map +1 -0
- package/dist/src/lib/analyzers/javascript/security-checks/security-misconfiguration.d.ts +26 -0
- package/dist/src/lib/analyzers/javascript/security-checks/security-misconfiguration.d.ts.map +1 -0
- package/dist/src/lib/analyzers/javascript/security-checks/security-misconfiguration.js +775 -0
- package/dist/src/lib/analyzers/javascript/security-checks/security-misconfiguration.js.map +1 -0
- package/dist/src/lib/analyzers/javascript/security-checks/software-integrity.d.ts +25 -0
- package/dist/src/lib/analyzers/javascript/security-checks/software-integrity.d.ts.map +1 -0
- package/dist/src/lib/analyzers/javascript/security-checks/software-integrity.js +168 -0
- package/dist/src/lib/analyzers/javascript/security-checks/software-integrity.js.map +1 -0
- package/dist/src/lib/analyzers/javascript/security-checks/storage-security.d.ts +27 -0
- package/dist/src/lib/analyzers/javascript/security-checks/storage-security.d.ts.map +1 -0
- package/dist/src/lib/analyzers/javascript/security-checks/storage-security.js +108 -0
- package/dist/src/lib/analyzers/javascript/security-checks/storage-security.js.map +1 -0
- package/dist/src/lib/analyzers/javascript/security-checks/xss-dom-security.d.ts +28 -0
- package/dist/src/lib/analyzers/javascript/security-checks/xss-dom-security.d.ts.map +1 -0
- package/dist/src/lib/analyzers/javascript/security-checks/xss-dom-security.js +143 -0
- package/dist/src/lib/analyzers/javascript/security-checks/xss-dom-security.js.map +1 -0
- package/dist/src/lib/analyzers/javascript/syntax/syntax-helpers.d.ts +53 -0
- package/dist/src/lib/analyzers/javascript/syntax/syntax-helpers.d.ts.map +1 -0
- package/dist/src/lib/analyzers/javascript/syntax/syntax-helpers.js +144 -0
- package/dist/src/lib/analyzers/javascript/syntax/syntax-helpers.js.map +1 -0
- package/dist/src/lib/analyzers/javascript/syntax/typescript-syntax.d.ts +72 -0
- package/dist/src/lib/analyzers/javascript/syntax/typescript-syntax.d.ts.map +1 -0
- package/dist/src/lib/analyzers/javascript/syntax/typescript-syntax.js +314 -0
- package/dist/src/lib/analyzers/javascript/syntax/typescript-syntax.js.map +1 -0
- package/dist/src/lib/analyzers/javascript/utils/createVulnerability.d.ts +58 -0
- package/dist/src/lib/analyzers/javascript/utils/createVulnerability.d.ts.map +1 -0
- package/dist/src/lib/analyzers/javascript/utils/createVulnerability.js +71 -0
- package/dist/src/lib/analyzers/javascript/utils/createVulnerability.js.map +1 -0
- package/dist/src/lib/analyzers/javascript/utils/metrics-calculator.d.ts +36 -0
- package/dist/src/lib/analyzers/javascript/utils/metrics-calculator.d.ts.map +1 -0
- package/dist/src/lib/analyzers/javascript/utils/metrics-calculator.js +70 -0
- package/dist/src/lib/analyzers/javascript/utils/metrics-calculator.js.map +1 -0
- package/dist/src/lib/analyzers/javascript/utils/performance-analyzer.d.ts +29 -0
- package/dist/src/lib/analyzers/javascript/utils/performance-analyzer.d.ts.map +1 -0
- package/dist/src/lib/analyzers/javascript/utils/performance-analyzer.js +55 -0
- package/dist/src/lib/analyzers/javascript/utils/performance-analyzer.js.map +1 -0
- package/dist/src/lib/analyzers/javascript-analyzer.d.ts +95 -0
- package/dist/src/lib/analyzers/javascript-analyzer.d.ts.map +1 -0
- package/dist/src/lib/analyzers/javascript-analyzer.js +2141 -0
- package/dist/src/lib/analyzers/javascript-analyzer.js.map +1 -0
- package/dist/src/lib/analyzers/python/security-checks/access-control.d.ts +21 -0
- package/dist/src/lib/analyzers/python/security-checks/access-control.d.ts.map +1 -0
- package/dist/src/lib/analyzers/python/security-checks/access-control.js +305 -0
- package/dist/src/lib/analyzers/python/security-checks/access-control.js.map +1 -0
- package/dist/src/lib/analyzers/python/security-checks/ai-generated-code.d.ts +25 -0
- package/dist/src/lib/analyzers/python/security-checks/ai-generated-code.d.ts.map +1 -0
- package/dist/src/lib/analyzers/python/security-checks/ai-generated-code.js +242 -0
- package/dist/src/lib/analyzers/python/security-checks/ai-generated-code.js.map +1 -0
- package/dist/src/lib/analyzers/python/security-checks/authentication-flaws.d.ts +24 -0
- package/dist/src/lib/analyzers/python/security-checks/authentication-flaws.d.ts.map +1 -0
- package/dist/src/lib/analyzers/python/security-checks/authentication-flaws.js +207 -0
- package/dist/src/lib/analyzers/python/security-checks/authentication-flaws.js.map +1 -0
- package/dist/src/lib/analyzers/python/security-checks/code-quality.d.ts +27 -0
- package/dist/src/lib/analyzers/python/security-checks/code-quality.d.ts.map +1 -0
- package/dist/src/lib/analyzers/python/security-checks/code-quality.js +206 -0
- package/dist/src/lib/analyzers/python/security-checks/code-quality.js.map +1 -0
- package/dist/src/lib/analyzers/python/security-checks/credentials-crypto.d.ts +24 -0
- package/dist/src/lib/analyzers/python/security-checks/credentials-crypto.d.ts.map +1 -0
- package/dist/src/lib/analyzers/python/security-checks/credentials-crypto.js +113 -0
- package/dist/src/lib/analyzers/python/security-checks/credentials-crypto.js.map +1 -0
- package/dist/src/lib/analyzers/python/security-checks/crypto-failures.d.ts +20 -0
- package/dist/src/lib/analyzers/python/security-checks/crypto-failures.d.ts.map +1 -0
- package/dist/src/lib/analyzers/python/security-checks/crypto-failures.js +129 -0
- package/dist/src/lib/analyzers/python/security-checks/crypto-failures.js.map +1 -0
- package/dist/src/lib/analyzers/python/security-checks/data-integrity.d.ts +19 -0
- package/dist/src/lib/analyzers/python/security-checks/data-integrity.d.ts.map +1 -0
- package/dist/src/lib/analyzers/python/security-checks/data-integrity.js +90 -0
- package/dist/src/lib/analyzers/python/security-checks/data-integrity.js.map +1 -0
- package/dist/src/lib/analyzers/python/security-checks/deserialization.d.ts +20 -0
- package/dist/src/lib/analyzers/python/security-checks/deserialization.d.ts.map +1 -0
- package/dist/src/lib/analyzers/python/security-checks/deserialization.js +68 -0
- package/dist/src/lib/analyzers/python/security-checks/deserialization.js.map +1 -0
- package/dist/src/lib/analyzers/python/security-checks/django-security.d.ts +25 -0
- package/dist/src/lib/analyzers/python/security-checks/django-security.d.ts.map +1 -0
- package/dist/src/lib/analyzers/python/security-checks/django-security.js +180 -0
- package/dist/src/lib/analyzers/python/security-checks/django-security.js.map +1 -0
- package/dist/src/lib/analyzers/python/security-checks/enhanced-supply-chain.d.ts +23 -0
- package/dist/src/lib/analyzers/python/security-checks/enhanced-supply-chain.d.ts.map +1 -0
- package/dist/src/lib/analyzers/python/security-checks/enhanced-supply-chain.js +127 -0
- package/dist/src/lib/analyzers/python/security-checks/enhanced-supply-chain.js.map +1 -0
- package/dist/src/lib/analyzers/python/security-checks/exception-handling.d.ts +23 -0
- package/dist/src/lib/analyzers/python/security-checks/exception-handling.d.ts.map +1 -0
- package/dist/src/lib/analyzers/python/security-checks/exception-handling.js +120 -0
- package/dist/src/lib/analyzers/python/security-checks/exception-handling.js.map +1 -0
- package/dist/src/lib/analyzers/python/security-checks/flask-security.d.ts +24 -0
- package/dist/src/lib/analyzers/python/security-checks/flask-security.d.ts.map +1 -0
- package/dist/src/lib/analyzers/python/security-checks/flask-security.js +143 -0
- package/dist/src/lib/analyzers/python/security-checks/flask-security.js.map +1 -0
- package/dist/src/lib/analyzers/python/security-checks/injection-attacks.d.ts +28 -0
- package/dist/src/lib/analyzers/python/security-checks/injection-attacks.d.ts.map +1 -0
- package/dist/src/lib/analyzers/python/security-checks/injection-attacks.js +174 -0
- package/dist/src/lib/analyzers/python/security-checks/injection-attacks.js.map +1 -0
- package/dist/src/lib/analyzers/python/security-checks/insecure-design.d.ts +20 -0
- package/dist/src/lib/analyzers/python/security-checks/insecure-design.d.ts.map +1 -0
- package/dist/src/lib/analyzers/python/security-checks/insecure-design.js +160 -0
- package/dist/src/lib/analyzers/python/security-checks/insecure-design.js.map +1 -0
- package/dist/src/lib/analyzers/python/security-checks/logging-failures.d.ts +20 -0
- package/dist/src/lib/analyzers/python/security-checks/logging-failures.d.ts.map +1 -0
- package/dist/src/lib/analyzers/python/security-checks/logging-failures.js +121 -0
- package/dist/src/lib/analyzers/python/security-checks/logging-failures.js.map +1 -0
- package/dist/src/lib/analyzers/python/security-checks/nosql-injection.d.ts +26 -0
- package/dist/src/lib/analyzers/python/security-checks/nosql-injection.d.ts.map +1 -0
- package/dist/src/lib/analyzers/python/security-checks/nosql-injection.js +248 -0
- package/dist/src/lib/analyzers/python/security-checks/nosql-injection.js.map +1 -0
- package/dist/src/lib/analyzers/python/security-checks/security-misconfiguration.d.ts +26 -0
- package/dist/src/lib/analyzers/python/security-checks/security-misconfiguration.d.ts.map +1 -0
- package/dist/src/lib/analyzers/python/security-checks/security-misconfiguration.js +375 -0
- package/dist/src/lib/analyzers/python/security-checks/security-misconfiguration.js.map +1 -0
- package/dist/src/lib/analyzers/python/security-checks/ssrf-detection.d.ts +26 -0
- package/dist/src/lib/analyzers/python/security-checks/ssrf-detection.d.ts.map +1 -0
- package/dist/src/lib/analyzers/python/security-checks/ssrf-detection.js +160 -0
- package/dist/src/lib/analyzers/python/security-checks/ssrf-detection.js.map +1 -0
- package/dist/src/lib/analyzers/python/security-checks/web-security.d.ts +23 -0
- package/dist/src/lib/analyzers/python/security-checks/web-security.d.ts.map +1 -0
- package/dist/src/lib/analyzers/python/security-checks/web-security.js +117 -0
- package/dist/src/lib/analyzers/python/security-checks/web-security.js.map +1 -0
- package/dist/src/lib/analyzers/python/utils/createVulnerability.d.ts +58 -0
- package/dist/src/lib/analyzers/python/utils/createVulnerability.d.ts.map +1 -0
- package/dist/src/lib/analyzers/python/utils/createVulnerability.js +71 -0
- package/dist/src/lib/analyzers/python/utils/createVulnerability.js.map +1 -0
- package/dist/src/lib/analyzers/python-analyzer.d.ts +111 -0
- package/dist/src/lib/analyzers/python-analyzer.d.ts.map +1 -0
- package/dist/src/lib/analyzers/python-analyzer.js +1600 -0
- package/dist/src/lib/analyzers/python-analyzer.js.map +1 -0
- package/dist/src/lib/analyzers/secrets/patterns/api-keys/ai-providers.d.ts +14 -0
- package/dist/src/lib/analyzers/secrets/patterns/api-keys/ai-providers.d.ts.map +1 -0
- package/dist/src/lib/analyzers/secrets/patterns/api-keys/ai-providers.js +47 -0
- package/dist/src/lib/analyzers/secrets/patterns/api-keys/ai-providers.js.map +1 -0
- package/dist/src/lib/analyzers/secrets/patterns/api-keys/aws.d.ts +13 -0
- package/dist/src/lib/analyzers/secrets/patterns/api-keys/aws.d.ts.map +1 -0
- package/dist/src/lib/analyzers/secrets/patterns/api-keys/aws.js +36 -0
- package/dist/src/lib/analyzers/secrets/patterns/api-keys/aws.js.map +1 -0
- package/dist/src/lib/analyzers/secrets/patterns/api-keys/cloud-providers.d.ts +15 -0
- package/dist/src/lib/analyzers/secrets/patterns/api-keys/cloud-providers.d.ts.map +1 -0
- package/dist/src/lib/analyzers/secrets/patterns/api-keys/cloud-providers.js +68 -0
- package/dist/src/lib/analyzers/secrets/patterns/api-keys/cloud-providers.js.map +1 -0
- package/dist/src/lib/analyzers/secrets/patterns/api-keys/communication.d.ts +15 -0
- package/dist/src/lib/analyzers/secrets/patterns/api-keys/communication.d.ts.map +1 -0
- package/dist/src/lib/analyzers/secrets/patterns/api-keys/communication.js +68 -0
- package/dist/src/lib/analyzers/secrets/patterns/api-keys/communication.js.map +1 -0
- package/dist/src/lib/analyzers/secrets/patterns/api-keys/generic.d.ts +12 -0
- package/dist/src/lib/analyzers/secrets/patterns/api-keys/generic.d.ts.map +1 -0
- package/dist/src/lib/analyzers/secrets/patterns/api-keys/generic.js +45 -0
- package/dist/src/lib/analyzers/secrets/patterns/api-keys/generic.js.map +1 -0
- package/dist/src/lib/analyzers/secrets/patterns/api-keys/github.d.ts +14 -0
- package/dist/src/lib/analyzers/secrets/patterns/api-keys/github.d.ts.map +1 -0
- package/dist/src/lib/analyzers/secrets/patterns/api-keys/github.js +47 -0
- package/dist/src/lib/analyzers/secrets/patterns/api-keys/github.js.map +1 -0
- package/dist/src/lib/analyzers/secrets/patterns/api-keys/stripe.d.ts +13 -0
- package/dist/src/lib/analyzers/secrets/patterns/api-keys/stripe.d.ts.map +1 -0
- package/dist/src/lib/analyzers/secrets/patterns/api-keys/stripe.js +36 -0
- package/dist/src/lib/analyzers/secrets/patterns/api-keys/stripe.js.map +1 -0
- package/dist/src/lib/analyzers/secrets/patterns/api-keys.d.ts +15 -0
- package/dist/src/lib/analyzers/secrets/patterns/api-keys.d.ts.map +1 -0
- package/dist/src/lib/analyzers/secrets/patterns/api-keys.js +32 -0
- package/dist/src/lib/analyzers/secrets/patterns/api-keys.js.map +1 -0
- package/dist/src/lib/analyzers/secrets/patterns/credentials.d.ts +15 -0
- package/dist/src/lib/analyzers/secrets/patterns/credentials.d.ts.map +1 -0
- package/dist/src/lib/analyzers/secrets/patterns/credentials.js +68 -0
- package/dist/src/lib/analyzers/secrets/patterns/credentials.js.map +1 -0
- package/dist/src/lib/analyzers/secrets/patterns/private-keys.d.ts +16 -0
- package/dist/src/lib/analyzers/secrets/patterns/private-keys.d.ts.map +1 -0
- package/dist/src/lib/analyzers/secrets/patterns/private-keys.js +79 -0
- package/dist/src/lib/analyzers/secrets/patterns/private-keys.js.map +1 -0
- package/dist/src/lib/analyzers/secrets/patterns/tokens.d.ts +15 -0
- package/dist/src/lib/analyzers/secrets/patterns/tokens.d.ts.map +1 -0
- package/dist/src/lib/analyzers/secrets/patterns/tokens.js +58 -0
- package/dist/src/lib/analyzers/secrets/patterns/tokens.js.map +1 -0
- package/dist/src/lib/analyzers/secrets/secrets-analyzer.d.ts +88 -0
- package/dist/src/lib/analyzers/secrets/secrets-analyzer.d.ts.map +1 -0
- package/dist/src/lib/analyzers/secrets/secrets-analyzer.js +162 -0
- package/dist/src/lib/analyzers/secrets/secrets-analyzer.js.map +1 -0
- package/dist/src/lib/analyzers/secrets/validators/context-checker.d.ts +56 -0
- package/dist/src/lib/analyzers/secrets/validators/context-checker.d.ts.map +1 -0
- package/dist/src/lib/analyzers/secrets/validators/context-checker.js +199 -0
- package/dist/src/lib/analyzers/secrets/validators/context-checker.js.map +1 -0
- package/dist/src/lib/analyzers/secrets/validators/entropy-checker.d.ts +56 -0
- package/dist/src/lib/analyzers/secrets/validators/entropy-checker.d.ts.map +1 -0
- package/dist/src/lib/analyzers/secrets/validators/entropy-checker.js +102 -0
- package/dist/src/lib/analyzers/secrets/validators/entropy-checker.js.map +1 -0
- package/dist/src/lib/analyzers/security-checks/es6-security.d.ts +38 -0
- package/dist/src/lib/analyzers/security-checks/es6-security.d.ts.map +1 -0
- package/dist/src/lib/analyzers/security-checks/es6-security.js +125 -0
- package/dist/src/lib/analyzers/security-checks/es6-security.js.map +1 -0
- package/dist/src/lib/analyzers/security-checks/python-async-security.d.ts +46 -0
- package/dist/src/lib/analyzers/security-checks/python-async-security.d.ts.map +1 -0
- package/dist/src/lib/analyzers/security-checks/python-async-security.js +92 -0
- package/dist/src/lib/analyzers/security-checks/python-async-security.js.map +1 -0
- package/dist/src/lib/analyzers/security-checks/react-security.d.ts +49 -0
- package/dist/src/lib/analyzers/security-checks/react-security.d.ts.map +1 -0
- package/dist/src/lib/analyzers/security-checks/react-security.js +125 -0
- package/dist/src/lib/analyzers/security-checks/react-security.js.map +1 -0
- package/dist/src/lib/analyzers/types.d.ts +92 -0
- package/dist/src/lib/analyzers/types.d.ts.map +1 -0
- package/dist/src/lib/analyzers/types.js +3 -0
- package/dist/src/lib/analyzers/types.js.map +1 -0
- package/dist/src/lib/analyzers/typescript/security-checks/access-control.d.ts +19 -0
- package/dist/src/lib/analyzers/typescript/security-checks/access-control.d.ts.map +1 -0
- package/dist/src/lib/analyzers/typescript/security-checks/access-control.js +210 -0
- package/dist/src/lib/analyzers/typescript/security-checks/access-control.js.map +1 -0
- package/dist/src/lib/analyzers/typescript/security-checks/ai-generated-code.d.ts +25 -0
- package/dist/src/lib/analyzers/typescript/security-checks/ai-generated-code.d.ts.map +1 -0
- package/dist/src/lib/analyzers/typescript/security-checks/ai-generated-code.js +242 -0
- package/dist/src/lib/analyzers/typescript/security-checks/ai-generated-code.js.map +1 -0
- package/dist/src/lib/analyzers/typescript/security-checks/authentication.d.ts +28 -0
- package/dist/src/lib/analyzers/typescript/security-checks/authentication.d.ts.map +1 -0
- package/dist/src/lib/analyzers/typescript/security-checks/authentication.js +357 -0
- package/dist/src/lib/analyzers/typescript/security-checks/authentication.js.map +1 -0
- package/dist/src/lib/analyzers/typescript/security-checks/code-injection.d.ts +26 -0
- package/dist/src/lib/analyzers/typescript/security-checks/code-injection.d.ts.map +1 -0
- package/dist/src/lib/analyzers/typescript/security-checks/code-injection.js +380 -0
- package/dist/src/lib/analyzers/typescript/security-checks/code-injection.js.map +1 -0
- package/dist/src/lib/analyzers/typescript/security-checks/code-quality.d.ts +23 -0
- package/dist/src/lib/analyzers/typescript/security-checks/code-quality.d.ts.map +1 -0
- package/dist/src/lib/analyzers/typescript/security-checks/code-quality.js +109 -0
- package/dist/src/lib/analyzers/typescript/security-checks/code-quality.js.map +1 -0
- package/dist/src/lib/analyzers/typescript/security-checks/credentials-crypto.d.ts +21 -0
- package/dist/src/lib/analyzers/typescript/security-checks/credentials-crypto.d.ts.map +1 -0
- package/dist/src/lib/analyzers/typescript/security-checks/credentials-crypto.js +153 -0
- package/dist/src/lib/analyzers/typescript/security-checks/credentials-crypto.js.map +1 -0
- package/dist/src/lib/analyzers/typescript/security-checks/enhanced-supply-chain.d.ts +23 -0
- package/dist/src/lib/analyzers/typescript/security-checks/enhanced-supply-chain.d.ts.map +1 -0
- package/dist/src/lib/analyzers/typescript/security-checks/enhanced-supply-chain.js +146 -0
- package/dist/src/lib/analyzers/typescript/security-checks/enhanced-supply-chain.js.map +1 -0
- package/dist/src/lib/analyzers/typescript/security-checks/exception-handling.d.ts +23 -0
- package/dist/src/lib/analyzers/typescript/security-checks/exception-handling.d.ts.map +1 -0
- package/dist/src/lib/analyzers/typescript/security-checks/exception-handling.js +187 -0
- package/dist/src/lib/analyzers/typescript/security-checks/exception-handling.js.map +1 -0
- package/dist/src/lib/analyzers/typescript/security-checks/information-disclosure.d.ts +19 -0
- package/dist/src/lib/analyzers/typescript/security-checks/information-disclosure.d.ts.map +1 -0
- package/dist/src/lib/analyzers/typescript/security-checks/information-disclosure.js +97 -0
- package/dist/src/lib/analyzers/typescript/security-checks/information-disclosure.js.map +1 -0
- package/dist/src/lib/analyzers/typescript/security-checks/injection-attacks.d.ts +29 -0
- package/dist/src/lib/analyzers/typescript/security-checks/injection-attacks.d.ts.map +1 -0
- package/dist/src/lib/analyzers/typescript/security-checks/injection-attacks.js +319 -0
- package/dist/src/lib/analyzers/typescript/security-checks/injection-attacks.js.map +1 -0
- package/dist/src/lib/analyzers/typescript/security-checks/logging-failures.d.ts +21 -0
- package/dist/src/lib/analyzers/typescript/security-checks/logging-failures.d.ts.map +1 -0
- package/dist/src/lib/analyzers/typescript/security-checks/logging-failures.js +121 -0
- package/dist/src/lib/analyzers/typescript/security-checks/logging-failures.js.map +1 -0
- package/dist/src/lib/analyzers/typescript/security-checks/security-misconfiguration.d.ts +27 -0
- package/dist/src/lib/analyzers/typescript/security-checks/security-misconfiguration.d.ts.map +1 -0
- package/dist/src/lib/analyzers/typescript/security-checks/security-misconfiguration.js +213 -0
- package/dist/src/lib/analyzers/typescript/security-checks/security-misconfiguration.js.map +1 -0
- package/dist/src/lib/analyzers/typescript/security-checks/type-security.d.ts +19 -0
- package/dist/src/lib/analyzers/typescript/security-checks/type-security.d.ts.map +1 -0
- package/dist/src/lib/analyzers/typescript/security-checks/type-security.js +59 -0
- package/dist/src/lib/analyzers/typescript/security-checks/type-security.js.map +1 -0
- package/dist/src/lib/analyzers/typescript/type-checker.d.ts +17 -0
- package/dist/src/lib/analyzers/typescript/type-checker.d.ts.map +1 -0
- package/dist/src/lib/analyzers/typescript/type-checker.js +515 -0
- package/dist/src/lib/analyzers/typescript/type-checker.js.map +1 -0
- package/dist/src/lib/analyzers/typescript/utils/createVulnerability.d.ts +58 -0
- package/dist/src/lib/analyzers/typescript/utils/createVulnerability.d.ts.map +1 -0
- package/dist/src/lib/analyzers/typescript/utils/createVulnerability.js +71 -0
- package/dist/src/lib/analyzers/typescript/utils/createVulnerability.js.map +1 -0
- package/dist/src/lib/analyzers/typescript-analyzer.d.ts +116 -0
- package/dist/src/lib/analyzers/typescript-analyzer.d.ts.map +1 -0
- package/dist/src/lib/analyzers/typescript-analyzer.js +1660 -0
- package/dist/src/lib/analyzers/typescript-analyzer.js.map +1 -0
- package/dist/src/lib/security/compliance-mapping.d.ts +29 -0
- package/dist/src/lib/security/compliance-mapping.d.ts.map +1 -0
- package/dist/src/lib/security/compliance-mapping.js +1342 -0
- package/dist/src/lib/security/compliance-mapping.js.map +1 -0
- package/dist/src/lib/security/severity-scoring.d.ts +47 -0
- package/dist/src/lib/security/severity-scoring.d.ts.map +1 -0
- package/dist/src/lib/security/severity-scoring.js +965 -0
- package/dist/src/lib/security/severity-scoring.js.map +1 -0
- package/dist/src/lib/standards/references.d.ts +16 -0
- package/dist/src/lib/standards/references.d.ts.map +1 -0
- package/dist/src/lib/standards/references.js +1161 -0
- package/dist/src/lib/standards/references.js.map +1 -0
- package/dist/src/lib/types/index.d.ts +167 -0
- package/dist/src/lib/types/index.d.ts.map +1 -0
- package/dist/src/lib/types/index.js +3 -0
- package/dist/src/lib/types/index.js.map +1 -0
- package/dist/src/lib/utils/code-cleaner.d.ts +59 -0
- package/dist/src/lib/utils/code-cleaner.d.ts.map +1 -0
- package/dist/src/lib/utils/code-cleaner.js +283 -0
- package/dist/src/lib/utils/code-cleaner.js.map +1 -0
- package/package.json +51 -0
- package/src/commands/auth.ts +308 -0
- package/src/commands/config.ts +226 -0
- package/src/commands/init.ts +202 -0
- package/src/commands/scan.ts +238 -0
- package/src/config/config-loader.ts +175 -0
- package/src/reporters/cli-reporter.ts +282 -0
- package/src/scanner/local-scanner.ts +250 -0
- package/tsconfig.json +24 -0
- package/tsconfig.tsbuildinfo +1 -0
|
@@ -0,0 +1,199 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
/**
|
|
3
|
+
* Context Checker
|
|
4
|
+
*
|
|
5
|
+
* Reduces false positives by analyzing code context.
|
|
6
|
+
* Identifies safe patterns like:
|
|
7
|
+
* - Test files
|
|
8
|
+
* - Example code
|
|
9
|
+
* - Documentation
|
|
10
|
+
* - Placeholder values
|
|
11
|
+
* - Environment variable references
|
|
12
|
+
*
|
|
13
|
+
* Created: Phase 1.5, Week 1
|
|
14
|
+
* Date: January 7, 2026
|
|
15
|
+
*/
|
|
16
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
17
|
+
exports.isPlaceholder = isPlaceholder;
|
|
18
|
+
exports.isSafeContext = isSafeContext;
|
|
19
|
+
exports.isSafeFile = isSafeFile;
|
|
20
|
+
exports.isLikelyFalsePositive = isLikelyFalsePositive;
|
|
21
|
+
exports.calculateContextConfidence = calculateContextConfidence;
|
|
22
|
+
/**
|
|
23
|
+
* Common placeholder values that are NOT real secrets
|
|
24
|
+
*/
|
|
25
|
+
const PLACEHOLDER_VALUES = [
|
|
26
|
+
'your_api_key_here',
|
|
27
|
+
'your_api_key',
|
|
28
|
+
'your-api-key',
|
|
29
|
+
'your_secret_key',
|
|
30
|
+
'your-secret',
|
|
31
|
+
'example_key',
|
|
32
|
+
'test_key',
|
|
33
|
+
'fake_key',
|
|
34
|
+
'dummy_key',
|
|
35
|
+
'sample_key',
|
|
36
|
+
'replace_me',
|
|
37
|
+
'change_me',
|
|
38
|
+
'todo',
|
|
39
|
+
'xxx',
|
|
40
|
+
'yyy',
|
|
41
|
+
'zzz',
|
|
42
|
+
'12345',
|
|
43
|
+
'abcdef',
|
|
44
|
+
'000000',
|
|
45
|
+
'real_key', // Common test value
|
|
46
|
+
];
|
|
47
|
+
/**
|
|
48
|
+
* Patterns indicating safe context (not real secrets)
|
|
49
|
+
*/
|
|
50
|
+
const SAFE_CONTEXT_PATTERNS = [
|
|
51
|
+
/process\.env\./i, // Environment variable
|
|
52
|
+
/os\.environ/i, // Python environment variable
|
|
53
|
+
/System\.getenv/i, // Java environment variable
|
|
54
|
+
/config\./i, // Configuration object
|
|
55
|
+
/\.example/i, // Example file
|
|
56
|
+
/\.template/i, // Template file
|
|
57
|
+
/\.sample/i, // Sample file
|
|
58
|
+
/\/\/ TODO/i, // TODO comment
|
|
59
|
+
/\/\/ FIXME/i, // FIXME comment
|
|
60
|
+
/\/\/ Example/i, // Example comment
|
|
61
|
+
/# Example/i, // Python example comment
|
|
62
|
+
/# TODO/i, // Python TODO comment
|
|
63
|
+
];
|
|
64
|
+
/**
|
|
65
|
+
* File patterns indicating test/example/documentation files
|
|
66
|
+
*/
|
|
67
|
+
const SAFE_FILE_PATTERNS = [
|
|
68
|
+
/\.test\./,
|
|
69
|
+
/\.spec\./,
|
|
70
|
+
/\.example\./,
|
|
71
|
+
/example/i, // Match any file with "example" in name
|
|
72
|
+
/\.template\./,
|
|
73
|
+
/\.sample\./,
|
|
74
|
+
/\.md$/,
|
|
75
|
+
/\.txt$/,
|
|
76
|
+
/\/test\//,
|
|
77
|
+
/\/tests\//,
|
|
78
|
+
/\/spec\//,
|
|
79
|
+
/\/specs\//,
|
|
80
|
+
/\/examples\//,
|
|
81
|
+
/\/docs\//,
|
|
82
|
+
/\/documentation\//,
|
|
83
|
+
/\/__tests__\//,
|
|
84
|
+
/\/__mocks__\//,
|
|
85
|
+
/README/i,
|
|
86
|
+
/CHANGELOG/i,
|
|
87
|
+
/LICENSE/i,
|
|
88
|
+
];
|
|
89
|
+
/**
|
|
90
|
+
* Check if value is a placeholder (not a real secret)
|
|
91
|
+
*
|
|
92
|
+
* @param value - Secret value to check
|
|
93
|
+
* @returns True if value is a placeholder
|
|
94
|
+
*/
|
|
95
|
+
function isPlaceholder(value) {
|
|
96
|
+
const valueLower = value.toLowerCase();
|
|
97
|
+
// Check against known placeholders
|
|
98
|
+
for (const placeholder of PLACEHOLDER_VALUES) {
|
|
99
|
+
if (valueLower.includes(placeholder.toLowerCase())) {
|
|
100
|
+
return true;
|
|
101
|
+
}
|
|
102
|
+
}
|
|
103
|
+
// Check if value is too simple (repeated characters)
|
|
104
|
+
if (/^(.)\1+$/.test(value)) {
|
|
105
|
+
return true; // All same character (e.g., "aaaaaaa")
|
|
106
|
+
}
|
|
107
|
+
// Check if value looks like example/test data
|
|
108
|
+
if (/^(test|example|demo|sample|fake|dummy)/i.test(value)) {
|
|
109
|
+
return true;
|
|
110
|
+
}
|
|
111
|
+
return false;
|
|
112
|
+
}
|
|
113
|
+
/**
|
|
114
|
+
* Check if context indicates safe usage (not a real secret)
|
|
115
|
+
*
|
|
116
|
+
* @param context - Line of code containing the secret
|
|
117
|
+
* @returns True if context is safe
|
|
118
|
+
*/
|
|
119
|
+
function isSafeContext(context) {
|
|
120
|
+
for (const pattern of SAFE_CONTEXT_PATTERNS) {
|
|
121
|
+
if (pattern.test(context)) {
|
|
122
|
+
return true;
|
|
123
|
+
}
|
|
124
|
+
}
|
|
125
|
+
return false;
|
|
126
|
+
}
|
|
127
|
+
/**
|
|
128
|
+
* Check if file is test/example/documentation
|
|
129
|
+
*
|
|
130
|
+
* @param filePath - File path to check
|
|
131
|
+
* @returns True if file is test/example/docs
|
|
132
|
+
*/
|
|
133
|
+
function isSafeFile(filePath) {
|
|
134
|
+
for (const pattern of SAFE_FILE_PATTERNS) {
|
|
135
|
+
if (pattern.test(filePath)) {
|
|
136
|
+
return true;
|
|
137
|
+
}
|
|
138
|
+
}
|
|
139
|
+
return false;
|
|
140
|
+
}
|
|
141
|
+
/**
|
|
142
|
+
* Check if value is likely a false positive
|
|
143
|
+
* Combines all heuristics to determine if secret detection should be skipped
|
|
144
|
+
*
|
|
145
|
+
* @param value - Secret value detected
|
|
146
|
+
* @param context - Line of code containing the secret
|
|
147
|
+
* @param filePath - File path
|
|
148
|
+
* @returns True if likely false positive
|
|
149
|
+
*/
|
|
150
|
+
function isLikelyFalsePositive(value, context, filePath) {
|
|
151
|
+
// Check 1: Is value a placeholder?
|
|
152
|
+
if (isPlaceholder(value)) {
|
|
153
|
+
return true;
|
|
154
|
+
}
|
|
155
|
+
// Check 2: Is context safe (env var, config, etc.)?
|
|
156
|
+
if (isSafeContext(context)) {
|
|
157
|
+
return true;
|
|
158
|
+
}
|
|
159
|
+
// Check 3: Is file test/example/docs?
|
|
160
|
+
if (isSafeFile(filePath)) {
|
|
161
|
+
return true;
|
|
162
|
+
}
|
|
163
|
+
// Check 4: Value too short (likely not a real secret)
|
|
164
|
+
if (value.length < 8) {
|
|
165
|
+
return true;
|
|
166
|
+
}
|
|
167
|
+
// Not a false positive
|
|
168
|
+
return false;
|
|
169
|
+
}
|
|
170
|
+
/**
|
|
171
|
+
* Calculate confidence score (0-100) based on context
|
|
172
|
+
* Lower score = more likely false positive
|
|
173
|
+
*
|
|
174
|
+
* @param value - Secret value detected
|
|
175
|
+
* @param context - Line of code
|
|
176
|
+
* @param filePath - File path
|
|
177
|
+
* @returns Confidence score (0-100)
|
|
178
|
+
*/
|
|
179
|
+
function calculateContextConfidence(value, context, filePath) {
|
|
180
|
+
let confidence = 100; // Start at maximum confidence
|
|
181
|
+
// Reduce confidence for placeholders
|
|
182
|
+
if (isPlaceholder(value)) {
|
|
183
|
+
confidence -= 60;
|
|
184
|
+
}
|
|
185
|
+
// Reduce confidence for safe contexts
|
|
186
|
+
if (isSafeContext(context)) {
|
|
187
|
+
confidence -= 40;
|
|
188
|
+
}
|
|
189
|
+
// Reduce confidence for test/example files
|
|
190
|
+
if (isSafeFile(filePath)) {
|
|
191
|
+
confidence -= 30;
|
|
192
|
+
}
|
|
193
|
+
// Reduce confidence for short values
|
|
194
|
+
if (value.length < 12) {
|
|
195
|
+
confidence -= 20;
|
|
196
|
+
}
|
|
197
|
+
return Math.max(confidence, 0);
|
|
198
|
+
}
|
|
199
|
+
//# sourceMappingURL=context-checker.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"context-checker.js","sourceRoot":"","sources":["../../../../../../../../src/lib/analyzers/secrets/validators/context-checker.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,56 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Entropy Checker
|
|
3
|
+
*
|
|
4
|
+
* Calculates Shannon entropy to detect high-randomness strings.
|
|
5
|
+
* High entropy indicates potential secrets (API keys, tokens, hashes).
|
|
6
|
+
*
|
|
7
|
+
* Entropy scale (base-2):
|
|
8
|
+
* - 0-2: Low entropy (repeated chars, simple patterns)
|
|
9
|
+
* - 2-3.5: Medium entropy (English text, simple passwords)
|
|
10
|
+
* - 3.5-4.5: High entropy (mixed alphanumeric, potential secrets)
|
|
11
|
+
* - 4.5+: Very high entropy (cryptographic-grade randomness)
|
|
12
|
+
*
|
|
13
|
+
* Created: Phase 1.5, Week 1
|
|
14
|
+
* Date: January 7, 2026
|
|
15
|
+
*/
|
|
16
|
+
/**
|
|
17
|
+
* Calculate Shannon entropy of a string
|
|
18
|
+
*
|
|
19
|
+
* @param str - String to analyze
|
|
20
|
+
* @returns Entropy value (0-8, where 8 is maximum for base-256)
|
|
21
|
+
*/
|
|
22
|
+
export declare function calculateEntropy(str: string): number;
|
|
23
|
+
/**
|
|
24
|
+
* Check if string has high entropy (likely random/cryptographic)
|
|
25
|
+
*
|
|
26
|
+
* @param str - String to analyze
|
|
27
|
+
* @param threshold - Entropy threshold (default 4.0)
|
|
28
|
+
* @returns True if entropy exceeds threshold
|
|
29
|
+
*/
|
|
30
|
+
export declare function hasHighEntropy(str: string, threshold?: number): boolean;
|
|
31
|
+
/**
|
|
32
|
+
* Calculate entropy for each character type separately
|
|
33
|
+
* Useful for detecting mixed-case alphanumeric secrets
|
|
34
|
+
*
|
|
35
|
+
* @param str - String to analyze
|
|
36
|
+
* @returns Object with entropy breakdown
|
|
37
|
+
*/
|
|
38
|
+
export declare function calculateEntropyBreakdown(str: string): {
|
|
39
|
+
overall: number;
|
|
40
|
+
lowercase: number;
|
|
41
|
+
uppercase: number;
|
|
42
|
+
digits: number;
|
|
43
|
+
symbols: number;
|
|
44
|
+
};
|
|
45
|
+
/**
|
|
46
|
+
* Detect if string has cryptographic-grade randomness
|
|
47
|
+
* Uses multiple heuristics:
|
|
48
|
+
* - High overall entropy (>4.5)
|
|
49
|
+
* - Mixed character types (uppercase, lowercase, digits)
|
|
50
|
+
* - Length >= 20 characters
|
|
51
|
+
*
|
|
52
|
+
* @param str - String to analyze
|
|
53
|
+
* @returns True if likely cryptographic secret
|
|
54
|
+
*/
|
|
55
|
+
export declare function isCryptographicSecret(str: string): boolean;
|
|
56
|
+
//# sourceMappingURL=entropy-checker.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"entropy-checker.d.ts","sourceRoot":"","sources":["../../../../../../../../src/lib/analyzers/secrets/validators/entropy-checker.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;GAcG;AAEH;;;;;GAKG;AACH,wBAAgB,gBAAgB,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM,CAqBpD;AAED;;;;;;GAMG;AACH,wBAAgB,cAAc,CAAC,GAAG,EAAE,MAAM,EAAE,SAAS,GAAE,MAAY,GAAG,OAAO,CAE5E;AAED;;;;;;GAMG;AACH,wBAAgB,yBAAyB,CAAC,GAAG,EAAE,MAAM,GAAG;IACtD,OAAO,EAAE,MAAM,CAAC;IAChB,SAAS,EAAE,MAAM,CAAC;IAClB,SAAS,EAAE,MAAM,CAAC;IAClB,MAAM,EAAE,MAAM,CAAC;IACf,OAAO,EAAE,MAAM,CAAC;CACjB,CAaA;AAED;;;;;;;;;GASG;AACH,wBAAgB,qBAAqB,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAmB1D"}
|
|
@@ -0,0 +1,102 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
/**
|
|
3
|
+
* Entropy Checker
|
|
4
|
+
*
|
|
5
|
+
* Calculates Shannon entropy to detect high-randomness strings.
|
|
6
|
+
* High entropy indicates potential secrets (API keys, tokens, hashes).
|
|
7
|
+
*
|
|
8
|
+
* Entropy scale (base-2):
|
|
9
|
+
* - 0-2: Low entropy (repeated chars, simple patterns)
|
|
10
|
+
* - 2-3.5: Medium entropy (English text, simple passwords)
|
|
11
|
+
* - 3.5-4.5: High entropy (mixed alphanumeric, potential secrets)
|
|
12
|
+
* - 4.5+: Very high entropy (cryptographic-grade randomness)
|
|
13
|
+
*
|
|
14
|
+
* Created: Phase 1.5, Week 1
|
|
15
|
+
* Date: January 7, 2026
|
|
16
|
+
*/
|
|
17
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
18
|
+
exports.calculateEntropy = calculateEntropy;
|
|
19
|
+
exports.hasHighEntropy = hasHighEntropy;
|
|
20
|
+
exports.calculateEntropyBreakdown = calculateEntropyBreakdown;
|
|
21
|
+
exports.isCryptographicSecret = isCryptographicSecret;
|
|
22
|
+
/**
|
|
23
|
+
* Calculate Shannon entropy of a string
|
|
24
|
+
*
|
|
25
|
+
* @param str - String to analyze
|
|
26
|
+
* @returns Entropy value (0-8, where 8 is maximum for base-256)
|
|
27
|
+
*/
|
|
28
|
+
function calculateEntropy(str) {
|
|
29
|
+
if (!str || str.length === 0) {
|
|
30
|
+
return 0;
|
|
31
|
+
}
|
|
32
|
+
// Count character frequencies
|
|
33
|
+
const frequencies = new Map();
|
|
34
|
+
for (const char of str) {
|
|
35
|
+
frequencies.set(char, (frequencies.get(char) || 0) + 1);
|
|
36
|
+
}
|
|
37
|
+
// Calculate Shannon entropy: H = -Σ(p(x) * log2(p(x)))
|
|
38
|
+
let entropy = 0;
|
|
39
|
+
const length = str.length;
|
|
40
|
+
for (const count of frequencies.values()) {
|
|
41
|
+
const probability = count / length;
|
|
42
|
+
entropy -= probability * Math.log2(probability);
|
|
43
|
+
}
|
|
44
|
+
return entropy;
|
|
45
|
+
}
|
|
46
|
+
/**
|
|
47
|
+
* Check if string has high entropy (likely random/cryptographic)
|
|
48
|
+
*
|
|
49
|
+
* @param str - String to analyze
|
|
50
|
+
* @param threshold - Entropy threshold (default 4.0)
|
|
51
|
+
* @returns True if entropy exceeds threshold
|
|
52
|
+
*/
|
|
53
|
+
function hasHighEntropy(str, threshold = 4.0) {
|
|
54
|
+
return calculateEntropy(str) >= threshold;
|
|
55
|
+
}
|
|
56
|
+
/**
|
|
57
|
+
* Calculate entropy for each character type separately
|
|
58
|
+
* Useful for detecting mixed-case alphanumeric secrets
|
|
59
|
+
*
|
|
60
|
+
* @param str - String to analyze
|
|
61
|
+
* @returns Object with entropy breakdown
|
|
62
|
+
*/
|
|
63
|
+
function calculateEntropyBreakdown(str) {
|
|
64
|
+
const lowercase = str.replace(/[^a-z]/g, '');
|
|
65
|
+
const uppercase = str.replace(/[^A-Z]/g, '');
|
|
66
|
+
const digits = str.replace(/[^0-9]/g, '');
|
|
67
|
+
const symbols = str.replace(/[a-zA-Z0-9]/g, '');
|
|
68
|
+
return {
|
|
69
|
+
overall: calculateEntropy(str),
|
|
70
|
+
lowercase: calculateEntropy(lowercase),
|
|
71
|
+
uppercase: calculateEntropy(uppercase),
|
|
72
|
+
digits: calculateEntropy(digits),
|
|
73
|
+
symbols: calculateEntropy(symbols),
|
|
74
|
+
};
|
|
75
|
+
}
|
|
76
|
+
/**
|
|
77
|
+
* Detect if string has cryptographic-grade randomness
|
|
78
|
+
* Uses multiple heuristics:
|
|
79
|
+
* - High overall entropy (>4.5)
|
|
80
|
+
* - Mixed character types (uppercase, lowercase, digits)
|
|
81
|
+
* - Length >= 20 characters
|
|
82
|
+
*
|
|
83
|
+
* @param str - String to analyze
|
|
84
|
+
* @returns True if likely cryptographic secret
|
|
85
|
+
*/
|
|
86
|
+
function isCryptographicSecret(str) {
|
|
87
|
+
if (str.length < 20) {
|
|
88
|
+
return false; // Too short for most API keys
|
|
89
|
+
}
|
|
90
|
+
const entropy = calculateEntropy(str);
|
|
91
|
+
if (entropy < 4.5) {
|
|
92
|
+
return false; // Not random enough
|
|
93
|
+
}
|
|
94
|
+
// Check for mixed character types
|
|
95
|
+
const hasLowercase = /[a-z]/.test(str);
|
|
96
|
+
const hasUppercase = /[A-Z]/.test(str);
|
|
97
|
+
const hasDigits = /[0-9]/.test(str);
|
|
98
|
+
// Cryptographic secrets typically have at least 2 character types
|
|
99
|
+
const typeCount = [hasLowercase, hasUppercase, hasDigits].filter(Boolean).length;
|
|
100
|
+
return typeCount >= 2;
|
|
101
|
+
}
|
|
102
|
+
//# sourceMappingURL=entropy-checker.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"entropy-checker.js","sourceRoot":"","sources":["../../../../../../../../src/lib/analyzers/secrets/validators/entropy-checker.ts"],"names":[],"mappings":";AAAA;;;;;;;;;;;;;;GAcG;;AAQH,4CAqBC;AASD,wCAEC;AASD,8DAmBC;AAYD,sDAmBC;AAjGD;;;;;GAKG;AACH,SAAgB,gBAAgB,CAAC,GAAW;IAC1C,IAAI,CAAC,GAAG,IAAI,GAAG,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QAC7B,OAAO,CAAC,CAAC;IACX,CAAC;IAED,8BAA8B;IAC9B,MAAM,WAAW,GAAG,IAAI,GAAG,EAAkB,CAAC;IAC9C,KAAK,MAAM,IAAI,IAAI,GAAG,EAAE,CAAC;QACvB,WAAW,CAAC,GAAG,CAAC,IAAI,EAAE,CAAC,WAAW,CAAC,GAAG,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC;IAC1D,CAAC;IAED,uDAAuD;IACvD,IAAI,OAAO,GAAG,CAAC,CAAC;IAChB,MAAM,MAAM,GAAG,GAAG,CAAC,MAAM,CAAC;IAE1B,KAAK,MAAM,KAAK,IAAI,WAAW,CAAC,MAAM,EAAE,EAAE,CAAC;QACzC,MAAM,WAAW,GAAG,KAAK,GAAG,MAAM,CAAC;QACnC,OAAO,IAAI,WAAW,GAAG,IAAI,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC;IAClD,CAAC;IAED,OAAO,OAAO,CAAC;AACjB,CAAC;AAED;;;;;;GAMG;AACH,SAAgB,cAAc,CAAC,GAAW,EAAE,YAAoB,GAAG;IACjE,OAAO,gBAAgB,CAAC,GAAG,CAAC,IAAI,SAAS,CAAC;AAC5C,CAAC;AAED;;;;;;GAMG;AACH,SAAgB,yBAAyB,CAAC,GAAW;IAOnD,MAAM,SAAS,GAAG,GAAG,CAAC,OAAO,CAAC,SAAS,EAAE,EAAE,CAAC,CAAC;IAC7C,MAAM,SAAS,GAAG,GAAG,CAAC,OAAO,CAAC,SAAS,EAAE,EAAE,CAAC,CAAC;IAC7C,MAAM,MAAM,GAAG,GAAG,CAAC,OAAO,CAAC,SAAS,EAAE,EAAE,CAAC,CAAC;IAC1C,MAAM,OAAO,GAAG,GAAG,CAAC,OAAO,CAAC,cAAc,EAAE,EAAE,CAAC,CAAC;IAEhD,OAAO;QACL,OAAO,EAAE,gBAAgB,CAAC,GAAG,CAAC;QAC9B,SAAS,EAAE,gBAAgB,CAAC,SAAS,CAAC;QACtC,SAAS,EAAE,gBAAgB,CAAC,SAAS,CAAC;QACtC,MAAM,EAAE,gBAAgB,CAAC,MAAM,CAAC;QAChC,OAAO,EAAE,gBAAgB,CAAC,OAAO,CAAC;KACnC,CAAC;AACJ,CAAC;AAED;;;;;;;;;GASG;AACH,SAAgB,qBAAqB,CAAC,GAAW;IAC/C,IAAI,GAAG,CAAC,MAAM,GAAG,EAAE,EAAE,CAAC;QACpB,OAAO,KAAK,CAAC,CAAC,8BAA8B;IAC9C,CAAC;IAED,MAAM,OAAO,GAAG,gBAAgB,CAAC,GAAG,CAAC,CAAC;IACtC,IAAI,OAAO,GAAG,GAAG,EAAE,CAAC;QAClB,OAAO,KAAK,CAAC,CAAC,oBAAoB;IACpC,CAAC;IAED,kCAAkC;IAClC,MAAM,YAAY,GAAG,OAAO,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;IACvC,MAAM,YAAY,GAAG,OAAO,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;IACvC,MAAM,SAAS,GAAG,OAAO,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;IAEpC,kEAAkE;IAClE,MAAM,SAAS,GAAG,CAAC,YAAY,EAAE,YAAY,EAAE,SAAS,CAAC,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,MAAM,CAAC;IAEjF,OAAO,SAAS,IAAI,CAAC,CAAC;AACxB,CAAC"}
|
|
@@ -0,0 +1,38 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* ES6+ Security Checks Module
|
|
3
|
+
*
|
|
4
|
+
* Security vulnerability detection for ES6+ JavaScript patterns.
|
|
5
|
+
* Detects prototype pollution, URL injection, and template literal injection.
|
|
6
|
+
*
|
|
7
|
+
* @module es6-security
|
|
8
|
+
*/
|
|
9
|
+
import { SecurityVulnerability } from '../types';
|
|
10
|
+
export type CreateVulnerabilityFn = (category: string, message: string, suggestion: string, line: number, description: string, exploitExample: string, realWorldImpact: string[], before: string, after: string, explanation: string) => SecurityVulnerability;
|
|
11
|
+
/**
|
|
12
|
+
* Detects Object.assign() with user input (prototype pollution risk)
|
|
13
|
+
*
|
|
14
|
+
* @param line - The code line to check
|
|
15
|
+
* @param lineNumber - The line number
|
|
16
|
+
* @param createVulnerability - Function to create vulnerability object
|
|
17
|
+
* @returns SecurityVulnerability if detected, null otherwise
|
|
18
|
+
*/
|
|
19
|
+
export declare function detectPrototypePollution(line: string, lineNumber: number, createVulnerability: CreateVulnerabilityFn): SecurityVulnerability | null;
|
|
20
|
+
/**
|
|
21
|
+
* Detects unsafe URL() constructor with user input (SSRF/open redirect risk)
|
|
22
|
+
*
|
|
23
|
+
* @param line - The code line to check
|
|
24
|
+
* @param lineNumber - The line number
|
|
25
|
+
* @param createVulnerability - Function to create vulnerability object
|
|
26
|
+
* @returns SecurityVulnerability if detected, null otherwise
|
|
27
|
+
*/
|
|
28
|
+
export declare function detectURLInjection(line: string, lineNumber: number, createVulnerability: CreateVulnerabilityFn): SecurityVulnerability | null;
|
|
29
|
+
/**
|
|
30
|
+
* Detects template literal injection (SQL/command/HTML injection)
|
|
31
|
+
*
|
|
32
|
+
* @param line - The code line to check
|
|
33
|
+
* @param lineNumber - The line number
|
|
34
|
+
* @param createVulnerability - Function to create vulnerability object
|
|
35
|
+
* @returns SecurityVulnerability if detected, null otherwise
|
|
36
|
+
*/
|
|
37
|
+
export declare function detectTemplateLiteralInjection(line: string, lineNumber: number, createVulnerability: CreateVulnerabilityFn): SecurityVulnerability | null;
|
|
38
|
+
//# sourceMappingURL=es6-security.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"es6-security.d.ts","sourceRoot":"","sources":["../../../../../../../src/lib/analyzers/security-checks/es6-security.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAEH,OAAO,EAAE,qBAAqB,EAAE,MAAM,UAAU,CAAC;AAEjD,MAAM,MAAM,qBAAqB,GAAG,CAClC,QAAQ,EAAE,MAAM,EAChB,OAAO,EAAE,MAAM,EACf,UAAU,EAAE,MAAM,EAClB,IAAI,EAAE,MAAM,EACZ,WAAW,EAAE,MAAM,EACnB,cAAc,EAAE,MAAM,EACtB,eAAe,EAAE,MAAM,EAAE,EACzB,MAAM,EAAE,MAAM,EACd,KAAK,EAAE,MAAM,EACb,WAAW,EAAE,MAAM,KAChB,qBAAqB,CAAC;AAE3B;;;;;;;GAOG;AACH,wBAAgB,wBAAwB,CACtC,IAAI,EAAE,MAAM,EACZ,UAAU,EAAE,MAAM,EAClB,mBAAmB,EAAE,qBAAqB,GACzC,qBAAqB,GAAG,IAAI,CAmC9B;AAED;;;;;;;GAOG;AACH,wBAAgB,kBAAkB,CAChC,IAAI,EAAE,MAAM,EACZ,UAAU,EAAE,MAAM,EAClB,mBAAmB,EAAE,qBAAqB,GACzC,qBAAqB,GAAG,IAAI,CAwB9B;AAED;;;;;;;GAOG;AACH,wBAAgB,8BAA8B,CAC5C,IAAI,EAAE,MAAM,EACZ,UAAU,EAAE,MAAM,EAClB,mBAAmB,EAAE,qBAAqB,GACzC,qBAAqB,GAAG,IAAI,CAqE9B"}
|
|
@@ -0,0 +1,125 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
/**
|
|
3
|
+
* ES6+ Security Checks Module
|
|
4
|
+
*
|
|
5
|
+
* Security vulnerability detection for ES6+ JavaScript patterns.
|
|
6
|
+
* Detects prototype pollution, URL injection, and template literal injection.
|
|
7
|
+
*
|
|
8
|
+
* @module es6-security
|
|
9
|
+
*/
|
|
10
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
11
|
+
exports.detectPrototypePollution = detectPrototypePollution;
|
|
12
|
+
exports.detectURLInjection = detectURLInjection;
|
|
13
|
+
exports.detectTemplateLiteralInjection = detectTemplateLiteralInjection;
|
|
14
|
+
/**
|
|
15
|
+
* Detects Object.assign() with user input (prototype pollution risk)
|
|
16
|
+
*
|
|
17
|
+
* @param line - The code line to check
|
|
18
|
+
* @param lineNumber - The line number
|
|
19
|
+
* @param createVulnerability - Function to create vulnerability object
|
|
20
|
+
* @returns SecurityVulnerability if detected, null otherwise
|
|
21
|
+
*/
|
|
22
|
+
function detectPrototypePollution(line, lineNumber, createVulnerability) {
|
|
23
|
+
const trimmed = line.trim();
|
|
24
|
+
if (trimmed.includes('Object.assign') && trimmed.match(/Object\.assign\s*\(\s*\w+/)) {
|
|
25
|
+
// Check if assigning from user input (with or without dot notation)
|
|
26
|
+
// Match: req.body, params, query, userInput, props.data, etc.
|
|
27
|
+
const hasUserInput = trimmed.match(/Object\.assign\s*\(\s*\w+\s*,\s*(req\b|request\b|params\b|query\b|body\b|userInput\b|req\.|request\.|params\.|query\.|body\.|props\.)/);
|
|
28
|
+
// Exclude safe patterns: Object.assign({}, ...) or Object.assign with literals/defaults
|
|
29
|
+
const isFirstArgEmpty = trimmed.match(/Object\.assign\s*\(\s*{\s*}\s*,/);
|
|
30
|
+
const hasOnlyLiterals = trimmed.match(/Object\.assign\s*\([^)]*{[^}]*}[^)]*\)/);
|
|
31
|
+
const isSafePattern = trimmed.includes('defaults') || trimmed.includes('static') || trimmed.match(/Object\.assign\s*\(\s*{}\s*,\s*\w+\s*,\s*{/);
|
|
32
|
+
if (hasUserInput && !isFirstArgEmpty && !isSafePattern) {
|
|
33
|
+
return createVulnerability('prototype-pollution', 'Object.assign with user input can cause prototype pollution', 'Validate keys before assignment or use Object.create(null)', lineNumber, 'Object.assign() with user-controlled input can modify Object.prototype, affecting all objects in the application and leading to security vulnerabilities.', 'Object.assign(config, req.body) where req.body = {"__proto__": {"isAdmin": true}}', [
|
|
34
|
+
'Prototype pollution attacks',
|
|
35
|
+
'Privilege escalation',
|
|
36
|
+
'Authentication bypass',
|
|
37
|
+
'Remote code execution'
|
|
38
|
+
], 'Object.assign(config, req.body);', 'const safeAssign = (target, source) => {\n const keys = Object.keys(source).filter(key => key !== "__proto__" && key !== "constructor" && key !== "prototype");\n keys.forEach(key => { target[key] = source[key]; });\n};\nsafeAssign(config, req.body);', 'Filter out __proto__, constructor, and prototype keys before using Object.assign() with user input');
|
|
39
|
+
}
|
|
40
|
+
}
|
|
41
|
+
return null;
|
|
42
|
+
}
|
|
43
|
+
/**
|
|
44
|
+
* Detects unsafe URL() constructor with user input (SSRF/open redirect risk)
|
|
45
|
+
*
|
|
46
|
+
* @param line - The code line to check
|
|
47
|
+
* @param lineNumber - The line number
|
|
48
|
+
* @param createVulnerability - Function to create vulnerability object
|
|
49
|
+
* @returns SecurityVulnerability if detected, null otherwise
|
|
50
|
+
*/
|
|
51
|
+
function detectURLInjection(line, lineNumber, createVulnerability) {
|
|
52
|
+
const trimmed = line.trim();
|
|
53
|
+
if (trimmed.match(/new\s+URL\s*\(/) && trimmed.match(/new\s+URL\s*\(\s*[^)]*\b(req\.|request\.|params\.|query\.|userInput|props\.)/)) {
|
|
54
|
+
return createVulnerability('url-injection', 'Unsafe URL() constructor with user input', 'Validate URL origin or use URL parsing library', lineNumber, 'Creating URLs from user input can lead to SSRF attacks, open redirects, or accessing internal services that should not be exposed.', 'new URL(req.query.redirect) where redirect = "http://internal-admin.local/secrets"', [
|
|
55
|
+
'Server-Side Request Forgery (SSRF)',
|
|
56
|
+
'Open redirect attacks',
|
|
57
|
+
'Access to internal services',
|
|
58
|
+
'Information disclosure'
|
|
59
|
+
], 'const url = new URL(req.query.redirect);', 'const allowedOrigins = ["https://example.com"];\nconst url = new URL(req.query.redirect);\nif (!allowedOrigins.includes(url.origin)) {\n throw new Error("Invalid redirect URL");\n}', 'Always validate URL origin against an allowlist before using URLs from user input');
|
|
60
|
+
}
|
|
61
|
+
return null;
|
|
62
|
+
}
|
|
63
|
+
/**
|
|
64
|
+
* Detects template literal injection (SQL/command/HTML injection)
|
|
65
|
+
*
|
|
66
|
+
* @param line - The code line to check
|
|
67
|
+
* @param lineNumber - The line number
|
|
68
|
+
* @param createVulnerability - Function to create vulnerability object
|
|
69
|
+
* @returns SecurityVulnerability if detected, null otherwise
|
|
70
|
+
*/
|
|
71
|
+
function detectTemplateLiteralInjection(line, lineNumber, createVulnerability) {
|
|
72
|
+
const trimmed = line.trim();
|
|
73
|
+
// Pattern 1: Specific known user input patterns (original check)
|
|
74
|
+
const hasKnownUserInput = trimmed.match(/`[^`]*\$\{[^}]*\b(req\.|request\.|params\.|query\.|body\.|userInput|props\.|user\w*\b|filename\b)/);
|
|
75
|
+
// Pattern 2: HTML with ANY variable interpolation (IMPROVED - catches `<a href="${url}">`)
|
|
76
|
+
// Detects template literals that contain HTML tags AND variable interpolation
|
|
77
|
+
const hasHTMLWithVars = trimmed.match(/`[^`]*<\w+[^>]*>/) && trimmed.match(/\$\{[^}]+\}/);
|
|
78
|
+
if (hasKnownUserInput || hasHTMLWithVars) {
|
|
79
|
+
// Check if it's being used in dangerous contexts
|
|
80
|
+
const isDangerous = trimmed.includes('eval') ||
|
|
81
|
+
trimmed.includes('Function(') ||
|
|
82
|
+
trimmed.includes('innerHTML') ||
|
|
83
|
+
trimmed.includes('<script') ||
|
|
84
|
+
trimmed.match(/\b(SELECT|INSERT|UPDATE|DELETE|FROM|WHERE)\b/i) || // SQL
|
|
85
|
+
trimmed.match(/\b(exec|spawn|mysqldump|psql|bash|sh)\b/i) || // Command injection
|
|
86
|
+
trimmed.match(/<\w+[^>]*>/); // HTML injection
|
|
87
|
+
if (isDangerous) {
|
|
88
|
+
// Determine specific type
|
|
89
|
+
let type = 'template-injection';
|
|
90
|
+
let title = 'Template literal injection allows code/command execution';
|
|
91
|
+
let suggestion = 'Use parameterized queries or sanitize user input';
|
|
92
|
+
let explanation = 'Use parameterized queries for SQL, avoid eval/Function, sanitize HTML, validate command inputs';
|
|
93
|
+
if (trimmed.match(/\b(SELECT|INSERT|UPDATE|DELETE)\b/i)) {
|
|
94
|
+
type = 'sql-injection';
|
|
95
|
+
title = 'Template literal with user input in SQL query';
|
|
96
|
+
}
|
|
97
|
+
else if (trimmed.match(/\b(exec|spawn|mysqldump)\b/i)) {
|
|
98
|
+
type = 'command-injection';
|
|
99
|
+
title = 'Template literal with user input in command execution';
|
|
100
|
+
}
|
|
101
|
+
else if (trimmed.match(/<\w+[^>]*>/) && hasHTMLWithVars) {
|
|
102
|
+
// XSS via HTML template literal
|
|
103
|
+
type = 'xss';
|
|
104
|
+
title = 'XSS vulnerability in HTML template literal';
|
|
105
|
+
suggestion = 'Sanitize variables or use React\'s JSX (auto-escaped)';
|
|
106
|
+
explanation = 'When rendering HTML with template literals, all variables must be sanitized. Use DOMPurify or avoid template literals for HTML entirely.';
|
|
107
|
+
}
|
|
108
|
+
return createVulnerability(type, title, suggestion, lineNumber, 'Template literals with user input in SQL queries, commands, eval, or HTML contexts allow attackers to inject malicious code, leading to XSS, SQL injection, or command execution.', hasHTMLWithVars
|
|
109
|
+
? '`<a href="${userInput}">Link</a>` allows XSS if userInput contains javascript:alert(1)'
|
|
110
|
+
: '`SELECT * FROM users WHERE id = ${userId}` allows SQL injection if userId is not validated', [
|
|
111
|
+
'SQL injection',
|
|
112
|
+
'Command injection',
|
|
113
|
+
'Remote code execution',
|
|
114
|
+
'XSS attacks',
|
|
115
|
+
'Data exfiltration'
|
|
116
|
+
], hasHTMLWithVars
|
|
117
|
+
? 'return `<a href="${url}">Click here</a>`;'
|
|
118
|
+
: 'const query = `SELECT * FROM users WHERE id = ${userId}`;', hasHTMLWithVars
|
|
119
|
+
? '// Option 1: Sanitize URL\nimport DOMPurify from "dompurify";\nconst safeUrl = DOMPurify.sanitize(url, {ALLOWED_URI_REGEXP: /^https?:/});\nreturn `<a href="${safeUrl}">Click here</a>`;\n\n// Option 2: Use React JSX (auto-escaped)\nreturn <a href={url}>Click here</a>;'
|
|
120
|
+
: 'const query = "SELECT * FROM users WHERE id = ?";\ndb.query(query, [userId]); // Parameterized query', explanation);
|
|
121
|
+
}
|
|
122
|
+
}
|
|
123
|
+
return null;
|
|
124
|
+
}
|
|
125
|
+
//# sourceMappingURL=es6-security.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"es6-security.js","sourceRoot":"","sources":["../../../../../../../src/lib/analyzers/security-checks/es6-security.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,46 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Python Async/Await Security Checks Module
|
|
3
|
+
*
|
|
4
|
+
* Security vulnerability detection for Python async/await patterns.
|
|
5
|
+
* Detects missing await keywords and asyncio.run() misuse.
|
|
6
|
+
*
|
|
7
|
+
* @module python-async-security
|
|
8
|
+
*/
|
|
9
|
+
import { SecurityVulnerability } from '../types';
|
|
10
|
+
export type CreateVulnerabilityFn = (category: string, message: string, suggestion: string, line: number, description: string, exploitExample: string, realWorldImpact: string[], before: string, after: string, explanation: string) => SecurityVulnerability;
|
|
11
|
+
/**
|
|
12
|
+
* Check if line starts an async function definition
|
|
13
|
+
*
|
|
14
|
+
* @param line - The code line to check
|
|
15
|
+
* @returns true if line starts async function
|
|
16
|
+
*/
|
|
17
|
+
export declare function isAsyncFunctionStart(line: string): boolean;
|
|
18
|
+
/**
|
|
19
|
+
* Check if line ends async function context (dedent back to module level)
|
|
20
|
+
*
|
|
21
|
+
* @param line - The code line to check
|
|
22
|
+
* @param prevIndent - Previous function body indent level
|
|
23
|
+
* @returns true if async context should end
|
|
24
|
+
*/
|
|
25
|
+
export declare function isAsyncFunctionEnd(line: string, prevIndent: number): boolean;
|
|
26
|
+
/**
|
|
27
|
+
* Detect missing await on async function calls
|
|
28
|
+
*
|
|
29
|
+
* @param line - The code line to check
|
|
30
|
+
* @param lineNumber - The line number
|
|
31
|
+
* @param inAsyncContext - Whether we're inside an async function
|
|
32
|
+
* @param createVulnerability - Function to create vulnerability object
|
|
33
|
+
* @returns SecurityVulnerability if detected, null otherwise
|
|
34
|
+
*/
|
|
35
|
+
export declare function detectMissingAwait(line: string, lineNumber: number, inAsyncContext: boolean, createVulnerability: CreateVulnerabilityFn): SecurityVulnerability | null;
|
|
36
|
+
/**
|
|
37
|
+
* Detect asyncio.run() called inside async function
|
|
38
|
+
*
|
|
39
|
+
* @param line - The code line to check
|
|
40
|
+
* @param lineNumber - The line number
|
|
41
|
+
* @param inAsyncContext - Whether we're inside an async function
|
|
42
|
+
* @param createVulnerability - Function to create vulnerability object
|
|
43
|
+
* @returns SecurityVulnerability if detected, null otherwise
|
|
44
|
+
*/
|
|
45
|
+
export declare function detectAsyncioRunMisuse(line: string, lineNumber: number, inAsyncContext: boolean, createVulnerability: CreateVulnerabilityFn): SecurityVulnerability | null;
|
|
46
|
+
//# sourceMappingURL=python-async-security.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"python-async-security.d.ts","sourceRoot":"","sources":["../../../../../../../src/lib/analyzers/security-checks/python-async-security.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAEH,OAAO,EAAE,qBAAqB,EAAE,MAAM,UAAU,CAAC;AAEjD,MAAM,MAAM,qBAAqB,GAAG,CAClC,QAAQ,EAAE,MAAM,EAChB,OAAO,EAAE,MAAM,EACf,UAAU,EAAE,MAAM,EAClB,IAAI,EAAE,MAAM,EACZ,WAAW,EAAE,MAAM,EACnB,cAAc,EAAE,MAAM,EACtB,eAAe,EAAE,MAAM,EAAE,EACzB,MAAM,EAAE,MAAM,EACd,KAAK,EAAE,MAAM,EACb,WAAW,EAAE,MAAM,KAChB,qBAAqB,CAAC;AAE3B;;;;;GAKG;AACH,wBAAgB,oBAAoB,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAE1D;AAED;;;;;;GAMG;AACH,wBAAgB,kBAAkB,CAAC,IAAI,EAAE,MAAM,EAAE,UAAU,EAAE,MAAM,GAAG,OAAO,CAY5E;AAED;;;;;;;;GAQG;AACH,wBAAgB,kBAAkB,CAChC,IAAI,EAAE,MAAM,EACZ,UAAU,EAAE,MAAM,EAClB,cAAc,EAAE,OAAO,EACvB,mBAAmB,EAAE,qBAAqB,GACzC,qBAAqB,GAAG,IAAI,CAgC9B;AAED;;;;;;;;GAQG;AACH,wBAAgB,sBAAsB,CACpC,IAAI,EAAE,MAAM,EACZ,UAAU,EAAE,MAAM,EAClB,cAAc,EAAE,OAAO,EACvB,mBAAmB,EAAE,qBAAqB,GACzC,qBAAqB,GAAG,IAAI,CAwB9B"}
|