@zerothreatai/vulnerability-registry 9.0.5 → 9.0.7

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.
Files changed (52) hide show
  1. package/dist/categories/authentication.js +22 -0
  2. package/dist/categories/injection.js +49 -0
  3. package/dist/categories/sensitive-data.d.ts +8 -0
  4. package/dist/categories/sensitive-data.js +96 -0
  5. package/dist/categories/xss.js +22 -0
  6. package/dist/compliances/compliance-by-vulnerabilities.d.ts +1 -1
  7. package/dist/compliances/compliance-by-vulnerabilities.js +9 -6
  8. package/dist/compliances/gdpr.js +2 -1
  9. package/dist/compliances/hipaa.js +2 -1
  10. package/dist/compliances/iso27001.js +2 -1
  11. package/dist/compliances/owasp.js +2 -1
  12. package/dist/compliances/pci-dss.js +2 -1
  13. package/dist/compliances/sans-top-25.js +1 -1
  14. package/dist/error-codes.d.ts +52 -0
  15. package/dist/error-codes.js +58 -0
  16. package/dist/index.d.ts +2 -1
  17. package/dist/index.js +2 -1
  18. package/dist/registry.js +2 -0
  19. package/dist/scanner.js +1 -0
  20. package/dist-cjs/categories/authentication.js +22 -0
  21. package/dist-cjs/categories/injection.js +49 -0
  22. package/dist-cjs/categories/sensitive-data.js +99 -0
  23. package/dist-cjs/categories/xss.js +22 -0
  24. package/dist-cjs/compliances/compliance-by-vulnerabilities.js +9 -6
  25. package/dist-cjs/compliances/gdpr.js +2 -1
  26. package/dist-cjs/compliances/hipaa.js +2 -1
  27. package/dist-cjs/compliances/iso27001.js +2 -1
  28. package/dist-cjs/compliances/owasp.js +2 -1
  29. package/dist-cjs/compliances/pci-dss.js +2 -1
  30. package/dist-cjs/compliances/sans-top-25.js +1 -1
  31. package/dist-cjs/error-codes.js +58 -0
  32. package/dist-cjs/index.js +3 -1
  33. package/dist-cjs/registry.js +2 -0
  34. package/dist-cjs/scanner.js +1 -0
  35. package/package.json +1 -1
  36. package/src/categories/authentication.ts +34 -11
  37. package/src/categories/injection.ts +59 -8
  38. package/src/categories/sensitive-data.ts +117 -0
  39. package/src/categories/xss.ts +23 -0
  40. package/src/compliances/compliance-by-vulnerabilities.ts +23 -19
  41. package/src/compliances/gdpr.ts +2 -1
  42. package/src/compliances/hipaa.ts +2 -1
  43. package/src/compliances/iso27001.ts +2 -1
  44. package/src/compliances/owasp.ts +2 -1
  45. package/src/compliances/pci-dss.ts +2 -1
  46. package/src/compliances/sans-top-25.ts +4 -1
  47. package/src/error-codes.ts +130 -70
  48. package/src/index.ts +9 -7
  49. package/src/registry.ts +2 -0
  50. package/src/scanner.ts +3 -2
  51. package/zerothreatai-vulnerability-registry-2.0.0.tgz +0 -0
  52. package/zerothreatai-vulnerability-registry-4npm .0.0.tgz +0 -0
@@ -388,5 +388,27 @@ export const AUTH_VULNERABILITIES = {
388
388
  ],
389
389
  remediation: 'Ignore untrusted x5c headers or validate certificate chains against a trusted root store with strict policy. Prefer pinned public keys or JWKS allowlists.',
390
390
  },
391
+ [VulnerabilityCode.AUTH_SESSION_NOT_INVALIDATED_ON_LOGOUT]: {
392
+ id: 117,
393
+ code: VulnerabilityCode.AUTH_SESSION_NOT_INVALIDATED_ON_LOGOUT,
394
+ title: 'Session Remains Valid After Logout',
395
+ description: 'Application logout does not invalidate the authenticated server-side session or token. A previously captured authenticated session can be replayed after logout to regain access to protected functionality, allowing attackers with stolen or fixed session material to continue operating as the victim.',
396
+ severity: 'high',
397
+ levelId: 2,
398
+ category: 'authentication',
399
+ scanner: 'session-invalidation',
400
+ cvss: {
401
+ score: 7.1,
402
+ vector: 'CVSS:3.1/AV:N/AC:L/PR:L/UI:N/S:U/C:H/I:L/A:N',
403
+ severity: 'HIGH',
404
+ },
405
+ cwe: [
406
+ { id: 'CWE-613', name: 'Insufficient Session Expiration', url: 'https://cwe.mitre.org/data/definitions/613.html' },
407
+ ],
408
+ owasp: [
409
+ { id: 'A07:2021', name: 'Identification and Authentication Failures', url: 'https://owasp.org/Top10/A07_2021-Identification_and_Authentication_Failures/' },
410
+ ],
411
+ remediation: 'Invalidate sessions and tokens server-side during logout. Rotate session identifiers after login and privilege changes. Ensure logout revokes all session artifacts that can restore authenticated access, including cookies and browser storage tokens.',
412
+ },
391
413
  };
392
414
  export default AUTH_VULNERABILITIES;
@@ -777,5 +777,54 @@ export const INJECTION_VULNERABILITIES = {
777
777
  ],
778
778
  remediation: 'Suppress detailed XPath error messages in production. Use safe XPath APIs and validation to prevent injection. Implement centralized error handling with generic responses.',
779
779
  },
780
+ // ========================================
781
+ // PATH PARAMETER INJECTION
782
+ // ========================================
783
+ [VulnerabilityCode.PATH_PARAMETER_INJECTION]: {
784
+ id: 334,
785
+ code: VulnerabilityCode.PATH_PARAMETER_INJECTION,
786
+ title: 'Path Parameter Injection',
787
+ description: 'Path parameter injection vulnerability detected where user-controlled path segments trigger server errors or internal detail leaks, indicating unsafe handling of dynamic path values that may enable injection or traversal behaviors.',
788
+ severity: 'medium',
789
+ levelId: 3,
790
+ category: 'injection',
791
+ scanner: 'model-state',
792
+ groupName: 'Injection',
793
+ cvss: {
794
+ score: 6.1,
795
+ vector: 'CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:L/I:L/A:N',
796
+ severity: 'MEDIUM',
797
+ },
798
+ cwe: [
799
+ { id: 'CWE-20', name: 'Improper Input Validation', url: 'https://cwe.mitre.org/data/definitions/20.html' },
800
+ ],
801
+ owasp: [
802
+ { id: 'A03:2021', name: 'Injection', url: 'https://owasp.org/Top10/A03_2021-Injection/' },
803
+ ],
804
+ remediation: 'Validate and constrain path parameters with allowlists or route constraints. Normalize and sanitize path inputs before use. Avoid passing raw path segments into file or query handlers.',
805
+ },
806
+ [VulnerabilityCode.HPP_DUPLICATE_PARAMETER]: {
807
+ id: 335,
808
+ code: VulnerabilityCode.HPP_DUPLICATE_PARAMETER,
809
+ title: 'HTTP Parameter Pollution',
810
+ description: 'HTTP parameter pollution vulnerability detected where duplicate query parameter keys trigger behavior distinct from both single-value control requests, indicating inconsistent duplicate-key handling that may enable logic bypasses or validation mismatches across components.',
811
+ severity: 'medium',
812
+ levelId: 3,
813
+ category: 'injection',
814
+ scanner: 'model-state',
815
+ groupName: 'HTTP Parameter Pollution',
816
+ cvss: {
817
+ score: 5.3,
818
+ vector: 'CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:N/I:L/A:N',
819
+ severity: 'MEDIUM',
820
+ },
821
+ cwe: [
822
+ { id: 'CWE-235', name: 'Improper Handling of Extra Parameters', url: 'https://cwe.mitre.org/data/definitions/235.html' },
823
+ ],
824
+ owasp: [
825
+ { id: 'A04:2021', name: 'Insecure Design', url: 'https://owasp.org/Top10/A04_2021-Insecure_Design/' },
826
+ ],
827
+ remediation: 'Reject unexpected duplicate parameters or canonicalize them consistently at the edge. Ensure upstream proxies, frameworks, and application code all apply the same duplicate-key handling rules. Prefer strict allowlists for security-sensitive parameters.',
828
+ },
780
829
  };
