eslint-plugin-secure-coding 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/AGENTS.md +196 -0
- package/CHANGELOG.md +105 -0
- package/LICENSE +23 -0
- package/README.md +377 -0
- package/package.json +80 -0
- package/src/index.d.ts +32 -0
- package/src/index.js +345 -0
- package/src/index.js.map +1 -0
- package/src/rules/security/database-injection.d.ts +13 -0
- package/src/rules/security/database-injection.js +407 -0
- package/src/rules/security/database-injection.js.map +1 -0
- package/src/rules/security/detect-child-process.d.ts +11 -0
- package/src/rules/security/detect-child-process.js +460 -0
- package/src/rules/security/detect-child-process.js.map +1 -0
- package/src/rules/security/detect-eval-with-expression.d.ts +9 -0
- package/src/rules/security/detect-eval-with-expression.js +393 -0
- package/src/rules/security/detect-eval-with-expression.js.map +1 -0
- package/src/rules/security/detect-non-literal-fs-filename.d.ts +7 -0
- package/src/rules/security/detect-non-literal-fs-filename.js +322 -0
- package/src/rules/security/detect-non-literal-fs-filename.js.map +1 -0
- package/src/rules/security/detect-non-literal-regexp.d.ts +9 -0
- package/src/rules/security/detect-non-literal-regexp.js +387 -0
- package/src/rules/security/detect-non-literal-regexp.js.map +1 -0
- package/src/rules/security/detect-object-injection.d.ts +11 -0
- package/src/rules/security/detect-object-injection.js +411 -0
- package/src/rules/security/detect-object-injection.js.map +1 -0
- package/src/rules/security/no-buffer-overread.d.ts +14 -0
- package/src/rules/security/no-buffer-overread.js +519 -0
- package/src/rules/security/no-buffer-overread.js.map +1 -0
- package/src/rules/security/no-clickjacking.d.ts +10 -0
- package/src/rules/security/no-clickjacking.js +381 -0
- package/src/rules/security/no-clickjacking.js.map +1 -0
- package/src/rules/security/no-directive-injection.d.ts +12 -0
- package/src/rules/security/no-directive-injection.js +446 -0
- package/src/rules/security/no-directive-injection.js.map +1 -0
- package/src/rules/security/no-document-cookie.d.ts +5 -0
- package/src/rules/security/no-document-cookie.js +90 -0
- package/src/rules/security/no-document-cookie.js.map +1 -0
- package/src/rules/security/no-electron-security-issues.d.ts +10 -0
- package/src/rules/security/no-electron-security-issues.js +421 -0
- package/src/rules/security/no-electron-security-issues.js.map +1 -0
- package/src/rules/security/no-exposed-sensitive-data.d.ts +11 -0
- package/src/rules/security/no-exposed-sensitive-data.js +341 -0
- package/src/rules/security/no-exposed-sensitive-data.js.map +1 -0
- package/src/rules/security/no-format-string-injection.d.ts +17 -0
- package/src/rules/security/no-format-string-injection.js +653 -0
- package/src/rules/security/no-format-string-injection.js.map +1 -0
- package/src/rules/security/no-graphql-injection.d.ts +12 -0
- package/src/rules/security/no-graphql-injection.js +410 -0
- package/src/rules/security/no-graphql-injection.js.map +1 -0
- package/src/rules/security/no-hardcoded-credentials.d.ts +26 -0
- package/src/rules/security/no-hardcoded-credentials.js +377 -0
- package/src/rules/security/no-hardcoded-credentials.js.map +1 -0
- package/src/rules/security/no-improper-sanitization.d.ts +12 -0
- package/src/rules/security/no-improper-sanitization.js +408 -0
- package/src/rules/security/no-improper-sanitization.js.map +1 -0
- package/src/rules/security/no-improper-type-validation.d.ts +10 -0
- package/src/rules/security/no-improper-type-validation.js +420 -0
- package/src/rules/security/no-improper-type-validation.js.map +1 -0
- package/src/rules/security/no-insecure-comparison.d.ts +7 -0
- package/src/rules/security/no-insecure-comparison.js +125 -0
- package/src/rules/security/no-insecure-comparison.js.map +1 -0
- package/src/rules/security/no-insecure-cookie-settings.d.ts +9 -0
- package/src/rules/security/no-insecure-cookie-settings.js +305 -0
- package/src/rules/security/no-insecure-cookie-settings.js.map +1 -0
- package/src/rules/security/no-insecure-jwt.d.ts +10 -0
- package/src/rules/security/no-insecure-jwt.js +338 -0
- package/src/rules/security/no-insecure-jwt.js.map +1 -0
- package/src/rules/security/no-insecure-redirects.d.ts +7 -0
- package/src/rules/security/no-insecure-redirects.js +215 -0
- package/src/rules/security/no-insecure-redirects.js.map +1 -0
- package/src/rules/security/no-insufficient-postmessage-validation.d.ts +14 -0
- package/src/rules/security/no-insufficient-postmessage-validation.js +390 -0
- package/src/rules/security/no-insufficient-postmessage-validation.js.map +1 -0
- package/src/rules/security/no-insufficient-random.d.ts +9 -0
- package/src/rules/security/no-insufficient-random.js +207 -0
- package/src/rules/security/no-insufficient-random.js.map +1 -0
- package/src/rules/security/no-ldap-injection.d.ts +10 -0
- package/src/rules/security/no-ldap-injection.js +449 -0
- package/src/rules/security/no-ldap-injection.js.map +1 -0
- package/src/rules/security/no-missing-authentication.d.ts +13 -0
- package/src/rules/security/no-missing-authentication.js +322 -0
- package/src/rules/security/no-missing-authentication.js.map +1 -0
- package/src/rules/security/no-missing-cors-check.d.ts +9 -0
- package/src/rules/security/no-missing-cors-check.js +449 -0
- package/src/rules/security/no-missing-cors-check.js.map +1 -0
- package/src/rules/security/no-missing-csrf-protection.d.ts +11 -0
- package/src/rules/security/no-missing-csrf-protection.js +183 -0
- package/src/rules/security/no-missing-csrf-protection.js.map +1 -0
- package/src/rules/security/no-missing-security-headers.d.ts +7 -0
- package/src/rules/security/no-missing-security-headers.js +217 -0
- package/src/rules/security/no-missing-security-headers.js.map +1 -0
- package/src/rules/security/no-privilege-escalation.d.ts +13 -0
- package/src/rules/security/no-privilege-escalation.js +321 -0
- package/src/rules/security/no-privilege-escalation.js.map +1 -0
- package/src/rules/security/no-redos-vulnerable-regex.d.ts +7 -0
- package/src/rules/security/no-redos-vulnerable-regex.js +307 -0
- package/src/rules/security/no-redos-vulnerable-regex.js.map +1 -0
- package/src/rules/security/no-sensitive-data-exposure.d.ts +11 -0
- package/src/rules/security/no-sensitive-data-exposure.js +251 -0
- package/src/rules/security/no-sensitive-data-exposure.js.map +1 -0
- package/src/rules/security/no-sql-injection.d.ts +10 -0
- package/src/rules/security/no-sql-injection.js +332 -0
- package/src/rules/security/no-sql-injection.js.map +1 -0
- package/src/rules/security/no-timing-attack.d.ts +10 -0
- package/src/rules/security/no-timing-attack.js +358 -0
- package/src/rules/security/no-timing-attack.js.map +1 -0
- package/src/rules/security/no-toctou-vulnerability.d.ts +7 -0
- package/src/rules/security/no-toctou-vulnerability.js +165 -0
- package/src/rules/security/no-toctou-vulnerability.js.map +1 -0
- package/src/rules/security/no-unchecked-loop-condition.d.ts +12 -0
- package/src/rules/security/no-unchecked-loop-condition.js +635 -0
- package/src/rules/security/no-unchecked-loop-condition.js.map +1 -0
- package/src/rules/security/no-unencrypted-transmission.d.ts +11 -0
- package/src/rules/security/no-unencrypted-transmission.js +237 -0
- package/src/rules/security/no-unencrypted-transmission.js.map +1 -0
- package/src/rules/security/no-unescaped-url-parameter.d.ts +9 -0
- package/src/rules/security/no-unescaped-url-parameter.js +266 -0
- package/src/rules/security/no-unescaped-url-parameter.js.map +1 -0
- package/src/rules/security/no-unlimited-resource-allocation.d.ts +12 -0
- package/src/rules/security/no-unlimited-resource-allocation.js +659 -0
- package/src/rules/security/no-unlimited-resource-allocation.js.map +1 -0
- package/src/rules/security/no-unsafe-deserialization.d.ts +10 -0
- package/src/rules/security/no-unsafe-deserialization.js +501 -0
- package/src/rules/security/no-unsafe-deserialization.js.map +1 -0
- package/src/rules/security/no-unsafe-dynamic-require.d.ts +5 -0
- package/src/rules/security/no-unsafe-dynamic-require.js +107 -0
- package/src/rules/security/no-unsafe-dynamic-require.js.map +1 -0
- package/src/rules/security/no-unsafe-regex-construction.d.ts +9 -0
- package/src/rules/security/no-unsafe-regex-construction.js +292 -0
- package/src/rules/security/no-unsafe-regex-construction.js.map +1 -0
- package/src/rules/security/no-unsanitized-html.d.ts +9 -0
- package/src/rules/security/no-unsanitized-html.js +347 -0
- package/src/rules/security/no-unsanitized-html.js.map +1 -0
- package/src/rules/security/no-unvalidated-user-input.d.ts +9 -0
- package/src/rules/security/no-unvalidated-user-input.js +418 -0
- package/src/rules/security/no-unvalidated-user-input.js.map +1 -0
- package/src/rules/security/no-weak-crypto.d.ts +11 -0
- package/src/rules/security/no-weak-crypto.js +350 -0
- package/src/rules/security/no-weak-crypto.js.map +1 -0
- package/src/rules/security/no-weak-password-recovery.d.ts +12 -0
- package/src/rules/security/no-weak-password-recovery.js +401 -0
- package/src/rules/security/no-weak-password-recovery.js.map +1 -0
- package/src/rules/security/no-xpath-injection.d.ts +10 -0
- package/src/rules/security/no-xpath-injection.js +487 -0
- package/src/rules/security/no-xpath-injection.js.map +1 -0
- package/src/rules/security/no-xxe-injection.d.ts +7 -0
- package/src/rules/security/no-xxe-injection.js +270 -0
- package/src/rules/security/no-xxe-injection.js.map +1 -0
- package/src/rules/security/no-zip-slip.d.ts +9 -0
- package/src/rules/security/no-zip-slip.js +446 -0
- package/src/rules/security/no-zip-slip.js.map +1 -0
- package/src/types/index.d.ts +131 -0
- package/src/types/index.js +18 -0
- package/src/types/index.js.map +1 -0
package/src/index.js
ADDED
|
@@ -0,0 +1,345 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
/**
|
|
3
|
+
* eslint-plugin-secure-coding
|
|
4
|
+
*
|
|
5
|
+
* A comprehensive security-focused ESLint plugin with 48+ rules
|
|
6
|
+
* for detecting and preventing security vulnerabilities in JavaScript/TypeScript code.
|
|
7
|
+
*
|
|
8
|
+
* Features:
|
|
9
|
+
* - LLM-optimized error messages with CWE references
|
|
10
|
+
* - OWASP Top 10 coverage
|
|
11
|
+
* - Auto-fix capabilities where safe
|
|
12
|
+
* - Structured context for AI assistants
|
|
13
|
+
*
|
|
14
|
+
* @see https://github.com/ofri-peretz/eslint#readme
|
|
15
|
+
*/
|
|
16
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
17
|
+
exports.configs = exports.plugin = exports.rules = void 0;
|
|
18
|
+
// Security rules - Injection
|
|
19
|
+
const no_sql_injection_1 = require("./rules/security/no-sql-injection");
|
|
20
|
+
const database_injection_1 = require("./rules/security/database-injection");
|
|
21
|
+
const detect_eval_with_expression_1 = require("./rules/security/detect-eval-with-expression");
|
|
22
|
+
const detect_child_process_1 = require("./rules/security/detect-child-process");
|
|
23
|
+
const no_unsafe_dynamic_require_1 = require("./rules/security/no-unsafe-dynamic-require");
|
|
24
|
+
const no_graphql_injection_1 = require("./rules/security/no-graphql-injection");
|
|
25
|
+
const no_xxe_injection_1 = require("./rules/security/no-xxe-injection");
|
|
26
|
+
const no_xpath_injection_1 = require("./rules/security/no-xpath-injection");
|
|
27
|
+
const no_ldap_injection_1 = require("./rules/security/no-ldap-injection");
|
|
28
|
+
const no_directive_injection_1 = require("./rules/security/no-directive-injection");
|
|
29
|
+
const no_format_string_injection_1 = require("./rules/security/no-format-string-injection");
|
|
30
|
+
// Security rules - Path & File
|
|
31
|
+
const detect_non_literal_fs_filename_1 = require("./rules/security/detect-non-literal-fs-filename");
|
|
32
|
+
const no_zip_slip_1 = require("./rules/security/no-zip-slip");
|
|
33
|
+
const no_toctou_vulnerability_1 = require("./rules/security/no-toctou-vulnerability");
|
|
34
|
+
// Security rules - Regex
|
|
35
|
+
const detect_non_literal_regexp_1 = require("./rules/security/detect-non-literal-regexp");
|
|
36
|
+
const no_redos_vulnerable_regex_1 = require("./rules/security/no-redos-vulnerable-regex");
|
|
37
|
+
const no_unsafe_regex_construction_1 = require("./rules/security/no-unsafe-regex-construction");
|
|
38
|
+
// Security rules - Object & Prototype
|
|
39
|
+
const detect_object_injection_1 = require("./rules/security/detect-object-injection");
|
|
40
|
+
const no_unsafe_deserialization_1 = require("./rules/security/no-unsafe-deserialization");
|
|
41
|
+
// Security rules - Credentials & Crypto
|
|
42
|
+
const no_hardcoded_credentials_1 = require("./rules/security/no-hardcoded-credentials");
|
|
43
|
+
const no_weak_crypto_1 = require("./rules/security/no-weak-crypto");
|
|
44
|
+
const no_insufficient_random_1 = require("./rules/security/no-insufficient-random");
|
|
45
|
+
const no_timing_attack_1 = require("./rules/security/no-timing-attack");
|
|
46
|
+
const no_insecure_comparison_1 = require("./rules/security/no-insecure-comparison");
|
|
47
|
+
const no_insecure_jwt_1 = require("./rules/security/no-insecure-jwt");
|
|
48
|
+
// Security rules - Input Validation & XSS
|
|
49
|
+
const no_unvalidated_user_input_1 = require("./rules/security/no-unvalidated-user-input");
|
|
50
|
+
const no_unsanitized_html_1 = require("./rules/security/no-unsanitized-html");
|
|
51
|
+
const no_unescaped_url_parameter_1 = require("./rules/security/no-unescaped-url-parameter");
|
|
52
|
+
const no_improper_sanitization_1 = require("./rules/security/no-improper-sanitization");
|
|
53
|
+
const no_improper_type_validation_1 = require("./rules/security/no-improper-type-validation");
|
|
54
|
+
// Security rules - Authentication & Authorization
|
|
55
|
+
const no_missing_authentication_1 = require("./rules/security/no-missing-authentication");
|
|
56
|
+
const no_privilege_escalation_1 = require("./rules/security/no-privilege-escalation");
|
|
57
|
+
const no_weak_password_recovery_1 = require("./rules/security/no-weak-password-recovery");
|
|
58
|
+
// Security rules - Session & Cookies
|
|
59
|
+
const no_insecure_cookie_settings_1 = require("./rules/security/no-insecure-cookie-settings");
|
|
60
|
+
const no_missing_csrf_protection_1 = require("./rules/security/no-missing-csrf-protection");
|
|
61
|
+
const no_document_cookie_1 = require("./rules/security/no-document-cookie");
|
|
62
|
+
// Security rules - Network & Headers
|
|
63
|
+
const no_missing_cors_check_1 = require("./rules/security/no-missing-cors-check");
|
|
64
|
+
const no_missing_security_headers_1 = require("./rules/security/no-missing-security-headers");
|
|
65
|
+
const no_insecure_redirects_1 = require("./rules/security/no-insecure-redirects");
|
|
66
|
+
const no_unencrypted_transmission_1 = require("./rules/security/no-unencrypted-transmission");
|
|
67
|
+
const no_clickjacking_1 = require("./rules/security/no-clickjacking");
|
|
68
|
+
// Security rules - Data Exposure
|
|
69
|
+
const no_exposed_sensitive_data_1 = require("./rules/security/no-exposed-sensitive-data");
|
|
70
|
+
const no_sensitive_data_exposure_1 = require("./rules/security/no-sensitive-data-exposure");
|
|
71
|
+
// Security rules - Buffer & Memory
|
|
72
|
+
const no_buffer_overread_1 = require("./rules/security/no-buffer-overread");
|
|
73
|
+
// Security rules - Resource & DoS
|
|
74
|
+
const no_unlimited_resource_allocation_1 = require("./rules/security/no-unlimited-resource-allocation");
|
|
75
|
+
const no_unchecked_loop_condition_1 = require("./rules/security/no-unchecked-loop-condition");
|
|
76
|
+
// Security rules - Platform Specific
|
|
77
|
+
const no_electron_security_issues_1 = require("./rules/security/no-electron-security-issues");
|
|
78
|
+
const no_insufficient_postmessage_validation_1 = require("./rules/security/no-insufficient-postmessage-validation");
|
|
79
|
+
/**
|
|
80
|
+
* Collection of all security ESLint rules
|
|
81
|
+
*/
|
|
82
|
+
exports.rules = {
|
|
83
|
+
// Flat rule names (recommended usage)
|
|
84
|
+
'no-sql-injection': no_sql_injection_1.noSqlInjection,
|
|
85
|
+
'database-injection': database_injection_1.databaseInjection,
|
|
86
|
+
'detect-eval-with-expression': detect_eval_with_expression_1.detectEvalWithExpression,
|
|
87
|
+
'detect-child-process': detect_child_process_1.detectChildProcess,
|
|
88
|
+
'no-unsafe-dynamic-require': no_unsafe_dynamic_require_1.noUnsafeDynamicRequire,
|
|
89
|
+
'no-graphql-injection': no_graphql_injection_1.noGraphqlInjection,
|
|
90
|
+
'no-xxe-injection': no_xxe_injection_1.noXxeInjection,
|
|
91
|
+
'no-xpath-injection': no_xpath_injection_1.noXpathInjection,
|
|
92
|
+
'no-ldap-injection': no_ldap_injection_1.noLdapInjection,
|
|
93
|
+
'no-directive-injection': no_directive_injection_1.noDirectiveInjection,
|
|
94
|
+
'no-format-string-injection': no_format_string_injection_1.noFormatStringInjection,
|
|
95
|
+
'detect-non-literal-fs-filename': detect_non_literal_fs_filename_1.detectNonLiteralFsFilename,
|
|
96
|
+
'no-zip-slip': no_zip_slip_1.noZipSlip,
|
|
97
|
+
'no-toctou-vulnerability': no_toctou_vulnerability_1.noToctouVulnerability,
|
|
98
|
+
'detect-non-literal-regexp': detect_non_literal_regexp_1.detectNonLiteralRegexp,
|
|
99
|
+
'no-redos-vulnerable-regex': no_redos_vulnerable_regex_1.noRedosVulnerableRegex,
|
|
100
|
+
'no-unsafe-regex-construction': no_unsafe_regex_construction_1.noUnsafeRegexConstruction,
|
|
101
|
+
'detect-object-injection': detect_object_injection_1.detectObjectInjection,
|
|
102
|
+
'no-unsafe-deserialization': no_unsafe_deserialization_1.noUnsafeDeserialization,
|
|
103
|
+
'no-hardcoded-credentials': no_hardcoded_credentials_1.noHardcodedCredentials,
|
|
104
|
+
'no-weak-crypto': no_weak_crypto_1.noWeakCrypto,
|
|
105
|
+
'no-insufficient-random': no_insufficient_random_1.noInsufficientRandom,
|
|
106
|
+
'no-timing-attack': no_timing_attack_1.noTimingAttack,
|
|
107
|
+
'no-insecure-comparison': no_insecure_comparison_1.noInsecureComparison,
|
|
108
|
+
'no-insecure-jwt': no_insecure_jwt_1.noInsecureJwt,
|
|
109
|
+
'no-unvalidated-user-input': no_unvalidated_user_input_1.noUnvalidatedUserInput,
|
|
110
|
+
'no-unsanitized-html': no_unsanitized_html_1.noUnsanitizedHtml,
|
|
111
|
+
'no-unescaped-url-parameter': no_unescaped_url_parameter_1.noUnescapedUrlParameter,
|
|
112
|
+
'no-improper-sanitization': no_improper_sanitization_1.noImproperSanitization,
|
|
113
|
+
'no-improper-type-validation': no_improper_type_validation_1.noImproperTypeValidation,
|
|
114
|
+
'no-missing-authentication': no_missing_authentication_1.noMissingAuthentication,
|
|
115
|
+
'no-privilege-escalation': no_privilege_escalation_1.noPrivilegeEscalation,
|
|
116
|
+
'no-weak-password-recovery': no_weak_password_recovery_1.noWeakPasswordRecovery,
|
|
117
|
+
'no-insecure-cookie-settings': no_insecure_cookie_settings_1.noInsecureCookieSettings,
|
|
118
|
+
'no-missing-csrf-protection': no_missing_csrf_protection_1.noMissingCsrfProtection,
|
|
119
|
+
'no-document-cookie': no_document_cookie_1.noDocumentCookie,
|
|
120
|
+
'no-missing-cors-check': no_missing_cors_check_1.noMissingCorsCheck,
|
|
121
|
+
'no-missing-security-headers': no_missing_security_headers_1.noMissingSecurityHeaders,
|
|
122
|
+
'no-insecure-redirects': no_insecure_redirects_1.noInsecureRedirects,
|
|
123
|
+
'no-unencrypted-transmission': no_unencrypted_transmission_1.noUnencryptedTransmission,
|
|
124
|
+
'no-clickjacking': no_clickjacking_1.noClickjacking,
|
|
125
|
+
'no-exposed-sensitive-data': no_exposed_sensitive_data_1.noExposedSensitiveData,
|
|
126
|
+
'no-sensitive-data-exposure': no_sensitive_data_exposure_1.noSensitiveDataExposure,
|
|
127
|
+
'no-buffer-overread': no_buffer_overread_1.noBufferOverread,
|
|
128
|
+
'no-unlimited-resource-allocation': no_unlimited_resource_allocation_1.noUnlimitedResourceAllocation,
|
|
129
|
+
'no-unchecked-loop-condition': no_unchecked_loop_condition_1.noUncheckedLoopCondition,
|
|
130
|
+
'no-electron-security-issues': no_electron_security_issues_1.noElectronSecurityIssues,
|
|
131
|
+
'no-insufficient-postmessage-validation': no_insufficient_postmessage_validation_1.noInsufficientPostmessageValidation,
|
|
132
|
+
};
|
|
133
|
+
/**
|
|
134
|
+
* ESLint Plugin object
|
|
135
|
+
*/
|
|
136
|
+
exports.plugin = {
|
|
137
|
+
meta: {
|
|
138
|
+
name: 'eslint-plugin-secure-coding',
|
|
139
|
+
version: '1.0.0',
|
|
140
|
+
},
|
|
141
|
+
rules: exports.rules,
|
|
142
|
+
};
|
|
143
|
+
/**
|
|
144
|
+
* Preset configurations for security rules
|
|
145
|
+
*/
|
|
146
|
+
const recommendedRules = {
|
|
147
|
+
// Critical - Injection vulnerabilities (OWASP A03)
|
|
148
|
+
'secure-coding/no-sql-injection': 'error',
|
|
149
|
+
'secure-coding/database-injection': 'error',
|
|
150
|
+
'secure-coding/detect-eval-with-expression': 'error',
|
|
151
|
+
'secure-coding/detect-child-process': 'error',
|
|
152
|
+
'secure-coding/no-unsafe-dynamic-require': 'error',
|
|
153
|
+
'secure-coding/no-graphql-injection': 'error',
|
|
154
|
+
'secure-coding/no-xxe-injection': 'error',
|
|
155
|
+
'secure-coding/no-xpath-injection': 'error',
|
|
156
|
+
'secure-coding/no-ldap-injection': 'error',
|
|
157
|
+
'secure-coding/no-directive-injection': 'error',
|
|
158
|
+
'secure-coding/no-format-string-injection': 'error',
|
|
159
|
+
// Critical - Path traversal & file operations
|
|
160
|
+
'secure-coding/detect-non-literal-fs-filename': 'error',
|
|
161
|
+
'secure-coding/no-zip-slip': 'error',
|
|
162
|
+
'secure-coding/no-toctou-vulnerability': 'error',
|
|
163
|
+
// Critical - Deserialization
|
|
164
|
+
'secure-coding/no-unsafe-deserialization': 'error',
|
|
165
|
+
// High - Regex vulnerabilities
|
|
166
|
+
'secure-coding/detect-non-literal-regexp': 'warn',
|
|
167
|
+
'secure-coding/no-redos-vulnerable-regex': 'error',
|
|
168
|
+
'secure-coding/no-unsafe-regex-construction': 'warn',
|
|
169
|
+
// High - Prototype pollution
|
|
170
|
+
'secure-coding/detect-object-injection': 'warn',
|
|
171
|
+
// Critical - Cryptography (OWASP A02)
|
|
172
|
+
'secure-coding/no-hardcoded-credentials': 'error',
|
|
173
|
+
'secure-coding/no-weak-crypto': 'error',
|
|
174
|
+
'secure-coding/no-insufficient-random': 'warn',
|
|
175
|
+
'secure-coding/no-timing-attack': 'error',
|
|
176
|
+
'secure-coding/no-insecure-comparison': 'warn',
|
|
177
|
+
'secure-coding/no-insecure-jwt': 'error',
|
|
178
|
+
// Critical - XSS vulnerabilities (OWASP A03)
|
|
179
|
+
'secure-coding/no-unvalidated-user-input': 'warn',
|
|
180
|
+
'secure-coding/no-unsanitized-html': 'error',
|
|
181
|
+
'secure-coding/no-unescaped-url-parameter': 'warn',
|
|
182
|
+
'secure-coding/no-improper-sanitization': 'error',
|
|
183
|
+
'secure-coding/no-improper-type-validation': 'warn',
|
|
184
|
+
// High - Authentication & Authorization (OWASP A01, A07)
|
|
185
|
+
'secure-coding/no-missing-authentication': 'warn',
|
|
186
|
+
'secure-coding/no-privilege-escalation': 'warn',
|
|
187
|
+
'secure-coding/no-weak-password-recovery': 'error',
|
|
188
|
+
// High - Session & Cookies
|
|
189
|
+
'secure-coding/no-insecure-cookie-settings': 'warn',
|
|
190
|
+
'secure-coding/no-missing-csrf-protection': 'warn',
|
|
191
|
+
'secure-coding/no-document-cookie': 'warn',
|
|
192
|
+
// High - Network & Headers (OWASP A05)
|
|
193
|
+
'secure-coding/no-missing-cors-check': 'warn',
|
|
194
|
+
'secure-coding/no-missing-security-headers': 'warn',
|
|
195
|
+
'secure-coding/no-insecure-redirects': 'warn',
|
|
196
|
+
'secure-coding/no-unencrypted-transmission': 'warn',
|
|
197
|
+
'secure-coding/no-clickjacking': 'error',
|
|
198
|
+
// High - Data Exposure (OWASP A01)
|
|
199
|
+
'secure-coding/no-exposed-sensitive-data': 'error',
|
|
200
|
+
'secure-coding/no-sensitive-data-exposure': 'warn',
|
|
201
|
+
// Medium - Buffer & Memory
|
|
202
|
+
'secure-coding/no-buffer-overread': 'error',
|
|
203
|
+
// Medium - Resource & DoS
|
|
204
|
+
'secure-coding/no-unlimited-resource-allocation': 'error',
|
|
205
|
+
'secure-coding/no-unchecked-loop-condition': 'error',
|
|
206
|
+
// Medium - Platform specific
|
|
207
|
+
'secure-coding/no-electron-security-issues': 'error',
|
|
208
|
+
'secure-coding/no-insufficient-postmessage-validation': 'error',
|
|
209
|
+
};
|
|
210
|
+
exports.configs = {
|
|
211
|
+
/**
|
|
212
|
+
* Recommended security configuration
|
|
213
|
+
*
|
|
214
|
+
* Enables all security rules with sensible severity levels:
|
|
215
|
+
* - Critical injection vulnerabilities as errors
|
|
216
|
+
* - Important security issues as warnings
|
|
217
|
+
*/
|
|
218
|
+
recommended: {
|
|
219
|
+
plugins: {
|
|
220
|
+
'secure-coding': exports.plugin,
|
|
221
|
+
},
|
|
222
|
+
rules: recommendedRules,
|
|
223
|
+
},
|
|
224
|
+
/**
|
|
225
|
+
* Strict security configuration
|
|
226
|
+
*
|
|
227
|
+
* All security rules set to 'error' for maximum protection
|
|
228
|
+
*/
|
|
229
|
+
strict: {
|
|
230
|
+
plugins: {
|
|
231
|
+
'secure-coding': exports.plugin,
|
|
232
|
+
},
|
|
233
|
+
rules: Object.fromEntries(Object.keys(exports.rules).map(ruleName => [`secure-coding/${ruleName}`, 'error'])),
|
|
234
|
+
},
|
|
235
|
+
/**
|
|
236
|
+
* OWASP Top 10 focused configuration
|
|
237
|
+
*
|
|
238
|
+
* Rules mapped to OWASP Top 10 2021 categories
|
|
239
|
+
*/
|
|
240
|
+
'owasp-top-10': {
|
|
241
|
+
plugins: {
|
|
242
|
+
'secure-coding': exports.plugin,
|
|
243
|
+
},
|
|
244
|
+
rules: {
|
|
245
|
+
// A01:2021 – Broken Access Control
|
|
246
|
+
'secure-coding/no-missing-authentication': 'error',
|
|
247
|
+
'secure-coding/no-privilege-escalation': 'error',
|
|
248
|
+
'secure-coding/no-exposed-sensitive-data': 'error',
|
|
249
|
+
'secure-coding/no-insecure-redirects': 'error',
|
|
250
|
+
// A02:2021 – Cryptographic Failures
|
|
251
|
+
'secure-coding/no-hardcoded-credentials': 'error',
|
|
252
|
+
'secure-coding/no-weak-crypto': 'error',
|
|
253
|
+
'secure-coding/no-insufficient-random': 'error',
|
|
254
|
+
'secure-coding/no-insecure-jwt': 'error',
|
|
255
|
+
'secure-coding/no-unencrypted-transmission': 'error',
|
|
256
|
+
'secure-coding/no-sensitive-data-exposure': 'error',
|
|
257
|
+
// A03:2021 – Injection
|
|
258
|
+
'secure-coding/no-sql-injection': 'error',
|
|
259
|
+
'secure-coding/database-injection': 'error',
|
|
260
|
+
'secure-coding/detect-eval-with-expression': 'error',
|
|
261
|
+
'secure-coding/detect-child-process': 'error',
|
|
262
|
+
'secure-coding/no-graphql-injection': 'error',
|
|
263
|
+
'secure-coding/no-xxe-injection': 'error',
|
|
264
|
+
'secure-coding/no-xpath-injection': 'error',
|
|
265
|
+
'secure-coding/no-ldap-injection': 'error',
|
|
266
|
+
'secure-coding/no-unsanitized-html': 'error',
|
|
267
|
+
'secure-coding/no-unescaped-url-parameter': 'error',
|
|
268
|
+
// A04:2021 – Insecure Design
|
|
269
|
+
'secure-coding/no-weak-password-recovery': 'error',
|
|
270
|
+
'secure-coding/no-improper-type-validation': 'error',
|
|
271
|
+
// A05:2021 – Security Misconfiguration
|
|
272
|
+
'secure-coding/no-missing-security-headers': 'error',
|
|
273
|
+
'secure-coding/no-missing-cors-check': 'error',
|
|
274
|
+
'secure-coding/no-insecure-cookie-settings': 'error',
|
|
275
|
+
'secure-coding/no-clickjacking': 'error',
|
|
276
|
+
'secure-coding/no-electron-security-issues': 'error',
|
|
277
|
+
// A07:2021 – Identification and Authentication Failures
|
|
278
|
+
'secure-coding/no-timing-attack': 'error',
|
|
279
|
+
'secure-coding/no-insecure-comparison': 'error',
|
|
280
|
+
'secure-coding/no-missing-csrf-protection': 'error',
|
|
281
|
+
// A08:2021 – Software and Data Integrity Failures
|
|
282
|
+
'secure-coding/no-unsafe-deserialization': 'error',
|
|
283
|
+
'secure-coding/no-unsafe-dynamic-require': 'error',
|
|
284
|
+
},
|
|
285
|
+
},
|
|
286
|
+
/**
|
|
287
|
+
* LLM-friendly recommended config
|
|
288
|
+
* - Mirrors `recommended` severities
|
|
289
|
+
* - Adds guardrails helpful for agent/tool code
|
|
290
|
+
*/
|
|
291
|
+
'recommended-llm': {
|
|
292
|
+
plugins: {
|
|
293
|
+
'secure-coding': exports.plugin,
|
|
294
|
+
},
|
|
295
|
+
rules: {
|
|
296
|
+
// Start from recommended
|
|
297
|
+
...recommendedRules,
|
|
298
|
+
// Emphasize data handling and deserialization for model/tool I/O
|
|
299
|
+
'secure-coding/no-unsafe-deserialization': 'error',
|
|
300
|
+
'secure-coding/detect-object-injection': 'error',
|
|
301
|
+
// Ensure outbound calls are constrained (common in agent tools)
|
|
302
|
+
'secure-coding/no-unencrypted-transmission': 'error',
|
|
303
|
+
'secure-coding/no-insecure-redirects': 'error',
|
|
304
|
+
},
|
|
305
|
+
},
|
|
306
|
+
/**
|
|
307
|
+
* MCP-focused baseline
|
|
308
|
+
* - Stricter on outbound/network/file/process surfaces typical for tools
|
|
309
|
+
*/
|
|
310
|
+
'recommended-mcp': {
|
|
311
|
+
plugins: {
|
|
312
|
+
'secure-coding': exports.plugin,
|
|
313
|
+
},
|
|
314
|
+
rules: {
|
|
315
|
+
...recommendedRules,
|
|
316
|
+
// Raise critical tool vectors
|
|
317
|
+
'secure-coding/detect-child-process': 'error',
|
|
318
|
+
'secure-coding/no-unsafe-dynamic-require': 'error',
|
|
319
|
+
'secure-coding/detect-non-literal-fs-filename': 'error',
|
|
320
|
+
'secure-coding/no-unsafe-deserialization': 'error',
|
|
321
|
+
'secure-coding/detect-object-injection': 'error',
|
|
322
|
+
'secure-coding/no-unlimited-resource-allocation': 'error',
|
|
323
|
+
'secure-coding/no-unchecked-loop-condition': 'error',
|
|
324
|
+
'secure-coding/no-unencrypted-transmission': 'error',
|
|
325
|
+
'secure-coding/no-insecure-redirects': 'error',
|
|
326
|
+
'secure-coding/no-missing-security-headers': 'error',
|
|
327
|
+
'secure-coding/no-missing-cors-check': 'error',
|
|
328
|
+
},
|
|
329
|
+
},
|
|
330
|
+
/**
|
|
331
|
+
* Strict MCP mode
|
|
332
|
+
* - All rules as errors (mirrors strict) with the same plugin wiring
|
|
333
|
+
*/
|
|
334
|
+
'strict-mcp': {
|
|
335
|
+
plugins: {
|
|
336
|
+
'secure-coding': exports.plugin,
|
|
337
|
+
},
|
|
338
|
+
rules: Object.fromEntries(Object.keys(exports.rules).map(ruleName => [`secure-coding/${ruleName}`, 'error'])),
|
|
339
|
+
},
|
|
340
|
+
};
|
|
341
|
+
/**
|
|
342
|
+
* Default export for ESLint plugin
|
|
343
|
+
*/
|
|
344
|
+
exports.default = exports.plugin;
|
|
345
|
+
//# sourceMappingURL=index.js.map
|
package/src/index.js.map
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../packages/eslint-plugin-secure-coding/src/index.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
export interface Options {
|
|
2
|
+
/** Detect NoSQL injection patterns. Default: true */
|
|
3
|
+
detectNoSQL?: boolean;
|
|
4
|
+
/** Detect ORM-specific vulnerabilities. Default: true */
|
|
5
|
+
detectORMs?: boolean;
|
|
6
|
+
/** Trusted data sources that bypass detection */
|
|
7
|
+
trustedSources?: string[];
|
|
8
|
+
/** Show framework-specific recommendations. Default: true */
|
|
9
|
+
frameworkHints?: boolean;
|
|
10
|
+
/** Strategy for fixing injection: 'parameterize', 'orm', 'sanitize', 'auto' */
|
|
11
|
+
strategy?: 'parameterize' | 'orm' | 'sanitize' | 'auto';
|
|
12
|
+
}
|
|
13
|
+
export declare const databaseInjection: ESLintUtils.RuleModule<MessageIds, Options, unknown, ESLintUtils.RuleListener>;
|