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/AGENTS.md
ADDED
|
@@ -0,0 +1,196 @@
|
|
|
1
|
+
# eslint-plugin-secure-coding - AI Agent Guide
|
|
2
|
+
|
|
3
|
+
## Package Overview
|
|
4
|
+
|
|
5
|
+
| Field | Value |
|
|
6
|
+
| --------------- | ---------------------------------------------------------------------------------------- |
|
|
7
|
+
| **Name** | eslint-plugin-secure-coding |
|
|
8
|
+
| **Version** | 1.0.0 |
|
|
9
|
+
| **Description** | Security-focused ESLint plugin with 48 LLM-optimized rules for detecting vulnerabilities |
|
|
10
|
+
| **Type** | ESLint Plugin |
|
|
11
|
+
| **Language** | TypeScript |
|
|
12
|
+
| **Node.js** | >=18.0.0 |
|
|
13
|
+
| **ESLint** | ^8.0.0 \|\| ^9.0.0 |
|
|
14
|
+
| **License** | MIT |
|
|
15
|
+
| **Homepage** | https://github.com/ofri-peretz/eslint#readme |
|
|
16
|
+
| **Repository** | https://github.com/ofri-peretz/eslint.git |
|
|
17
|
+
| **Directory** | packages/eslint-plugin-secure-coding |
|
|
18
|
+
|
|
19
|
+
## Installation
|
|
20
|
+
|
|
21
|
+
```bash
|
|
22
|
+
npm install --save-dev eslint-plugin-secure-coding
|
|
23
|
+
# or
|
|
24
|
+
pnpm add -D eslint-plugin-secure-coding
|
|
25
|
+
# or
|
|
26
|
+
yarn add -D eslint-plugin-secure-coding
|
|
27
|
+
```
|
|
28
|
+
|
|
29
|
+
## Quick Start
|
|
30
|
+
|
|
31
|
+
```javascript
|
|
32
|
+
// eslint.config.js
|
|
33
|
+
import secureCoding from 'eslint-plugin-secure-coding';
|
|
34
|
+
|
|
35
|
+
export default [secureCoding.configs.recommended];
|
|
36
|
+
```
|
|
37
|
+
|
|
38
|
+
## Available Presets
|
|
39
|
+
|
|
40
|
+
| Preset | Rules | Description |
|
|
41
|
+
| ---------------- | --------------------------- | ----------------------------------- |
|
|
42
|
+
| **recommended** | 48 rules (mixed error/warn) | Balanced security for most projects |
|
|
43
|
+
| **strict** | 48 rules (all errors) | Maximum security enforcement |
|
|
44
|
+
| **owasp-top-10** | 32 rules | OWASP Top 10 2021 compliance |
|
|
45
|
+
|
|
46
|
+
## Rule Categories
|
|
47
|
+
|
|
48
|
+
### Injection Prevention (11 rules)
|
|
49
|
+
|
|
50
|
+
- `no-sql-injection` - CWE-89 - SQL injection via string concatenation
|
|
51
|
+
- `database-injection` - CWE-89 - Comprehensive SQL/NoSQL/ORM injection
|
|
52
|
+
- `detect-eval-with-expression` - CWE-95 - eval() with dynamic expressions
|
|
53
|
+
- `detect-child-process` - CWE-78 - Command injection in child_process
|
|
54
|
+
- `no-unsafe-dynamic-require` - CWE-95 - Dynamic require() calls
|
|
55
|
+
- `no-graphql-injection` - CWE-943 - GraphQL injection attacks
|
|
56
|
+
- `no-xxe-injection` - CWE-611 - XML External Entity injection
|
|
57
|
+
- `no-xpath-injection` - CWE-643 - XPath injection attacks
|
|
58
|
+
- `no-ldap-injection` - CWE-90 - LDAP injection attacks
|
|
59
|
+
- `no-directive-injection` - CWE-94 - Template directive injection
|
|
60
|
+
- `no-format-string-injection` - CWE-134 - Format string vulnerabilities
|
|
61
|
+
|
|
62
|
+
### Path & File Security (3 rules)
|
|
63
|
+
|
|
64
|
+
- `detect-non-literal-fs-filename` - CWE-22 - Path traversal in fs operations
|
|
65
|
+
- `no-zip-slip` - CWE-22 - Zip slip vulnerabilities
|
|
66
|
+
- `no-toctou-vulnerability` - CWE-367 - TOCTOU race conditions
|
|
67
|
+
|
|
68
|
+
### Regex Security (3 rules)
|
|
69
|
+
|
|
70
|
+
- `detect-non-literal-regexp` - CWE-400 - ReDoS in RegExp construction
|
|
71
|
+
- `no-redos-vulnerable-regex` - CWE-1333 - ReDoS-vulnerable patterns
|
|
72
|
+
- `no-unsafe-regex-construction` - CWE-400 - Unsafe regex from user input
|
|
73
|
+
|
|
74
|
+
### Object & Prototype (2 rules)
|
|
75
|
+
|
|
76
|
+
- `detect-object-injection` - CWE-915 - Prototype pollution
|
|
77
|
+
- `no-unsafe-deserialization` - CWE-502 - Unsafe deserialization
|
|
78
|
+
|
|
79
|
+
### Cryptography (6 rules)
|
|
80
|
+
|
|
81
|
+
- `no-hardcoded-credentials` - CWE-798 - Hardcoded passwords/keys
|
|
82
|
+
- `no-weak-crypto` - CWE-327 - Weak algorithms (MD5, SHA1)
|
|
83
|
+
- `no-insufficient-random` - CWE-330 - Math.random() for security
|
|
84
|
+
- `no-timing-attack` - CWE-208 - Timing attack vulnerabilities
|
|
85
|
+
- `no-insecure-comparison` - CWE-697 - Insecure string comparison
|
|
86
|
+
- `no-insecure-jwt` - CWE-347 - JWT security issues
|
|
87
|
+
|
|
88
|
+
### Input Validation & XSS (5 rules)
|
|
89
|
+
|
|
90
|
+
- `no-unvalidated-user-input` - CWE-20 - Unvalidated user input
|
|
91
|
+
- `no-unsanitized-html` - CWE-79 - XSS via innerHTML
|
|
92
|
+
- `no-unescaped-url-parameter` - CWE-79 - XSS via URL parameters
|
|
93
|
+
- `no-improper-sanitization` - CWE-116 - Improper output encoding
|
|
94
|
+
- `no-improper-type-validation` - CWE-20 - Type confusion vulnerabilities
|
|
95
|
+
|
|
96
|
+
### Authentication & Authorization (3 rules)
|
|
97
|
+
|
|
98
|
+
- `no-missing-authentication` - CWE-306 - Missing auth checks
|
|
99
|
+
- `no-privilege-escalation` - CWE-269 - Privilege escalation
|
|
100
|
+
- `no-weak-password-recovery` - CWE-640 - Insecure password reset
|
|
101
|
+
|
|
102
|
+
### Session & Cookies (3 rules)
|
|
103
|
+
|
|
104
|
+
- `no-insecure-cookie-settings` - CWE-614 - Missing Secure/HttpOnly
|
|
105
|
+
- `no-missing-csrf-protection` - CWE-352 - Missing CSRF tokens
|
|
106
|
+
- `no-document-cookie` - CWE-565 - Direct cookie manipulation
|
|
107
|
+
|
|
108
|
+
### Network & Headers (5 rules)
|
|
109
|
+
|
|
110
|
+
- `no-missing-cors-check` - CWE-942 - Missing CORS validation
|
|
111
|
+
- `no-missing-security-headers` - CWE-693 - Missing security headers
|
|
112
|
+
- `no-insecure-redirects` - CWE-601 - Open redirect vulnerabilities
|
|
113
|
+
- `no-unencrypted-transmission` - CWE-319 - HTTP instead of HTTPS
|
|
114
|
+
- `no-clickjacking` - CWE-1021 - Clickjacking vulnerabilities
|
|
115
|
+
|
|
116
|
+
### Data Exposure (2 rules)
|
|
117
|
+
|
|
118
|
+
- `no-exposed-sensitive-data` - CWE-200 - Sensitive data in responses
|
|
119
|
+
- `no-sensitive-data-exposure` - CWE-532 - Sensitive data in logs
|
|
120
|
+
|
|
121
|
+
### Buffer & Memory (1 rule)
|
|
122
|
+
|
|
123
|
+
- `no-buffer-overread` - CWE-126 - Buffer over-read
|
|
124
|
+
|
|
125
|
+
### DoS & Resource (2 rules)
|
|
126
|
+
|
|
127
|
+
- `no-unlimited-resource-allocation` - CWE-770 - Unbounded allocations
|
|
128
|
+
- `no-unchecked-loop-condition` - CWE-835 - Infinite loop conditions
|
|
129
|
+
|
|
130
|
+
### Platform-Specific (2 rules)
|
|
131
|
+
|
|
132
|
+
- `no-electron-security-issues` - CWE-693 - Electron security misconfig
|
|
133
|
+
- `no-insufficient-postmessage-validation` - CWE-346 - postMessage origin issues
|
|
134
|
+
|
|
135
|
+
## Error Message Format
|
|
136
|
+
|
|
137
|
+
All rules produce LLM-optimized 2-line structured messages:
|
|
138
|
+
|
|
139
|
+
```
|
|
140
|
+
Line 1: [Icon] [CWE] [OWASP] [CVSS] | [Description] | [SEVERITY] [Compliance]
|
|
141
|
+
Line 2: Fix: [instruction] | [doc-link]
|
|
142
|
+
```
|
|
143
|
+
|
|
144
|
+
**Example:**
|
|
145
|
+
|
|
146
|
+
```
|
|
147
|
+
🔒 CWE-89 OWASP:A03-Injection CVSS:9.8 | SQL Injection detected | CRITICAL [SOC2,PCI-DSS,HIPAA]
|
|
148
|
+
Fix: Use parameterized query: db.query("SELECT * FROM users WHERE id = ?", [userId]) | https://owasp.org/...
|
|
149
|
+
```
|
|
150
|
+
|
|
151
|
+
## ESLint MCP Integration
|
|
152
|
+
|
|
153
|
+
Configure in `.cursor/mcp.json`:
|
|
154
|
+
|
|
155
|
+
```json
|
|
156
|
+
{
|
|
157
|
+
"mcpServers": {
|
|
158
|
+
"eslint": {
|
|
159
|
+
"command": "npx",
|
|
160
|
+
"args": ["@eslint/mcp@latest"]
|
|
161
|
+
}
|
|
162
|
+
}
|
|
163
|
+
}
|
|
164
|
+
```
|
|
165
|
+
|
|
166
|
+
## Key Features
|
|
167
|
+
|
|
168
|
+
| Feature | Value |
|
|
169
|
+
| -------------------- | -------------------------------- |
|
|
170
|
+
| **Total Rules** | 48 |
|
|
171
|
+
| **CWE Coverage** | 100% (all rules include CWE IDs) |
|
|
172
|
+
| **OWASP Top 10** | Full 2021 coverage |
|
|
173
|
+
| **AI Auto-Fix Rate** | 60-80% |
|
|
174
|
+
| **Performance** | <10ms overhead per file |
|
|
175
|
+
| **Privacy** | 100% local, no cloud calls |
|
|
176
|
+
|
|
177
|
+
## FAQ
|
|
178
|
+
|
|
179
|
+
**Q: How do I enable all security rules?**
|
|
180
|
+
A: Use `secureCoding.configs.strict`
|
|
181
|
+
|
|
182
|
+
**Q: How do I configure a specific rule?**
|
|
183
|
+
A: `'secure-coding/no-sql-injection': ['error', { strategy: 'parameterize' }]`
|
|
184
|
+
|
|
185
|
+
**Q: How do I disable a rule inline?**
|
|
186
|
+
A: `// eslint-disable-next-line secure-coding/no-sql-injection`
|
|
187
|
+
|
|
188
|
+
**Q: Is it compatible with TypeScript?**
|
|
189
|
+
A: Yes, native TypeScript support.
|
|
190
|
+
|
|
191
|
+
**Q: Does it work with ESLint 9 flat config?**
|
|
192
|
+
A: Yes, fully compatible.
|
|
193
|
+
|
|
194
|
+
## License
|
|
195
|
+
|
|
196
|
+
MIT © Ofri Peretz
|
package/CHANGELOG.md
ADDED
|
@@ -0,0 +1,105 @@
|
|
|
1
|
+
# Changelog
|
|
2
|
+
|
|
3
|
+
All notable changes to this project will be documented in this file.
|
|
4
|
+
|
|
5
|
+
The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/),
|
|
6
|
+
and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html).
|
|
7
|
+
|
|
8
|
+
## [1.0.0] - 2025-01-01
|
|
9
|
+
|
|
10
|
+
### Added
|
|
11
|
+
|
|
12
|
+
- Initial release with 48 security-focused ESLint rules
|
|
13
|
+
- LLM-optimized error messages with [CWE](https://cwe.mitre.org/) references and [OWASP](https://owasp.org/Top10/) mapping
|
|
14
|
+
- Three preset configurations: `recommended`, `strict`, `owasp-top-10`
|
|
15
|
+
- Full ESLint 9 flat config support
|
|
16
|
+
- TypeScript support
|
|
17
|
+
|
|
18
|
+
### Security Rules
|
|
19
|
+
|
|
20
|
+
#### Injection Prevention (11 rules)
|
|
21
|
+
|
|
22
|
+
- `no-sql-injection` - SQL injection prevention
|
|
23
|
+
- `database-injection` - Comprehensive SQL/NoSQL/ORM injection
|
|
24
|
+
- `detect-eval-with-expression` - Dynamic eval() detection
|
|
25
|
+
- `detect-child-process` - Command injection detection
|
|
26
|
+
- `no-unsafe-dynamic-require` - Dynamic require() prevention
|
|
27
|
+
- `no-graphql-injection` - GraphQL injection prevention
|
|
28
|
+
- `no-xxe-injection` - XXE injection prevention
|
|
29
|
+
- `no-xpath-injection` - XPath injection prevention
|
|
30
|
+
- `no-ldap-injection` - LDAP injection prevention
|
|
31
|
+
- `no-directive-injection` - Template injection prevention
|
|
32
|
+
- `no-format-string-injection` - Format string injection prevention
|
|
33
|
+
|
|
34
|
+
#### Path & File Security (3 rules)
|
|
35
|
+
|
|
36
|
+
- `detect-non-literal-fs-filename` - Path traversal detection
|
|
37
|
+
- `no-zip-slip` - Zip slip vulnerability prevention
|
|
38
|
+
- `no-toctou-vulnerability` - TOCTOU race condition detection
|
|
39
|
+
|
|
40
|
+
#### Regex Security (3 rules)
|
|
41
|
+
|
|
42
|
+
- `detect-non-literal-regexp` - ReDoS detection in RegExp
|
|
43
|
+
- `no-redos-vulnerable-regex` - ReDoS pattern detection
|
|
44
|
+
- `no-unsafe-regex-construction` - Unsafe regex prevention
|
|
45
|
+
|
|
46
|
+
#### Object & Prototype (2 rules)
|
|
47
|
+
|
|
48
|
+
- `detect-object-injection` - Prototype pollution detection
|
|
49
|
+
- `no-unsafe-deserialization` - Unsafe deserialization prevention
|
|
50
|
+
|
|
51
|
+
#### Cryptography (6 rules)
|
|
52
|
+
|
|
53
|
+
- `no-hardcoded-credentials` - Hardcoded secrets detection
|
|
54
|
+
- `no-weak-crypto` - Weak algorithm detection
|
|
55
|
+
- `no-insufficient-random` - Weak randomness detection
|
|
56
|
+
- `no-timing-attack` - Timing attack prevention
|
|
57
|
+
- `no-insecure-comparison` - Insecure comparison detection
|
|
58
|
+
- `no-insecure-jwt` - JWT security issues detection
|
|
59
|
+
|
|
60
|
+
#### Input Validation & XSS (5 rules)
|
|
61
|
+
|
|
62
|
+
- `no-unvalidated-user-input` - Input validation enforcement
|
|
63
|
+
- `no-unsanitized-html` - XSS via innerHTML prevention
|
|
64
|
+
- `no-unescaped-url-parameter` - URL parameter XSS prevention
|
|
65
|
+
- `no-improper-sanitization` - Output encoding enforcement
|
|
66
|
+
- `no-improper-type-validation` - Type confusion prevention
|
|
67
|
+
|
|
68
|
+
#### Authentication & Authorization (3 rules)
|
|
69
|
+
|
|
70
|
+
- `no-missing-authentication` - Auth check enforcement
|
|
71
|
+
- `no-privilege-escalation` - Privilege escalation detection
|
|
72
|
+
- `no-weak-password-recovery` - Secure password reset enforcement
|
|
73
|
+
|
|
74
|
+
#### Session & Cookies (3 rules)
|
|
75
|
+
|
|
76
|
+
- `no-insecure-cookie-settings` - Cookie security enforcement
|
|
77
|
+
- `no-missing-csrf-protection` - CSRF protection enforcement
|
|
78
|
+
- `no-document-cookie` - Direct cookie access detection
|
|
79
|
+
|
|
80
|
+
#### Network & Headers (5 rules)
|
|
81
|
+
|
|
82
|
+
- `no-missing-cors-check` - CORS validation enforcement
|
|
83
|
+
- `no-missing-security-headers` - Security header enforcement
|
|
84
|
+
- `no-insecure-redirects` - Open redirect prevention
|
|
85
|
+
- `no-unencrypted-transmission` - HTTPS enforcement
|
|
86
|
+
- `no-clickjacking` - Clickjacking prevention
|
|
87
|
+
|
|
88
|
+
#### Data Exposure (2 rules)
|
|
89
|
+
|
|
90
|
+
- `no-exposed-sensitive-data` - Data exposure prevention
|
|
91
|
+
- `no-sensitive-data-exposure` - Log sanitization enforcement
|
|
92
|
+
|
|
93
|
+
#### Buffer & Memory (1 rule)
|
|
94
|
+
|
|
95
|
+
- `no-buffer-overread` - Buffer safety enforcement
|
|
96
|
+
|
|
97
|
+
#### DoS & Resource (2 rules)
|
|
98
|
+
|
|
99
|
+
- `no-unlimited-resource-allocation` - Resource limit enforcement
|
|
100
|
+
- `no-unchecked-loop-condition` - Infinite loop prevention
|
|
101
|
+
|
|
102
|
+
#### Platform-Specific (2 rules)
|
|
103
|
+
|
|
104
|
+
- `no-electron-security-issues` - Electron security enforcement
|
|
105
|
+
- `no-insufficient-postmessage-validation` - postMessage validation
|
package/LICENSE
ADDED
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
MIT License
|
|
2
|
+
|
|
3
|
+
Copyright (c) 2025 Ofri Peretz
|
|
4
|
+
|
|
5
|
+
Permission is hereby granted, free of charge, to any person obtaining a copy
|
|
6
|
+
of this software and associated documentation files (the "Software"), to deal
|
|
7
|
+
in the Software without restriction, including without limitation the rights
|
|
8
|
+
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
|
9
|
+
copies of the Software, and to permit persons to whom the Software is
|
|
10
|
+
furnished to do so, subject to the following conditions:
|
|
11
|
+
|
|
12
|
+
The above copyright notice and this permission notice shall be included in all
|
|
13
|
+
copies or substantial portions of the Software.
|
|
14
|
+
|
|
15
|
+
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
|
16
|
+
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
|
17
|
+
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
|
18
|
+
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
|
19
|
+
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
|
20
|
+
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
|
|
21
|
+
SOFTWARE.
|
|
22
|
+
|
|
23
|
+
|