781
830
  export default INJECTION_VULNERABILITIES;
@@ -0,0 +1,8 @@
1
+ /**
2
+ * Vulnerability Registry - Sensitive Data Exposure
3
+ *
4
+ * Definitions for high-confidence sensitive data exposures detected in content.
5
+ */
6
+ import type { VulnerabilityDefinitionInput } from '../types.js';
7
+ export declare const SENSITIVE_DATA_VULNERABILITIES: Record<string, VulnerabilityDefinitionInput>;
8
+ export default SENSITIVE_DATA_VULNERABILITIES;
@@ -0,0 +1,96 @@
1
+ /**
2
+ * Vulnerability Registry - Sensitive Data Exposure
3
+ *
4
+ * Definitions for high-confidence sensitive data exposures detected in content.
5
+ */
6
+ import { VulnerabilityCode } from '../error-codes.js';
7
+ const CWE_EXPOSURE = [
8
+ { id: 'CWE-200', name: 'Exposure of Sensitive Information to an Unauthorized Actor', url: 'https://cwe.mitre.org/data/definitions/200.html' },
9
+ ];
10
+ const OWASP_CRYPTO = [
11
+ { id: 'A02:2021', name: 'Cryptographic Failures', url: 'https://owasp.org/Top10/A02_2021-Cryptographic_Failures/' },
12
+ ];
13
+ const CVSS_BY_SEVERITY = {
14
+ critical: { score: 9.1, vector: 'CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:H/I:H/A:N', severity: 'CRITICAL' },
15
+ high: { score: 7.5, vector: 'CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:H/I:N/A:N', severity: 'HIGH' },
16
+ medium: { score: 5.3, vector: 'CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:L/I:N/A:N', severity: 'MEDIUM' },
17
+ low: { score: 3.1, vector: 'CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:L/I:N/A:N', severity: 'LOW' },
18
+ info: { score: 0.0, vector: 'CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:N/I:N/A:N', severity: 'NONE' },
19
+ };
20
+ const LEVEL_BY_SEVERITY = {
21
+ critical: 1,
22
+ high: 2,
23
+ medium: 3,
24
+ low: 4,
25
+ info: 5,
26
+ };
27
+ const REMEDIATION = 'Remove secrets from client-visible responses, rotate any exposed keys, and store secrets in a secure vault. Implement response redaction and ensure sensitive data is never returned to unauthenticated users.';
28
+ const SENSITIVE_DATA_DEFS = [
29
+ { id: 608, code: VulnerabilityCode.SENS_DATA_AWS_ACCESS_KEY_ID, title: 'AWS Access Key ID Exposed', description: 'Exposure of an AWS Access Key ID in response content may allow unauthorized access to AWS resources.', severity: 'critical' },
30
+ { id: 609, code: VulnerabilityCode.SENS_DATA_AWS_SECRET_ACCESS_KEY, title: 'AWS Secret Access Key Exposed', description: 'Exposure of an AWS Secret Access Key in response content may allow unauthorized access to AWS resources.', severity: 'critical' },
31
+ { id: 610, code: VulnerabilityCode.SENS_DATA_AWS_MWS_AUTH_TOKEN, title: 'Amazon MWS Auth Token Exposed', description: 'Exposure of an Amazon MWS auth token in response content may allow unauthorized access to merchant APIs.', severity: 'critical' },
32
+ { id: 611, code: VulnerabilityCode.SENS_DATA_GOOGLE_API_KEY, title: 'Google API Key Exposed', description: 'Exposure of a Google API key in response content may allow unauthorized access to Google APIs.', severity: 'high' },
33
+ { id: 612, code: VulnerabilityCode.SENS_DATA_GOOGLE_OAUTH_TOKEN, title: 'Google OAuth Token Exposed', description: 'Exposure of a Google OAuth token in response content may allow unauthorized access to Google user data.', severity: 'high' },
34
+ { id: 613, code: VulnerabilityCode.SENS_DATA_GOOGLE_CLOUD_PRIVATE_KEY_ID, title: 'Google Cloud Private Key ID Exposed', description: 'Exposure of a Google Cloud private key ID in response content may allow unauthorized access to GCP services.', severity: 'critical' },
35
+ { id: 614, code: VulnerabilityCode.SENS_DATA_GITHUB_PAT, title: 'GitHub Personal Access Token Exposed', description: 'Exposure of a GitHub personal access token in response content may allow unauthorized access to repositories and APIs.', severity: 'critical' },
36
+ { id: 615, code: VulnerabilityCode.SENS_DATA_GITHUB_OAUTH_TOKEN, title: 'GitHub OAuth Token Exposed', description: 'Exposure of a GitHub OAuth token in response content may allow unauthorized access to GitHub APIs.', severity: 'critical' },
37
+ { id: 616, code: VulnerabilityCode.SENS_DATA_GITHUB_APP_TOKEN, title: 'GitHub App Token Exposed', description: 'Exposure of a GitHub App token in response content may allow unauthorized access to GitHub APIs.', severity: 'critical' },
38
+ { id: 617, code: VulnerabilityCode.SENS_DATA_GITHUB_REFRESH_TOKEN, title: 'GitHub Refresh Token Exposed', description: 'Exposure of a GitHub refresh token in response content may allow long-term unauthorized access.', severity: 'critical' },
39
+ { id: 618, code: VulnerabilityCode.SENS_DATA_GITLAB_PAT, title: 'GitLab Personal Access Token Exposed', description: 'Exposure of a GitLab personal access token in response content may allow unauthorized access to GitLab APIs.', severity: 'critical' },
40
+ { id: 619, code: VulnerabilityCode.SENS_DATA_GITLAB_PIPELINE_TOKEN, title: 'GitLab Pipeline Token Exposed', description: 'Exposure of a GitLab pipeline trigger token in response content may allow unauthorized pipeline execution.', severity: 'critical' },
41
+ { id: 620, code: VulnerabilityCode.SENS_DATA_AZURE_STORAGE_ACCOUNT_KEY, title: 'Azure Storage Account Key Exposed', description: 'Exposure of an Azure Storage account key in response content may allow unauthorized access to storage resources.', severity: 'critical' },
42
+ { id: 621, code: VulnerabilityCode.SENS_DATA_STRIPE_SECRET_KEY, title: 'Stripe Secret Key Exposed', description: 'Exposure of a Stripe secret key in response content may allow unauthorized payment operations.', severity: 'critical' },
43
+ { id: 622, code: VulnerabilityCode.SENS_DATA_STRIPE_PUBLISHABLE_KEY, title: 'Stripe Publishable Key Exposed', description: 'Exposure of a Stripe publishable key in response content may allow public API usage and metadata exposure.', severity: 'medium' },
44
+ { id: 623, code: VulnerabilityCode.SENS_DATA_STRIPE_RESTRICTED_KEY, title: 'Stripe Restricted Key Exposed', description: 'Exposure of a Stripe restricted key in response content may allow unauthorized access to restricted Stripe APIs.', severity: 'critical' },
45
+ { id: 624, code: VulnerabilityCode.SENS_DATA_SLACK_TOKEN, title: 'Slack Token Exposed', description: 'Exposure of a Slack token in response content may allow unauthorized access to Slack workspaces.', severity: 'critical' },
46
+ { id: 625, code: VulnerabilityCode.SENS_DATA_SLACK_WEBHOOK, title: 'Slack Webhook Exposed', description: 'Exposure of a Slack webhook URL in response content may allow unauthorized message posting.', severity: 'high' },
47
+ { id: 626, code: VulnerabilityCode.SENS_DATA_DISCORD_BOT_TOKEN, title: 'Discord Bot Token Exposed', description: 'Exposure of a Discord bot token in response content may allow unauthorized bot control.', severity: 'critical' },
48
+ { id: 627, code: VulnerabilityCode.SENS_DATA_DISCORD_WEBHOOK, title: 'Discord Webhook Exposed', description: 'Exposure of a Discord webhook URL in response content may allow unauthorized message posting.', severity: 'high' },
49
+ { id: 628, code: VulnerabilityCode.SENS_DATA_TWILIO_ACCOUNT_SID, title: 'Twilio Account SID Exposed', description: 'Exposure of a Twilio Account SID in response content may allow account enumeration or targeted attacks.', severity: 'high' },
50
+ { id: 629, code: VulnerabilityCode.SENS_DATA_SENDGRID_API_KEY, title: 'SendGrid API Key Exposed', description: 'Exposure of a SendGrid API key in response content may allow unauthorized email sending.', severity: 'critical' },
51
+ { id: 630, code: VulnerabilityCode.SENS_DATA_MAILGUN_API_KEY, title: 'Mailgun API Key Exposed', description: 'Exposure of a Mailgun API key in response content may allow unauthorized email sending.', severity: 'critical' },
52
+ { id: 631, code: VulnerabilityCode.SENS_DATA_MAILCHIMP_API_KEY, title: 'Mailchimp API Key Exposed', description: 'Exposure of a Mailchimp API key in response content may allow unauthorized access to marketing data.', severity: 'critical' },
53
+ { id: 632, code: VulnerabilityCode.SENS_DATA_NPM_TOKEN, title: 'NPM Token Exposed', description: 'Exposure of an NPM access token in response content may allow unauthorized package publication or access.', severity: 'critical' },
54
+ { id: 633, code: VulnerabilityCode.SENS_DATA_PYPI_TOKEN, title: 'PyPI Token Exposed', description: 'Exposure of a PyPI API token in response content may allow unauthorized package publication or access.', severity: 'critical' },
55
+ { id: 634, code: VulnerabilityCode.SENS_DATA_RSA_PRIVATE_KEY, title: 'RSA Private Key Exposed', description: 'Exposure of an RSA private key in response content may allow unauthorized decryption or authentication.', severity: 'critical' },
56
+ { id: 635, code: VulnerabilityCode.SENS_DATA_OPENSSH_PRIVATE_KEY, title: 'OpenSSH Private Key Exposed', description: 'Exposure of an OpenSSH private key in response content may allow unauthorized server access.', severity: 'critical' },
57
+ { id: 636, code: VulnerabilityCode.SENS_DATA_DSA_PRIVATE_KEY, title: 'DSA Private Key Exposed', description: 'Exposure of a DSA private key in response content may allow unauthorized decryption or authentication.', severity: 'critical' },
58
+ { id: 637, code: VulnerabilityCode.SENS_DATA_EC_PRIVATE_KEY, title: 'EC Private Key Exposed', description: 'Exposure of an EC private key in response content may allow unauthorized decryption or authentication.', severity: 'critical' },
59
+ { id: 638, code: VulnerabilityCode.SENS_DATA_PGP_PRIVATE_KEY, title: 'PGP Private Key Exposed', description: 'Exposure of a PGP private key in response content may allow unauthorized decryption or signing.', severity: 'critical' },
60
+ { id: 639, code: VulnerabilityCode.SENS_DATA_ENCRYPTED_PRIVATE_KEY, title: 'Encrypted Private Key Exposed', description: 'Exposure of an encrypted private key in response content may allow offline brute force and key recovery.', severity: 'critical' },
61
+ { id: 640, code: VulnerabilityCode.SENS_DATA_MONGODB_URI, title: 'MongoDB Connection String Exposed', description: 'Exposure of a MongoDB connection string in response content may allow unauthorized database access.', severity: 'critical' },
62
+ { id: 641, code: VulnerabilityCode.SENS_DATA_POSTGRESQL_URI, title: 'PostgreSQL Connection String Exposed', description: 'Exposure of a PostgreSQL connection string in response content may allow unauthorized database access.', severity: 'critical' },
63
+ { id: 642, code: VulnerabilityCode.SENS_DATA_MYSQL_URI, title: 'MySQL Connection String Exposed', description: 'Exposure of a MySQL connection string in response content may allow unauthorized database access.', severity: 'critical' },
64
+ { id: 643, code: VulnerabilityCode.SENS_DATA_REDIS_URI, title: 'Redis Connection String Exposed', description: 'Exposure of a Redis connection string in response content may allow unauthorized database access.', severity: 'critical' },
65
+ { id: 644, code: VulnerabilityCode.SENS_DATA_MSSQL_URI, title: 'MSSQL Connection String Exposed', description: 'Exposure of a Microsoft SQL Server connection string in response content may allow unauthorized database access.', severity: 'critical' },
66
+ { id: 645, code: VulnerabilityCode.SENS_DATA_DIGITALOCEAN_TOKEN, title: 'DigitalOcean Token Exposed', description: 'Exposure of a DigitalOcean token in response content may allow unauthorized access to cloud resources.', severity: 'critical' },
67
+ { id: 646, code: VulnerabilityCode.SENS_DATA_ALIBABA_CLOUD_ACCESS_KEY, title: 'Alibaba Cloud Access Key Exposed', description: 'Exposure of an Alibaba Cloud access key in response content may allow unauthorized access to cloud resources.', severity: 'critical' },
68
+ { id: 647, code: VulnerabilityCode.SENS_DATA_SQUARE_ACCESS_TOKEN, title: 'Square Access Token Exposed', description: 'Exposure of a Square access token in response content may allow unauthorized payment operations.', severity: 'critical' },
69
+ { id: 648, code: VulnerabilityCode.SENS_DATA_SQUARE_OAUTH_SECRET, title: 'Square OAuth Secret Exposed', description: 'Exposure of a Square OAuth secret in response content may allow unauthorized access to Square APIs.', severity: 'critical' },
70
+ { id: 649, code: VulnerabilityCode.SENS_DATA_SHOPIFY_ACCESS_TOKEN, title: 'Shopify Access Token Exposed', description: 'Exposure of a Shopify access token in response content may allow unauthorized access to Shopify APIs.', severity: 'critical' },
71
+ { id: 650, code: VulnerabilityCode.SENS_DATA_SHOPIFY_CUSTOM_APP_TOKEN, title: 'Shopify Custom App Token Exposed', description: 'Exposure of a Shopify custom app token in response content may allow unauthorized access to Shopify APIs.', severity: 'critical' },
72
+ { id: 651, code: VulnerabilityCode.SENS_DATA_SHOPIFY_PRIVATE_APP_TOKEN, title: 'Shopify Private App Token Exposed', description: 'Exposure of a Shopify private app token in response content may allow unauthorized access to Shopify APIs.', severity: 'critical' },
73
+ { id: 652, code: VulnerabilityCode.SENS_DATA_SHOPIFY_SHARED_SECRET, title: 'Shopify Shared Secret Exposed', description: 'Exposure of a Shopify shared secret in response content may allow unauthorized access to Shopify integrations.', severity: 'critical' },
74
+ { id: 653, code: VulnerabilityCode.SENS_DATA_TELEGRAM_BOT_TOKEN, title: 'Telegram Bot Token Exposed', description: 'Exposure of a Telegram bot token in response content may allow unauthorized bot control.', severity: 'critical' },
75
+ { id: 654, code: VulnerabilityCode.SENS_DATA_OPENAI_API_KEY, title: 'OpenAI API Key Exposed', description: 'Exposure of an OpenAI API key in response content may allow unauthorized API usage.', severity: 'critical' },
76
+ { id: 655, code: VulnerabilityCode.SENS_DATA_SENTRY_DSN, title: 'Sentry DSN Exposed', description: 'Exposure of a Sentry DSN in response content may allow unauthorized event submission.', severity: 'high' },
77
+ ];
78
+ export const SENSITIVE_DATA_VULNERABILITIES = Object.fromEntries(SENSITIVE_DATA_DEFS.map((def) => ([
79
+ def.code,
80
+ {
81
+ id: def.id,
82
+ code: def.code,
83
+ title: def.title,
84
+ description: def.description,
85
+ severity: def.severity,
86
+ levelId: LEVEL_BY_SEVERITY[def.severity],
87
+ category: 'information_disclosure',
88
+ scanner: 'sensitive-data',
89
+ groupName: 'Sensitive Data',
90
+ cvss: CVSS_BY_SEVERITY[def.severity],
91
+ cwe: CWE_EXPOSURE,
92
+ owasp: OWASP_CRYPTO,
93
+ remediation: REMEDIATION,
94
+ },
95
+ ])));
96
+ export default SENSITIVE_DATA_VULNERABILITIES;
@@ -337,4 +337,26 @@ export const XSS_VULNERABILITIES = {
337
337
  ],
