@korayda4/vibe-security 0.3.0 → 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.
Files changed (53) hide show
  1. package/README.md +8 -1
  2. package/dist/engine/config.d.ts +4 -1
  3. package/dist/engine/config.js +2 -0
  4. package/dist/engine/config.js.map +1 -1
  5. package/dist/engine/output.js +1 -1
  6. package/dist/engine/rules/_helpers.d.ts +1 -0
  7. package/dist/engine/rules/_helpers.js +6 -1
  8. package/dist/engine/rules/_helpers.js.map +1 -1
  9. package/dist/engine/rules/backend/fileUpload.js +9 -9
  10. package/dist/engine/rules/backend/fileUpload.js.map +1 -1
  11. package/dist/engine/rules/backend/hashing.js +6 -6
  12. package/dist/engine/rules/backend/hashing.js.map +1 -1
  13. package/dist/engine/rules/backend/idor.js +7 -7
  14. package/dist/engine/rules/backend/idor.js.map +1 -1
  15. package/dist/engine/rules/backend/inputValidation.js +6 -6
  16. package/dist/engine/rules/backend/inputValidation.js.map +1 -1
  17. package/dist/engine/rules/backend/jwt.js +8 -8
  18. package/dist/engine/rules/backend/jwt.js.map +1 -1
  19. package/dist/engine/rules/backend/rateLimit.js +8 -8
  20. package/dist/engine/rules/backend/rateLimit.js.map +1 -1
  21. package/dist/engine/rules/backend/sqlInjection.js +8 -8
  22. package/dist/engine/rules/backend/sqlInjection.js.map +1 -1
  23. package/dist/engine/rules/backend/tokenExpiry.js +9 -9
  24. package/dist/engine/rules/backend/tokenExpiry.js.map +1 -1
  25. package/dist/engine/rules/backend/tokenInUrl.js +8 -8
  26. package/dist/engine/rules/backend/tokenInUrl.js.map +1 -1
  27. package/dist/engine/rules/cicd/dependencies.js +7 -7
  28. package/dist/engine/rules/cicd/dependencies.js.map +1 -1
  29. package/dist/engine/rules/cicd/dockerfile.js +7 -7
  30. package/dist/engine/rules/cicd/dockerfile.js.map +1 -1
  31. package/dist/engine/rules/cicd/secrets.js +7 -7
  32. package/dist/engine/rules/cicd/secrets.js.map +1 -1
  33. package/dist/engine/rules/database/encryption.js +7 -7
  34. package/dist/engine/rules/database/encryption.js.map +1 -1
  35. package/dist/engine/rules/database/privileges.js +6 -6
  36. package/dist/engine/rules/database/privileges.js.map +1 -1
  37. package/dist/engine/rules/frontend/clickjacking.js +8 -7
  38. package/dist/engine/rules/frontend/clickjacking.js.map +1 -1
  39. package/dist/engine/rules/frontend/eval.js +5 -5
  40. package/dist/engine/rules/frontend/eval.js.map +1 -1
  41. package/dist/engine/rules/network/cors.js +1 -1
  42. package/dist/engine/rules/network/cors.js.map +1 -1
  43. package/dist/engine/rules/network/headers.js +1 -1
  44. package/dist/engine/rules/network/headers.js.map +1 -1
  45. package/dist/engine/rules/network/tls.js +3 -3
  46. package/dist/engine/rules/network/tls.js.map +1 -1
  47. package/dist/engine/rules/observability/logging.js +1 -1
  48. package/dist/engine/rules/observability/logging.js.map +1 -1
  49. package/dist/engine/scanner.js +9 -4
  50. package/dist/engine/scanner.js.map +1 -1
  51. package/dist/server.js +12 -12
  52. package/dist/server.js.map +1 -1
  53. package/package.json +1 -1
package/README.md CHANGED
@@ -1,5 +1,7 @@
1
1
  # Vibe Security
2
2
 
3
+ **Stable release: `1.0.0`**
4
+
3
5
  > **The security guard for Vibe Coded projects.** Every line of AI-generated Frontend or Backend code is planned, tested, and scanned across all layers and languages. Auto-fix patches included for the most common mistakes.
4
6
 
5
7
  [![npm](https://img.shields.io/npm/v/%40korayda4%2Fvibe-security?style=flat-square)](https://www.npmjs.com/package/@korayda4/vibe-security)
@@ -13,7 +15,7 @@
13
15
 
14
16
  Vibe Security is the **AI skill** for catching security mistakes in code generated by AI agents (Claude Code, VS Code Anthropic Claude extension, Cursor, Continue.dev).
15
17
 
16
- For every change in a Vibe Coded project, our skill:
18
+ For every change in a Vibe Coded project, the MCP server or CLI:
17
19
 
18
20
  1. **Plans** — maps the project's languages and frameworks (React, Next.js, Express, Django, .NET, etc.)
19
21
  2. **Tests** — runs the scan against 36 rules across 6 layers
@@ -21,6 +23,8 @@ For every change in a Vibe Coded project, our skill:
21
23
  4. **Explains** — every finding has CWE, OWASP, threat model, and step-by-step fix
22
24
  5. **Fixes** — auto-patch for the most common mistakes (FE-001 DOMPurify, FE-004 source maps, NET-002 CORS)
23
25
 
26
+ Finding snippets redact token-shaped values before they are written to `Security.md` or returned to an AI tool. Targeted language and layer scans keep results focused and token usage predictable.
27
+
24
28
  ---
25
29
 
26
30
  ## Install
@@ -69,6 +73,7 @@ After install, restart your editor. The `/securityCheck` slash command will be a
69
73
  /securityCheck --fix preview + apply auto-fixes
70
74
  /securityCheck --baseline only NEW findings vs baseline
71
75
  /securityCheck --rule BE-004 single rule
76
+ /securityCheck --format sarif SARIF output for CI
72
77
  ```
73
78
 
74
79
  Or talk to Claude naturally:
@@ -193,6 +198,8 @@ vibe-security scan . --baseline .vibe-security-baseline.json # PR branch
193
198
 
194
199
  Full GitHub Actions: [`examples/github-actions.yml`](examples/github-actions.yml).
195
200
 
201
+ Use `--layers frontend` or `--layers backend` for focused scans, and combine it with `--rules` when reviewing a specific control.
202
+
196
203
  ---
197
204
 
198
205
  ## Performance
@@ -1,4 +1,4 @@
1
- import type { Layer, Severity } from '../types.js';
1
+ import type { Language, Layer, Severity } from '../types.js';
2
2
  export interface AiSecurityConfig {
3
3
  readonly rules?: Record<string, {
4
4
  enabled?: boolean;
@@ -12,15 +12,18 @@ export interface AiSecurityConfig {
12
12
  readonly baseline?: string;
13
13
  readonly autoFix?: boolean;
14
14
  readonly layers?: readonly Layer[];
15
+ readonly languages?: readonly Language[];
15
16
  }
16
17
  export declare function loadConfig(rootDir: string): Promise<AiSecurityConfig>;
17
18
  export declare function mergeConfig(base: AiSecurityConfig, override: AiSecurityConfig): AiSecurityConfig;
18
19
  export declare function applyConfig(config: AiSecurityConfig, scanOptions: {
19
20
  layers?: readonly Layer[];
21
+ languages?: readonly Language[];
20
22
  ignore?: readonly string[];
21
23
  ruleIds?: readonly string[];
22
24
  }): {
23
25
  layers?: readonly Layer[];
26
+ languages?: readonly Language[];
24
27
  ignore: readonly string[];
25
28
  ruleIds?: readonly string[];
26
29
  };
@@ -26,6 +26,7 @@ export function mergeConfig(base, override) {
26
26
  baseline: override.baseline ?? base.baseline,
27
27
  autoFix: override.autoFix ?? base.autoFix,
28
28
  layers: override.layers ?? base.layers,
29
+ languages: override.languages ?? base.languages,
29
30
  };
30
31
  }
31
32
  export function applyConfig(config, scanOptions) {
@@ -34,6 +35,7 @@ export function applyConfig(config, scanOptions) {
34
35
  .map(([k]) => k);
35
36
  return {
36
37
  layers: config.layers ?? scanOptions.layers,
38
+ languages: config.languages ?? scanOptions.languages,
37
39
  ignore: [...(scanOptions.ignore ?? []), ...(config.ignore ?? [])],
38
40
  ruleIds: [...(scanOptions.ruleIds ?? []), ...disabledRuleIds],
39
41
  };
@@ -1 +1 @@
1
- {"version":3,"file":"config.js","sourceRoot":"","sources":["../../src/engine/config.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,kBAAkB,CAAC;AAClC,OAAO,IAAI,MAAM,WAAW,CAAC;AAe7B,MAAM,cAAc,GAAqB,EAAE,CAAC;AAE5C,MAAM,CAAC,KAAK,UAAU,UAAU,CAAC,OAAe;IAC9C,MAAM,UAAU,GAAG;QACjB,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE,qBAAqB,CAAC;QACzC,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE,uBAAuB,CAAC;KAC5C,CAAC;IAEF,KAAK,MAAM,IAAI,IAAI,UAAU,EAAE,CAAC;QAC9B,IAAI,CAAC;YACH,MAAM,GAAG,GAAG,MAAM,EAAE,CAAC,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC,CAAC;YAC5C,MAAM,MAAM,GAAG,IAAI,CAAC,KAAK,CAAC,GAAG,CAAqB,CAAC;YACnD,OAAO,WAAW,CAAC,cAAc,EAAE,MAAM,CAAC,CAAC;QAC7C,CAAC;QAAC,MAAM,CAAC;YACP,SAAS;QACX,CAAC;IACH,CAAC;IAED,OAAO,cAAc,CAAC;AACxB,CAAC;AAED,MAAM,UAAU,WAAW,CAAC,IAAsB,EAAE,QAA0B;IAC5E,OAAO;QACL,KAAK,EAAE,EAAE,GAAG,CAAC,IAAI,CAAC,KAAK,IAAI,EAAE,CAAC,EAAE,GAAG,CAAC,QAAQ,CAAC,KAAK,IAAI,EAAE,CAAC,EAAE;QAC3D,MAAM,EAAE,CAAC,GAAG,CAAC,IAAI,CAAC,MAAM,IAAI,EAAE,CAAC,EAAE,GAAG,CAAC,QAAQ,CAAC,MAAM,IAAI,EAAE,CAAC,CAAC;QAC5D,MAAM,EAAE,EAAE,GAAG,CAAC,IAAI,CAAC,MAAM,IAAI,EAAE,CAAC,EAAE,GAAG,CAAC,QAAQ,CAAC,MAAM,IAAI,EAAE,CAAC,EAAE;QAC9D,QAAQ,EAAE,QAAQ,CAAC,QAAQ,IAAI,IAAI,CAAC,QAAQ;QAC5C,OAAO,EAAE,QAAQ,CAAC,OAAO,IAAI,IAAI,CAAC,OAAO;QACzC,MAAM,EAAE,QAAQ,CAAC,MAAM,IAAI,IAAI,CAAC,MAAM;KACvC,CAAC;AACJ,CAAC;AAED,MAAM,UAAU,WAAW,CACzB,MAAwB,EACxB,WAAmG;IAEnG,MAAM,eAAe,GAAG,MAAM,CAAC,OAAO,CAAC,MAAM,CAAC,KAAK,IAAI,EAAE,CAAC;SACvD,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,OAAO,KAAK,KAAK,CAAC;SACtC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC;IAEnB,OAAO;QACL,MAAM,EAAE,MAAM,CAAC,MAAM,IAAI,WAAW,CAAC,MAAM;QAC3C,MAAM,EAAE,CAAC,GAAG,CAAC,WAAW,CAAC,MAAM,IAAI,EAAE,CAAC,EAAE,GAAG,CAAC,MAAM,CAAC,MAAM,IAAI,EAAE,CAAC,CAAC;QACjE,OAAO,EAAE,CAAC,GAAG,CAAC,WAAW,CAAC,OAAO,IAAI,EAAE,CAAC,EAAE,GAAG,eAAe,CAAC;KAC9D,CAAC;AACJ,CAAC"}
1
+ {"version":3,"file":"config.js","sourceRoot":"","sources":["../../src/engine/config.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,kBAAkB,CAAC;AAClC,OAAO,IAAI,MAAM,WAAW,CAAC;AAgB7B,MAAM,cAAc,GAAqB,EAAE,CAAC;AAE5C,MAAM,CAAC,KAAK,UAAU,UAAU,CAAC,OAAe;IAC9C,MAAM,UAAU,GAAG;QACjB,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE,qBAAqB,CAAC;QACzC,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE,uBAAuB,CAAC;KAC5C,CAAC;IAEF,KAAK,MAAM,IAAI,IAAI,UAAU,EAAE,CAAC;QAC9B,IAAI,CAAC;YACH,MAAM,GAAG,GAAG,MAAM,EAAE,CAAC,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC,CAAC;YAC5C,MAAM,MAAM,GAAG,IAAI,CAAC,KAAK,CAAC,GAAG,CAAqB,CAAC;YACnD,OAAO,WAAW,CAAC,cAAc,EAAE,MAAM,CAAC,CAAC;QAC7C,CAAC;QAAC,MAAM,CAAC;YACP,SAAS;QACX,CAAC;IACH,CAAC;IAED,OAAO,cAAc,CAAC;AACxB,CAAC;AAED,MAAM,UAAU,WAAW,CAAC,IAAsB,EAAE,QAA0B;IAC5E,OAAO;QACL,KAAK,EAAE,EAAE,GAAG,CAAC,IAAI,CAAC,KAAK,IAAI,EAAE,CAAC,EAAE,GAAG,CAAC,QAAQ,CAAC,KAAK,IAAI,EAAE,CAAC,EAAE;QAC3D,MAAM,EAAE,CAAC,GAAG,CAAC,IAAI,CAAC,MAAM,IAAI,EAAE,CAAC,EAAE,GAAG,CAAC,QAAQ,CAAC,MAAM,IAAI,EAAE,CAAC,CAAC;QAC5D,MAAM,EAAE,EAAE,GAAG,CAAC,IAAI,CAAC,MAAM,IAAI,EAAE,CAAC,EAAE,GAAG,CAAC,QAAQ,CAAC,MAAM,IAAI,EAAE,CAAC,EAAE;QAC9D,QAAQ,EAAE,QAAQ,CAAC,QAAQ,IAAI,IAAI,CAAC,QAAQ;QAC5C,OAAO,EAAE,QAAQ,CAAC,OAAO,IAAI,IAAI,CAAC,OAAO;QACzC,MAAM,EAAE,QAAQ,CAAC,MAAM,IAAI,IAAI,CAAC,MAAM;QACtC,SAAS,EAAE,QAAQ,CAAC,SAAS,IAAI,IAAI,CAAC,SAAS;KAChD,CAAC;AACJ,CAAC;AAED,MAAM,UAAU,WAAW,CACzB,MAAwB,EACxB,WAKC;IAOD,MAAM,eAAe,GAAG,MAAM,CAAC,OAAO,CAAC,MAAM,CAAC,KAAK,IAAI,EAAE,CAAC;SACvD,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,OAAO,KAAK,KAAK,CAAC;SACtC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC;IAEnB,OAAO;QACL,MAAM,EAAE,MAAM,CAAC,MAAM,IAAI,WAAW,CAAC,MAAM;QAC3C,SAAS,EAAE,MAAM,CAAC,SAAS,IAAI,WAAW,CAAC,SAAS;QACpD,MAAM,EAAE,CAAC,GAAG,CAAC,WAAW,CAAC,MAAM,IAAI,EAAE,CAAC,EAAE,GAAG,CAAC,MAAM,CAAC,MAAM,IAAI,EAAE,CAAC,CAAC;QACjE,OAAO,EAAE,CAAC,GAAG,CAAC,WAAW,CAAC,OAAO,IAAI,EAAE,CAAC,EAAE,GAAG,eAAe,CAAC;KAC9D,CAAC;AACJ,CAAC"}
@@ -63,7 +63,7 @@ export function toSarif(result) {
63
63
  tool: {
64
64
  driver: {
65
65
  name: 'Vibe Security',
66
- version: '0.1.0',
66
+ version: '1.0.0',
67
67
  informationUri: 'https://github.com/korayda4/Vibe-Security',
68
68
  rules: sarifRules,
69
69
  },
@@ -5,5 +5,6 @@ export declare function lineColumnFromIndex(source: string, index: number): {
5
5
  column: number;
6
6
  };
7
7
  export declare function snippetAt(source: string, line: number, contextLines?: number): string;
8
+ export declare function redactSensitiveValues(snippet: string): string;
8
9
  export declare function makeFinding(rule: Rule, ctx: RuleContext, matchIndex: number, matchLength: number, fix?: FixPatch): Finding;
9
10
  export declare function grepRule(rule: Rule, ctx: RuleContext, re: RegExp): Finding[];
@@ -27,7 +27,12 @@ export function snippetAt(source, line, contextLines = 1) {
27
27
  const lines = source.split(/\r?\n/);
28
28
  const start = Math.max(0, line - 1 - contextLines);
29
29
  const end = Math.min(lines.length, line + contextLines);
30
- return lines.slice(start, end).join('\n');
30
+ return redactSensitiveValues(lines.slice(start, end).join('\n'));
31
+ }
32
+ export function redactSensitiveValues(snippet) {
33
+ return snippet
34
+ .replace(/(\bBearer\s+)[A-Za-z0-9._~+/=-]{8,}/gi, '$1[REDACTED]')
35
+ .replace(/(\b(?:api[_-]?key|authorization|password|secret|token)\b\s*[:=]\s*["'`])[^"'`\r\n]+(["'`])/gi, '$1[REDACTED]$2');
31
36
  }