338
338
  remediation: 'Use v-text instead of v-html for user content. Never compile user input as Vue templates. Use vue-runtime-only build that does not include template compiler. Sanitize mustache syntax.',
339
339
  },
340
+ [VulnerabilityCode.XSS_INSUFFICIENT_OUTPUT_ENCODING]: {
341
+ id: 415,
342
+ code: VulnerabilityCode.XSS_INSUFFICIENT_OUTPUT_ENCODING,
343
+ title: 'Insufficient Output Encoding',
344
+ description: 'Special characters are reflected without proper encoding in the response. While no direct XSS exploitation was confirmed, the incomplete encoding of characters like quotes, ampersands, or parentheses indicates potential encoding gaps that could lead to vulnerabilities in different contexts.',
345
+ severity: 'info',
346
+ levelId: 5,
347
+ category: 'xss',
348
+ scanner: 'xss',
349
+ cvss: {
350
+ score: 2.6,
351
+ vector: 'CVSS:3.1/AV:N/AC:H/PR:N/UI:R/S:U/C:N/I:L/A:N',
352
+ severity: 'LOW',
353
+ },
354
+ cwe: [
355
+ { id: 'CWE-116', name: 'Improper Encoding or Escaping of Output', url: 'https://cwe.mitre.org/data/definitions/116.html' },
356
+ ],
357
+ owasp: [
358
+ { id: 'A03:2021', name: 'Injection', url: 'https://owasp.org/Top10/A03_2021-Injection/' },
359
+ ],
360
+ remediation: 'Implement comprehensive output encoding for all special characters including <, >, ", \', &, (, ), /, and \\. Use context-aware encoding based on the output location (HTML body, attributes, JavaScript, URL, CSS).',
361
+ },
340
362
  };
@@ -1,5 +1,5 @@
1
1
  export declare const COMPLIANCE_BY_VULNERABILITIES: {
2
2
  id: number;
3
3
  title: string;
4
- vulnerabilities: (number | number[])[];
4
+ vulnerabilities: number[];
5
5
  }[];
@@ -4,35 +4,38 @@ import { owaspA1Ids, owaspA2Ids, owaspA3Ids, owaspA5Ids, owaspA7Ids, owaspA8Ids
4
4
  import { allAppSecIds as pciAllAppSecIds, misconfigIds as pciMisconfigIds, accessControlIds as pciAccessControlIds, cryptoIds as pciCryptoIds, injectionAndXssIds as pciInjectionAndXssIds, authAndCookieIds as pciAuthAndCookieIds } from './pci-dss.js';
5
5
  import { authIds as sauthIds, accessControlIds as saccessControlIds, cmdiIds as scmdiIds, deserializationIds as sdeserializationIds, disclosureIds as sdisclosureIds, injectionIds as sinjectionIds, lfiIds as slfiIds, sqliIds, ssrfIds as ssrfids, sstiIds as ssstiIds, xssIds as sxssIds } from './sans-top-25.js';
6
6
  import { isoAccessControlIds, isoCryptoIds, isoOpsSecurityIds, isoCommunicationsSecurityIds, isoSecureDevelopmentIds, isoComplianceIds } from './iso27001.js';
7
+ import { idsByCodes } from './helpers.js';
8
+ const pathInjectionIds = idsByCodes(['PATH_PARAMETER_INJECTION']);
9
+ const uniqueIds = (ids) => Array.from(new Set(ids));
7
10
  export const COMPLIANCE_BY_VULNERABILITIES = [
8
11
  {
9
12
  id: 3,
10
13
  title: 'GDPR',
11
- vulnerabilities: [...accessRestrictionIds, ...allAppSecIds, ...authAndCookieIds, ...cryptoPolicyIds, ...infoLeakageIds, ...inputValidationIds, ...outputValidationIds]
14
+ vulnerabilities: uniqueIds([...accessRestrictionIds, ...allAppSecIds, ...authAndCookieIds, ...cryptoPolicyIds, ...infoLeakageIds, ...inputValidationIds, ...outputValidationIds, ...pathInjectionIds])
12
15
  },
13
16
  {
14
17
  id: 2,
15
18
  title: 'HIPAA',
16
- vulnerabilities: [accessControlIds, ...hallAppSecIds, ...hauthAnCookieIds, ...cryptoIds, ...integrityIds]
19
+ vulnerabilities: uniqueIds([...accessControlIds, ...hallAppSecIds, ...hauthAnCookieIds, ...cryptoIds, ...integrityIds, ...pathInjectionIds])
17
20
  },
18
21
  {
19
22
  id: 1,
20
23
  title: 'OWASP',
21
- vulnerabilities: [...owaspA1Ids, ...owaspA2Ids, ...owaspA3Ids, ...owaspA5Ids, ...owaspA7Ids, ...owaspA8Ids]
24
+ vulnerabilities: uniqueIds([...owaspA1Ids, ...owaspA2Ids, ...owaspA3Ids, ...owaspA5Ids, ...owaspA7Ids, ...owaspA8Ids, ...pathInjectionIds])
22
25
  },
23
26
  {
24
27
  id: 4,
25
28
  title: 'PCI-DSS',
26
- vulnerabilities: [...pciAllAppSecIds, ...pciMisconfigIds, ...pciAccessControlIds, ...pciCryptoIds, ...pciInjectionAndXssIds, ...pciAuthAndCookieIds]
29
+ vulnerabilities: uniqueIds([...pciAllAppSecIds, ...pciMisconfigIds, ...pciAccessControlIds, ...pciCryptoIds, ...pciInjectionAndXssIds, ...pciAuthAndCookieIds, ...pathInjectionIds])
27
30
  },
28
31
  {
29
32
  id: 6,
30
33
  title: 'SANS Top 25',
31
- vulnerabilities: [...sauthIds, ...saccessControlIds, ...scmdiIds, ...sdeserializationIds, ...sdisclosureIds, ...sinjectionIds, ...slfiIds, ...sqliIds, ...ssrfids, ...ssstiIds, ...sxssIds]
34
+ vulnerabilities: uniqueIds([...sauthIds, ...saccessControlIds, ...scmdiIds, ...sdeserializationIds, ...sdisclosureIds, ...sinjectionIds, ...slfiIds, ...sqliIds, ...ssrfids, ...ssstiIds, ...sxssIds, ...pathInjectionIds])
32
35
  },
33
36
  {
34
37
  id: 5,
35
38
  title: 'ISO 27001',
36
- vulnerabilities: [...isoAccessControlIds, ...isoCryptoIds, ...isoOpsSecurityIds, ...isoCommunicationsSecurityIds, ...isoSecureDevelopmentIds, ...isoComplianceIds]
39
+ vulnerabilities: uniqueIds([...isoAccessControlIds, ...isoCryptoIds, ...isoOpsSecurityIds, ...isoCommunicationsSecurityIds, ...isoSecureDevelopmentIds, ...isoComplianceIds, ...pathInjectionIds])
37
40
  }
38
41
  ];
@@ -2,7 +2,8 @@ import { ComplianceCode } from '../compliance-codes.js';
2
2
  import { ComplianceCategory } from '../types.js';
3
3
  import { idsByCategory, idsByCodes, idsByCodePrefix, mergeIds } from './helpers.js';
4
4
  const authIds = idsByCategory('authentication');
5
- const injectionIds = idsByCategory('injection');
5
+ const pathInjectionIds = idsByCodes(['PATH_PARAMETER_INJECTION']);
6
+ const injectionIds = mergeIds(idsByCategory('injection'), pathInjectionIds);
6
7
  const xssIds = idsByCategory('xss');
7
8
  const ssrfIds = idsByCategory('ssrf');
8
9
  const configIds = idsByCategory('configuration');
@@ -2,7 +2,8 @@ import { ComplianceCode } from '../compliance-codes.js';
2
2
  import { ComplianceCategory } from '../types.js';
3
3
  import { idsByCategory, idsByCodes, idsByCodePrefix, mergeIds } from './helpers.js';
4
4
  const authIds = idsByCategory('authentication');
5
- const injectionIds = idsByCategory('injection');
5
+ const pathInjectionIds = idsByCodes(['PATH_PARAMETER_INJECTION']);
6
+ const injectionIds = mergeIds(idsByCategory('injection'), pathInjectionIds);
6
7
  const xssIds = idsByCategory('xss');
7
8
  const ssrfIds = idsByCategory('ssrf');
8
9
  const configIds = idsByCategory('configuration');
@@ -2,7 +2,8 @@ import { ComplianceCode } from '../compliance-codes.js';
2
2
  import { ComplianceCategory } from '../types.js';
3
3
  import { idsByCategory, idsByCodePrefix, idsByCodes, mergeIds } from './helpers.js';
4
4
  const authIds = idsByCategory('authentication');
5
- const injectionIds = idsByCategory('injection');
5
+ const pathInjectionIds = idsByCodes(['PATH_PARAMETER_INJECTION']);
6
+ const injectionIds = mergeIds(idsByCategory('injection'), pathInjectionIds);
6
7
  const xssIds = idsByCategory('xss');
7
8
  const ssrfIds = idsByCategory('ssrf');
8
9
  const configIds = idsByCategory('configuration');
@@ -2,7 +2,8 @@ import { ComplianceCode } from '../compliance-codes.js';
2
2
  import { ComplianceCategory } from '../types.js';
3
3
  import { idsByCategory, idsByCodes, idsByCodePrefix, mergeIds } from './helpers.js';
4
4
  const authIds = idsByCategory('authentication');
5
- const injectionIds = idsByCategory('injection');
5
+ const pathInjectionIds = idsByCodes(['PATH_PARAMETER_INJECTION']);
6
+ const injectionIds = mergeIds(idsByCategory('injection'), pathInjectionIds);
6
7
  const xssIds = idsByCategory('xss');
7
8
  const ssrfIds = idsByCategory('ssrf');
8
9
  const configIds = idsByCategory('configuration');
@@ -2,7 +2,8 @@ import { ComplianceCode } from '../compliance-codes.js';
2
2
  import { ComplianceCategory } from '../types.js';
3
3
  import { idsByCategory, idsByCodes, idsByCodePrefix, mergeIds } from './helpers.js';
4
4
  const authIds = idsByCategory('authentication');
5
- const injectionIds = idsByCategory('injection');
5
+ const pathInjectionIds = idsByCodes(['PATH_PARAMETER_INJECTION']);
6
+ const injectionIds = mergeIds(idsByCategory('injection'), pathInjectionIds);
6
7
  const xssIds = idsByCategory('xss');
7
8
  const ssrfIds = idsByCategory('ssrf');
8
9
  const configIds = idsByCategory('configuration');
@@ -2,7 +2,7 @@ import { ComplianceCode } from '../compliance-codes.js';
2
2
  import { ComplianceCategory } from '../types.js';
3
3
  import { idsByCategory, idsByCodePrefix, mergeIds } from './helpers.js';
4
4
  export const authIds = idsByCategory('authentication');
5
- export const injectionIds = idsByCategory('injection');
5
+ export const injectionIds = mergeIds(idsByCategory('injection'), idsByCodePrefix(['PATH_PARAMETER_INJECTION']));
6
6
  export const xssIds = idsByCategory('xss');
7
7
  export const ssrfIds = idsByCategory('ssrf');
8
8
  export const disclosureIds = idsByCategory('information_disclosure');
@@ -10,6 +10,7 @@ export declare enum VulnerabilityCode {
10
10
  SQLI_TIME_BASED = "SQLI_TIME_BASED",
11
11
  SQLI_STACK_BASED = "SQLI_STACK_BASED",
12
12
  SQLI_UNION_BASED = "SQLI_UNION_BASED",
13
+ PATH_PARAMETER_INJECTION = "PATH_PARAMETER_INJECTION",
13
14
  XSS_REFLECTED = "XSS_REFLECTED",
14
15
  XSS_STORED = "XSS_STORED",
15
16
  XSS_DOM_BASED = "XSS_DOM_BASED",
@@ -25,6 +26,7 @@ export declare enum VulnerabilityCode {
25
26
  XSS_CSP_BYPASS = "XSS_CSP_BYPASS",
26
27
  XSS_TEMPLATE_LITERAL = "XSS_TEMPLATE_LITERAL",
27
28
  XSS_MUTATION_BASED = "XSS_MUTATION_BASED",
29
+ XSS_INSUFFICIENT_OUTPUT_ENCODING = "XSS_INSUFFICIENT_OUTPUT_ENCODING",
28
30
  CMDI_OOB_CONFIRMED = "CMDI_OOB_CONFIRMED",
29
31
  CMDI_REFLECTED = "CMDI_REFLECTED",
30
32
  CMDI_TIME_BASED = "CMDI_TIME_BASED",
@@ -69,6 +71,7 @@ export declare enum VulnerabilityCode {
69
71
  JWT_JKU_INJECTION = "JWT_JKU_INJECTION",
70
72
  JWT_EMBEDDED_JWK = "JWT_EMBEDDED_JWK",
71
73
  JWT_X5C_INJECTION = "JWT_X5C_INJECTION",
74
+ AUTH_SESSION_NOT_INVALIDATED_ON_LOGOUT = "AUTH_SESSION_NOT_INVALIDATED_ON_LOGOUT",
72
75
  REDIRECT_HEADER_INJECTION = "REDIRECT_HEADER_INJECTION",
73
76
  REDIRECT_META_REFRESH = "REDIRECT_META_REFRESH",
74
77
  REDIRECT_JS_NAVIGATION = "REDIRECT_JS_NAVIGATION",
@@ -154,6 +157,7 @@ export declare enum VulnerabilityCode {
154
157
  MASSASSIGN_PROTOTYPE_POLLUTION = "MASSASSIGN_PROTOTYPE_POLLUTION",
155
158
  MASSASSIGN_ROLE_ESCALATION = "MASSASSIGN_ROLE_ESCALATION",
156
159
  MASSASSIGN_HIDDEN_FIELD = "MASSASSIGN_HIDDEN_FIELD",
160
+ HPP_DUPLICATE_PARAMETER = "HPP_DUPLICATE_PARAMETER",
157
161
  DESER_JAVA = "DESER_JAVA",
158
162
  DESER_PHP = "DESER_PHP",
159
163
  DESER_PYTHON = "DESER_PYTHON",
@@ -274,6 +278,54 @@ export declare enum VulnerabilityCode {
274
278
  SENS_LOW_AWSSAM_TEMPLATE_EXPOSED = "SENS_LOW_AWSSAM_TEMPLATE_EXPOSED",
275
279
  SENS_LOW_SERVERLESS_CONFIG_EXPOSED = "SENS_LOW_SERVERLESS_CONFIG_EXPOSED",
276
280
  SENS_LOW_CLOUD_FORMATION_TEMPLATE_EXPOSED = "SENS_LOW_CLOUD_FORMATION_TEMPLATE_EXPOSED",
281
+ SENS_DATA_AWS_ACCESS_KEY_ID = "SENS_DATA_AWS_ACCESS_KEY_ID",
282
+ SENS_DATA_AWS_SECRET_ACCESS_KEY = "SENS_DATA_AWS_SECRET_ACCESS_KEY",
283
+ SENS_DATA_AWS_MWS_AUTH_TOKEN = "SENS_DATA_AWS_MWS_AUTH_TOKEN",
284
+ SENS_DATA_GOOGLE_API_KEY = "SENS_DATA_GOOGLE_API_KEY",
285
+ SENS_DATA_GOOGLE_OAUTH_TOKEN = "SENS_DATA_GOOGLE_OAUTH_TOKEN",
286
+ SENS_DATA_GOOGLE_CLOUD_PRIVATE_KEY_ID = "SENS_DATA_GOOGLE_CLOUD_PRIVATE_KEY_ID",
287
+ SENS_DATA_GITHUB_PAT = "SENS_DATA_GITHUB_PAT",
288
+ SENS_DATA_GITHUB_OAUTH_TOKEN = "SENS_DATA_GITHUB_OAUTH_TOKEN",
289
+ SENS_DATA_GITHUB_APP_TOKEN = "SENS_DATA_GITHUB_APP_TOKEN",
290
+ SENS_DATA_GITHUB_REFRESH_TOKEN = "SENS_DATA_GITHUB_REFRESH_TOKEN",
291
+ SENS_DATA_GITLAB_PAT = "SENS_DATA_GITLAB_PAT",
292
+ SENS_DATA_GITLAB_PIPELINE_TOKEN = "SENS_DATA_GITLAB_PIPELINE_TOKEN",
293
+ SENS_DATA_AZURE_STORAGE_ACCOUNT_KEY = "SENS_DATA_AZURE_STORAGE_ACCOUNT_KEY",
294
+ SENS_DATA_STRIPE_SECRET_KEY = "SENS_DATA_STRIPE_SECRET_KEY",
295
+ SENS_DATA_STRIPE_PUBLISHABLE_KEY = "SENS_DATA_STRIPE_PUBLISHABLE_KEY",
296
+ SENS_DATA_STRIPE_RESTRICTED_KEY = "SENS_DATA_STRIPE_RESTRICTED_KEY",
297
+ SENS_DATA_SLACK_TOKEN = "SENS_DATA_SLACK_TOKEN",
298
+ SENS_DATA_SLACK_WEBHOOK = "SENS_DATA_SLACK_WEBHOOK",
299
+ SENS_DATA_DISCORD_BOT_TOKEN = "SENS_DATA_DISCORD_BOT_TOKEN",
300
+ SENS_DATA_DISCORD_WEBHOOK = "SENS_DATA_DISCORD_WEBHOOK",
301
+ SENS_DATA_TWILIO_ACCOUNT_SID = "SENS_DATA_TWILIO_ACCOUNT_SID",
302
+ SENS_DATA_SENDGRID_API_KEY = "SENS_DATA_SENDGRID_API_KEY",
303
+ SENS_DATA_MAILGUN_API_KEY = "SENS_DATA_MAILGUN_API_KEY",
304
+ SENS_DATA_MAILCHIMP_API_KEY = "SENS_DATA_MAILCHIMP_API_KEY",
305
+ SENS_DATA_NPM_TOKEN = "SENS_DATA_NPM_TOKEN",
306
+ SENS_DATA_PYPI_TOKEN = "SENS_DATA_PYPI_TOKEN",
307
+ SENS_DATA_RSA_PRIVATE_KEY = "SENS_DATA_RSA_PRIVATE_KEY",
308
+ SENS_DATA_OPENSSH_PRIVATE_KEY = "SENS_DATA_OPENSSH_PRIVATE_KEY",
309
+ SENS_DATA_DSA_PRIVATE_KEY = "SENS_DATA_DSA_PRIVATE_KEY",
310
+ SENS_DATA_EC_PRIVATE_KEY = "SENS_DATA_EC_PRIVATE_KEY",
311
+ SENS_DATA_PGP_PRIVATE_KEY = "SENS_DATA_PGP_PRIVATE_KEY",
312
+ SENS_DATA_ENCRYPTED_PRIVATE_KEY = "SENS_DATA_ENCRYPTED_PRIVATE_KEY",
313
+ SENS_DATA_MONGODB_URI = "SENS_DATA_MONGODB_URI",
314
+ SENS_DATA_POSTGRESQL_URI = "SENS_DATA_POSTGRESQL_URI",
315
+ SENS_DATA_MYSQL_URI = "SENS_DATA_MYSQL_URI",
316
+ SENS_DATA_REDIS_URI = "SENS_DATA_REDIS_URI",
317
+ SENS_DATA_MSSQL_URI = "SENS_DATA_MSSQL_URI",
318
+ SENS_DATA_DIGITALOCEAN_TOKEN = "SENS_DATA_DIGITALOCEAN_TOKEN",
319
+ SENS_DATA_ALIBABA_CLOUD_ACCESS_KEY = "SENS_DATA_ALIBABA_CLOUD_ACCESS_KEY",
320
+ SENS_DATA_SQUARE_ACCESS_TOKEN = "SENS_DATA_SQUARE_ACCESS_TOKEN",
321
+ SENS_DATA_SQUARE_OAUTH_SECRET = "SENS_DATA_SQUARE_OAUTH_SECRET",
322
+ SENS_DATA_SHOPIFY_ACCESS_TOKEN = "SENS_DATA_SHOPIFY_ACCESS_TOKEN",
323
+ SENS_DATA_SHOPIFY_CUSTOM_APP_TOKEN = "SENS_DATA_SHOPIFY_CUSTOM_APP_TOKEN",
324
+ SENS_DATA_SHOPIFY_PRIVATE_APP_TOKEN = "SENS_DATA_SHOPIFY_PRIVATE_APP_TOKEN",
325
+ SENS_DATA_SHOPIFY_SHARED_SECRET = "SENS_DATA_SHOPIFY_SHARED_SECRET",
326
+ SENS_DATA_TELEGRAM_BOT_TOKEN = "SENS_DATA_TELEGRAM_BOT_TOKEN",
327
+ SENS_DATA_OPENAI_API_KEY = "SENS_DATA_OPENAI_API_KEY",
328
+ SENS_DATA_SENTRY_DSN = "SENS_DATA_SENTRY_DSN",
277
329
  CLICK_FRAMEABLE = "CLICK_FRAMEABLE",
278
330
  CLICK_PARTIAL_PROTECTION = "CLICK_PARTIAL_PROTECTION"
279
331
  }
@@ -15,6 +15,10 @@ export var VulnerabilityCode;
15
15
  VulnerabilityCode["SQLI_STACK_BASED"] = "SQLI_STACK_BASED";
16
16
  VulnerabilityCode["SQLI_UNION_BASED"] = "SQLI_UNION_BASED";
17
17
  // ========================================
18
+ // PATH INJECTION (PATH_*)
19
+ // ========================================
20
+ VulnerabilityCode["PATH_PARAMETER_INJECTION"] = "PATH_PARAMETER_INJECTION";
21
+ // ========================================
18
22
  // CROSS-SITE SCRIPTING (XSS_*)
19
23
  // ========================================
20
24
  VulnerabilityCode["XSS_REFLECTED"] = "XSS_REFLECTED";
@@ -32,6 +36,7 @@ export var VulnerabilityCode;
32
36
  VulnerabilityCode["XSS_CSP_BYPASS"] = "XSS_CSP_BYPASS";
33
37
  VulnerabilityCode["XSS_TEMPLATE_LITERAL"] = "XSS_TEMPLATE_LITERAL";
34
38
  VulnerabilityCode["XSS_MUTATION_BASED"] = "XSS_MUTATION_BASED";
39
+ VulnerabilityCode["XSS_INSUFFICIENT_OUTPUT_ENCODING"] = "XSS_INSUFFICIENT_OUTPUT_ENCODING";
35
40
  // ========================================
36
41
  // COMMAND INJECTION (CMDI_*)
37
42
  // ========================================
@@ -97,6 +102,7 @@ export var VulnerabilityCode;
97
102
  VulnerabilityCode["JWT_JKU_INJECTION"] = "JWT_JKU_INJECTION";
98
103
  VulnerabilityCode["JWT_EMBEDDED_JWK"] = "JWT_EMBEDDED_JWK";
99
104
  VulnerabilityCode["JWT_X5C_INJECTION"] = "JWT_X5C_INJECTION";
105
+ VulnerabilityCode["AUTH_SESSION_NOT_INVALIDATED_ON_LOGOUT"] = "AUTH_SESSION_NOT_INVALIDATED_ON_LOGOUT";
100
106
  // ========================================
101
107
  // OPEN REDIRECT (REDIRECT_*)
102
108
  // ========================================
@@ -200,6 +206,7 @@ export var VulnerabilityCode;
200
206
  VulnerabilityCode["MASSASSIGN_PROTOTYPE_POLLUTION"] = "MASSASSIGN_PROTOTYPE_POLLUTION";
201
207
  VulnerabilityCode["MASSASSIGN_ROLE_ESCALATION"] = "MASSASSIGN_ROLE_ESCALATION";
202
208
  VulnerabilityCode["MASSASSIGN_HIDDEN_FIELD"] = "MASSASSIGN_HIDDEN_FIELD";
209
+ VulnerabilityCode["HPP_DUPLICATE_PARAMETER"] = "HPP_DUPLICATE_PARAMETER";
203
210
  // ========================================
204
211
  // DESERIALIZATION (DESER_*)
205
212
  // ========================================
@@ -342,6 +349,57 @@ export var VulnerabilityCode;
342
349
  VulnerabilityCode["SENS_LOW_SERVERLESS_CONFIG_EXPOSED"] = "SENS_LOW_SERVERLESS_CONFIG_EXPOSED";
343
350
  VulnerabilityCode["SENS_LOW_CLOUD_FORMATION_TEMPLATE_EXPOSED"] = "SENS_LOW_CLOUD_FORMATION_TEMPLATE_EXPOSED";
344
351
  // ========================================
352
+ // SENSITIVE DATA EXPOSURE (SENS_DATA_*)
353
+ // ========================================
354
+ VulnerabilityCode["SENS_DATA_AWS_ACCESS_KEY_ID"] = "SENS_DATA_AWS_ACCESS_KEY_ID";
355
+ VulnerabilityCode["SENS_DATA_AWS_SECRET_ACCESS_KEY"] = "SENS_DATA_AWS_SECRET_ACCESS_KEY";
356
+ VulnerabilityCode["SENS_DATA_AWS_MWS_AUTH_TOKEN"] = "SENS_DATA_AWS_MWS_AUTH_TOKEN";
357
+ VulnerabilityCode["SENS_DATA_GOOGLE_API_KEY"] = "SENS_DATA_GOOGLE_API_KEY";
358
+ VulnerabilityCode["SENS_DATA_GOOGLE_OAUTH_TOKEN"] = "SENS_DATA_GOOGLE_OAUTH_TOKEN";
359
+ VulnerabilityCode["SENS_DATA_GOOGLE_CLOUD_PRIVATE_KEY_ID"] = "SENS_DATA_GOOGLE_CLOUD_PRIVATE_KEY_ID";
360
+ VulnerabilityCode["SENS_DATA_GITHUB_PAT"] = "SENS_DATA_GITHUB_PAT";
361
+ VulnerabilityCode["SENS_DATA_GITHUB_OAUTH_TOKEN"] = "SENS_DATA_GITHUB_OAUTH_TOKEN";
362
+ VulnerabilityCode["SENS_DATA_GITHUB_APP_TOKEN"] = "SENS_DATA_GITHUB_APP_TOKEN";
363
+ VulnerabilityCode["SENS_DATA_GITHUB_REFRESH_TOKEN"] = "SENS_DATA_GITHUB_REFRESH_TOKEN";
364
+ VulnerabilityCode["SENS_DATA_GITLAB_PAT"] = "SENS_DATA_GITLAB_PAT";
365
+ VulnerabilityCode["SENS_DATA_GITLAB_PIPELINE_TOKEN"] = "SENS_DATA_GITLAB_PIPELINE_TOKEN";
366
+ VulnerabilityCode["SENS_DATA_AZURE_STORAGE_ACCOUNT_KEY"] = "SENS_DATA_AZURE_STORAGE_ACCOUNT_KEY";
367
+ VulnerabilityCode["SENS_DATA_STRIPE_SECRET_KEY"] = "SENS_DATA_STRIPE_SECRET_KEY";
368
+ VulnerabilityCode["SENS_DATA_STRIPE_PUBLISHABLE_KEY"] = "SENS_DATA_STRIPE_PUBLISHABLE_KEY";
369
+ VulnerabilityCode["SENS_DATA_STRIPE_RESTRICTED_KEY"] = "SENS_DATA_STRIPE_RESTRICTED_KEY";
370
+ VulnerabilityCode["SENS_DATA_SLACK_TOKEN"] = "SENS_DATA_SLACK_TOKEN";
371
+ VulnerabilityCode["SENS_DATA_SLACK_WEBHOOK"] = "SENS_DATA_SLACK_WEBHOOK";
372
+ VulnerabilityCode["SENS_DATA_DISCORD_BOT_TOKEN"] = "SENS_DATA_DISCORD_BOT_TOKEN";
373
+ VulnerabilityCode["SENS_DATA_DISCORD_WEBHOOK"] = "SENS_DATA_DISCORD_WEBHOOK";
374
+ VulnerabilityCode["SENS_DATA_TWILIO_ACCOUNT_SID"] = "SENS_DATA_TWILIO_ACCOUNT_SID";
375
+ VulnerabilityCode["SENS_DATA_SENDGRID_API_KEY"] = "SENS_DATA_SENDGRID_API_KEY";
376
+ VulnerabilityCode["SENS_DATA_MAILGUN_API_KEY"] = "SENS_DATA_MAILGUN_API_KEY";
377
+ VulnerabilityCode["SENS_DATA_MAILCHIMP_API_KEY"] = "SENS_DATA_MAILCHIMP_API_KEY";
378
+ VulnerabilityCode["SENS_DATA_NPM_TOKEN"] = "SENS_DATA_NPM_TOKEN";
379
+ VulnerabilityCode["SENS_DATA_PYPI_TOKEN"] = "SENS_DATA_PYPI_TOKEN";
380
+ VulnerabilityCode["SENS_DATA_RSA_PRIVATE_KEY"] = "SENS_DATA_RSA_PRIVATE_KEY";
381
+ VulnerabilityCode["SENS_DATA_OPENSSH_PRIVATE_KEY"] = "SENS_DATA_OPENSSH_PRIVATE_KEY";
382
+ VulnerabilityCode["SENS_DATA_DSA_PRIVATE_KEY"] = "SENS_DATA_DSA_PRIVATE_KEY";
383
+ VulnerabilityCode["SENS_DATA_EC_PRIVATE_KEY"] = "SENS_DATA_EC_PRIVATE_KEY";
384
+ VulnerabilityCode["SENS_DATA_PGP_PRIVATE_KEY"] = "SENS_DATA_PGP_PRIVATE_KEY";
385
+ VulnerabilityCode["SENS_DATA_ENCRYPTED_PRIVATE_KEY"] = "SENS_DATA_ENCRYPTED_PRIVATE_KEY";
386
+ VulnerabilityCode["SENS_DATA_MONGODB_URI"] = "SENS_DATA_MONGODB_URI";
387
+ VulnerabilityCode["SENS_DATA_POSTGRESQL_URI"] = "SENS_DATA_POSTGRESQL_URI";
388
+ VulnerabilityCode["SENS_DATA_MYSQL_URI"] = "SENS_DATA_MYSQL_URI";
389
+ VulnerabilityCode["SENS_DATA_REDIS_URI"] = "SENS_DATA_REDIS_URI";
390
+ VulnerabilityCode["SENS_DATA_MSSQL_URI"] = "SENS_DATA_MSSQL_URI";
391
+ VulnerabilityCode["SENS_DATA_DIGITALOCEAN_TOKEN"] = "SENS_DATA_DIGITALOCEAN_TOKEN";
392
+ VulnerabilityCode["SENS_DATA_ALIBABA_CLOUD_ACCESS_KEY"] = "SENS_DATA_ALIBABA_CLOUD_ACCESS_KEY";
393
+ VulnerabilityCode["SENS_DATA_SQUARE_ACCESS_TOKEN"] = "SENS_DATA_SQUARE_ACCESS_TOKEN";
394
+ VulnerabilityCode["SENS_DATA_SQUARE_OAUTH_SECRET"] = "SENS_DATA_SQUARE_OAUTH_SECRET";
395
+ VulnerabilityCode["SENS_DATA_SHOPIFY_ACCESS_TOKEN"] = "SENS_DATA_SHOPIFY_ACCESS_TOKEN";
396
+ VulnerabilityCode["SENS_DATA_SHOPIFY_CUSTOM_APP_TOKEN"] = "SENS_DATA_SHOPIFY_CUSTOM_APP_TOKEN";
397
+ VulnerabilityCode["SENS_DATA_SHOPIFY_PRIVATE_APP_TOKEN"] = "SENS_DATA_SHOPIFY_PRIVATE_APP_TOKEN";
398
+ VulnerabilityCode["SENS_DATA_SHOPIFY_SHARED_SECRET"] = "SENS_DATA_SHOPIFY_SHARED_SECRET";
399
+ VulnerabilityCode["SENS_DATA_TELEGRAM_BOT_TOKEN"] = "SENS_DATA_TELEGRAM_BOT_TOKEN";
400
+ VulnerabilityCode["SENS_DATA_OPENAI_API_KEY"] = "SENS_DATA_OPENAI_API_KEY";
401
+ VulnerabilityCode["SENS_DATA_SENTRY_DSN"] = "SENS_DATA_SENTRY_DSN";
402
+ // ========================================
345
403
  // CLICKJACKING (CLICK_*)
346
404
  // ========================================
347
405
  VulnerabilityCode["CLICK_FRAMEABLE"] = "CLICK_FRAMEABLE";
package/dist/index.d.ts CHANGED
@@ -12,6 +12,7 @@ import { SSRF_VULNERABILITIES } from './categories/ssrf.js';
12
12
  import { AUTH_VULNERABILITIES } from './categories/authentication.js';
13
13
  import { CONFIG_VULNERABILITIES } from './categories/configuration.js';
14
14
  import { SENSITIVE_PATH_VULNERABILITIES } from './categories/sensitive-paths.js';
15
+ import { SENSITIVE_DATA_VULNERABILITIES } from './categories/sensitive-data.js';
15
16
  import { CATEGORY_REGISTRY } from './category.js';
16
17
  import { SCANNER_REGISTRY } from './scanner.js';
17
18
  import { OWASP_COMPLIANCE, HIPAA_COMPLIANCE, GDPR_COMPLIANCE, PCI_DSS_COMPLIANCE, SANS_TOP_25_COMPLIANCE, ISO27001_COMPLIANCE, COMPLIANCE_BY_VULNERABILITIES } from './compliances/index.js';
@@ -45,7 +46,7 @@ export declare function getVulnerabilityCount(): number;
45
46
  export declare function createFinding(code: VulnerabilityCode | string, overrides?: Partial<VulnerabilityDefinition>): VulnerabilityDefinition | null;
46
47
  export { VulnerabilityCode } from './error-codes.js';
47
48
  export type { VulnerabilityDefinition, VulnerabilityLookup, CVSSProfile, CWEReference, OWASPReference, Severity, VulnerabilityCategory, } from './types.js';
48
- export { INJECTION_VULNERABILITIES, XSS_VULNERABILITIES, SSRF_VULNERABILITIES, AUTH_VULNERABILITIES, CONFIG_VULNERABILITIES, SENSITIVE_PATH_VULNERABILITIES, VULNERABILITY_REGISTRY, OWASP_COMPLIANCE, HIPAA_COMPLIANCE, GDPR_COMPLIANCE, PCI_DSS_COMPLIANCE, SANS_TOP_25_COMPLIANCE, ISO27001_COMPLIANCE, CATEGORY_REGISTRY, SCANNER_REGISTRY, COMPLIANCE_BY_VULNERABILITIES };
49
+ export { INJECTION_VULNERABILITIES, XSS_VULNERABILITIES, SSRF_VULNERABILITIES, AUTH_VULNERABILITIES, CONFIG_VULNERABILITIES, SENSITIVE_PATH_VULNERABILITIES, SENSITIVE_DATA_VULNERABILITIES, VULNERABILITY_REGISTRY, OWASP_COMPLIANCE, HIPAA_COMPLIANCE, GDPR_COMPLIANCE, PCI_DSS_COMPLIANCE, SANS_TOP_25_COMPLIANCE, ISO27001_COMPLIANCE, CATEGORY_REGISTRY, SCANNER_REGISTRY, COMPLIANCE_BY_VULNERABILITIES };
49
50
  declare const _default: {
50
51
  VulnerabilityCode: typeof VulnerabilityCode;
51
52
  VULNERABILITY_REGISTRY: Record<string, VulnerabilityDefinition>;
package/dist/index.js CHANGED
@@ -11,6 +11,7 @@ import { SSRF_VULNERABILITIES } from './categories/ssrf.js';
11
11
  import { AUTH_VULNERABILITIES } from './categories/authentication.js';
12
12
  import { CONFIG_VULNERABILITIES } from './categories/configuration.js';
13
13
  import { SENSITIVE_PATH_VULNERABILITIES } from './categories/sensitive-paths.js';
14
+ import { SENSITIVE_DATA_VULNERABILITIES } from './categories/sensitive-data.js';
14
15
  import { CATEGORY_REGISTRY } from './category.js';
15
16
  import { SCANNER_REGISTRY } from './scanner.js';
16
17
  import { OWASP_COMPLIANCE, HIPAA_COMPLIANCE, GDPR_COMPLIANCE, PCI_DSS_COMPLIANCE, SANS_TOP_25_COMPLIANCE, ISO27001_COMPLIANCE, COMPLIANCE_BY_VULNERABILITIES } from './compliances/index.js';
@@ -70,7 +71,7 @@ export function createFinding(code, overrides) {
70
71
  // Re-export all types and enums
71
72
  export { VulnerabilityCode } from './error-codes.js';
72
73
  // Export category definitions for direct access
73
- export { INJECTION_VULNERABILITIES, XSS_VULNERABILITIES, SSRF_VULNERABILITIES, AUTH_VULNERABILITIES, CONFIG_VULNERABILITIES, SENSITIVE_PATH_VULNERABILITIES, VULNERABILITY_REGISTRY, OWASP_COMPLIANCE, HIPAA_COMPLIANCE, GDPR_COMPLIANCE, PCI_DSS_COMPLIANCE, SANS_TOP_25_COMPLIANCE, ISO27001_COMPLIANCE, CATEGORY_REGISTRY, SCANNER_REGISTRY, COMPLIANCE_BY_VULNERABILITIES };
74
+ export { INJECTION_VULNERABILITIES, XSS_VULNERABILITIES, SSRF_VULNERABILITIES, AUTH_VULNERABILITIES, CONFIG_VULNERABILITIES, SENSITIVE_PATH_VULNERABILITIES, SENSITIVE_DATA_VULNERABILITIES, VULNERABILITY_REGISTRY, OWASP_COMPLIANCE, HIPAA_COMPLIANCE, GDPR_COMPLIANCE, PCI_DSS_COMPLIANCE, SANS_TOP_25_COMPLIANCE, ISO27001_COMPLIANCE, CATEGORY_REGISTRY, SCANNER_REGISTRY, COMPLIANCE_BY_VULNERABILITIES };
74
75
  export default {
75
76
  VulnerabilityCode,
76
77
  VULNERABILITY_REGISTRY,
package/dist/registry.js CHANGED
@@ -4,6 +4,7 @@ import { SSRF_VULNERABILITIES } from './categories/ssrf.js';
4
4
  import { AUTH_VULNERABILITIES } from './categories/authentication.js';
5
5
  import { CONFIG_VULNERABILITIES } from './categories/configuration.js';
6
6
  import { SENSITIVE_PATH_VULNERABILITIES } from './categories/sensitive-paths.js';
7
+ import { SENSITIVE_DATA_VULNERABILITIES } from './categories/sensitive-data.js';
7
8
  /**
8
9
  * Complete vulnerability registry combining all categories.
9
10
  * Kept in a standalone module to avoid circular imports with compliances.
@@ -65,6 +66,7 @@ export const VULNERABILITY_REGISTRY = Object.fromEntries(Object.entries({
65
66
  ...AUTH_VULNERABILITIES,
66
67
  ...CONFIG_VULNERABILITIES,
67
68
  ...SENSITIVE_PATH_VULNERABILITIES,
69
+ ...SENSITIVE_DATA_VULNERABILITIES,
68
70
  }).map(([code, definition]) => ([
69
71
  code,
70
72
  {
package/dist/scanner.js CHANGED
@@ -13,6 +13,7 @@ export const SCANNER_REGISTRY = {
13
13
  "redirect-route": { title: "Redirect Route" },
14
14
  "security-headers": { title: "Security Headers" },
15
15
  "sensitive-path-scout": { title: "Sensitive Path Scout" },
16
+ "sensitive-data": { title: "Sensitive Data Detection" },
16
17
  "sql-injection": { title: "SQL Injection" },
17
18
  "ssrf": { title: "SSRF" },
18
19
  "ssti": { title: "SSTI" },