32
37
  export function makeFinding(rule, ctx, matchIndex, matchLength, fix) {
33
38
  const { line, column } = lineColumnFromIndex(ctx.source, matchIndex);
@@ -1 +1 @@
1
- {"version":3,"file":"_helpers.js","sourceRoot":"","sources":["../../../src/engine/rules/_helpers.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"_helpers.js","sourceRoot":"","sources":["../../../src/engine/rules/_helpers.ts"],"names":[],"mappings":"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"}
@@ -4,16 +4,16 @@ const rule = {
4
4
  title: 'Unsafe file upload (extension not validated, original filename used)',
5
5
  layer: 'backend',
6
6
  severity: 'high',
7
- description: 'Dosya yuklemesinde sadece `Content-Type` veya extension kontrol edilip sunucuda orijinal isimle saklanirsa, saldirgan `.php`, `.jsp`, `.aspx` veya web-accessible dizine script yukleyebilir (RCE).',
7
+ description: 'If file uploads only validate `Content-Type` or extension and then store the file on the server under its original name, an attacker can upload `.php`, `.jsp`, `.aspx`, or any web-accessible script (RCE).',
8
8
  threat: 'Remote code execution, XSS via SVG, web-shell upload',
9
- remediation: '1) **Magic bytes** ile gercek MIME tespit edin (`file-type` paketi, `python-magic`, vb.). ' +
10
- '2) Sadece izinli extension + MIME whitelist kabul edin (jpg, png, pdf, vb.). ' +
11
- '3) Dosyayi **UUID** ile yeniden adlandirin (orijinal ismi KULLANMAYIN). ' +
12
- '4) Sunucudan BAGIMSIZ depolama kullanin (S3, GCS, R2). Web root\'a yazmayin. ' +
13
- '5) Boyut limiti koyun (multipart maxFileSize). ' +
14
- '6) Antivirus / ClamAV ile tarayin. ' +
15
- '7) Content-Disposition: attachment ile zorla indirme sunun. ' +
16
- '8) SVG ve HTML\'i reddedin (XSS vektoru).',
9
+ remediation: '1) Detect the real MIME via **magic bytes** (e.g. `file-type` package, `python-magic`). ' +
10
+ '2) Allow only an explicit extension + MIME whitelist (jpg, png, pdf, etc.). ' +
11
+ '3) Rename the file with a **UUID** (do NOT keep the original name). ' +
12
+ '4) Store OUTSIDE the web root (S3, GCS, R2). Never write to a publicly served directory. ' +
13
+ '5) Enforce a size limit (multipart maxFileSize). ' +
14
+ '6) Scan with antivirus / ClamAV. ' +
15
+ '7) Force `Content-Disposition: attachment` for downloads. ' +
16
+ '8) Reject SVG and HTML (XSS vectors).',
17
17
  references: [
18
18
  'https://owasp.org/www-community/vulnerabilities/Unrestricted_File_Upload',
19
19
  'https://cheatsheetseries.owasp.org/cheatsheets/File_Upload_Cheat_Sheet.html',
@@ -1 +1 @@
1
- {"version":3,"file":"fileUpload.js","sourceRoot":"","sources":["../../../../src/engine/rules/backend/fileUpload.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,QAAQ,EAAE,MAAM,gBAAgB,CAAC;AAE1C,MAAM,IAAI,GAAS;IACjB,EAAE,EAAE,QAAQ;IACZ,KAAK,EAAE,sEAAsE;IAC7E,KAAK,EAAE,SAAS;IAChB,QAAQ,EAAE,MAAM;IAChB,WAAW,EACT,qMAAqM;IACvM,MAAM,EAAE,sDAAsD;IAC9D,WAAW,EACT,4FAA4F;QAC5F,+EAA+E;QAC/E,0EAA0E;QAC1E,+EAA+E;QAC/E,iDAAiD;QACjD,qCAAqC;QACrC,8DAA8D;QAC9D,2CAA2C;IAC7C,UAAU,EAAE;QACV,0EAA0E;QAC1E,6EAA6E;KAC9E;IACD,GAAG,EAAE,SAAS;IACd,KAAK,EAAE,0BAA0B;IACjC,SAAS,EAAE,CAAC,YAAY,EAAE,YAAY,EAAE,QAAQ,EAAE,MAAM,EAAE,IAAI,CAAC;IAC/D,KAAK,EAAE,CAAC,GAAG,EAAE,EAAE;QACb,MAAM,QAAQ,GAAa;YAC/B,uCAAuC;YACjC,+CAA+C;YACrD,uCAAuC;YACvC,oCAAoC;YACpC,2CAA2C;SACtC,CAAC;QAEF,MAAM,QAAQ,GAAG,EAAE,CAAC;QACpB,KAAK,MAAM,EAAE,IAAI,QAAQ,EAAE,CAAC;YAC1B,QAAQ,CAAC,IAAI,CAAC,GAAG,QAAQ,CAAC,IAAI,EAAE,GAAG,EAAE,EAAE,CAAC,CAAC,CAAC;QAC5C,CAAC;QACD,OAAO,QAAQ,CAAC;IAClB,CAAC;CACF,CAAC;AAEF,eAAe,IAAI,CAAC"}
1
+ {"version":3,"file":"fileUpload.js","sourceRoot":"","sources":["../../../../src/engine/rules/backend/fileUpload.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,QAAQ,EAAE,MAAM,gBAAgB,CAAC;AAE1C,MAAM,IAAI,GAAS;IACjB,EAAE,EAAE,QAAQ;IACZ,KAAK,EAAE,sEAAsE;IAC7E,KAAK,EAAE,SAAS;IAChB,QAAQ,EAAE,MAAM;IAChB,WAAW,EACT,8MAA8M;IAChN,MAAM,EAAE,sDAAsD;IAC9D,WAAW,EACT,0FAA0F;QAC1F,8EAA8E;QAC9E,sEAAsE;QACtE,2FAA2F;QAC3F,mDAAmD;QACnD,mCAAmC;QACnC,4DAA4D;QAC5D,uCAAuC;IACzC,UAAU,EAAE;QACV,0EAA0E;QAC1E,6EAA6E;KAC9E;IACD,GAAG,EAAE,SAAS;IACd,KAAK,EAAE,0BAA0B;IACjC,SAAS,EAAE,CAAC,YAAY,EAAE,YAAY,EAAE,QAAQ,EAAE,MAAM,EAAE,IAAI,CAAC;IAC/D,KAAK,EAAE,CAAC,GAAG,EAAE,EAAE;QACb,MAAM,QAAQ,GAAa;YAC/B,uCAAuC;YACjC,+CAA+C;YACrD,uCAAuC;YACvC,oCAAoC;YACpC,2CAA2C;SACtC,CAAC;QAEF,MAAM,QAAQ,GAAG,EAAE,CAAC;QACpB,KAAK,MAAM,EAAE,IAAI,QAAQ,EAAE,CAAC;YAC1B,QAAQ,CAAC,IAAI,CAAC,GAAG,QAAQ,CAAC,IAAI,EAAE,GAAG,EAAE,EAAE,CAAC,CAAC,CAAC;QAC5C,CAAC;QACD,OAAO,QAAQ,CAAC;IAClB,CAAC;CACF,CAAC;AAEF,eAAe,IAAI,CAAC"}
@@ -4,13 +4,13 @@ const rule = {
4
4
  title: 'Weak password hashing (MD5 / SHA-1 / SHA-256 / plain text)',
5
5
  layer: 'backend',
6
6
  severity: 'critical',
7
- description: 'Parolalar MD5, SHA1, SHA256 veya duz metin olarak saklandiginda, veritabani sizintisinda aninda kirilabilir. Modern GPU\'lar MD5\'i saniyede milyarlarca kez deneyebilir.',
7
+ description: 'Passwords stored as MD5, SHA1, SHA256, or plain text are trivially cracked the moment a database leaks. Modern GPUs can try billions of MD5 hashes per second.',
8
8
  threat: 'Mass credential disclosure, credential stuffing on other services',
9
- remediation: 'Parolalari **Argon2id** veya **bcrypt (work factor >= 12)** ile hashleyin. ' +
10
- 'Her kullanici icin unique salt (Argon2/bcrypt otomatik ekler). ' +
11
- 'Login sirasinda constant-time comparison kullanin. ' +
12
- 'Yeni uyelikte minimum 12 karakter sifre zorunlulugu + zayif sifre listesi (HIBP). ' +
13
- 'MFA\'yi yayginlastirin. Mevcut legacy hashleri acil olarak yeniden hashleyin.',
9
+ remediation: 'Hash passwords with **Argon2id** or **bcrypt (work factor >= 12)**. ' +
10
+ 'Use a unique salt per user (Argon2/bcrypt handles this automatically). ' +
11
+ 'Use constant-time comparison when verifying logins. ' +
12
+ 'Require minimum 12-character passwords + check against a breached-password list (e.g. HIBP) on signup. ' +
13
+ 'Roll out MFA broadly. Re-hash any legacy hashes immediately.',
14
14
  references: [
15
15
  'https://cheatsheetseries.owasp.org/cheatsheets/Password_Storage_Cheat_Sheet.html',
16
16
  'https://github.com/P-H-C/phc-string-format/blob/master/phc-sf-spec.md',
@@ -1 +1 @@
1
- {"version":3,"file":"hashing.js","sourceRoot":"","sources":["../../../../src/engine/rules/backend/hashing.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,QAAQ,EAAE,MAAM,gBAAgB,CAAC;AAE1C,MAAM,IAAI,GAAS;IACjB,EAAE,EAAE,QAAQ;IACZ,KAAK,EAAE,4DAA4D;IACnE,KAAK,EAAE,SAAS;IAChB,QAAQ,EAAE,UAAU;IACpB,WAAW,EACT,2KAA2K;IAC7K,MAAM,EAAE,mEAAmE;IAC3E,WAAW,EACT,6EAA6E;QAC7E,iEAAiE;QACjE,qDAAqD;QACrD,oFAAoF;QACpF,+EAA+E;IACjF,UAAU,EAAE;QACV,kFAAkF;QAClF,uEAAuE;QACvE,2EAA2E;KAC5E;IACD,GAAG,EAAE,SAAS;IACd,KAAK,EAAE,iCAAiC;IACxC,SAAS,EAAE,CAAC,YAAY,EAAE,YAAY,EAAE,QAAQ,EAAE,MAAM,EAAE,IAAI,CAAC;IAC/D,KAAK,EAAE,CAAC,GAAG,EAAE,EAAE;QACb,MAAM,QAAQ,GAAa;YAC/B,2GAA2G;YACrG,iDAAiD;YACjD,cAAc;YACd,eAAe;YACf,iBAAiB;YACvB,sDAAsD;YAChD,6CAA6C;SAC9C,CAAC;QAEF,MAAM,QAAQ,GAAG,EAAE,CAAC;QACpB,KAAK,MAAM,EAAE,IAAI,QAAQ,EAAE,CAAC;YAC1B,QAAQ,CAAC,IAAI,CAAC,GAAG,QAAQ,CAAC,IAAI,EAAE,GAAG,EAAE,EAAE,CAAC,CAAC,CAAC;QAC5C,CAAC;QACD,OAAO,QAAQ,CAAC;IAClB,CAAC;CACF,CAAC;AAEF,eAAe,IAAI,CAAC"}
1
+ {"version":3,"file":"hashing.js","sourceRoot":"","sources":["../../../../src/engine/rules/backend/hashing.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,QAAQ,EAAE,MAAM,gBAAgB,CAAC;AAE1C,MAAM,IAAI,GAAS;IACjB,EAAE,EAAE,QAAQ;IACZ,KAAK,EAAE,4DAA4D;IACnE,KAAK,EAAE,SAAS;IAChB,QAAQ,EAAE,UAAU;IACpB,WAAW,EACT,gKAAgK;IAClK,MAAM,EAAE,mEAAmE;IAC3E,WAAW,EACT,sEAAsE;QACtE,yEAAyE;QACzE,sDAAsD;QACtD,yGAAyG;QACzG,8DAA8D;IAChE,UAAU,EAAE;QACV,kFAAkF;QAClF,uEAAuE;QACvE,2EAA2E;KAC5E;IACD,GAAG,EAAE,SAAS;IACd,KAAK,EAAE,iCAAiC;IACxC,SAAS,EAAE,CAAC,YAAY,EAAE,YAAY,EAAE,QAAQ,EAAE,MAAM,EAAE,IAAI,CAAC;IAC/D,KAAK,EAAE,CAAC,GAAG,EAAE,EAAE;QACb,MAAM,QAAQ,GAAa;YAC/B,2GAA2G;YACrG,iDAAiD;YACjD,cAAc;YACd,eAAe;YACf,iBAAiB;YACvB,sDAAsD;YAChD,6CAA6C;SAC9C,CAAC;QAEF,MAAM,QAAQ,GAAG,EAAE,CAAC;QACpB,KAAK,MAAM,EAAE,IAAI,QAAQ,EAAE,CAAC;YAC1B,QAAQ,CAAC,IAAI,CAAC,GAAG,QAAQ,CAAC,IAAI,EAAE,GAAG,EAAE,EAAE,CAAC,CAAC,CAAC;QAC5C,CAAC;QACD,OAAO,QAAQ,CAAC;IAClB,CAAC;CACF,CAAC;AAEF,eAAe,IAAI,CAAC"}
@@ -4,14 +4,14 @@ const rule = {
4
4
  title: 'Potential IDOR / BOLA — ownership not verified',
5
5
  layer: 'backend',
6
6
  severity: 'high',
7
- description: '`GET /api/resource/:id`, `app.get(\'/users/:id\')` gibi endpoint\'lerde, ID\'nin varligi kontrol edilse bile o kaynagin gercek sahibinin istegi yapan kullanici olup olmadigi sorgulanmiyor. Saldirgan baska kullanicilarin verilerine erisebilir (BOLA Broken Object Level Authorization, OWASP API #1).',
8
- threat: 'Unauthorized data access account takeover, data breach, privacy violation',
9
- remediation: 'Her resource erisiminden once sunucu tarafinda suni sorgu ekleyin: ' +
7
+ description: 'On endpoints like `GET /api/resource/:id` or `app.get(\'/users/:id\')`, even when the ID\'s existence is checked, the code never verifies that the requesting user is the actual owner of that resource. Attackers can therefore access other users\' data (BOLA -- Broken Object Level Authorization, OWASP API #1).',
8
+ threat: 'Unauthorized data access -- account takeover, data breach, privacy violation',
9
+ remediation: 'Before returning any resource, add an ownership check on the server side: ' +
10
10
  '`await db.resource.findFirst({ where: { id, ownerId: session.userId } })`. ' +
11
- 'Ya da policy tabanli bir authz katmani kullanin (CASL, Oso, cerbos). ' +
12
- 'Sadece `findUnique({ where: { id } })` ile cekmek YETERSIZ. ' +
13
- 'Listeleme endpoint\'lerinde `where` filtresine her zaman `ownerId` ekleyin. ' +
14
- 'Audit log ile anomalileri izleyin.',
11
+ 'Or use a policy-based authorization layer (CASL, Oso, Cerbos). ' +
12
+ 'Fetching with only `findUnique({ where: { id } })` is INSUFFICIENT. ' +
13
+ 'Always include `ownerId` in the `where` filter of list endpoints. ' +
14
+ 'Monitor anomalies via audit logs.',
15
15
  references: [
16
16
  'https://owasp.org/API-Security/editions/2023/en/0xa1-broken-object-level-authorization/',
17
17
  'https://owasp.org/www-project-api-security/',
@@ -1 +1 @@
1
- {"version":3,"file":"idor.js","sourceRoot":"","sources":["../../../../src/engine/rules/backend/idor.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,QAAQ,EAAE,MAAM,gBAAgB,CAAC;AAE1C,MAAM,IAAI,GAAS;IACjB,EAAE,EAAE,QAAQ;IACZ,KAAK,EAAE,gDAAgD;IACvD,KAAK,EAAE,SAAS;IAChB,QAAQ,EAAE,MAAM;IAChB,WAAW,EACT,6SAA6S;IAC/S,MAAM,EAAE,6EAA6E;IACrF,WAAW,EACT,qEAAqE;QACrE,6EAA6E;QAC7E,uEAAuE;QACvE,8DAA8D;QAC9D,8EAA8E;QAC9E,oCAAoC;IACtC,UAAU,EAAE;QACV,yFAAyF;QACzF,6CAA6C;KAC9C;IACD,GAAG,EAAE,SAAS;IACd,KAAK,EAAE,gCAAgC;IACvC,SAAS,EAAE,CAAC,YAAY,EAAE,YAAY,EAAE,QAAQ,EAAE,MAAM,EAAE,IAAI,CAAC;IAC/D,KAAK,EAAE,CAAC,GAAG,EAAE,EAAE;QACjB,gFAAgF;QAC5E,MAAM,kBAAkB,GAAa;YACnC,oDAAoD;YACpD,mDAAmD;YACnD,kDAAkD;YAClD,gBAAgB;YAChB,eAAe;YACf,+BAA+B;SAChC,CAAC;QAEF,MAAM,QAAQ,GAAG,EAAE,CAAC;QACpB,KAAK,MAAM,EAAE,IAAI,kBAAkB,EAAE,CAAC;YACpC,QAAQ,CAAC,IAAI,CAAC,GAAG,QAAQ,CAAC,IAAI,EAAE,GAAG,EAAE,EAAE,CAAC,CAAC,CAAC;QAC5C,CAAC;QACD,OAAO,QAAQ,CAAC;IAClB,CAAC;CACF,CAAC;AAEF,eAAe,IAAI,CAAC"}
1
+ {"version":3,"file":"idor.js","sourceRoot":"","sources":["../../../../src/engine/rules/backend/idor.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,QAAQ,EAAE,MAAM,gBAAgB,CAAC;AAE1C,MAAM,IAAI,GAAS;IACjB,EAAE,EAAE,QAAQ;IACZ,KAAK,EAAE,gDAAgD;IACvD,KAAK,EAAE,SAAS;IAChB,QAAQ,EAAE,MAAM;IAChB,WAAW,EACT,uTAAuT;IACzT,MAAM,EAAE,8EAA8E;IACtF,WAAW,EACT,4EAA4E;QAC5E,6EAA6E;QAC7E,iEAAiE;QACjE,sEAAsE;QACtE,oEAAoE;QACpE,mCAAmC;IACrC,UAAU,EAAE;QACV,yFAAyF;QACzF,6CAA6C;KAC9C;IACD,GAAG,EAAE,SAAS;IACd,KAAK,EAAE,gCAAgC;IACvC,SAAS,EAAE,CAAC,YAAY,EAAE,YAAY,EAAE,QAAQ,EAAE,MAAM,EAAE,IAAI,CAAC;IAC/D,KAAK,EAAE,CAAC,GAAG,EAAE,EAAE;QACjB,gFAAgF;QAC5E,MAAM,kBAAkB,GAAa;YACnC,oDAAoD;YACpD,mDAAmD;YACnD,kDAAkD;YAClD,gBAAgB;YAChB,eAAe;YACf,+BAA+B;SAChC,CAAC;QAEF,MAAM,QAAQ,GAAG,EAAE,CAAC;QACpB,KAAK,MAAM,EAAE,IAAI,kBAAkB,EAAE,CAAC;YACpC,QAAQ,CAAC,IAAI,CAAC,GAAG,QAAQ,CAAC,IAAI,EAAE,GAAG,EAAE,EAAE,CAAC,CAAC,CAAC;QAC5C,CAAC;QACD,OAAO,QAAQ,CAAC;IAClB,CAAC;CACF,CAAC;AAEF,eAAe,IAAI,CAAC"}
@@ -4,13 +4,13 @@ const rule = {
4
4
  title: 'Mass assignment — input not validated against DTO',
5
5
  layer: 'backend',
6
6
  severity: 'high',
7
- description: '`req.body` veya `request.json()`\'i dogrudan ORM\'a vermek (prisma.user.create({ data: req.body })) mass assignment saldirisina aciktir. Saldirgan `role: "admin"`, `isAdmin: true`, `balance: 99999` gibi alanlari enjekte edebilir.',
7
+ description: 'Passing `req.body` or `request.json()` directly to the ORM (e.g. `prisma.user.create({ data: req.body })`) is open to mass-assignment attacks. Attackers can inject fields such as `role: "admin"`, `isAdmin: true`, or `balance: 99999`.',
8
8
  threat: 'Privilege escalation, data tampering, business logic bypass',
9
- remediation: '1) **Zod / Joi / class-validator** ile explicit DTO semasi tanimlayin. ' +
10
- '2) Schema\'da olmayan alanlari `.strict()` ile reddedin. ' +
11
- '3) Sadece schema\'da tanimli alanlari ORM\'a gecirin: `prisma.user.create({ data: parsed.data })`. ' +
12
- '4) `Object.assign(user, req.body)` veya spread `{...req.body, ...overrides}` yapilarindan kacinin. ' +
13
- '5) Default olarak tum update endpointleri "PUT yerine PATCH" ile alan-bazli olmali.',
9
+ remediation: '1) Define an explicit DTO schema with **Zod / Joi / class-validator**. ' +
10
+ '2) Reject any field not in the schema via `.strict()`. ' +
11
+ '3) Pass only the validated fields to the ORM: `prisma.user.create({ data: parsed.data })`. ' +
12
+ '4) Avoid patterns like `Object.assign(user, req.body)` or spreads `{...req.body, ...overrides}`. ' +
13
+ '5) Update endpoints should default to PATCH (per-field) instead of PUT (full replace).',
14
14
  references: [
15
15
  'https://cheatsheetseries.owasp.org/cheatsheets/Mass_Assignment_Cheat_Sheet.html',
16
16
  'https://zod.dev/',
@@ -1 +1 @@
1
- {"version":3,"file":"inputValidation.js","sourceRoot":"","sources":["../../../../src/engine/rules/backend/inputValidation.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,QAAQ,EAAE,MAAM,gBAAgB,CAAC;AAE1C,MAAM,IAAI,GAAS;IACjB,EAAE,EAAE,QAAQ;IACZ,KAAK,EAAE,mDAAmD;IAC1D,KAAK,EAAE,SAAS;IAChB,QAAQ,EAAE,MAAM;IAChB,WAAW,EACT,uOAAuO;IACzO,MAAM,EAAE,6DAA6D;IACrE,WAAW,EACT,yEAAyE;QACzE,2DAA2D;QAC3D,qGAAqG;QACrG,qGAAqG;QACrG,qFAAqF;IACvF,UAAU,EAAE;QACV,iFAAiF;QACjF,kBAAkB;KACnB;IACD,GAAG,EAAE,SAAS;IACd,KAAK,EAAE,0BAA0B;IACjC,SAAS,EAAE,CAAC,YAAY,EAAE,YAAY,EAAE,QAAQ,EAAE,MAAM,EAAE,IAAI,CAAC;IAC/D,KAAK,EAAE,CAAC,GAAG,EAAE,EAAE;QACb,MAAM,QAAQ,GAAa;YAC/B,8GAA8G;YACxG,gGAAgG;YACtG,8BAA8B;YAC9B,+BAA+B;YAC/B,iDAAiD;SAC5C,CAAC;QAEF,MAAM,QAAQ,GAAG,EAAE,CAAC;QACpB,KAAK,MAAM,EAAE,IAAI,QAAQ,EAAE,CAAC;YAC1B,QAAQ,CAAC,IAAI,CAAC,GAAG,QAAQ,CAAC,IAAI,EAAE,GAAG,EAAE,EAAE,CAAC,CAAC,CAAC;QAC5C,CAAC;QACD,OAAO,QAAQ,CAAC;IAClB,CAAC;CACF,CAAC;AAEF,eAAe,IAAI,CAAC"}
1
+ {"version":3,"file":"inputValidation.js","sourceRoot":"","sources":["../../../../src/engine/rules/backend/inputValidation.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,QAAQ,EAAE,MAAM,gBAAgB,CAAC;AAE1C,MAAM,IAAI,GAAS;IACjB,EAAE,EAAE,QAAQ;IACZ,KAAK,EAAE,mDAAmD;IAC1D,KAAK,EAAE,SAAS;IAChB,QAAQ,EAAE,MAAM;IAChB,WAAW,EACT,2OAA2O;IAC7O,MAAM,EAAE,6DAA6D;IACrE,WAAW,EACT,yEAAyE;QACzE,yDAAyD;QACzD,6FAA6F;QAC7F,mGAAmG;QACnG,wFAAwF;IAC1F,UAAU,EAAE;QACV,iFAAiF;QACjF,kBAAkB;KACnB;IACD,GAAG,EAAE,SAAS;IACd,KAAK,EAAE,0BAA0B;IACjC,SAAS,EAAE,CAAC,YAAY,EAAE,YAAY,EAAE,QAAQ,EAAE,MAAM,EAAE,IAAI,CAAC;IAC/D,KAAK,EAAE,CAAC,GAAG,EAAE,EAAE;QACb,MAAM,QAAQ,GAAa;YAC/B,8GAA8G;YACxG,gGAAgG;YACtG,8BAA8B;YAC9B,+BAA+B;YAC/B,iDAAiD;SAC5C,CAAC;QAEF,MAAM,QAAQ,GAAG,EAAE,CAAC;QACpB,KAAK,MAAM,EAAE,IAAI,QAAQ,EAAE,CAAC;YAC1B,QAAQ,CAAC,IAAI,CAAC,GAAG,QAAQ,CAAC,IAAI,EAAE,GAAG,EAAE,EAAE,CAAC,CAAC,CAAC;QAC5C,CAAC;QACD,OAAO,QAAQ,CAAC;IAClB,CAAC;CACF,CAAC;AAEF,eAAe,IAAI,CAAC"}
@@ -4,14 +4,14 @@ const rule = {
4
4
  title: 'Insecure JWT configuration (alg: none / weak secret / no verify)',
5
5
  layer: 'backend',
6
6
  severity: 'critical',
7
- description: 'JWT token uretimi veya dogrulamasi yapilirken `alg: none`, zayif HMAC secret, hardcoded secret veya `verify` atlama gibi hatalar yapildiginda saldirgan imzayi atlayip kendi token\'ini uretebilir.',
8
- threat: 'Authentication bypass full account takeover',
9
- remediation: '1) **Asla `alg: none`** kullanmayin; her zaman explicit `algorithms: [\'RS256\']` veya `[\'HS256\']` whitelist edin. ' +
10
- '2) HMAC secret\'i en az 256-bit (32 byte) random uretin, **asla** commit\'lemeyin. Asimetrik (RS256/ES256) tercih edin. ' +
11
- '3) `jwt.verify()` her zaman cagirin, payload\'i dogrudan kabul etmeyin. ' +
12
- '4) `exp`, `iss`, `aud` claim\'lerini dogrulayin. ' +
13
- '5) Access token\'i 15 dakika ile sinirlayin, refresh token icin rotation + revocation store kullanin. ' +
14
- '6) `Authorization: Bearer` basligini okuyun, query string\'de token tasimalarini reddedin.',
7
+ description: 'When JWT tokens are issued or verified with mistakes such as `alg: none`, a weak HMAC secret, a hardcoded secret, or skipped verification, attackers can bypass the signature and forge their own tokens.',
8
+ threat: 'Authentication bypass -- full account takeover',
9
+ remediation: '1) **Never use `alg: none`**; always whitelist an explicit `algorithms: [\'RS256\']` or `[\'HS256\']`. ' +
10
+ '2) Generate HMAC secrets with at least 256 bits (32 bytes) of randomness and **never** commit them. Prefer asymmetric algorithms (RS256/ES256). ' +
11
+ '3) Always call `jwt.verify()`; never trust a decoded payload directly. ' +
12
+ '4) Validate the `exp`, `iss`, and `aud` claims. ' +
13
+ '5) Limit access tokens to ~15 minutes; use rotation + a revocation store for refresh tokens. ' +
14
+ '6) Read tokens from the `Authorization: Bearer` header; reject tokens passed via query string.',
15
15
  references: [
16
16
  'https://cheatsheetseries.owasp.org/cheatsheets/JSON_Web_Token_for_Java_Cheat_Sheet.html',
17
17
  'https://datatracker.ietf.org/doc/html/rfc8725',
@@ -1 +1 @@
1
- {"version":3,"file":"jwt.js","sourceRoot":"","sources":["../../../../src/engine/rules/backend/jwt.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,QAAQ,EAAE,MAAM,gBAAgB,CAAC;AAE1C,MAAM,IAAI,GAAS;IACjB,EAAE,EAAE,QAAQ;IACZ,KAAK,EAAE,kEAAkE;IACzE,KAAK,EAAE,SAAS;IAChB,QAAQ,EAAE,UAAU;IACpB,WAAW,EACT,qMAAqM;IACvM,MAAM,EAAE,+CAA+C;IACvD,WAAW,EACT,uHAAuH;QACvH,0HAA0H;QAC1H,0EAA0E;QAC1E,mDAAmD;QACnD,wGAAwG;QACxG,4FAA4F;IAC9F,UAAU,EAAE;QACV,yFAAyF;QACzF,+CAA+C;QAC/C,8EAA8E;KAC/E;IACD,GAAG,EAAE,SAAS;IACd,KAAK,EAAE,iCAAiC;IACxC,SAAS,EAAE,CAAC,YAAY,EAAE,YAAY,EAAE,QAAQ,EAAE,MAAM,EAAE,IAAI,CAAC;IAC/D,KAAK,EAAE,CAAC,GAAG,EAAE,EAAE;QACb,MAAM,QAAQ,GAAa;YACzB,qCAAqC;YACrC,4CAA4C;YAC5C,yCAAyC;YACzC,0BAA0B,EAAE,wBAAwB;YACpD,2DAA2D,EAAE,yBAAyB;YACtF,+CAA+C;YAC/C,sBAAsB;YACtB,eAAe;SAChB,CAAC;QAEF,MAAM,QAAQ,GAAG,EAAE,CAAC;QACpB,KAAK,MAAM,EAAE,IAAI,QAAQ,EAAE,CAAC;YAC1B,QAAQ,CAAC,IAAI,CAAC,GAAG,QAAQ,CAAC,IAAI,EAAE,GAAG,EAAE,EAAE,CAAC,CAAC,CAAC;QAC5C,CAAC;QACD,OAAO,QAAQ,CAAC;IAClB,CAAC;CACF,CAAC;AAEF,eAAe,IAAI,CAAC"}
1
+ {"version":3,"file":"jwt.js","sourceRoot":"","sources":["../../../../src/engine/rules/backend/jwt.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,QAAQ,EAAE,MAAM,gBAAgB,CAAC;AAE1C,MAAM,IAAI,GAAS;IACjB,EAAE,EAAE,QAAQ;IACZ,KAAK,EAAE,kEAAkE;IACzE,KAAK,EAAE,SAAS;IAChB,QAAQ,EAAE,UAAU;IACpB,WAAW,EACT,2MAA2M;IAC7M,MAAM,EAAE,gDAAgD;IACxD,WAAW,EACT,yGAAyG;QACzG,kJAAkJ;QAClJ,yEAAyE;QACzE,kDAAkD;QAClD,+FAA+F;QAC/F,gGAAgG;IAClG,UAAU,EAAE;QACV,yFAAyF;QACzF,+CAA+C;QAC/C,8EAA8E;KAC/E;IACD,GAAG,EAAE,SAAS;IACd,KAAK,EAAE,iCAAiC;IACxC,SAAS,EAAE,CAAC,YAAY,EAAE,YAAY,EAAE,QAAQ,EAAE,MAAM,EAAE,IAAI,CAAC;IAC/D,KAAK,EAAE,CAAC,GAAG,EAAE,EAAE;QACb,MAAM,QAAQ,GAAa;YACzB,qCAAqC;YACrC,4CAA4C;YAC5C,yCAAyC;YACzC,0BAA0B,EAAE,wBAAwB;YACpD,2DAA2D,EAAE,yBAAyB;YACtF,+CAA+C;YAC/C,sBAAsB;YACtB,eAAe;SAChB,CAAC;QAEF,MAAM,QAAQ,GAAG,EAAE,CAAC;QACpB,KAAK,MAAM,EAAE,IAAI,QAAQ,EAAE,CAAC;YAC1B,QAAQ,CAAC,IAAI,CAAC,GAAG,QAAQ,CAAC,IAAI,EAAE,GAAG,EAAE,EAAE,CAAC,CAAC,CAAC;QAC5C,CAAC;QACD,OAAO,QAAQ,CAAC;IAClB,CAAC;CACF,CAAC;AAEF,eAAe,IAAI,CAAC"}
@@ -4,15 +4,15 @@ const rule = {
4
4
  title: 'Missing rate limiting / throttling on sensitive endpoints',
5
5
  layer: 'backend',
6
6
  severity: 'medium',
7
- description: 'Login, signup, password reset, OTP dogrulama gibi endpointlerde rate limiting yoksa brute-force, credential stuffing ve DoS kolaylastirilir.',
7
+ description: 'Without rate limiting on endpoints such as login, signup, password reset, or OTP verification, brute-force, credential stuffing, and denial-of-service become trivial.',
8
8
  threat: 'Brute force, credential stuffing, OTP enumeration, denial of service, scraping',
9
- remediation: '1) **express-rate-limit**, **rate-limiter-flexible**, **slowapi** (Python) kullanin. ' +
10
- '2) IP bazli + user/token bazli iki katman uygulayin. ' +
11
- '3) Login endpointleri icin 5 deneme / 15 dakika cap\'i koyun. ' +
12
- '4) Exponential backoff ile basarisiz denemeleri yavaslatin. ' +
13
- '5) 5 basarisiz denemede account\'u gecici kilitleyin + kullaniciya bildirim gonderin. ' +
14
- '6) Captcha veya Turnstile ekleyin. ' +
15
- '7) Edge seviyesinde (Cloudflare, API Gateway) global limit ekleyin.',
9
+ remediation: '1) Use **express-rate-limit**, **rate-limiter-flexible**, or **slowapi** (Python). ' +
10
+ '2) Apply two layers: IP-based AND user/token-based. ' +
11
+ '3) For login endpoints, cap at ~5 attempts per 15 minutes per IP+user. ' +
12
+ '4) Slow failed attempts with exponential backoff. ' +
13
+ '5) After 5 failures, temporarily lock the account and notify the user. ' +
14
+ '6) Add CAPTCHA or Turnstile on sensitive flows. ' +
15
+ '7) Apply a global rate limit at the edge (Cloudflare, API Gateway).',
16
16
  references: [
17
17
  'https://owasp.org/www-community/controls/Blocking_Brute_Force_Attacks',
18
18
  'https://cheatsheetseries.owasp.org/cheatsheets/Authentication_Cheat_Sheet.html#login-throttling',
@@ -1 +1 @@
1
- {"version":3,"file":"rateLimit.js","sourceRoot":"","sources":["../../../../src/engine/rules/backend/rateLimit.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,QAAQ,EAAE,MAAM,gBAAgB,CAAC;AAE1C,MAAM,IAAI,GAAS;IACjB,EAAE,EAAE,QAAQ;IACZ,KAAK,EAAE,2DAA2D;IAClE,KAAK,EAAE,SAAS;IAChB,QAAQ,EAAE,QAAQ;IAClB,WAAW,EACT,8IAA8I;IAChJ,MAAM,EAAE,gFAAgF;IACxF,WAAW,EACT,uFAAuF;QACvF,uDAAuD;QACvD,gEAAgE;QAChE,8DAA8D;QAC9D,wFAAwF;QACxF,qCAAqC;QACrC,qEAAqE;IACvE,UAAU,EAAE;QACV,uEAAuE;QACvE,iGAAiG;KAClG;IACD,GAAG,EAAE,SAAS;IACd,KAAK,EAAE,qDAAqD;IAC5D,SAAS,EAAE,CAAC,YAAY,EAAE,YAAY,EAAE,QAAQ,EAAE,MAAM,EAAE,IAAI,CAAC;IAC/D,KAAK,EAAE,CAAC,GAAG,EAAE,EAAE;QACb,MAAM,YAAY,GAChB,0DAA0D,CAAC,IAAI,CAAC,GAAG,CAAC,YAAY,CAAC;YACjF,cAAc,CAAC,IAAI,CAAC,GAAG,CAAC,YAAY,CAAC;YACrC,UAAU,CAAC,IAAI,CAAC,GAAG,CAAC,YAAY,CAAC,CAAC;QAEpC,IAAI,CAAC,YAAY;YAAE,OAAO,EAAE,CAAC;QAE7B,MAAM,YAAY,GAChB,0EAA0E,CAAC,IAAI,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC;QAE9F,IAAI,YAAY;YAAE,OAAO,EAAE,CAAC;QAE5B,MAAM,UAAU,GAAG;YACjB,2IAA2I;YAC3I,+GAA+G;YAC/G,gHAAgH;SACjH,CAAC;QAEF,MAAM,QAAQ,GAAG,EAAE,CAAC;QACpB,KAAK,MAAM,EAAE,IAAI,UAAU,EAAE,CAAC;YAC5B,QAAQ,CAAC,IAAI,CAAC,GAAG,QAAQ,CAAC,IAAI,EAAE,GAAG,EAAE,EAAE,CAAC,CAAC,CAAC;QAC5C,CAAC;QACD,OAAO,QAAQ,CAAC;IAClB,CAAC;CACF,CAAC;AAEF,eAAe,IAAI,CAAC"}
1
+ {"version":3,"file":"rateLimit.js","sourceRoot":"","sources":["../../../../src/engine/rules/backend/rateLimit.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,QAAQ,EAAE,MAAM,gBAAgB,CAAC;AAE1C,MAAM,IAAI,GAAS;IACjB,EAAE,EAAE,QAAQ;IACZ,KAAK,EAAE,2DAA2D;IAClE,KAAK,EAAE,SAAS;IAChB,QAAQ,EAAE,QAAQ;IAClB,WAAW,EACT,wKAAwK;IAC1K,MAAM,EAAE,gFAAgF;IACxF,WAAW,EACT,qFAAqF;QACrF,sDAAsD;QACtD,yEAAyE;QACzE,oDAAoD;QACpD,yEAAyE;QACzE,kDAAkD;QAClD,qEAAqE;IACvE,UAAU,EAAE;QACV,uEAAuE;QACvE,iGAAiG;KAClG;IACD,GAAG,EAAE,SAAS;IACd,KAAK,EAAE,qDAAqD;IAC5D,SAAS,EAAE,CAAC,YAAY,EAAE,YAAY,EAAE,QAAQ,EAAE,MAAM,EAAE,IAAI,CAAC;IAC/D,KAAK,EAAE,CAAC,GAAG,EAAE,EAAE;QACb,MAAM,YAAY,GAChB,0DAA0D,CAAC,IAAI,CAAC,GAAG,CAAC,YAAY,CAAC;YACjF,cAAc,CAAC,IAAI,CAAC,GAAG,CAAC,YAAY,CAAC;YACrC,UAAU,CAAC,IAAI,CAAC,GAAG,CAAC,YAAY,CAAC,CAAC;QAEpC,IAAI,CAAC,YAAY;YAAE,OAAO,EAAE,CAAC;QAE7B,MAAM,YAAY,GAChB,0EAA0E,CAAC,IAAI,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC;QAE9F,IAAI,YAAY;YAAE,OAAO,EAAE,CAAC;QAE5B,MAAM,UAAU,GAAG;YACjB,2IAA2I;YAC3I,+GAA+G;YAC/G,gHAAgH;SACjH,CAAC;QAEF,MAAM,QAAQ,GAAG,EAAE,CAAC;QACpB,KAAK,MAAM,EAAE,IAAI,UAAU,EAAE,CAAC;YAC5B,QAAQ,CAAC,IAAI,CAAC,GAAG,QAAQ,CAAC,IAAI,EAAE,GAAG,EAAE,EAAE,CAAC,CAAC,CAAC;QAC5C,CAAC;QACD,OAAO,QAAQ,CAAC;IAClB,CAAC;CACF,CAAC;AAEF,eAAe,IAAI,CAAC"}
@@ -4,15 +4,15 @@ const rule = {
4
4
  title: 'SQL / NoSQL injection via string concatenation',
5
5
  layer: 'backend',
6
6
  severity: 'critical',
7
- description: 'SQL sorgulari veya NoSQL filtreleri string concatenation / template literals ile olusturuldugunda, kullanici girdisi sorgu yapisina enjekte edilebilir. ' +
8
- 'Senaryolar: `query: "SELECT * FROM users WHERE id = " + req.params.id` veya `db.users.find({ $where: req.body.filter })` gibi.',
7
+ description: 'When SQL queries or NoSQL filters are built via string concatenation or template literals, user input can be injected into the query structure. ' +
8
+ 'Examples: `query: "SELECT * FROM users WHERE id = " + req.params.id` or `db.users.find({ $where: req.body.filter })`.',
9
9
  threat: 'Data breach, authentication bypass, remote code execution (DB-specific), full DB compromise',
10
- remediation: '1) **Parametrik sorgular** / prepared statements kullanin: `db.query(\'SELECT * FROM users WHERE id = $1\', [id])`. ' +
11
- '2) ORM (Prisma, TypeORM, Sequelize, SQLAlchemy) otomatik parameterize eder. ' +
12
- '3) String concatenation ile SQL asla olusturmayin. ' +
13
- '4) NoSQL: `$where`, `$function`, `$regex` gibi operatorlari kullanici girdisinden GEÇMEYIN; explicit whitelist kullanin. ' +
14
- '5) Stored procedure kullaniyorsaniz bile icindeki SQL\'i dinamik olusturmayin. ' +
15
- '6) Tum user input\'u once validate edin (Zod, Joi, class-validator).',
10
+ remediation: '1) Use **parameterized queries** / prepared statements: `db.query(\'SELECT * FROM users WHERE id = $1\', [id])`. ' +
11
+ '2) ORMs (Prisma, TypeORM, Sequelize, SQLAlchemy) parameterize automatically. ' +
12
+ '3) Never build SQL via string concatenation. ' +
13
+ '4) NoSQL: NEVER pass user input to operators like `$where`, `$function`, or `$regex`; use an explicit whitelist. ' +
14
+ '5) Even when using stored procedures, never build SQL dynamically inside them. ' +
15
+ '6) Validate all user input first (Zod, Joi, class-validator).',
16
16
  references: [
17
17
  'https://owasp.org/www-community/attacks/SQL_Injection',
18
18
  'https://cheatsheetseries.owasp.org/cheatsheets/SQL_Injection_Prevention_Cheat_Sheet.html',
@@ -1 +1 @@
1
- {"version":3,"file":"sqlInjection.js","sourceRoot":"","sources":["../../../../src/engine/rules/backend/sqlInjection.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,QAAQ,EAAE,MAAM,gBAAgB,CAAC;AAE1C,MAAM,IAAI,GAAS;IACjB,EAAE,EAAE,QAAQ;IACZ,KAAK,EAAE,gDAAgD;IACvD,KAAK,EAAE,SAAS;IAChB,QAAQ,EAAE,UAAU;IACpB,WAAW,EACT,0JAA0J;QAC1J,gIAAgI;IAClI,MAAM,EAAE,6FAA6F;IACrG,WAAW,EACT,sHAAsH;QACtH,8EAA8E;QAC9E,qDAAqD;QACrD,2HAA2H;QAC3H,iFAAiF;QACjF,sEAAsE;IACxE,UAAU,EAAE;QACV,uDAAuD;QACvD,0FAA0F;QAC1F,8DAA8D;KAC/D;IACD,GAAG,EAAE,QAAQ;IACb,KAAK,EAAE,oBAAoB;IAC3B,SAAS,EAAE,CAAC,YAAY,EAAE,YAAY,EAAE,QAAQ,EAAE,MAAM,EAAE,IAAI,CAAC;IAC/D,KAAK,EAAE,CAAC,GAAG,EAAE,EAAE;QACb,MAAM,QAAQ,GAAa;YAC/B,mHAAmH;YAC7G,gHAAgH;YACtH,oFAAoF;YAC9E,uEAAuE;YAC7E,sEAAsE;YACtE,0CAA0C;SACrC,CAAC;QAEF,MAAM,QAAQ,GAAG,EAAE,CAAC;QACpB,KAAK,MAAM,EAAE,IAAI,QAAQ,EAAE,CAAC;YAC1B,QAAQ,CAAC,IAAI,CAAC,GAAG,QAAQ,CAAC,IAAI,EAAE,GAAG,EAAE,EAAE,CAAC,CAAC,CAAC;QAC5C,CAAC;QACD,OAAO,QAAQ,CAAC;IAClB,CAAC;CACF,CAAC;AAEF,eAAe,IAAI,CAAC"}
1
+ {"version":3,"file":"sqlInjection.js","sourceRoot":"","sources":["../../../../src/engine/rules/backend/sqlInjection.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,QAAQ,EAAE,MAAM,gBAAgB,CAAC;AAE1C,MAAM,IAAI,GAAS;IACjB,EAAE,EAAE,QAAQ;IACZ,KAAK,EAAE,gDAAgD;IACvD,KAAK,EAAE,SAAS;IAChB,QAAQ,EAAE,UAAU;IACpB,WAAW,EACT,kJAAkJ;QAClJ,uHAAuH;IACzH,MAAM,EAAE,6FAA6F;IACrG,WAAW,EACT,mHAAmH;QACnH,+EAA+E;QAC/E,+CAA+C;QAC/C,mHAAmH;QACnH,iFAAiF;QACjF,+DAA+D;IACjE,UAAU,EAAE;QACV,uDAAuD;QACvD,0FAA0F;QAC1F,8DAA8D;KAC/D;IACD,GAAG,EAAE,QAAQ;IACb,KAAK,EAAE,oBAAoB;IAC3B,SAAS,EAAE,CAAC,YAAY,EAAE,YAAY,EAAE,QAAQ,EAAE,MAAM,EAAE,IAAI,CAAC;IAC/D,KAAK,EAAE,CAAC,GAAG,EAAE,EAAE;QACb,MAAM,QAAQ,GAAa;YAC/B,mHAAmH;YAC7G,gHAAgH;YACtH,oFAAoF;YAC9E,uEAAuE;YAC7E,sEAAsE;YACtE,0CAA0C;SACrC,CAAC;QAEF,MAAM,QAAQ,GAAG,EAAE,CAAC;QACpB,KAAK,MAAM,EAAE,IAAI,QAAQ,EAAE,CAAC;YAC1B,QAAQ,CAAC,IAAI,CAAC,GAAG,QAAQ,CAAC,IAAI,EAAE,GAAG,EAAE,EAAE,CAAC,CAAC,CAAC;QAC5C,CAAC;QACD,OAAO,QAAQ,CAAC;IAClB,CAAC;CACF,CAAC;AAEF,eAAe,IAAI,CAAC"}
@@ -4,15 +4,15 @@ const rule = {
4
4
  title: 'Long-lived token — missing or excessive expiry',
5
5
  layer: 'backend',
6
6
  severity: 'high',
7
- description: 'JWT access token\'larinda `expiresIn` claim yoksa veya asiri uzunsa (30 gun+) token sizdirildiginda sonsuza kadar gecerli kalir. Ayni sekilde session cookie maxAge > 24 saat veya "remember me" tarzi kalici oturumlar kontrolsuzse saldırganin eline gecmis token ile yapacagi hasar sinirsiz olur.',
8
- threat: 'Stolen token remains valid indefinitely no logout, no password reset can revoke access',
9
- remediation: '1) **Access token** icin `expiresIn: \'15m\'` veya daha kisa (5m). ' +
10
- '2) **Refresh token** icin 7-30 gun + her kullanimda rotation + revocation store (Redis). ' +
11
- '3) `jwt.sign()`\'de mutlaka `expiresIn` veya `exp` belirt, default davranisa guvenme. ' +
12
- '4) `jwt.verify()`\'de `maxAge` veya explicit `exp` kontrolu yap. ' +
13
- '5) `req.session.cookie.maxAge` 24 saatten fazla olmasin. ' +
14
- '6) "Remember me" icin ayri, rotation\'lu, revocation\'lu token uret. ' +
15
- '7) Tum sizdirilmis token\'lar icin blacklist / revocation list tut.',
7
+ description: 'JWT access tokens with no `expiresIn` claim, or with excessively long lifetimes (30+ days), remain valid forever once leaked. The same goes for session cookies with `maxAge > 24h` or uncontrolled "remember me" tokens -- a stolen token can then cause unlimited damage.',
8
+ threat: 'Stolen token remains valid indefinitely -- no logout, no password reset can revoke access',
9
+ remediation: '1) For **access tokens** use `expiresIn: \'15m\'` or shorter (5m). ' +
10
+ '2) For **refresh tokens** use 7-30 days + rotation on every use + a revocation store (Redis). ' +
11
+ '3) Always specify `expiresIn` (or `exp`) in `jwt.sign()` -- never rely on the library default. ' +
12
+ '4) In `jwt.verify()`, enforce `maxAge` or an explicit `exp` check. ' +
13
+ '5) Keep `req.session.cookie.maxAge` under 24 hours. ' +
14
+ '6) For "Remember me", issue a separate token with rotation and revocation. ' +
15
+ '7) Maintain a blacklist / revocation list for any leaked tokens.',
16
16
  references: [
17
17
  'https://datatracker.ietf.org/doc/html/rfc8725#section-3.12',
18
18
  'https://cheatsheetseries.owasp.org/cheatsheets/JSON_Web_Token_for_Java_Cheat_Sheet.html#token-expiration',
@@ -1 +1 @@
1
- {"version":3,"file":"tokenExpiry.js","sourceRoot":"","sources":["../../../../src/engine/rules/backend/tokenExpiry.ts"],"names":[],"mappings":"AACA,OAAO,EAAY,mBAAmB,EAAE,SAAS,EAAE,MAAM,gBAAgB,CAAC;AAE1E,MAAM,IAAI,GAAS;IACjB,EAAE,EAAE,QAAQ;IACZ,KAAK,EAAE,gDAAgD;IACvD,KAAK,EAAE,SAAS;IAChB,QAAQ,EAAE,MAAM;IAChB,WAAW,EACT,uSAAuS;IACzS,MAAM,EACJ,0FAA0F;IAC5F,WAAW,EACT,qEAAqE;QACrE,2FAA2F;QAC3F,wFAAwF;QACxF,mEAAmE;QACnE,2DAA2D;QAC3D,uEAAuE;QACvE,qEAAqE;IACvE,UAAU,EAAE;QACV,4DAA4D;QAC5D,0GAA0G;QAC1G,0EAA0E;KAC3E;IACD,GAAG,EAAE,SAAS;IACd,KAAK,EAAE,qDAAqD;IAC5D,SAAS,EAAE,CAAC,YAAY,EAAE,YAAY,EAAE,QAAQ,EAAE,MAAM,EAAE,IAAI,CAAC;IAC/D,KAAK,EAAE,CAAC,GAAG,EAAE,EAAE;QACb,MAAM,QAAQ,GAAG,EAAE,CAAC;QACxB,MAAM,UAAU,GAAG;YACb,oFAAoF;YACpF,wCAAwC,EAAE,WAAW;YACrD,6CAA6C,EAAE,gBAAgB;YAC/D,0CAA0C;YAC1C,iCAAiC;SAClC,CAAC;QAEF,KAAK,MAAM,EAAE,IAAI,UAAU,EAAE,CAAC;YAC5B,KAAK,MAAM,CAAC,IAAI,GAAG,CAAC,MAAM,CAAC,QAAQ,CAAC,EAAE,CAAC,EAAE,CAAC;gBACxC,IAAI,CAAC,CAAC,KAAK,KAAK,SAAS;oBAAE,SAAS;gBACpC,MAAM,EAAE,IAAI,EAAE,GAAG,mBAAmB,CAAC,GAAG,CAAC,MAAM,EAAE,CAAC,CAAC,KAAK,CAAC,CAAC;gBAC1D,QAAQ,CAAC,IAAI,CAAC;oBACZ,EAAE,EAAE,GAAG,IAAI,CAAC,EAAE,IAAI,GAAG,CAAC,YAAY,IAAI,IAAI,IAAI;oBAC9C,MAAM,EAAE,IAAI,CAAC,EAAE;oBACf,KAAK,EAAE,IAAI,CAAC,KAAK;oBACjB,KAAK,EAAE,IAAI,CAAC,KAAK;oBACjB,QAAQ,EAAE,IAAI,CAAC,QAAQ;oBACvB,IAAI,EAAE,GAAG,CAAC,YAAY;oBACtB,KAAK,EAAE,EAAE,OAAO,EAAE,SAAS,CAAC,GAAG,CAAC,MAAM,EAAE,IAAI,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,CAAC,CAAC,KAAK,EAAE;oBACtE,WAAW,EAAE,IAAI,CAAC,WAAW;oBAC7B,MAAM,EAAE,IAAI,CAAC,MAAM;oBACnB,WAAW,EAAE,IAAI,CAAC,WAAW;oBAC7B,UAAU,EAAE,IAAI,CAAC,UAAU;oBAC3B,GAAG,EAAE,IAAI,CAAC,GAAG;oBACb,KAAK,EAAE,IAAI,CAAC,KAAK;iBAClB,CAAC,CAAC;YACL,CAAC;QACH,CAAC;QACL,MAAM,WAAW,GAAG;YACd,sDAAsD,EAAE,YAAY;YACpE,0CAA0C,EAAE,6BAA6B;SAC1E,CAAC;QAEF,KAAK,MAAM,EAAE,IAAI,WAAW,EAAE,CAAC;YAC7B,KAAK,MAAM,CAAC,IAAI,GAAG,CAAC,MAAM,CAAC,QAAQ,CAAC,EAAE,CAAC,EAAE,CAAC;gBACxC,IAAI,CAAC,CAAC,KAAK,KAAK,SAAS;oBAAE,SAAS;gBACpC,MAAM,EAAE,IAAI,EAAE,GAAG,mBAAmB,CAAC,GAAG,CAAC,MAAM,EAAE,CAAC,CAAC,KAAK,CAAC,CAAC;gBAC1D,QAAQ,CAAC,IAAI,CAAC;oBACZ,EAAE,EAAE,GAAG,IAAI,CAAC,EAAE,IAAI,GAAG,CAAC,YAAY,IAAI,IAAI,IAAI;oBAC9C,MAAM,EAAE,IAAI,CAAC,EAAE;oBACf,KAAK,EAAE,IAAI,CAAC,KAAK;oBACjB,KAAK,EAAE,IAAI,CAAC,KAAK;oBACjB,QAAQ,EAAE,IAAI,CAAC,QAAQ;oBACvB,IAAI,EAAE,GAAG,CAAC,YAAY;oBACtB,KAAK,EAAE,EAAE,OAAO,EAAE,SAAS,CAAC,GAAG,CAAC,MAAM,EAAE,IAAI,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,CAAC,CAAC,KAAK,EAAE;oBACtE,WAAW,EAAE,IAAI,CAAC,WAAW;oBAC7B,MAAM,EAAE,IAAI,CAAC,MAAM;oBACnB,WAAW,EAAE,IAAI,CAAC,WAAW;oBAC7B,UAAU,EAAE,IAAI,CAAC,UAAU;oBAC3B,GAAG,EAAE,IAAI,CAAC,GAAG;oBACb,KAAK,EAAE,IAAI,CAAC,KAAK;iBAClB,CAAC,CAAC;YACL,CAAC;QACH,CAAC;QAED,OAAO,QAAQ,CAAC;IAClB,CAAC;CACF,CAAC;AAEF,eAAe,IAAI,CAAC"}
1
+ {"version":3,"file":"tokenExpiry.js","sourceRoot":"","sources":["../../../../src/engine/rules/backend/tokenExpiry.ts"],"names":[],"mappings":"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"}
@@ -4,14 +4,14 @@ const rule = {
4
4
  title: 'Token transmitted in URL (query string or path)',
5
5
  layer: 'backend',
6
6
  severity: 'high',
7
- description: 'Access token, API key, session ID veya baska hassas token URL\'in query string\'inde (`?token=...`) veya path\'inde (`/users/:token/...`) tasindiginda, sunucu access log\'larinda, reverse proxy log\'larinda, browser history\'de, referer header\'inda veya ekran goruntulerinde ifsa olur. Ayni zamanda OWASP API3:2023 (Broken Object Property Level Authorization) ile zincir saldirilara kapilar acar.',
8
- threat: 'Token leakage via logs/history/referer session hijack, account takeover, lateral movement',
9
- remediation: '1) Token\'i **MUTLAKA Authorization: Bearer** header\'inda tasima (query veya path degil). ' +
10
- '2) API key gibi kalici secret\'lari client\'a hic gonderme; server-side proxy kullan. ' +
11
- '3) Frontend\'den API\'ye istek atarken `fetch(url, { headers: { Authorization: \'Bearer \' + token } })`. ' +
12
- '4) Express middleware: `app.use((req, res, next) => { if (req.query.token) return res.status(400).send(\'token in URL\'); next(); })` — hard reject. ' +
13
- '5) Reverse proxy / Nginx log format\'larindan query string\'i cikar. ' +
14
- '6) Eger gercekten URL\'de olmasi gerekiyorsa (ornek: download link\'i) one-time, short-TTL signed URL kullan.',
7
+ description: 'When an access token, API key, session ID, or any other sensitive token is carried in the URL query string (`?token=...`) or path (`/users/:token/...`), it leaks into server access logs, reverse proxy logs, browser history, the Referer header, and screenshots. It also opens the door to chained attacks (e.g. OWASP API3:2023 - Broken Object Property Level Authorization).',
8
+ threat: 'Token leakage via logs/history/referer -- session hijack, account takeover, lateral movement',
9
+ remediation: '1) ALWAYS send tokens in the **Authorization: Bearer** header (not in the query string or path). ' +
10
+ '2) Never send long-lived secrets such as API keys to the client; use a server-side proxy instead. ' +
11
+ '3) When the frontend calls the API, use `fetch(url, { headers: { Authorization: \'Bearer \' + token } })`. ' +
12
+ '4) Add an Express middleware that hard-rejects tokens in URLs: `app.use((req, res, next) => { if (req.query.token) return res.status(400).send(\'token in URL\'); next(); })`. ' +
13
+ '5) Strip the query string from reverse proxy / Nginx access log formats. ' +
14
+ '6) If a token really must appear in a URL (e.g. a download link), use a one-time, short-TTL signed URL.',
15
15
  references: [
16
16
  'https://owasp.org/API-Security/editions/2023/en/0xa2-broken-authentication/',
17
17
  'https://cheatsheetseries.owasp.org/cheatsheets/REST_Security_Cheat_Sheet.html',
@@ -1 +1 @@
1
- {"version":3,"file":"tokenInUrl.js","sourceRoot":"","sources":["../../../../src/engine/rules/backend/tokenInUrl.ts"],"names":[],"mappings":"AACA,OAAO,EAAY,mBAAmB,EAAE,SAAS,EAAE,MAAM,gBAAgB,CAAC;AAE1E,MAAM,IAAI,GAAS;IACjB,EAAE,EAAE,QAAQ;IACZ,KAAK,EAAE,iDAAiD;IACxD,KAAK,EAAE,SAAS;IAChB,QAAQ,EAAE,MAAM;IAChB,WAAW,EACT,+YAA+Y;IACjZ,MAAM,EACJ,6FAA6F;IAC/F,WAAW,EACT,6FAA6F;QAC7F,wFAAwF;QACxF,4GAA4G;QAC5G,uJAAuJ;QACvJ,uEAAuE;QACvE,+GAA+G;IACjH,UAAU,EAAE;QACV,6EAA6E;QAC7E,+EAA+E;QAC/E,iDAAiD;KAClD;IACD,GAAG,EAAE,SAAS;IACd,KAAK,EAAE,qDAAqD;IAC5D,SAAS,EAAE,CAAC,YAAY,EAAE,YAAY,EAAE,QAAQ,EAAE,MAAM,EAAE,IAAI,CAAC;IAC/D,KAAK,EAAE,CAAC,GAAG,EAAE,EAAE;QACb,MAAM,QAAQ,GAAG,EAAE,CAAC;QACxB,MAAM,UAAU,GAAG;YACb,+DAA+D;YAC/D,0EAA0E;YAC1E,wEAAwE;YACxE,oEAAoE;SACrE,CAAC;QAEF,KAAK,MAAM,EAAE,IAAI,UAAU,EAAE,CAAC;YAC5B,KAAK,MAAM,CAAC,IAAI,GAAG,CAAC,MAAM,CAAC,QAAQ,CAAC,EAAE,CAAC,EAAE,CAAC;gBACxC,IAAI,CAAC,CAAC,KAAK,KAAK,SAAS;oBAAE,SAAS;gBACpC,MAAM,EAAE,IAAI,EAAE,GAAG,mBAAmB,CAAC,GAAG,CAAC,MAAM,EAAE,CAAC,CAAC,KAAK,CAAC,CAAC;gBAC1D,QAAQ,CAAC,IAAI,CAAC;oBACZ,EAAE,EAAE,GAAG,IAAI,CAAC,EAAE,IAAI,GAAG,CAAC,YAAY,IAAI,IAAI,IAAI;oBAC9C,MAAM,EAAE,IAAI,CAAC,EAAE;oBACf,KAAK,EAAE,IAAI,CAAC,KAAK;oBACjB,KAAK,EAAE,IAAI,CAAC,KAAK;oBACjB,QAAQ,EAAE,IAAI,CAAC,QAAQ;oBACvB,IAAI,EAAE,GAAG,CAAC,YAAY;oBACtB,KAAK,EAAE,EAAE,OAAO,EAAE,SAAS,CAAC,GAAG,CAAC,MAAM,EAAE,IAAI,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,CAAC,CAAC,KAAK,EAAE;oBACtE,WAAW,EAAE,IAAI,CAAC,WAAW;oBAC7B,MAAM,EAAE,IAAI,CAAC,MAAM;oBACnB,WAAW,EAAE,IAAI,CAAC,WAAW;oBAC7B,UAAU,EAAE,IAAI,CAAC,UAAU;oBAC3B,GAAG,EAAE,IAAI,CAAC,GAAG;oBACb,KAAK,EAAE,IAAI,CAAC,KAAK;iBAClB,CAAC,CAAC;YACL,CAAC;QACH,CAAC;QACL,MAAM,cAAc,GAAG;YACjB,iFAAiF;YACjF,mFAAmF;YACnF,wFAAwF;YACxF,2FAA2F;SAC5F,CAAC;QAEF,KAAK,MAAM,EAAE,IAAI,cAAc,EAAE,CAAC;YAChC,KAAK,MAAM,CAAC,IAAI,GAAG,CAAC,MAAM,CAAC,QAAQ,CAAC,EAAE,CAAC,EAAE,CAAC;gBACxC,IAAI,CAAC,CAAC,KAAK,KAAK,SAAS;oBAAE,SAAS;gBACpC,MAAM,EAAE,IAAI,EAAE,GAAG,mBAAmB,CAAC,GAAG,CAAC,MAAM,EAAE,CAAC,CAAC,KAAK,CAAC,CAAC;gBAC1D,QAAQ,CAAC,IAAI,CAAC;oBACZ,EAAE,EAAE,GAAG,IAAI,CAAC,EAAE,IAAI,GAAG,CAAC,YAAY,IAAI,IAAI,IAAI;oBAC9C,MAAM,EAAE,IAAI,CAAC,EAAE;oBACf,KAAK,EAAE,IAAI,CAAC,KAAK;oBACjB,KAAK,EAAE,IAAI,CAAC,KAAK;oBACjB,QAAQ,EAAE,IAAI,CAAC,QAAQ;oBACvB,IAAI,EAAE,GAAG,CAAC,YAAY;oBACtB,KAAK,EAAE,EAAE,OAAO,EAAE,SAAS,CAAC,GAAG,CAAC,MAAM,EAAE,IAAI,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,CAAC,CAAC,KAAK,EAAE;oBACtE,WAAW,EAAE,IAAI,CAAC,WAAW;oBAC7B,MAAM,EAAE,IAAI,CAAC,MAAM;oBACnB,WAAW,EAAE,IAAI,CAAC,WAAW;oBAC7B,UAAU,EAAE,IAAI,CAAC,UAAU;oBAC3B,GAAG,EAAE,IAAI,CAAC,GAAG;oBACb,KAAK,EAAE,IAAI,CAAC,KAAK;iBAClB,CAAC,CAAC;YACL,CAAC;QACH,CAAC;QACL,MAAM,SAAS,GAAG;YACZ,4CAA4C;YAC5C,iDAAiD;YACjD,0CAA0C;SAC3C,CAAC;QAEF,KAAK,MAAM,EAAE,IAAI,SAAS,EAAE,CAAC;YAC3B,KAAK,MAAM,CAAC,IAAI,GAAG,CAAC,MAAM,CAAC,QAAQ,CAAC,EAAE,CAAC,EAAE,CAAC;gBACxC,IAAI,CAAC,CAAC,KAAK,KAAK,SAAS;oBAAE,SAAS;gBACpC,MAAM,EAAE,IAAI,EAAE,GAAG,mBAAmB,CAAC,GAAG,CAAC,MAAM,EAAE,CAAC,CAAC,KAAK,CAAC,CAAC;gBAC1D,QAAQ,CAAC,IAAI,CAAC;oBACZ,EAAE,EAAE,GAAG,IAAI,CAAC,EAAE,IAAI,GAAG,CAAC,YAAY,IAAI,IAAI,IAAI;oBAC9C,MAAM,EAAE,IAAI,CAAC,EAAE;oBACf,KAAK,EAAE,IAAI,CAAC,KAAK;oBACjB,KAAK,EAAE,IAAI,CAAC,KAAK;oBACjB,QAAQ,EAAE,IAAI,CAAC,QAAQ;oBACvB,IAAI,EAAE,GAAG,CAAC,YAAY;oBACtB,KAAK,EAAE,EAAE,OAAO,EAAE,SAAS,CAAC,GAAG,CAAC,MAAM,EAAE,IAAI,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,CAAC,CAAC,KAAK,EAAE;oBACtE,WAAW,EAAE,IAAI,CAAC,WAAW;oBAC7B,MAAM,EAAE,IAAI,CAAC,MAAM;oBACnB,WAAW,EAAE,IAAI,CAAC,WAAW;oBAC7B,UAAU,EAAE,IAAI,CAAC,UAAU;oBAC3B,GAAG,EAAE,IAAI,CAAC,GAAG;oBACb,KAAK,EAAE,IAAI,CAAC,KAAK;iBAClB,CAAC,CAAC;YACL,CAAC;QACH,CAAC;QAED,OAAO,QAAQ,CAAC;IAClB,CAAC;CACF,CAAC;AAEF,eAAe,IAAI,CAAC"}
1
+ {"version":3,"file":"tokenInUrl.js","sourceRoot":"","sources":["../../../../src/engine/rules/backend/tokenInUrl.ts"],"names":[],"mappings":"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"}
@@ -4,14 +4,14 @@ const rule = {
4
4
  title: 'Dependency hygiene — missing lockfile, audit, or pinning',
5
5
  layer: 'cicd',
6
6
  severity: 'medium',
7
- description: 'Lockfile (package-lock.json / yarn.lock / poetry.lock / go.sum) eksikse bagimlilik versiyonlari tekrarlanamaz sekilde cozumlenir (tedarik zinciri riski). Audit script\'i yoksa CVE\'ler sessizce slider.',
7
+ description: 'When a lockfile (package-lock.json / yarn.lock / poetry.lock / go.sum) is missing, dependency versions resolve non-deterministically (supply-chain risk). Without an audit script, known CVEs slip in silently.',
8
8
  threat: 'Software supply chain attack, dependency confusion, known CVE exploitation',
9
- remediation: '1) Lockfile\'i her zaman commit\'leyin ve `.gitignore`\'a ALMAYIN. ' +
10
- '2) CI\'da `npm audit --audit-level=high`, `pip-audit`, `govulncheck`, `snyk test`, `dependabot` calistirin. ' +
11
- '3) Container imajlarinda minimal taban (`distroless`, `alpine`) ve **non-root** user kullanin. ' +
12
- '4) `npm ci` ile build yapin (lockfile\'a zorlar). ' +
13
- '5) Renovate / Dependabot ile guvenlik PR\'leri otomatik acilsin. ' +
14
- '6) `package.json` `scripts.audit` tanimlayin.',
9
+ remediation: '1) Always commit the lockfile -- do NOT add it to `.gitignore`. ' +
10
+ '2) In CI, run `npm audit --audit-level=high`, `pip-audit`, `govulncheck`, `snyk test`, or `dependabot`. ' +
11
+ '3) Use minimal container bases (`distroless`, `alpine`) and a **non-root** user. ' +
12
+ '4) Build with `npm ci` (forces the lockfile). ' +
13
+ '5) Configure Renovate / Dependabot to open security PRs automatically. ' +
14
+ '6) Define an `audit` script in `package.json`.',
15
15
  references: [
16
16
  'https://docs.npmjs.com/cli/v10/commands/npm-audit',
17
17
  'https://github.com/pypa/pip-audit',
@@ -1 +1 @@
1
- {"version":3,"file":"dependencies.js","sourceRoot":"","sources":["../../../../src/engine/rules/cicd/dependencies.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,QAAQ,EAAE,MAAM,gBAAgB,CAAC;AAE1C,MAAM,IAAI,GAAS;IACjB,EAAE,EAAE,QAAQ;IACZ,KAAK,EAAE,0DAA0D;IACjE,KAAK,EAAE,MAAM;IACb,QAAQ,EAAE,QAAQ;IAClB,WAAW,EACT,2MAA2M;IAC7M,MAAM,EAAE,4EAA4E;IACpF,WAAW,EACT,qEAAqE;QACrE,8GAA8G;QAC9G,iGAAiG;QACjG,oDAAoD;QACpD,mEAAmE;QACnE,+CAA+C;IACjD,UAAU,EAAE;QACV,mDAAmD;QACnD,mCAAmC;QACnC,4CAA4C;KAC7C;IACD,GAAG,EAAE,UAAU;IACf,KAAK,EAAE,6CAA6C;IACpD,SAAS,EAAE,CAAC,YAAY,EAAE,YAAY,EAAE,QAAQ,EAAE,IAAI,EAAE,MAAM,CAAC;IAC/D,KAAK,EAAE,CAAC,GAAG,EAAE,EAAE;QACb,MAAM,QAAQ,GAAa;YAC/B,gBAAgB;YAChB,yCAAyC;YACnC,yCAAyC;YAC/C,wBAAwB;SACnB,CAAC;QAEF,IAAI,+DAA+D,CAAC,IAAI,CAAC,GAAG,CAAC,YAAY,CAAC,EAAE,CAAC;YAC3F,MAAM,QAAQ,GAAG,6CAA6C,CAAC,IAAI,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC;YAChF,IAAI,CAAC,QAAQ,IAAI,qBAAqB,CAAC,IAAI,CAAC,GAAG,CAAC,YAAY,CAAC,EAAE,CAAC;gBAC9D,OAAO,QAAQ,CAAC,IAAI,EAAE,GAAG,EAAE,qBAAqB,CAAC,CAAC;YACpD,CAAC;QACH,CAAC;QAED,MAAM,QAAQ,GAAG,EAAE,CAAC;QACpB,KAAK,MAAM,EAAE,IAAI,QAAQ,EAAE,CAAC;YAC1B,QAAQ,CAAC,IAAI,CAAC,GAAG,QAAQ,CAAC,IAAI,EAAE,GAAG,EAAE,EAAE,CAAC,CAAC,CAAC;QAC5C,CAAC;QACD,OAAO,QAAQ,CAAC;IAClB,CAAC;CACF,CAAC;AAEF,eAAe,IAAI,CAAC"}
1
+ {"version":3,"file":"dependencies.js","sourceRoot":"","sources":["../../../../src/engine/rules/cicd/dependencies.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,QAAQ,EAAE,MAAM,gBAAgB,CAAC;AAE1C,MAAM,IAAI,GAAS;IACjB,EAAE,EAAE,QAAQ;IACZ,KAAK,EAAE,0DAA0D;IACjE,KAAK,EAAE,MAAM;IACb,QAAQ,EAAE,QAAQ;IAClB,WAAW,EACT,iNAAiN;IACnN,MAAM,EAAE,4EAA4E;IACpF,WAAW,EACT,kEAAkE;QAClE,0GAA0G;QAC1G,mFAAmF;QACnF,gDAAgD;QAChD,yEAAyE;QACzE,gDAAgD;IAClD,UAAU,EAAE;QACV,mDAAmD;QACnD,mCAAmC;QACnC,4CAA4C;KAC7C;IACD,GAAG,EAAE,UAAU;IACf,KAAK,EAAE,6CAA6C;IACpD,SAAS,EAAE,CAAC,YAAY,EAAE,YAAY,EAAE,QAAQ,EAAE,IAAI,EAAE,MAAM,CAAC;IAC/D,KAAK,EAAE,CAAC,GAAG,EAAE,EAAE;QACb,MAAM,QAAQ,GAAa;YAC/B,gBAAgB;YAChB,yCAAyC;YACnC,yCAAyC;YAC/C,wBAAwB;SACnB,CAAC;QAEF,IAAI,+DAA+D,CAAC,IAAI,CAAC,GAAG,CAAC,YAAY,CAAC,EAAE,CAAC;YAC3F,MAAM,QAAQ,GAAG,6CAA6C,CAAC,IAAI,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC;YAChF,IAAI,CAAC,QAAQ,IAAI,qBAAqB,CAAC,IAAI,CAAC,GAAG,CAAC,YAAY,CAAC,EAAE,CAAC;gBAC9D,OAAO,QAAQ,CAAC,IAAI,EAAE,GAAG,EAAE,qBAAqB,CAAC,CAAC;YACpD,CAAC;QACH,CAAC;QAED,MAAM,QAAQ,GAAG,EAAE,CAAC;QACpB,KAAK,MAAM,EAAE,IAAI,QAAQ,EAAE,CAAC;YAC1B,QAAQ,CAAC,IAAI,CAAC,GAAG,QAAQ,CAAC,IAAI,EAAE,GAAG,EAAE,EAAE,CAAC,CAAC,CAAC;QAC5C,CAAC;QACD,OAAO,QAAQ,CAAC;IAClB,CAAC;CACF,CAAC;AAEF,eAAe,IAAI,CAAC"}
@@ -4,14 +4,14 @@ const rule = {
4
4
  title: 'Insecure Dockerfile (root user, latest tag, ADD with URL)',
5
5
  layer: 'cicd',
6
6
  severity: 'medium',
7
- description: 'Dockerfile\'da `USER` belirtilmemisse konteyner root olarak calisir; `latest` tag tekrarlanamaz; `ADD` URL\'den dosya cekmek MITM\'e aciktir.',
7
+ description: 'If a Dockerfile does not declare a `USER` directive, the container runs as root. The `latest` tag makes builds non-reproducible, and `ADD`ing from a URL exposes the build to MITM attacks.',
8
8
  threat: 'Container escape, root privilege escalation, unpredictable builds, supply chain',
9
- remediation: '1) `FROM <image>:<pinned-version>` kullanin (digest\'e pinleyin: `@sha256:...`). ' +
10
- '2) `USER nonroot:nonroot` veya specific UID ile calistirin. ' +
11
- '3) `COPY` kullanin; sadece gerekli dosyalari kopyalayin. `ADD <url>` kullanmayin (curl/wget ile indirip checksum dogrulayin). ' +
12
- '4) Multi-stage build ile build tool\'lari final imaja sokmayin. ' +
13
- '5) Minimal taban (`gcr.io/distroless/*`, `alpine`) kullanin. ' +
14
- '6) `.dockerignore` ile secret / node_modules / .git\'i disarida birakin.',
9
+ remediation: '1) Use `FROM <image>:<pinned-version>` (pin by digest: `@sha256:...`). ' +
10
+ '2) Run as `USER nonroot:nonroot` or with a specific UID. ' +
11
+ '3) Use `COPY` and copy only what you need; never `ADD <url>` (download with curl/wget and verify the checksum instead). ' +
12
+ '4) Use multi-stage builds so build tools never reach the final image. ' +
13
+ '5) Use minimal bases (`gcr.io/distroless/*`, `alpine`). ' +
14
+ '6) Use `.dockerignore` to keep secrets, `node_modules`, and `.git` out of the build context.',
15
15
  references: [
16
16
  'https://docs.docker.com/develop/dev-best-practices/',
17
17
  'https://snyk.io/learn/docker-security/',
@@ -1 +1 @@
1
- {"version":3,"file":"dockerfile.js","sourceRoot":"","sources":["../../../../src/engine/rules/cicd/dockerfile.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,QAAQ,EAAE,MAAM,gBAAgB,CAAC;AAE1C,MAAM,IAAI,GAAS;IACjB,EAAE,EAAE,QAAQ;IACZ,KAAK,EAAE,2DAA2D;IAClE,KAAK,EAAE,MAAM;IACb,QAAQ,EAAE,QAAQ;IAClB,WAAW,EACT,+IAA+I;IACjJ,MAAM,EAAE,iFAAiF;IACzF,WAAW,EACT,mFAAmF;QACnF,8DAA8D;QAC9D,gIAAgI;QAChI,kEAAkE;QAClE,+DAA+D;QAC/D,0EAA0E;IAC5E,UAAU,EAAE;QACV,qDAAqD;QACrD,wCAAwC;QACxC,sCAAsC;KACvC;IACD,GAAG,EAAE,SAAS;IACd,KAAK,EAAE,oCAAoC;IAC3C,SAAS,EAAE,CAAC,YAAY,CAAC;IACzB,KAAK,EAAE,CAAC,GAAG,EAAE,EAAE;QACb,MAAM,QAAQ,GAAG,EAAE,CAAC;QACpB,MAAM,KAAK,GAAG,GAAG,CAAC,KAAK,CAAC;QAExB,MAAM,OAAO,GAAG,WAAW,CAAC,IAAI,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC;QAC7C,MAAM,SAAS,GAAG,qBAAqB,CAAC,IAAI,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC;QACzD,MAAM,SAAS,GAAG,qBAAqB,CAAC,IAAI,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC;QAEzD,IAAI,CAAC,OAAO,EAAE,CAAC;YACb,QAAQ,CAAC,IAAI,CAAC,GAAG,QAAQ,CAAC,IAAI,EAAE,GAAG,EAAE,YAAY,CAAC,CAAC,CAAC;QACtD,CAAC;QACD,IAAI,SAAS,EAAE,CAAC;YACd,QAAQ,CAAC,IAAI,CAAC,GAAG,QAAQ,CAAC,IAAI,EAAE,GAAG,EAAE,sBAAsB,CAAC,CAAC,CAAC;QAChE,CAAC;QACD,IAAI,SAAS,EAAE,CAAC;YACd,QAAQ,CAAC,IAAI,CAAC,GAAG,QAAQ,CAAC,IAAI,EAAE,GAAG,EAAE,sBAAsB,CAAC,CAAC,CAAC;QAChE,CAAC;QACD,OAAO,QAAQ,CAAC;IAClB,CAAC;CACF,CAAC;AAEF,eAAe,IAAI,CAAC"}
1
+ {"version":3,"file":"dockerfile.js","sourceRoot":"","sources":["../../../../src/engine/rules/cicd/dockerfile.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,QAAQ,EAAE,MAAM,gBAAgB,CAAC;AAE1C,MAAM,IAAI,GAAS;IACjB,EAAE,EAAE,QAAQ;IACZ,KAAK,EAAE,2DAA2D;IAClE,KAAK,EAAE,MAAM;IACb,QAAQ,EAAE,QAAQ;IAClB,WAAW,EACT,6LAA6L;IAC/L,MAAM,EAAE,iFAAiF;IACzF,WAAW,EACT,yEAAyE;QACzE,2DAA2D;QAC3D,0HAA0H;QAC1H,wEAAwE;QACxE,0DAA0D;QAC1D,8FAA8F;IAChG,UAAU,EAAE;QACV,qDAAqD;QACrD,wCAAwC;QACxC,sCAAsC;KACvC;IACD,GAAG,EAAE,SAAS;IACd,KAAK,EAAE,oCAAoC;IAC3C,SAAS,EAAE,CAAC,YAAY,CAAC;IACzB,KAAK,EAAE,CAAC,GAAG,EAAE,EAAE;QACb,MAAM,QAAQ,GAAG,EAAE,CAAC;QACpB,MAAM,KAAK,GAAG,GAAG,CAAC,KAAK,CAAC;QAExB,MAAM,OAAO,GAAG,WAAW,CAAC,IAAI,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC;QAC7C,MAAM,SAAS,GAAG,qBAAqB,CAAC,IAAI,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC;QACzD,MAAM,SAAS,GAAG,qBAAqB,CAAC,IAAI,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC;QAEzD,IAAI,CAAC,OAAO,EAAE,CAAC;YACb,QAAQ,CAAC,IAAI,CAAC,GAAG,QAAQ,CAAC,IAAI,EAAE,GAAG,EAAE,YAAY,CAAC,CAAC,CAAC;QACtD,CAAC;QACD,IAAI,SAAS,EAAE,CAAC;YACd,QAAQ,CAAC,IAAI,CAAC,GAAG,QAAQ,CAAC,IAAI,EAAE,GAAG,EAAE,sBAAsB,CAAC,CAAC,CAAC;QAChE,CAAC;QACD,IAAI,SAAS,EAAE,CAAC;YACd,QAAQ,CAAC,IAAI,CAAC,GAAG,QAAQ,CAAC,IAAI,EAAE,GAAG,EAAE,sBAAsB,CAAC,CAAC,CAAC;QAChE,CAAC;QACD,OAAO,QAAQ,CAAC;IAClB,CAAC;CACF,CAAC;AAEF,eAAe,IAAI,CAAC"}
@@ -4,14 +4,14 @@ const rule = {
4
4
  title: 'Hardcoded secret / credential in source',
5
5
  layer: 'cicd',
6
6
  severity: 'critical',
7
- description: 'API key, private key, DB password, OAuth secret, AWS access key gibi hassas degerlerin kaynak kodunda veya .env dosyasinda duz metin bulunmasi, Git reposuna sizmasi demektir.',
7
+ description: 'Storing sensitive values such as API keys, private keys, DB passwords, OAuth secrets, or AWS access keys in source code or in `.env` files means they leak into the Git repository.',
8
8
  threat: 'Cloud takeover, financial fraud, data breach, lateral movement',
9
- remediation: '1) Tum secret\'lari **Vault / AWS Secrets Manager / GCP Secret Manager / Doppler** ile yonetin. ' +
10
- '2) Pre-commit hook olarak **gitleaks** veya **trufflehog** kurun. ' +
11
- '3) `.gitignore`\'a `.env`, `.env.local`, `*.pem`, `*.key` ekleyin. ' +
12
- '4) `.env.example` sadece anahtar isimlerini icersin, degerler bos olmali. ' +
13
- '5) CI ortaminda secret\'lari environment variable olarak inject edin (GitHub Actions secrets, GitLab CI variables). ' +
14
- '6) Bir secret commit olduysa HEMEN rotate edin; Git history\'de kalir.',
9
+ remediation: '1) Manage all secrets with **Vault / AWS Secrets Manager / GCP Secret Manager / Doppler**. ' +
10
+ '2) Install **gitleaks** or **trufflehog** as a pre-commit hook. ' +
11
+ '3) Add `.env`, `.env.local`, `*.pem`, `*.key` to `.gitignore`. ' +
12
+ '4) `.env.example` should contain only key names, with empty values. ' +
13
+ '5) Inject secrets in CI via environment variables (GitHub Actions secrets, GitLab CI variables, etc.). ' +
14
+ '6) If a secret has been committed, rotate it IMMEDIATELY; it stays in the Git history forever.',
15
15
  references: [
16
16
  'https://github.com/gitleaks/gitleaks',
17
17
  'https://github.com/trufflesecurity/trufflehog',
@@ -1 +1 @@
1
- {"version":3,"file":"secrets.js","sourceRoot":"","sources":["../../../../src/engine/rules/cicd/secrets.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,QAAQ,EAAE,MAAM,gBAAgB,CAAC;AAE1C,MAAM,IAAI,GAAS;IACjB,EAAE,EAAE,QAAQ;IACZ,KAAK,EAAE,yCAAyC;IAChD,KAAK,EAAE,MAAM;IACb,QAAQ,EAAE,UAAU;IACpB,WAAW,EACT,gLAAgL;IAClL,MAAM,EAAE,gEAAgE;IACxE,WAAW,EACT,kGAAkG;QAClG,oEAAoE;QACpE,qEAAqE;QACrE,4EAA4E;QAC5E,sHAAsH;QACtH,wEAAwE;IAC1E,UAAU,EAAE;QACV,sCAAsC;QACtC,+CAA+C;QAC/C,oFAAoF;KACrF;IACD,GAAG,EAAE,SAAS;IACd,KAAK,EAAE,oCAAoC;IAC3C,SAAS,EAAE,CAAC,YAAY,EAAE,YAAY,EAAE,QAAQ,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,EAAE,YAAY,CAAC;IACrF,KAAK,EAAE,CAAC,GAAG,EAAE,EAAE;QACb,MAAM,QAAQ,GAAa;YAC/B,mBAAmB;YACnB,wDAAwD;YACxD,8DAA8D;YAC9D,oEAAoE;YACpE,2BAA2B;YAC3B,6BAA6B;YAC7B,gEAAgE;SAC3D,CAAC;QAEF,MAAM,QAAQ,GAAG,EAAE,CAAC;QACpB,KAAK,MAAM,EAAE,IAAI,QAAQ,EAAE,CAAC;YAC1B,QAAQ,CAAC,IAAI,CAAC,GAAG,QAAQ,CAAC,IAAI,EAAE,GAAG,EAAE,EAAE,CAAC,CAAC,CAAC;QAC5C,CAAC;QACD,OAAO,QAAQ,CAAC;IAClB,CAAC;CACF,CAAC;AAEF,eAAe,IAAI,CAAC"}
1
+ {"version":3,"file":"secrets.js","sourceRoot":"","sources":["../../../../src/engine/rules/cicd/secrets.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,QAAQ,EAAE,MAAM,gBAAgB,CAAC;AAE1C,MAAM,IAAI,GAAS;IACjB,EAAE,EAAE,QAAQ;IACZ,KAAK,EAAE,yCAAyC;IAChD,KAAK,EAAE,MAAM;IACb,QAAQ,EAAE,UAAU;IACpB,WAAW,EACT,qLAAqL;IACvL,MAAM,EAAE,gEAAgE;IACxE,WAAW,EACT,6FAA6F;QAC7F,kEAAkE;QAClE,iEAAiE;QACjE,sEAAsE;QACtE,yGAAyG;QACzG,gGAAgG;IAClG,UAAU,EAAE;QACV,sCAAsC;QACtC,+CAA+C;QAC/C,oFAAoF;KACrF;IACD,GAAG,EAAE,SAAS;IACd,KAAK,EAAE,oCAAoC;IAC3C,SAAS,EAAE,CAAC,YAAY,EAAE,YAAY,EAAE,QAAQ,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,EAAE,YAAY,CAAC;IACrF,KAAK,EAAE,CAAC,GAAG,EAAE,EAAE;QACb,MAAM,QAAQ,GAAa;YAC/B,mBAAmB;YACnB,wDAAwD;YACxD,8DAA8D;YAC9D,oEAAoE;YACpE,2BAA2B;YAC3B,6BAA6B;YAC7B,gEAAgE;SAC3D,CAAC;QAEF,MAAM,QAAQ,GAAG,EAAE,CAAC;QACpB,KAAK,MAAM,EAAE,IAAI,QAAQ,EAAE,CAAC;YAC1B,QAAQ,CAAC,IAAI,CAAC,GAAG,QAAQ,CAAC,IAAI,EAAE,GAAG,EAAE,EAAE,CAAC,CAAC,CAAC;QAC5C,CAAC;QACD,OAAO,QAAQ,CAAC;IAClB,CAAC;CACF,CAAC;AAEF,eAAe,IAAI,CAAC"}
@@ -4,14 +4,14 @@ const rule = {
4
4
  title: 'Sensitive data not encrypted at rest (PII / payment / health)',
5
5
  layer: 'database',
6
6
  severity: 'high',
7
- description: 'TC kimlik, kredi karti, saglik verisi, parolalar gibi PII alanlari duz metin (plain text) ile saklaniyorsa fiziksel veya yedek sizintisinda aninda okunabilir hale gelir.',
7
+ description: 'PII fields such as national IDs, credit card numbers, health data, or passwords stored as plain text become immediately readable the moment a disk or backup leaks.',
8
8
  threat: 'GDPR / KVKK / PCI-DSS violation, identity theft, regulatory fines',
9
- remediation: '1) In-transit: tum baglantilari **TLS 1.2+** ile sifreleyin. Baglanti string\'inde `sslmode=require` veya `ssl=true`. ' +
10
- '2) At-rest: kritik kolonlari uygulama seviyesinde **AES-256-GCM** ile sifreleyin (deterministic olmayan, random IV). ' +
11
- '3) Veya TDE / column-level encryption (pgcrypto, AWS RDS encryption, MongoDB CSFLE). ' +
12
- '4) KMS / Vault ile key\'leri yonetin, kodda saklamayin. ' +
13
- '5) Backup\'lar da sifrelenmis olmali. ' +
14
- '6) PCI scope\'a giren veriler icin tokenization (Stripe, Adyen) kullanin, ham PAN\'i ASLA saklamayin.',
9
+ remediation: '1) In transit: encrypt all connections with **TLS 1.2+**. Set `sslmode=require` or `ssl=true` in connection strings. ' +
10
+ '2) At rest: encrypt sensitive columns at the application layer with **AES-256-GCM** (non-deterministic, random IV). ' +
11
+ '3) Or use TDE / column-level encryption (pgcrypto, AWS RDS encryption, MongoDB CSFLE). ' +
12
+ '4) Manage keys via KMS / Vault -- never store keys in code. ' +
13
+ '5) Backups must also be encrypted. ' +
14
+ '6) For data in PCI scope, use tokenization (Stripe, Adyen); NEVER store raw PANs.',
15
15
  references: [
16
16
  'https://cheatsheetseries.owasp.org/cheatsheets/Cryptographic_Storage_Cheat_Sheet.html',
17
17
  'https://www.postgresql.org/docs/current/encryption-options.html',
@@ -1 +1 @@
1
- {"version":3,"file":"encryption.js","sourceRoot":"","sources":["../../../../src/engine/rules/database/encryption.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,QAAQ,EAAE,MAAM,gBAAgB,CAAC;AAE1C,MAAM,IAAI,GAAS;IACjB,EAAE,EAAE,QAAQ;IACZ,KAAK,EAAE,+DAA+D;IACtE,KAAK,EAAE,UAAU;IACjB,QAAQ,EAAE,MAAM;IAChB,WAAW,EACT,2KAA2K;IAC7K,MAAM,EAAE,mEAAmE;IAC3E,WAAW,EACT,wHAAwH;QACxH,uHAAuH;QACvH,uFAAuF;QACvF,0DAA0D;QAC1D,wCAAwC;QACxC,uGAAuG;IACzG,UAAU,EAAE;QACV,uFAAuF;QACvF,iEAAiE;QACjE,uCAAuC;KACxC;IACD,GAAG,EAAE,SAAS;IACd,KAAK,EAAE,iCAAiC;IACxC,SAAS,EAAE,CAAC,YAAY,EAAE,YAAY,EAAE,QAAQ,EAAE,MAAM,EAAE,IAAI,CAAC;IAC/D,KAAK,EAAE,CAAC,GAAG,EAAE,EAAE;QACb,MAAM,QAAQ,GAAa;YAC/B,wHAAwH;YAClH,2GAA2G;YACjH,2CAA2C;SACtC,CAAC;QAEF,MAAM,QAAQ,GAAG,EAAE,CAAC;QACpB,KAAK,MAAM,EAAE,IAAI,QAAQ,EAAE,CAAC;YAC1B,QAAQ,CAAC,IAAI,CAAC,GAAG,QAAQ,CAAC,IAAI,EAAE,GAAG,EAAE,EAAE,CAAC,CAAC,CAAC;QAC5C,CAAC;QACD,OAAO,QAAQ,CAAC;IAClB,CAAC;CACF,CAAC;AAEF,eAAe,IAAI,CAAC"}
1
+ {"version":3,"file":"encryption.js","sourceRoot":"","sources":["../../../../src/engine/rules/database/encryption.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,QAAQ,EAAE,MAAM,gBAAgB,CAAC;AAE1C,MAAM,IAAI,GAAS;IACjB,EAAE,EAAE,QAAQ;IACZ,KAAK,EAAE,+DAA+D;IACtE,KAAK,EAAE,UAAU;IACjB,QAAQ,EAAE,MAAM;IAChB,WAAW,EACT,qKAAqK;IACvK,MAAM,EAAE,mEAAmE;IAC3E,WAAW,EACT,uHAAuH;QACvH,sHAAsH;QACtH,yFAAyF;QACzF,8DAA8D;QAC9D,qCAAqC;QACrC,mFAAmF;IACrF,UAAU,EAAE;QACV,uFAAuF;QACvF,iEAAiE;QACjE,uCAAuC;KACxC;IACD,GAAG,EAAE,SAAS;IACd,KAAK,EAAE,iCAAiC;IACxC,SAAS,EAAE,CAAC,YAAY,EAAE,YAAY,EAAE,QAAQ,EAAE,MAAM,EAAE,IAAI,CAAC;IAC/D,KAAK,EAAE,CAAC,GAAG,EAAE,EAAE;QACb,MAAM,QAAQ,GAAa;YAC/B,wHAAwH;YAClH,2GAA2G;YACjH,2CAA2C;SACtC,CAAC;QAEF,MAAM,QAAQ,GAAG,EAAE,CAAC;QACpB,KAAK,MAAM,EAAE,IAAI,QAAQ,EAAE,CAAC;YAC1B,QAAQ,CAAC,IAAI,CAAC,GAAG,QAAQ,CAAC,IAAI,EAAE,GAAG,EAAE,EAAE,CAAC,CAAC,CAAC;QAC5C,CAAC;QACD,OAAO,QAAQ,CAAC;IAClB,CAAC;CACF,CAAC;AAEF,eAAe,IAAI,CAAC"}
@@ -4,14 +4,14 @@ const rule = {
4
4
  title: 'Overly privileged database user (DROP, ALTER, GRANT granted to app user)',
5
5
  layer: 'database',
6
6
  severity: 'high',
7
- description: 'Uygulama DB baglanti kullanicisi DROP, ALTER, GRANT veya superuser yetkilerine sahipse, SQL injection durumunda saldırıgın tum veritabanini silmesi veya sema degistirmesi mumkun.',
7
+ description: 'When the application DB user holds DROP, ALTER, GRANT, or superuser privileges, a SQL injection lets the attacker wipe or modify the entire database schema.',
8
8
  threat: 'Mass data destruction, ransomware-grade attack, full DB compromise',
9
- remediation: '1) App DB user\'ina SADECE gereken yetkileri verin (SELECT, INSERT, UPDATE, DELETE). ' +
10
- '2) DROP, ALTER, GRANT, CREATE yetkilerini vermeyin. ' +
11
- '3) Migration\'lar icin ayri bir migration user (CI/CD\'de kullanilan, app\'te OLMAYAN). ' +
9
+ remediation: '1) Grant the app DB user ONLY the privileges it needs (SELECT, INSERT, UPDATE, DELETE). ' +
10
+ '2) Do NOT grant DROP, ALTER, GRANT, or CREATE. ' +
11
+ '3) Use a separate migration user (used in CI/CD, NOT in the app runtime). ' +
12
12
  '4) Postgres: `ALTER USER app_user NOSUPERUSER NOINHERIT NOCREATEDB NOCREATEROLE NOREPLICATION`. ' +
13
- '5) Read-only endpointler icin ayri read-only user kullanin. ' +
14
- '6) Baglanti string\'inde `superuser=yes` veya `root` KULLANMAYIN.',
13
+ '5) For read-only endpoints, use a dedicated read-only user. ' +
14
+ '6) Do NOT put `superuser=yes` or `root` in the connection string.',
15
15
  references: [
16
16
  'https://en.wikipedia.org/wiki/Principle_of_least_privilege',
17
17
  'https://www.postgresql.org/docs/current/sql-grant.html',
@@ -1 +1 @@
1
- {"version":3,"file":"privileges.js","sourceRoot":"","sources":["../../../../src/engine/rules/database/privileges.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,QAAQ,EAAE,MAAM,gBAAgB,CAAC;AAE1C,MAAM,IAAI,GAAS;IACjB,EAAE,EAAE,QAAQ;IACZ,KAAK,EAAE,0EAA0E;IACjF,KAAK,EAAE,UAAU;IACjB,QAAQ,EAAE,MAAM;IAChB,WAAW,EACT,oLAAoL;IACtL,MAAM,EAAE,oEAAoE;IAC5E,WAAW,EACT,uFAAuF;QACvF,sDAAsD;QACtD,0FAA0F;QAC1F,kGAAkG;QAClG,8DAA8D;QAC9D,mEAAmE;IACrE,UAAU,EAAE;QACV,4DAA4D;QAC5D,wDAAwD;QACxD,mFAAmF;KACpF;IACD,GAAG,EAAE,SAAS;IACd,KAAK,EAAE,gCAAgC;IACvC,SAAS,EAAE,CAAC,YAAY,EAAE,YAAY,EAAE,QAAQ,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,CAAC;IACvE,KAAK,EAAE,CAAC,GAAG,EAAE,EAAE;QACb,MAAM,QAAQ,GAAa;YAC/B,gEAAgE;YAC1D,eAAe;YACf,2BAA2B;YACjC,qFAAqF;YAC/E,gFAAgF;YAChF,kBAAkB;SACnB,CAAC;QAEF,MAAM,QAAQ,GAAG,EAAE,CAAC;QACpB,KAAK,MAAM,EAAE,IAAI,QAAQ,EAAE,CAAC;YAC1B,QAAQ,CAAC,IAAI,CAAC,GAAG,QAAQ,CAAC,IAAI,EAAE,GAAG,EAAE,EAAE,CAAC,CAAC,CAAC;QAC5C,CAAC;QACD,OAAO,QAAQ,CAAC;IAClB,CAAC;CACF,CAAC;AAEF,eAAe,IAAI,CAAC"}
1
+ {"version":3,"file":"privileges.js","sourceRoot":"","sources":["../../../../src/engine/rules/database/privileges.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,QAAQ,EAAE,MAAM,gBAAgB,CAAC;AAE1C,MAAM,IAAI,GAAS;IACjB,EAAE,EAAE,QAAQ;IACZ,KAAK,EAAE,0EAA0E;IACjF,KAAK,EAAE,UAAU;IACjB,QAAQ,EAAE,MAAM;IAChB,WAAW,EACT,8JAA8J;IAChK,MAAM,EAAE,oEAAoE;IAC5E,WAAW,EACT,0FAA0F;QAC1F,iDAAiD;QACjD,4EAA4E;QAC5E,kGAAkG;QAClG,8DAA8D;QAC9D,mEAAmE;IACrE,UAAU,EAAE;QACV,4DAA4D;QAC5D,wDAAwD;QACxD,mFAAmF;KACpF;IACD,GAAG,EAAE,SAAS;IACd,KAAK,EAAE,gCAAgC;IACvC,SAAS,EAAE,CAAC,YAAY,EAAE,YAAY,EAAE,QAAQ,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,CAAC;IACvE,KAAK,EAAE,CAAC,GAAG,EAAE,EAAE;QACb,MAAM,QAAQ,GAAa;YAC/B,gEAAgE;YAC1D,eAAe;YACf,2BAA2B;YACjC,qFAAqF;YAC/E,gFAAgF;YAChF,kBAAkB;SACnB,CAAC;QAEF,MAAM,QAAQ,GAAG,EAAE,CAAC;QACpB,KAAK,MAAM,EAAE,IAAI,QAAQ,EAAE,CAAC;YAC1B,QAAQ,CAAC,IAAI,CAAC,GAAG,QAAQ,CAAC,IAAI,EAAE,GAAG,EAAE,EAAE,CAAC,CAAC,CAAC;QAC5C,CAAC;QACD,OAAO,QAAQ,CAAC;IAClB,CAAC;CACF,CAAC;AAEF,eAAe,IAAI,CAAC"}
@@ -4,13 +4,14 @@ const rule = {
4
4
  title: 'Missing clickjacking protection (X-Frame-Options / CSP frame-ancestors)',
5
5
  layer: 'frontend',
6
6
  severity: 'medium',
7
- description: 'HTTP response\'unda `X-Frame-Options` veya `Content-Security-Policy: frame-ancestors` direktifi yoksa sayfa saldirgan kontrolundeki bir iframe icinde acilabilir. UI Redressing (clickjacking) ile kullanici istemedigi islemleri yaptirilabilir.',
8
- threat: 'UI redressing, clickjacking unauthorized clicks (payment, settings change)',
9
- remediation: 'Tum HTML response\'larina sunlardan birini ekleyin: ' +
10
- '`Content-Security-Policy: frame-ancestors \'none\'` (en guclu, modern), veya ' +
11
- '`X-Frame-Options: DENY` (eski browser destegi). ' +
12
- 'Sadece kendi origin\'inizden iframe kabul edecekseniz: `frame-ancestors \'self\'`. ' +
13
- 'Next.js: middleware veya `next.config.js` headers\'tan ayarlayin. Nginx: `add_header X-Frame-Options "DENY" always;`.',
7
+ description: 'When an HTTP response lacks the `X-Frame-Options` header or the `Content-Security-Policy: frame-ancestors` directive, the page can be rendered inside an attacker-controlled iframe. UI redressing (clickjacking) can then trick users into performing unintended actions.',
8
+ threat: 'UI redressing, clickjacking -- unauthorized clicks (payment, settings change)',
9
+ remediation: 'Add one of the following to every HTML response: ' +
10
+ '`Content-Security-Policy: frame-ancestors \'none\'` (strongest, modern), or ' +
11
+ '`X-Frame-Options: DENY` (for legacy browser support). ' +
12
+ 'If you only need to be framed by your own origin, use `frame-ancestors \'self\'`. ' +
13
+ 'Next.js: configure via middleware or the `headers` function in `next.config.js`. ' +
14
+ 'Nginx: `add_header X-Frame-Options "DENY" always;`.',
14
15
  references: [
15
16
  'https://developer.mozilla.org/en-US/docs/Web/HTTP/Headers/X-Frame-Options',
16
17
  'https://developer.mozilla.org/en-US/docs/Web/HTTP/Headers/Content-Security-Policy/frame-ancestors',
@@ -1 +1 @@
1
- {"version":3,"file":"clickjacking.js","sourceRoot":"","sources":["../../../../src/engine/rules/frontend/clickjacking.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,QAAQ,EAAE,MAAM,gBAAgB,CAAC;AAE1C,MAAM,IAAI,GAAS;IACjB,EAAE,EAAE,QAAQ;IACZ,KAAK,EAAE,yEAAyE;IAChF,KAAK,EAAE,UAAU;IACjB,QAAQ,EAAE,QAAQ;IAClB,WAAW,EACT,mPAAmP;IACrP,MAAM,EAAE,8EAA8E;IACtF,WAAW,EACT,sDAAsD;QACtD,+EAA+E;QAC/E,kDAAkD;QAClD,qFAAqF;QACrF,uHAAuH;IACzH,UAAU,EAAE;QACV,2EAA2E;QAC3E,mGAAmG;QACnG,sDAAsD;KACvD;IACD,GAAG,EAAE,UAAU;IACf,KAAK,EAAE,oCAAoC;IAC3C,SAAS,EAAE,CAAC,YAAY,EAAE,YAAY,CAAC;IACvC,KAAK,EAAE,CAAC,GAAG,EAAE,EAAE;QACb,MAAM,QAAQ,GACZ,6BAA6B,CAAC,IAAI,CAAC,GAAG,CAAC,YAAY,CAAC;YACpD,gBAAgB,CAAC,IAAI,CAAC,GAAG,CAAC,YAAY,CAAC;YACvC,YAAY,CAAC,IAAI,CAAC,GAAG,CAAC,YAAY,CAAC;YACnC,eAAe,CAAC,IAAI,CAAC,GAAG,CAAC,YAAY,CAAC;YACtC,cAAc,CAAC,IAAI,CAAC,GAAG,CAAC,YAAY,CAAC;YACrC,cAAc,CAAC,IAAI,CAAC,GAAG,CAAC,YAAY,CAAC,CAAC;QAExC,IAAI,CAAC,QAAQ;YAAE,OAAO,EAAE,CAAC;QAEzB,MAAM,iBAAiB,GAAG,qBAAqB,CAAC,IAAI,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC;QACjE,MAAM,gBAAgB,GAAG,sBAAsB,CAAC,IAAI,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC;QAEjE,IAAI,iBAAiB,IAAI,gBAAgB;YAAE,OAAO,EAAE,CAAC;QAErD,MAAM,QAAQ,GAAG,EAAE,CAAC;QACpB,QAAQ,CAAC,IAAI,CAAC,GAAG,QAAQ,CAAC,IAAI,EAAE,GAAG,EAAE,yBAAyB,CAAC,CAAC,CAAC;QACjE,OAAO,QAAQ,CAAC;IAClB,CAAC;CACF,CAAC;AAEF,eAAe,IAAI,CAAC"}
1
+ {"version":3,"file":"clickjacking.js","sourceRoot":"","sources":["../../../../src/engine/rules/frontend/clickjacking.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,QAAQ,EAAE,MAAM,gBAAgB,CAAC;AAE1C,MAAM,IAAI,GAAS;IACjB,EAAE,EAAE,QAAQ;IACZ,KAAK,EAAE,yEAAyE;IAChF,KAAK,EAAE,UAAU;IACjB,QAAQ,EAAE,QAAQ;IAClB,WAAW,EACT,4QAA4Q;IAC9Q,MAAM,EAAE,+EAA+E;IACvF,WAAW,EACT,mDAAmD;QACnD,8EAA8E;QAC9E,wDAAwD;QACxD,oFAAoF;QACpF,mFAAmF;QACnF,qDAAqD;IACvD,UAAU,EAAE;QACV,2EAA2E;QAC3E,mGAAmG;QACnG,sDAAsD;KACvD;IACD,GAAG,EAAE,UAAU;IACf,KAAK,EAAE,oCAAoC;IAC3C,SAAS,EAAE,CAAC,YAAY,EAAE,YAAY,CAAC;IACvC,KAAK,EAAE,CAAC,GAAG,EAAE,EAAE;QACb,MAAM,QAAQ,GACZ,6BAA6B,CAAC,IAAI,CAAC,GAAG,CAAC,YAAY,CAAC;YACpD,gBAAgB,CAAC,IAAI,CAAC,GAAG,CAAC,YAAY,CAAC;YACvC,YAAY,CAAC,IAAI,CAAC,GAAG,CAAC,YAAY,CAAC;YACnC,eAAe,CAAC,IAAI,CAAC,GAAG,CAAC,YAAY,CAAC;YACtC,cAAc,CAAC,IAAI,CAAC,GAAG,CAAC,YAAY,CAAC;YACrC,cAAc,CAAC,IAAI,CAAC,GAAG,CAAC,YAAY,CAAC,CAAC;QAExC,IAAI,CAAC,QAAQ;YAAE,OAAO,EAAE,CAAC;QAEzB,MAAM,iBAAiB,GAAG,qBAAqB,CAAC,IAAI,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC;QACjE,MAAM,gBAAgB,GAAG,sBAAsB,CAAC,IAAI,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC;QAEjE,IAAI,iBAAiB,IAAI,gBAAgB;YAAE,OAAO,EAAE,CAAC;QAErD,MAAM,QAAQ,GAAG,EAAE,CAAC;QACpB,QAAQ,CAAC,IAAI,CAAC,GAAG,QAAQ,CAAC,IAAI,EAAE,GAAG,EAAE,yBAAyB,CAAC,CAAC,CAAC;QACjE,OAAO,QAAQ,CAAC;IAClB,CAAC;CACF,CAAC;AAEF,eAAe,IAAI,CAAC"}
@@ -4,12 +4,12 @@ const rule = {
4
4
  title: 'Dangerous dynamic code execution (eval / Function / setTimeout string)',
5
5
  layer: 'frontend',
6
6
  severity: 'high',
7
- description: '`eval()`, `new Function()`, `setTimeout(string, ...)` veya `setInterval(string, ...)` ile dinamik kod calistirmak, kullanici girdisi kontrolsuzce yurutulurse RCE veya XSS ile sonuclanabilir.',
7
+ description: 'Executing dynamic code via `eval()`, `new Function()`, `setTimeout(string, ...)`, or `setInterval(string, ...)` can lead to RCE or XSS when the input is not strictly controlled.',
8
8
  threat: 'Remote code execution, XSS, injection chain',
9
- remediation: 'Dinamik koda ihtiyac varsa JSON.parse veya guvenli bir DSL parser kullanin. ' +
10
- '`eval`, `Function` constructor\'dan tamamen kacinin. ' +
11
- '`setTimeout` / `setInterval`\'a her zaman fonksiyon referansi verin, string vermeyin. ' +
12
- 'CSP header\'larinda `unsafe-eval` eklemeyin.',
9
+ remediation: 'If you need dynamic behavior, prefer `JSON.parse` or a safe DSL parser. ' +
10
+ 'Avoid `eval` and the `Function` constructor entirely. ' +
11
+ 'Always pass function references (not strings) to `setTimeout` / `setInterval`. ' +
12
+ 'Do NOT enable `unsafe-eval` in your CSP header.',
13
13
  references: [
14
14
  'https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/eval#never_use_eval!',
15
15
  'https://owasp.org/www-community/attacks/Code_Injection',
@@ -1 +1 @@
1
- {"version":3,"file":"eval.js","sourceRoot":"","sources":["../../../../src/engine/rules/frontend/eval.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,QAAQ,EAAE,MAAM,gBAAgB,CAAC;AAE1C,MAAM,IAAI,GAAS;IACjB,EAAE,EAAE,QAAQ;IACZ,KAAK,EAAE,wEAAwE;IAC/E,KAAK,EAAE,UAAU;IACjB,QAAQ,EAAE,MAAM;IAChB,WAAW,EACT,gMAAgM;IAClM,MAAM,EAAE,6CAA6C;IACrD,WAAW,EACT,8EAA8E;QAC9E,uDAAuD;QACvD,wFAAwF;QACxF,8CAA8C;IAChD,UAAU,EAAE;QACV,uGAAuG;QACvG,wDAAwD;KACzD;IACD,GAAG,EAAE,QAAQ;IACb,KAAK,EAAE,oBAAoB;IAC3B,SAAS,EAAE,CAAC,YAAY,EAAE,YAAY,CAAC;IACvC,KAAK,EAAE,CAAC,GAAG,EAAE,EAAE;QACb,MAAM,QAAQ,GAAa;YACzB,cAAc;YACd,wBAAwB;YACxB,0BAA0B;YAC1B,2BAA2B;SAC5B,CAAC;QAEF,MAAM,QAAQ,GAAG,EAAE,CAAC;QACpB,KAAK,MAAM,EAAE,IAAI,QAAQ,EAAE,CAAC;YAC1B,QAAQ,CAAC,IAAI,CAAC,GAAG,QAAQ,CAAC,IAAI,EAAE,GAAG,EAAE,EAAE,CAAC,CAAC,CAAC;QAC5C,CAAC;QACD,OAAO,QAAQ,CAAC;IAClB,CAAC;CACF,CAAC;AAEF,eAAe,IAAI,CAAC"}
1
+ {"version":3,"file":"eval.js","sourceRoot":"","sources":["../../../../src/engine/rules/frontend/eval.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,QAAQ,EAAE,MAAM,gBAAgB,CAAC;AAE1C,MAAM,IAAI,GAAS;IACjB,EAAE,EAAE,QAAQ;IACZ,KAAK,EAAE,wEAAwE;IAC/E,KAAK,EAAE,UAAU;IACjB,QAAQ,EAAE,MAAM;IAChB,WAAW,EACT,mLAAmL;IACrL,MAAM,EAAE,6CAA6C;IACrD,WAAW,EACT,0EAA0E;QAC1E,wDAAwD;QACxD,iFAAiF;QACjF,iDAAiD;IACnD,UAAU,EAAE;QACV,uGAAuG;QACvG,wDAAwD;KACzD;IACD,GAAG,EAAE,QAAQ;IACb,KAAK,EAAE,oBAAoB;IAC3B,SAAS,EAAE,CAAC,YAAY,EAAE,YAAY,CAAC;IACvC,KAAK,EAAE,CAAC,GAAG,EAAE,EAAE;QACb,MAAM,QAAQ,GAAa;YACzB,cAAc;YACd,wBAAwB;YACxB,0BAA0B;YAC1B,2BAA2B;SAC5B,CAAC;QAEF,MAAM,QAAQ,GAAG,EAAE,CAAC;QACpB,KAAK,MAAM,EAAE,IAAI,QAAQ,EAAE,CAAC;YAC1B,QAAQ,CAAC,IAAI,CAAC,GAAG,QAAQ,CAAC,IAAI,EAAE,GAAG,EAAE,EAAE,CAAC,CAAC,CAAC;QAC5C,CAAC;QACD,OAAO,QAAQ,CAAC;IAClB,CAAC;CACF,CAAC;AAEF,eAAe,IAAI,CAAC"}
@@ -9,7 +9,7 @@ const rule = {
9
9
  remediation: '1) Wildcard (`*`) KULLANMAYIN. ' +
10
10
  '2) Explicit bir whitelist tanimlayin: `const allowed = [\'https://app.example.com\', \'https://admin.example.com\']`. ' +
11
11
  '3) Origin kontrolu yapip eslesiyorsa `Access-Control-Allow-Origin: <specific-origin>` donun. ' +
12
- '4) Credentials ile birlikte `*` ASLA calismaz; gerekirse `Access-Control-Allow-Credentials: true` + explicit origin kullanin. ' +
12
+ '4) Credentials ile birlikte `*` ASLA calismaz; gerekirse `Access-Control-Allow-Credentials: true` + explicit origin use. ' +
13
13
  '5) Preflight icin `Access-Control-Allow-Methods` ve `Access-Control-Allow-Headers`\'i da kisitlayin. ' +
14
14
  '6) Express: `cors({ origin: allowed, credentials: true })`.',
15
15
  references: [
@@ -1 +1 @@
1
- {"version":3,"file":"cors.js","sourceRoot":"","sources":["../../../../src/engine/rules/network/cors.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"cors.js","sourceRoot":"","sources":["../../../../src/engine/rules/network/cors.ts"],"names":[],"mappings":"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"}
@@ -6,7 +6,7 @@ const rule = {
6
6
  severity: 'medium',
7
7
  description: 'HTTP response\'larinda `Content-Security-Policy`, `Strict-Transport-Security`, `X-Content-Type-Options: nosniff`, `Referrer-Policy` veya `Permissions-Policy` basliklari yoksa tarayici tabanli saldiri yuzeyi acilir: XSS, MIME sniffing, bilgi sizintisi, yetenek istismari.',
8
8
  threat: 'XSS escalation, MIME sniffing, MITM downgrade, information leakage, feature abuse',
9
- remediation: 'Asagidaki header\'lari TUM response\'lara ekleyin: ' +
9
+ remediation: 'Asagidaki header\'lari TUM response\'lara addyin: ' +
10
10
  '`Content-Security-Policy: default-src \'self\'; script-src \'self\'; object-src \'none\'; base-uri \'self\'` ' +
11
11
  '`Strict-Transport-Security: max-age=31536000; includeSubDomains; preload` ' +
12
12
  '`X-Content-Type-Options: nosniff` ' +
@@ -1 +1 @@
1
- {"version":3,"file":"headers.js","sourceRoot":"","sources":["../../../../src/engine/rules/network/headers.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,QAAQ,EAAE,MAAM,gBAAgB,CAAC;AAE1C,MAAM,IAAI,GAAS;IACjB,EAAE,EAAE,SAAS;IACb,KAAK,EAAE,yFAAyF;IAChG,KAAK,EAAE,SAAS;IAChB,QAAQ,EAAE,QAAQ;IAClB,WAAW,EACT,gRAAgR;IAClR,MAAM,EAAE,mFAAmF;IAC3F,WAAW,EACT,qDAAqD;QACrD,+GAA+G;QAC/G,4EAA4E;QAC5E,oCAAoC;QACpC,qDAAqD;QACrD,iEAAiE;QACjE,uGAAuG;IACzG,UAAU,EAAE;QACV,+CAA+C;QAC/C,2DAA2D;QAC3D,8BAA8B;QAC9B,6BAA6B;KAC9B;IACD,GAAG,EAAE,SAAS;IACd,KAAK,EAAE,oCAAoC;IAC3C,SAAS,EAAE,CAAC,YAAY,EAAE,YAAY,CAAC;IACvC,KAAK,EAAE,CAAC,GAAG,EAAE,EAAE;QACb,MAAM,QAAQ,GACZ,6BAA6B,CAAC,IAAI,CAAC,GAAG,CAAC,YAAY,CAAC;YACpD,gBAAgB,CAAC,IAAI,CAAC,GAAG,CAAC,YAAY,CAAC;YACvC,YAAY,CAAC,IAAI,CAAC,GAAG,CAAC,YAAY,CAAC;YACnC,mBAAmB,CAAC,IAAI,CAAC,GAAG,CAAC,YAAY,CAAC;YAC1C,eAAe,CAAC,IAAI,CAAC,GAAG,CAAC,YAAY,CAAC;YACtC,uBAAuB,CAAC,IAAI,CAAC,GAAG,CAAC,YAAY,CAAC,CAAC;QAEjD,IAAI,CAAC,QAAQ;YAAE,OAAO,EAAE,CAAC;QAEzB,MAAM,eAAe,GAAG;YACtB,yBAAyB;YACzB,2BAA2B;YAC3B,wBAAwB;YACxB,iBAAiB;YACjB,oBAAoB;SACrB,CAAC;QAEF,MAAM,OAAO,GAAG,eAAe,CAAC,MAAM,CACpC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,IAAI,MAAM,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,MAAM,CAAC,CAC5C,CAAC;QAEF,IAAI,OAAO,CAAC,MAAM,KAAK,CAAC;YAAE,OAAO,EAAE,CAAC;QACxC,MAAM,QAAQ,GAAG,EAAE,CAAC;QAChB,MAAM,EAAE,GAAG,2BAA2B,CAAC;QACvC,QAAQ,CAAC,IAAI,CAAC,GAAG,QAAQ,CAAC,IAAI,EAAE,GAAG,EAAE,EAAE,CAAC,CAAC,CAAC;QAC1C,OAAO,QAAQ,CAAC;IAClB,CAAC;CACF,CAAC;AAEF,eAAe,IAAI,CAAC"}
1
+ {"version":3,"file":"headers.js","sourceRoot":"","sources":["../../../../src/engine/rules/network/headers.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,QAAQ,EAAE,MAAM,gBAAgB,CAAC;AAE1C,MAAM,IAAI,GAAS;IACjB,EAAE,EAAE,SAAS;IACb,KAAK,EAAE,yFAAyF;IAChG,KAAK,EAAE,SAAS;IAChB,QAAQ,EAAE,QAAQ;IAClB,WAAW,EACT,gRAAgR;IAClR,MAAM,EAAE,mFAAmF;IAC3F,WAAW,EACT,oDAAoD;QACpD,+GAA+G;QAC/G,4EAA4E;QAC5E,oCAAoC;QACpC,qDAAqD;QACrD,iEAAiE;QACjE,uGAAuG;IACzG,UAAU,EAAE;QACV,+CAA+C;QAC/C,2DAA2D;QAC3D,8BAA8B;QAC9B,6BAA6B;KAC9B;IACD,GAAG,EAAE,SAAS;IACd,KAAK,EAAE,oCAAoC;IAC3C,SAAS,EAAE,CAAC,YAAY,EAAE,YAAY,CAAC;IACvC,KAAK,EAAE,CAAC,GAAG,EAAE,EAAE;QACb,MAAM,QAAQ,GACZ,6BAA6B,CAAC,IAAI,CAAC,GAAG,CAAC,YAAY,CAAC;YACpD,gBAAgB,CAAC,IAAI,CAAC,GAAG,CAAC,YAAY,CAAC;YACvC,YAAY,CAAC,IAAI,CAAC,GAAG,CAAC,YAAY,CAAC;YACnC,mBAAmB,CAAC,IAAI,CAAC,GAAG,CAAC,YAAY,CAAC;YAC1C,eAAe,CAAC,IAAI,CAAC,GAAG,CAAC,YAAY,CAAC;YACtC,uBAAuB,CAAC,IAAI,CAAC,GAAG,CAAC,YAAY,CAAC,CAAC;QAEjD,IAAI,CAAC,QAAQ;YAAE,OAAO,EAAE,CAAC;QAEzB,MAAM,eAAe,GAAG;YACtB,yBAAyB;YACzB,2BAA2B;YAC3B,wBAAwB;YACxB,iBAAiB;YACjB,oBAAoB;SACrB,CAAC;QAEF,MAAM,OAAO,GAAG,eAAe,CAAC,MAAM,CACpC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,IAAI,MAAM,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,MAAM,CAAC,CAC5C,CAAC;QAEF,IAAI,OAAO,CAAC,MAAM,KAAK,CAAC;YAAE,OAAO,EAAE,CAAC;QACxC,MAAM,QAAQ,GAAG,EAAE,CAAC;QAChB,MAAM,EAAE,GAAG,2BAA2B,CAAC;QACvC,QAAQ,CAAC,IAAI,CAAC,GAAG,QAAQ,CAAC,IAAI,EAAE,GAAG,EAAE,EAAE,CAAC,CAAC,CAAC;QAC1C,OAAO,QAAQ,CAAC;IAClB,CAAC;CACF,CAAC;AAEF,eAAe,IAAI,CAAC"}
@@ -9,9 +9,9 @@ const rule = {
9
9
  remediation: '1) TLS 1.2+ zorunlu tutun; TLS 1.0/1.1\'i devre disi birakin. ' +
10
10
  '2) `Strict-Transport-Security: max-age=31536000; includeSubDomains; preload`. ' +
11
11
  '3) Nginx: `ssl_protocols TLSv1.2 TLSv1.3;`. ' +
12
- '4) Tum HTTP isteklerini 301 ile HTTPS\'e yonlendirin. ' +
13
- '5) Sertifika otomasyonu icin Let\'s Encrypt + certbot veya cloud provider ACM kullanin. ' +
14
- '6) HSTS preload listesi icin basvuru yapin.',
12
+ '4) Tum HTTP istaddrini 301 ile HTTPS\'e yonlendirin. ' +
13
+ '5) Sertifika otomasyonu icin Let\'s Encrypt + certbot veya cloud provider ACM use. ' +
14
+ '6) HSTS preload listesi icin basvuru do.',
15
15
  references: [
16
16
  'https://wiki.mozilla.org/Security/Server_Side_TLS',
17
17
  'https://datatracker.ietf.org/doc/html/rfc6797',
@@ -1 +1 @@
1
- {"version":3,"file":"tls.js","sourceRoot":"","sources":["../../../../src/engine/rules/network/tls.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,QAAQ,EAAE,MAAM,gBAAgB,CAAC;AAE1C,MAAM,IAAI,GAAS;IACjB,EAAE,EAAE,SAAS;IACb,KAAK,EAAE,iEAAiE;IACxE,KAAK,EAAE,SAAS;IAChB,QAAQ,EAAE,MAAM;IAChB,WAAW,EACT,8HAA8H;IAChI,MAAM,EAAE,2DAA2D;IACnE,WAAW,EACT,gEAAgE;QAChE,gFAAgF;QAChF,8CAA8C;QAC9C,wDAAwD;QACxD,0FAA0F;QAC1F,6CAA6C;IAC/C,UAAU,EAAE;QACV,mDAAmD;QACnD,+CAA+C;KAChD;IACD,GAAG,EAAE,SAAS;IACd,KAAK,EAAE,iCAAiC;IACxC,SAAS,EAAE,CAAC,YAAY,EAAE,YAAY,CAAC;IACvC,KAAK,EAAE,CAAC,GAAG,EAAE,EAAE;QACb,MAAM,QAAQ,GACZ,eAAe,CAAC,IAAI,CAAC,GAAG,CAAC,YAAY,CAAC;YACtC,6BAA6B,CAAC,IAAI,CAAC,GAAG,CAAC,YAAY,CAAC;YACpD,mBAAmB,CAAC,IAAI,CAAC,GAAG,CAAC,YAAY,CAAC,CAAC;QAE7C,IAAI,CAAC,QAAQ;YAAE,OAAO,EAAE,CAAC;QAEzB,MAAM,QAAQ,GAAG,EAAE,CAAC;QACxB,MAAM,UAAU,GAAG,4BAA4B,CAAC;QAC5C,KAAK,MAAM,CAAC,IAAI,GAAG,CAAC,MAAM,CAAC,QAAQ,CAAC,UAAU,CAAC,EAAE,CAAC;YAChD,IAAI,CAAC,CAAC,CAAC,CAAC,IAAI,4BAA4B,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;gBACpD,QAAQ,CAAC,IAAI,CAAC,GAAG,QAAQ,CAAC,IAAI,EAAE,GAAG,EAAE,UAAU,CAAC,CAAC,CAAC;gBAClD,MAAM;YACR,CAAC;QACH,CAAC;QACD,OAAO,QAAQ,CAAC;IAClB,CAAC;CACF,CAAC;AAEF,eAAe,IAAI,CAAC"}
1
+ {"version":3,"file":"tls.js","sourceRoot":"","sources":["../../../../src/engine/rules/network/tls.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,QAAQ,EAAE,MAAM,gBAAgB,CAAC;AAE1C,MAAM,IAAI,GAAS;IACjB,EAAE,EAAE,SAAS;IACb,KAAK,EAAE,iEAAiE;IACxE,KAAK,EAAE,SAAS;IAChB,QAAQ,EAAE,MAAM;IAChB,WAAW,EACT,8HAA8H;IAChI,MAAM,EAAE,2DAA2D;IACnE,WAAW,EACT,gEAAgE;QAChE,gFAAgF;QAChF,8CAA8C;QAC9C,uDAAuD;QACvD,qFAAqF;QACrF,0CAA0C;IAC5C,UAAU,EAAE;QACV,mDAAmD;QACnD,+CAA+C;KAChD;IACD,GAAG,EAAE,SAAS;IACd,KAAK,EAAE,iCAAiC;IACxC,SAAS,EAAE,CAAC,YAAY,EAAE,YAAY,CAAC;IACvC,KAAK,EAAE,CAAC,GAAG,EAAE,EAAE;QACb,MAAM,QAAQ,GACZ,eAAe,CAAC,IAAI,CAAC,GAAG,CAAC,YAAY,CAAC;YACtC,6BAA6B,CAAC,IAAI,CAAC,GAAG,CAAC,YAAY,CAAC;YACpD,mBAAmB,CAAC,IAAI,CAAC,GAAG,CAAC,YAAY,CAAC,CAAC;QAE7C,IAAI,CAAC,QAAQ;YAAE,OAAO,EAAE,CAAC;QAEzB,MAAM,QAAQ,GAAG,EAAE,CAAC;QACxB,MAAM,UAAU,GAAG,4BAA4B,CAAC;QAC5C,KAAK,MAAM,CAAC,IAAI,GAAG,CAAC,MAAM,CAAC,QAAQ,CAAC,UAAU,CAAC,EAAE,CAAC;YAChD,IAAI,CAAC,CAAC,CAAC,CAAC,IAAI,4BAA4B,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;gBACpD,QAAQ,CAAC,IAAI,CAAC,GAAG,QAAQ,CAAC,IAAI,EAAE,GAAG,EAAE,UAAU,CAAC,CAAC,CAAC;gBAClD,MAAM;YACR,CAAC;QACH,CAAC;QACD,OAAO,QAAQ,CAAC;IAClB,CAAC;CACF,CAAC;AAEF,eAAe,IAAI,CAAC"}
@@ -4,7 +4,7 @@ const rule = {
4
4
  title: 'Sensitive data exposed via logs (PII / stack trace / console.log in prod)',
5
5
  layer: 'observability',
6
6
  severity: 'medium',
7
- description: 'Log\'a parola, kart numarasi, token, session cookie veya kullanici kimlik bilgisi basilmasi, log toplayici sizintisinda GDPR/KVKK ihlali olusturur. Stack trace\'in production response\'una donmesi bilgi ifshasidir.',
7
+ description: 'Log\'a parola, kart numarasi, token, session cookie veya user kimlik bilgisi basilmasi, log toplayici sizintisinda GDPR/KVKK ihlali olusturur. Stack trace\'in production response\'una donmesi bilgi ifshasidir.',
8
8
  threat: 'PII leakage via logs, information disclosure via error responses, compliance violation',
9
9
  remediation: '1) Production response\'larinda ASLA stack trace / `error.stack` / ic detay donmeyin. Generic 500 + correlation id. ' +
10
10
  '2) Log\'a PII gondermeden once redact edin (`***-mask`). ' +
@@ -1 +1 @@
1
- {"version":3,"file":"logging.js","sourceRoot":"","sources":["../../../../src/engine/rules/observability/logging.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,QAAQ,EAAE,MAAM,gBAAgB,CAAC;AAE1C,MAAM,IAAI,GAAS;IACjB,EAAE,EAAE,SAAS;IACb,KAAK,EAAE,2EAA2E;IAClF,KAAK,EAAE,eAAe;IACtB,QAAQ,EAAE,QAAQ;IAClB,WAAW,EACT,wNAAwN;IAC1N,MAAM,EAAE,wFAAwF;IAChG,WAAW,EACT,sHAAsH;QACtH,2DAA2D;QAC3D,+DAA+D;QAC/D,uEAAuE;QACvE,gEAAgE;QAChE,gFAAgF;IAClF,UAAU,EAAE;QACV,yEAAyE;QACzE,4EAA4E;KAC7E;IACD,GAAG,EAAE,SAAS;IACd,KAAK,EAAE,mDAAmD;IAC1D,SAAS,EAAE,CAAC,YAAY,EAAE,YAAY,EAAE,QAAQ,EAAE,MAAM,EAAE,IAAI,CAAC;IAC/D,KAAK,EAAE,CAAC,GAAG,EAAE,EAAE;QACb,MAAM,QAAQ,GAAa;YAC/B,sGAAsG;YAChG,sHAAsH;YAC5H,8DAA8D;YACxD,wCAAwC;YAC9C,2DAA2D;SACtD,CAAC;QAEF,MAAM,QAAQ,GAAG,EAAE,CAAC;QACpB,KAAK,MAAM,EAAE,IAAI,QAAQ,EAAE,CAAC;YAC1B,QAAQ,CAAC,IAAI,CAAC,GAAG,QAAQ,CAAC,IAAI,EAAE,GAAG,EAAE,EAAE,CAAC,CAAC,CAAC;QAC5C,CAAC;QACD,OAAO,QAAQ,CAAC;IAClB,CAAC;CACF,CAAC;AAEF,eAAe,IAAI,CAAC"}
1
+ {"version":3,"file":"logging.js","sourceRoot":"","sources":["../../../../src/engine/rules/observability/logging.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,QAAQ,EAAE,MAAM,gBAAgB,CAAC;AAE1C,MAAM,IAAI,GAAS;IACjB,EAAE,EAAE,SAAS;IACb,KAAK,EAAE,2EAA2E;IAClF,KAAK,EAAE,eAAe;IACtB,QAAQ,EAAE,QAAQ;IAClB,WAAW,EACT,mNAAmN;IACrN,MAAM,EAAE,wFAAwF;IAChG,WAAW,EACT,sHAAsH;QACtH,2DAA2D;QAC3D,+DAA+D;QAC/D,uEAAuE;QACvE,gEAAgE;QAChE,gFAAgF;IAClF,UAAU,EAAE;QACV,yEAAyE;QACzE,4EAA4E;KAC7E;IACD,GAAG,EAAE,SAAS;IACd,KAAK,EAAE,mDAAmD;IAC1D,SAAS,EAAE,CAAC,YAAY,EAAE,YAAY,EAAE,QAAQ,EAAE,MAAM,EAAE,IAAI,CAAC;IAC/D,KAAK,EAAE,CAAC,GAAG,EAAE,EAAE;QACb,MAAM,QAAQ,GAAa;YAC/B,sGAAsG;YAChG,sHAAsH;YAC5H,8DAA8D;YACxD,wCAAwC;YAC9C,2DAA2D;SACtD,CAAC;QAEF,MAAM,QAAQ,GAAG,EAAE,CAAC;QACpB,KAAK,MAAM,EAAE,IAAI,QAAQ,EAAE,CAAC;YAC1B,QAAQ,CAAC,IAAI,CAAC,GAAG,QAAQ,CAAC,IAAI,EAAE,GAAG,EAAE,EAAE,CAAC,CAAC,CAAC;QAC5C,CAAC;QACD,OAAO,QAAQ,CAAC;IAClB,CAAC;CACF,CAAC;AAEF,eAAe,IAAI,CAAC"}
@@ -13,6 +13,7 @@ export async function scan(options) {
13
13
  const config = await loadConfig(rootDir);
14
14
  const effective = applyConfig(config, {
15
15
  layers: options.layers,
16
+ languages: options.languages,
16
17
  ignore: options.ignore,
17
18
  ruleIds: options.ruleIds,
18
19
  });
@@ -31,7 +32,6 @@ export async function scan(options) {
31
32
  });
32
33
  const rulesEvaluated = new Set();
33
34
  const findings = [];
34
- const detectedLanguages = new Set();
35
35
  const applicableRules = new Set();
36
36
  const maxPerFile = options.maxMatchesPerFile ?? PER_FILE_FINDING_CAP;
37
37
  const sourcesForProfile = [];
@@ -45,8 +45,9 @@ export async function scan(options) {
45
45
  }
46
46
  const language = detectLanguage(file.relativePath, source);
47
47
  sourcesForProfile.push({ relativePath: file.relativePath, source });
48
- if (language !== 'unknown')
49
- detectedLanguages.add(language);
48
+ if (effective.languages && !effective.languages.includes(language)) {
49
+ continue;
50
+ }
50
51
  const candidates = getRulesForLanguage(language);
51
52
  const applicable = candidates.filter((r) => {
52
53
  if (disabledRuleIds.has(r.id))
@@ -62,6 +63,7 @@ export async function scan(options) {
62
63
  if (applicable.length === 0)
63
64
  continue;
64
65
  const lines = source.split(/\r?\n/);
66
+ let fileFindingCount = 0;
65
67
  for (const rule of applicable) {
66
68
  rulesEvaluated.add(rule.id);
67
69
  applicableRules.add(rule.id);
@@ -79,14 +81,17 @@ export async function scan(options) {
79
81
  continue;
80
82
  }
81
83
  for (let finding of ruleFindings) {
82
- if (findings.length >= maxPerFile * 100)
84
+ if (fileFindingCount >= maxPerFile || findings.length >= GLOBAL_FINDING_CAP)
83
85
  break;
84
86
  const override = severityOverrides.get(finding.ruleId);
85
87
  if (override) {
86
88
  finding = { ...finding, severity: override };
87
89
  }
88
90
  findings.push(finding);
91
+ fileFindingCount++;
89
92
  }
93
+ if (fileFindingCount >= maxPerFile || findings.length >= GLOBAL_FINDING_CAP)
94
+ break;
90
95
  }
91
96
  }
92
97
  const finishedAt = new Date();
@@ -1 +1 @@
1
- {"version":3,"file":"scanner.js","sourceRoot":"","sources":["../../src/engine/scanner.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"scanner.js","sourceRoot":"","sources":["../../src/engine/scanner.ts"],"names":[],"mappings":"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"}
package/dist/server.js CHANGED
@@ -6,7 +6,7 @@ import { writeSecurityReport } from './engine/reporter.js';
6
6
  import { getAllRules, getRuleById } from './engine/rules/index.js';
7
7
  export const server = new Server({
8
8
  name: 'vibe-security',
9
- version: '0.1.0',
9
+ version: '1.0.0',
10
10
  }, {
11
11
  capabilities: {
12
12
  tools: {},
@@ -36,25 +36,25 @@ server.setRequestHandler(ListToolsRequestSchema, async () => {
36
36
  languages: {
37
37
  type: 'array',
38
38
  items: { type: 'string' },
39
- description: 'Belirli dillere kisitla (javascript, python, java, go, vb.)',
39
+ description: 'Limit the scan to selected languages (for example: javascript, python, java, go)',
40
40
  },
41
41
  ruleIds: {
42
42
  type: 'array',
43
43
  items: { type: 'string' },
44
- description: 'Sadece belirli kurallari calistir (ornek: ["BE-004", "FE-001"])',
44
+ description: 'Run only selected rules (for example: ["BE-004", "FE-001"])',
45
45
  },
46
46
  writeReport: {
47
47
  type: 'boolean',
48
- description: 'Security.md dosyasi yaz (default: true)',
48
+ description: 'Write Security.md (default: true)',
49
49
  default: true,
50
50
  },
51
51
  reportPath: {
52
52
  type: 'string',
53
- description: 'Security.md cikti yolu (default: <rootDir>/Security.md)',
53
+ description: 'Security.md output path (default: <rootDir>/Security.md)',
54
54
  },
55
55
  maxMatchesPerFile: {
56
56
  type: 'number',
57
- description: 'Dosya basina maks. eslesme (default: 50)',
57
+ description: 'Maximum findings per file (default: 50)',
58
58
  },
59
59
  ignore: {
60
60
  type: 'array',
@@ -98,21 +98,21 @@ server.setRequestHandler(ListToolsRequestSchema, async () => {
98
98
  },
99
99
  {
100
100
  name: 'list_rules',
101
- description: 'Mevcut tum guvenlik kurallarini listeler. ID, katman, severity, baslik ve dil destegi icerir.',
101
+ description: 'List all security rules with their ID, layer, severity, title, and supported languages.',
102
102
  inputSchema: {
103
103
  type: 'object',
104
104
  properties: {
105
105
  layer: {
106
106
  type: 'string',
107
107
  enum: ['frontend', 'backend', 'network', 'database', 'cicd', 'observability'],
108
- description: 'Belirli bir katmana filtrele',
108
+ description: 'Filter by layer',
109
109
  },
110
110
  },
111
111
  },
112
112
  },
113
113
  {
114
114
  name: 'get_rule_detail',
115
- description: 'Belirli bir kural hakkinda tam detay: aciklama, tehdit, onlem, referanslar, ornek desenler.',
115
+ description: 'Show full details for a rule, including description, threat, remediation, and references.',
116
116
  inputSchema: {
117
117
  type: 'object',
118
118
  required: ['ruleId'],
@@ -186,7 +186,7 @@ server.setRequestHandler(CallToolRequestSchema, async (request) => {
186
186
  .join('\n')
187
187
  : '',
188
188
  fixable.length > 0
189
- ? `\nKullanici isterse \`vibe-security scan . --fix --dry-run\` ile uygulayabilir.`
189
+ ? `\nUser can apply via \`vibe-security scan . --fix --dry-run\`.`
190
190
  : '',
191
191
  ]
192
192
  .filter(Boolean)
@@ -322,7 +322,7 @@ function severityRank(s) {
322
322
  function formatSummary(result) {
323
323
  const { bySeverity, byLayer } = result.summary;
324
324
  const lines = [];
325
- lines.push(`# 🛡️ Vibe Security Scan Complete`);
325
+ lines.push(`# Vibe Security Scan Complete`);
326
326
  lines.push('');
327
327
  lines.push(`- **Total findings:** ${result.summary.totalFindings}`);
328
328
  lines.push(`- **Files scanned:** ${result.filesScanned}`);
@@ -348,7 +348,7 @@ function formatSummary(result) {
348
348
  }
349
349
  function errorResult(message) {
350
350
  return {
351
- content: [{ type: 'text', text: `❌ ${message}` }],
351
+ content: [{ type: 'text', text: `Error: ${message}` }],
352
352
  isError: true,
353
353
  };
354
354
  }
@@ -1 +1 @@
1
- {"version":3,"file":"server.js","sourceRoot":"","sources":["../src/server.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"server.js","sourceRoot":"","sources":["../src/server.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@korayda4/vibe-security",
3
- "version": "0.3.0",
3
+ "version": "1.0.0",
4
4
  "description": "Security guard MCP server for Vibe Coded projects — scans Frontend and Backend across every layer and language, plans + tests + fixes vulnerabilities. Claude Code and VS Code Anthropic Claude extension compatible.",
5
5
  "type": "module",
6
6
  "main": "dist/index.js",