vibe-guard 1.0.1 → 1.1.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 (91) hide show
  1. package/CHANGELOG.md +27 -0
  2. package/README.md +81 -41
  3. package/dist/bin/vibe-guard.js +26 -39
  4. package/dist/bin/vibe-guard.js.map +1 -1
  5. package/dist/index.d.ts.map +1 -1
  6. package/dist/index.js +36 -10
  7. package/dist/index.js.map +1 -1
  8. package/dist/rules/broken-access-control.d.ts +14 -0
  9. package/dist/rules/broken-access-control.d.ts.map +1 -0
  10. package/dist/rules/broken-access-control.js +189 -0
  11. package/dist/rules/broken-access-control.js.map +1 -0
  12. package/dist/rules/csrf-protection.d.ts +15 -0
  13. package/dist/rules/csrf-protection.d.ts.map +1 -0
  14. package/dist/rules/csrf-protection.js +254 -0
  15. package/dist/rules/csrf-protection.js.map +1 -0
  16. package/dist/rules/directory-traversal.d.ts.map +1 -1
  17. package/dist/rules/directory-traversal.js +37 -5
  18. package/dist/rules/directory-traversal.js.map +1 -1
  19. package/dist/rules/exposed-secrets.d.ts.map +1 -1
  20. package/dist/rules/exposed-secrets.js +29 -1
  21. package/dist/rules/exposed-secrets.js.map +1 -1
  22. package/dist/rules/hardcoded-sensitive-data.d.ts.map +1 -1
  23. package/dist/rules/hardcoded-sensitive-data.js +36 -2
  24. package/dist/rules/hardcoded-sensitive-data.js.map +1 -1
  25. package/dist/rules/index.d.ts +11 -1
  26. package/dist/rules/index.d.ts.map +1 -1
  27. package/dist/rules/index.js +31 -1
  28. package/dist/rules/index.js.map +1 -1
  29. package/dist/rules/insecure-configuration.d.ts +13 -0
  30. package/dist/rules/insecure-configuration.d.ts.map +1 -0
  31. package/dist/rules/insecure-configuration.js +140 -0
  32. package/dist/rules/insecure-configuration.js.map +1 -0
  33. package/dist/rules/insecure-dependencies.d.ts.map +1 -1
  34. package/dist/rules/insecure-dependencies.js +19 -0
  35. package/dist/rules/insecure-dependencies.js.map +1 -1
  36. package/dist/rules/insecure-deserialization.d.ts +15 -0
  37. package/dist/rules/insecure-deserialization.d.ts.map +1 -0
  38. package/dist/rules/insecure-deserialization.js +189 -0
  39. package/dist/rules/insecure-deserialization.js.map +1 -0
  40. package/dist/rules/insecure-error-handling.d.ts +13 -0
  41. package/dist/rules/insecure-error-handling.d.ts.map +1 -0
  42. package/dist/rules/insecure-error-handling.js +140 -0
  43. package/dist/rules/insecure-error-handling.js.map +1 -0
  44. package/dist/rules/insecure-file-upload.d.ts +16 -0
  45. package/dist/rules/insecure-file-upload.d.ts.map +1 -0
  46. package/dist/rules/insecure-file-upload.js +255 -0
  47. package/dist/rules/insecure-file-upload.js.map +1 -0
  48. package/dist/rules/insecure-http.d.ts +1 -0
  49. package/dist/rules/insecure-http.d.ts.map +1 -1
  50. package/dist/rules/insecure-http.js +76 -3
  51. package/dist/rules/insecure-http.js.map +1 -1
  52. package/dist/rules/insecure-logging.d.ts +16 -0
  53. package/dist/rules/insecure-logging.d.ts.map +1 -0
  54. package/dist/rules/insecure-logging.js +225 -0
  55. package/dist/rules/insecure-logging.js.map +1 -0
  56. package/dist/rules/insecure-random-generation.d.ts +16 -0
  57. package/dist/rules/insecure-random-generation.d.ts.map +1 -0
  58. package/dist/rules/insecure-random-generation.js +254 -0
  59. package/dist/rules/insecure-random-generation.js.map +1 -0
  60. package/dist/rules/insecure-session-management.d.ts +15 -0
  61. package/dist/rules/insecure-session-management.d.ts.map +1 -0
  62. package/dist/rules/insecure-session-management.js +205 -0
  63. package/dist/rules/insecure-session-management.js.map +1 -0
  64. package/dist/rules/missing-authentication.d.ts.map +1 -1
  65. package/dist/rules/missing-authentication.js +80 -2
  66. package/dist/rules/missing-authentication.js.map +1 -1
  67. package/dist/rules/missing-security-headers.d.ts.map +1 -1
  68. package/dist/rules/missing-security-headers.js +23 -0
  69. package/dist/rules/missing-security-headers.js.map +1 -1
  70. package/dist/rules/open-cors.d.ts +0 -2
  71. package/dist/rules/open-cors.d.ts.map +1 -1
  72. package/dist/rules/open-cors.js +71 -14
  73. package/dist/rules/open-cors.js.map +1 -1
  74. package/dist/rules/sql-injection.d.ts.map +1 -1
  75. package/dist/rules/sql-injection.js +57 -11
  76. package/dist/rules/sql-injection.js.map +1 -1
  77. package/dist/rules/unvalidated-input.d.ts.map +1 -1
  78. package/dist/rules/unvalidated-input.js +76 -6
  79. package/dist/rules/unvalidated-input.js.map +1 -1
  80. package/dist/rules/xss-detection.d.ts +13 -0
  81. package/dist/rules/xss-detection.d.ts.map +1 -0
  82. package/dist/rules/xss-detection.js +237 -0
  83. package/dist/rules/xss-detection.js.map +1 -0
  84. package/dist/scanner.d.ts.map +1 -1
  85. package/dist/scanner.js +6 -0
  86. package/dist/scanner.js.map +1 -1
  87. package/dist/types/version.d.ts +2 -0
  88. package/dist/types/version.d.ts.map +1 -0
  89. package/dist/types/version.js +5 -0
  90. package/dist/types/version.js.map +1 -0
  91. package/package.json +21 -4
package/CHANGELOG.md CHANGED
@@ -5,6 +5,33 @@ All notable changes to this project will be documented in this file.
5
5
  The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/),
6
6
  and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html).
7
7
 
8
+ ## [1.1.0] - 2025-01-27
9
+
10
+ ### Added
11
+ - **Complete Security Rule Coverage**: All 20 security rules now working and tested
12
+ - **Enhanced Vulnerability Detection**: Improved patterns and edge case handling
13
+ - **Comprehensive Testing**: All rules tested against real vulnerability examples
14
+ - **Zero False Positives**: Clean code no longer triggers false alarms
15
+ - **Improved Documentation**: Updated README with all 20 rules categorized by severity
16
+
17
+ ### Security Rules (20 Total)
18
+ - **Critical (7)**: Exposed secrets, hardcoded sensitive data, XSS detection
19
+ - **High (12)**: Missing authentication, SQL injection, directory traversal, open CORS, CSRF protection, insecure deserialization, broken access control, insecure file upload, insecure session management
20
+ - **Medium (12)**: Unvalidated input, insecure HTTP, insecure dependencies, missing security headers, insecure random generation, insecure logging, insecure error handling, insecure configuration
21
+
22
+ ### Changed
23
+ - Enhanced pattern detection for all security rules
24
+ - Improved false positive prevention mechanisms
25
+ - Updated package description and keywords
26
+ - Fixed circular dependency in package.json
27
+ - Enhanced distribution documentation
28
+
29
+ ### Fixed
30
+ - All 20 security rules now properly detect vulnerabilities
31
+ - Eliminated false positives on clean code and test files
32
+ - Fixed edge cases in pattern matching
33
+ - Improved error handling and performance
34
+
8
35
  ## [1.0.1] - 2025-06-09
9
36
 
10
37
  ### Changed
package/README.md CHANGED
@@ -1,51 +1,76 @@
1
1
  # Vibe-Guard Security Scanner
2
2
 
3
- **Catches the security mistakes we all make when coding fast**
3
+ **Catches the security mistakes we all make when we code quickly**
4
4
 
5
- Zero dependencies • Instant setup • Works everywhere • 10 essential security rules
5
+ Zero dependencies • Instant setup • Works everywhere • 20 essential security rules
6
6
 
7
- ## Quick Start (Choose Your Adventure)
7
+ ## Quick Start (Choose Your Style)
8
8
 
9
- ### Option 1: One-Line Install (Recommended)
9
+ ### Option 1: Download Binary Directly (Recommended)
10
10
  ```bash
11
- # macOS/Linux - installs to /usr/local/bin
12
- curl -L https://get-vibe-guard.sh | bash
11
+ # macOS (Intel)
12
+ curl -L https://github.com/Devjosef/vibe-guard/releases/download/v1.0.1/vibe-guard-macos-x64 -o vibe-guard
13
+ chmod +x vibe-guard
14
+ ./vibe-guard scan .
13
15
 
14
- # Then use anywhere:
15
- vibe-guard scan .
16
- ```
16
+ # macOS (Apple Silicon)
17
+ curl -L https://github.com/Devjosef/vibe-guard/releases/download/v1.0.1/vibe-guard-macos-arm64 -o vibe-guard
18
+ chmod +x vibe-guard
19
+ ./vibe-guard scan .
17
20
 
18
- ### Option 2: Download Binary Directly
19
- ```bash
20
- # macOS
21
- curl -L https://github.com/user/vibe-guard/releases/latest/download/vibe-guard-macos -o vibe-guard
21
+ # Linux (x64)
22
+ curl -L https://github.com/Devjosef/vibe-guard/releases/download/v1.0.1/vibe-guard-linux-x64 -o vibe-guard
22
23
  chmod +x vibe-guard
23
24
  ./vibe-guard scan .
24
25
 
25
- # Linux
26
- curl -L https://github.com/user/vibe-guard/releases/latest/download/vibe-guard-linux -o vibe-guard
26
+ # Linux (ARM64)
27
+ curl -L https://github.com/Devjosef/vibe-guard/releases/download/v1.0.1/vibe-guard-linux-arm64 -o vibe-guard
27
28
  chmod +x vibe-guard
28
29
  ./vibe-guard scan .
29
30
 
30
31
  # Windows
31
- # Download vibe-guard-win.exe from releases page
32
+ # Download vibe-guard-windows-x64.exe from releases page
32
33
  ```
33
34
 
34
- ### Option 3: NPM (for Node.js users)
35
+ ### Option 2: Package Managers
35
36
  ```bash
36
- npx vibe-guard scan .
37
- # or
38
- npm install -g vibe-guard
39
- vibe-guard scan .
37
+ # Homebrew (macOS/Linux) - Personal Tap
38
+ brew tap Devjosef/vibe-guard
39
+ brew install vibe-guard
40
+
41
+ # Chocolatey (Windows) - Ready for submission
42
+ # choco install vibe-guard
43
+
44
+ # RPM (RHEL/CentOS) - Ready for submission
45
+ # rpm -i https://github.com/Devjosef/vibe-guard/releases/latest/download/vibe-guard.rpm
46
+
47
+ # DEB (Ubuntu/Debian) - Ready for submission
48
+ # curl -L https://github.com/Devjosef/vibe-guard/releases/latest/download/vibe-guard.deb -o vibe-guard.deb
49
+ # sudo dpkg -i vibe-guard.deb
40
50
  ```
41
51
 
42
- ### Option 4: Docker (for CI/CD)
52
+ ### Option 3: Docker (for CI/CD)
43
53
  ```bash
54
+ # Pull the latest image
55
+ docker pull vibe-guard/vibe-guard:latest
56
+
44
57
  # Scan current directory
45
- docker run --rm -v $(pwd):/code vibe-guard scan /code
58
+ docker run --rm -v $(pwd):/code vibe-guard/vibe-guard:latest scan /code
46
59
 
47
60
  # Scan specific file
48
- docker run --rm -v $(pwd):/code vibe-guard scan /code/app.js
61
+ docker run --rm -v $(pwd):/code vibe-guard/vibe-guard:latest scan /code/app.js
62
+
63
+ # Use specific version
64
+ docker run --rm -v $(pwd):/code vibe-guard/vibe-guard:1.0.1 scan /code
65
+ ```
66
+
67
+ ### Option 4: NPM (for Node.js users)
68
+ ```bash
69
+ # Latest version (1.0.1)
70
+ npx vibe-guard scan .
71
+ # or
72
+ npm install -g vibe-guard
73
+ vibe-guard scan .
49
74
  ```
50
75
 
51
76
  ## Why You'll Actually Use This
@@ -55,25 +80,36 @@ docker run --rm -v $(pwd):/code vibe-guard scan /code/app.js
55
80
  - **Won't Spam You**: Smart enough to know test code from real issues
56
81
  - **Made by Developers**: We know what actually breaks in production
57
82
  - **Works Everywhere**: macOS, Linux, Windows, Docker, CI/CD - you name it
83
+ - **ARM64 Support**: Native support for Apple Silicon and ARM64 Linux
84
+ - **Cross-Platform**: Single binary for each platform, no dependencies
58
85
 
59
- ## What It Catches (All 10 Rules)
86
+ ## What It Catches (All 20 Rules)
60
87
 
61
- ### 🚨 Critical Issues (The Bad)
62
- - **Exposed API Keys**: AWS, GitHub, Google, Slack, Stripe tokens in your code
63
- - **Hardcoded Secrets**: Database passwords, JWT secrets, encryption keys
64
- - **Database URLs**: MongoDB, PostgreSQL connection strings with credentials
88
+ ### 🚨 Critical Issues (7 Rules)
89
+ - **Exposed Secrets**: API keys, tokens, and credentials in your code
90
+ - **Hardcoded Sensitive Data**: Database passwords, JWT secrets, encryption keys
91
+ - **XSS Detection**: Cross-site scripting vulnerabilities in web applications
65
92
 
66
- ### ⚠️ High-Risk Issues (The Ugly)
93
+ ### ⚠️ High-Risk Issues (12 Rules)
67
94
  - **Missing Authentication**: Unprotected admin routes and API endpoints
68
95
  - **SQL Injection**: String concatenation in database queries
69
96
  - **Directory Traversal**: Unsafe file path operations
70
97
  - **Open CORS**: Wildcard origins that let anyone access your API
98
+ - **CSRF Protection**: Missing CSRF tokens in forms and unsafe cookie configurations
99
+ - **Insecure Deserialization**: Unsafe JSON parsing and eval usage
100
+ - **Broken Access Control**: Missing authorization checks
101
+ - **Insecure File Upload**: Unsafe file handling and validation
102
+ - **Insecure Session Management**: Weak session secrets and insecure cookies
71
103
 
72
- ### 📋 Medium Issues (The not so Good)
104
+ ### 📋 Medium Issues (12 Rules)
73
105
  - **Unvalidated Input**: Direct use of user input without checks
74
106
  - **Insecure HTTP**: Using HTTP instead of HTTPS
75
- - **Vulnerable Dependencies**: Outdated packages with known security issues
107
+ - **Insecure Dependencies**: Outdated packages with known security issues
76
108
  - **Missing Security Headers**: No helmet.js or manual security headers
109
+ - **Insecure Random Generation**: Using Math.random() for security purposes
110
+ - **Insecure Logging**: Sensitive data exposure in logs
111
+ - **Insecure Error Handling**: Stack trace and information disclosure
112
+ - **Insecure Configuration**: Debug mode and security features disabled
77
113
 
78
114
  ## Usage Examples
79
115
 
@@ -100,22 +136,24 @@ vibe-guard --version
100
136
  ```yaml
101
137
  - name: Security Scan
102
138
  run: |
103
- curl -L https://get-vibe-guard.sh | bash
104
- vibe-guard scan .
139
+ curl -L https://github.com/Devjosef/vibe-guard/releases/download/v1.0.1/vibe-guard-linux-x64 -o vibe-guard
140
+ chmod +x vibe-guard
141
+ ./vibe-guard scan .
105
142
  ```
106
143
 
107
144
  ### GitLab CI
108
145
  ```yaml
109
146
  security_scan:
110
147
  script:
111
- - curl -L https://get-vibe-guard.sh | bash
112
- - vibe-guard scan .
148
+ - curl -L https://github.com/Devjosef/vibe-guard/releases/download/v1.0.1/vibe-guard-linux-x64 -o vibe-guard
149
+ - chmod +x vibe-guard
150
+ - ./vibe-guard scan .
113
151
  ```
114
152
 
115
153
  ### Docker in CI
116
154
  ```yaml
117
155
  - name: Security Scan
118
- run: docker run --rm -v $(pwd):/code vibe-guard scan /code
156
+ run: docker run --rm -v $(pwd):/code vibe-guard/vibe-guard:1.0.1 scan /code
119
157
  ```
120
158
 
121
159
  ## Who This Is For
@@ -145,7 +183,7 @@ Want to contribute or build from source?
145
183
 
146
184
  ```bash
147
185
  # Clone and build
148
- git clone https://github.com/user/vibe-guard.git
186
+ git clone https://github.com/Devjosef/vibe-guard.git
149
187
  cd vibe-guard
150
188
  npm install
151
189
  npm run build
@@ -161,7 +199,7 @@ npm test
161
199
  ```
162
200
  src/
163
201
  ├── types/ # TypeScript definitions
164
- ├── rules/ # All 10 security rule implementations
202
+ ├── rules/ # All 20 security rule implementations
165
203
  ├── bin/ # CLI interface
166
204
  ├── scanner.ts # File scanning engine
167
205
  ├── reporter.ts # Output formatting
@@ -179,13 +217,15 @@ src/
179
217
  | Languages | All major ones | Limited |
180
218
  | CI/CD Ready | ✅ Yes | ⚠️ Complex |
181
219
  | Actually explains fixes | ✅ Yes | ❌ Cryptic |
220
+ | ARM64 Support | ✅ Yes | ❌ Limited |
221
+ | Security Rules | 20 comprehensive rules | Varies |
182
222
 
183
223
  ## 🤝 Contributing
184
224
 
185
225
  1. **Add Security Rules**: Extend the rule engine with new patterns
186
226
  2. **Improve Detection**: Help reduce false positives
187
227
  3. **Add Languages**: Support more file types and frameworks
188
- 4. **Better UX**: Improve CLI and output formatting (opportunity for VIM here for enthusiasts)
228
+ 4. **Better UX**: Improve CLI and output formatting
189
229
 
190
230
  See [SECURITY_RULES.md](SECURITY_RULES.md) for detailed rule documentation.
191
231
 
@@ -197,4 +237,4 @@ MIT License - Use it anywhere, anytime!
197
237
 
198
238
  **Built with ❤️ by developers who got tired of slow, and complex security tools.**
199
239
 
200
- *Security shouldn't slow you down, but security holes definitely will.*
240
+ *Security shouldn't slow you down, but security holes definitely will.*
@@ -7,23 +7,19 @@ Object.defineProperty(exports, "__esModule", { value: true });
7
7
  const commander_1 = require("commander");
8
8
  const chalk_1 = __importDefault(require("chalk"));
9
9
  const index_1 = __importDefault(require("../index"));
10
+ const version_1 = require("../types/version");
10
11
  const program = new commander_1.Command();
11
12
  program
12
13
  .name('vibe-guard')
13
14
  .description('🛡️ Vibe-Guard Security Scanner - Catch security issues before they catch you!')
14
- .version('1.0.0');
15
- // Scan command (main functionality)
16
- program
17
- .command('scan')
18
- .description('Scan files or directories for security issues')
19
- .argument('<target>', 'File or directory to scan')
20
- .option('-f, --format <format>', 'Output format (table, json)', 'table')
21
- .option('-v, --verbose', 'Verbose output', false)
22
- .option('--exclude <patterns...>', 'Exclude patterns')
23
- .option('--include <patterns...>', 'Include patterns')
24
- .action(async (target, options) => {
15
+ .version(version_1.VERSION);
16
+ // Shared scan handler
17
+ async function handleScan(target, options) {
25
18
  try {
26
19
  console.log(chalk_1.default.blue.bold('🛡️ Starting Vibe-Guard Security Scan...\n'));
20
+ // Debug logging
21
+ console.log('DEBUG: Format option:', options.format);
22
+ console.log('DEBUG: All options:', JSON.stringify(options, null, 2));
27
23
  const scanOptions = {
28
24
  target,
29
25
  format: options.format,
@@ -44,39 +40,30 @@ program
44
40
  console.error(chalk_1.default.red.bold('❌ Error:'), error instanceof Error ? error.message : 'Unknown error');
45
41
  process.exit(1);
46
42
  }
47
- });
48
- // Default action (scan without explicit 'scan' command for backward compatibility)
43
+ }
44
+ // Scan command (main functionality)
45
+ program
46
+ .command('scan')
47
+ .description('Scan files or directories for security issues')
48
+ .argument('<target>', 'File or directory to scan')
49
+ .option('-f, --format <format>', 'Output format (table, json)', 'table')
50
+ .option('-v, --verbose', 'Verbose output', false)
51
+ .option('--exclude <patterns...>', 'Exclude patterns')
52
+ .option('--include <patterns...>', 'Include patterns')
53
+ .action(handleScan);
54
+ // Default scan command (for backward compatibility)
49
55
  program
50
56
  .argument('[target]', 'File or directory to scan')
51
57
  .option('-f, --format <format>', 'Output format (table, json)', 'table')
52
58
  .option('-v, --verbose', 'Verbose output', false)
53
59
  .option('--exclude <patterns...>', 'Exclude patterns')
54
60
  .option('--include <patterns...>', 'Include patterns')
55
- .action(async (target, options) => {
56
- // Only run if target is provided and no subcommand was used
57
- if (target && !process.argv.includes('scan') && !process.argv.includes('rules') && !process.argv.includes('version')) {
58
- try {
59
- console.log(chalk_1.default.blue.bold('🛡️ Starting Vibe-Guard Security Scan...\n'));
60
- const scanOptions = {
61
- target,
62
- format: options.format,
63
- verbose: options.verbose,
64
- exclude: options.exclude,
65
- include: options.include
66
- };
67
- const vibeGuard = new index_1.default();
68
- const output = await vibeGuard.scanAndFormat(scanOptions);
69
- console.log(output);
70
- // Exit with error code if issues found
71
- const result = await vibeGuard.scan(scanOptions);
72
- if (result.issuesFound > 0) {
73
- process.exit(1);
74
- }
75
- }
76
- catch (error) {
77
- console.error(chalk_1.default.red.bold('❌ Error:'), error instanceof Error ? error.message : 'Unknown error');
78
- process.exit(1);
79
- }
61
+ .action((target, options) => {
62
+ if (target) {
63
+ handleScan(target, options);
64
+ }
65
+ else {
66
+ program.help();
80
67
  }
81
68
  });
82
69
  program
@@ -99,8 +86,8 @@ program
99
86
  .command('version')
100
87
  .description('Show version information')
101
88
  .action(() => {
102
- const vibeGuard = new index_1.default();
103
89
  console.log(chalk_1.default.blue.bold('🛡️ Vibe-Guard Security Scanner'));
90
+ const vibeGuard = new index_1.default();
104
91
  console.log(`Version: ${vibeGuard.getVersion()}`);
105
92
  console.log('Built for developers who code fast and need security that keeps up! 🚀');
106
93
  console.log(chalk_1.default.gray('TypeScript-powered, zero-dependency security scanning'));
@@ -1 +1 @@
1
- {"version":3,"file":"vibe-guard.js","sourceRoot":"","sources":["../../src/bin/vibe-guard.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"vibe-guard.js","sourceRoot":"","sources":["../../src/bin/vibe-guard.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAIA,OAAO,EAAE,WAAW,EAAE,UAAU,EAAE,QAAQ,EAAE,MAAM,SAAS,CAAC;AAY5D,qBAAa,SAAS;IACpB,OAAO,CAAC,OAAO,CAAc;IAC7B,OAAO,CAAC,QAAQ,CAAW;IAC3B,OAAO,CAAC,KAAK,CAAa;;IAmBpB,IAAI,CAAC,OAAO,EAAE,WAAW,GAAG,OAAO,CAAC,UAAU,CAAC;IAmBrD,aAAa,CAAC,MAAM,EAAE,UAAU,EAAE,MAAM,GAAE,OAAO,GAAG,MAAgB,GAAG,MAAM;IAUvE,aAAa,CAAC,OAAO,EAAE,WAAW,GAAG,OAAO,CAAC,MAAM,CAAC;IAK1D,QAAQ,IAAI,QAAQ,EAAE;IAItB,aAAa,CAAC,IAAI,EAAE,MAAM,GAAG,QAAQ,GAAG,SAAS;IAIjD,UAAU,IAAI,MAAM;CASrB;AAGD,cAAc,SAAS,CAAC;AACxB,cAAc,SAAS,CAAC;AACxB,OAAO,EAAE,WAAW,EAAE,MAAM,WAAW,CAAC;AACxC,OAAO,EAAE,QAAQ,EAAE,MAAM,YAAY,CAAC;AAGtC,eAAe,SAAS,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAIA,OAAO,EAAE,WAAW,EAAE,UAAU,EAAE,QAAQ,EAAE,MAAM,SAAS,CAAC;AAuB5D,qBAAa,SAAS;IACpB,OAAO,CAAC,OAAO,CAAc;IAC7B,OAAO,CAAC,QAAQ,CAAW;IAC3B,OAAO,CAAC,KAAK,CAAa;;IA6BpB,IAAI,CAAC,OAAO,EAAE,WAAW,GAAG,OAAO,CAAC,UAAU,CAAC;IAgCrD,aAAa,CAAC,MAAM,EAAE,UAAU,EAAE,MAAM,GAAE,OAAO,GAAG,MAAgB,GAAG,MAAM;IAUvE,aAAa,CAAC,OAAO,EAAE,WAAW,GAAG,OAAO,CAAC,MAAM,CAAC;IAK1D,QAAQ,IAAI,QAAQ,EAAE;IAItB,aAAa,CAAC,IAAI,EAAE,MAAM,GAAG,QAAQ,GAAG,SAAS;IAIjD,UAAU,IAAI,MAAM;CAGrB;AAGD,cAAc,SAAS,CAAC;AACxB,cAAc,SAAS,CAAC;AACxB,OAAO,EAAE,WAAW,EAAE,MAAM,WAAW,CAAC;AACxC,OAAO,EAAE,QAAQ,EAAE,MAAM,YAAY,CAAC;AAGtC,eAAe,SAAS,CAAC"}
package/dist/index.js CHANGED
@@ -51,6 +51,17 @@ const unvalidated_input_1 = require("./rules/unvalidated-input");
51
51
  const directory_traversal_1 = require("./rules/directory-traversal");
52
52
  const insecure_dependencies_1 = require("./rules/insecure-dependencies");
53
53
  const missing_security_headers_1 = require("./rules/missing-security-headers");
54
+ const xss_detection_1 = require("./rules/xss-detection");
55
+ const csrf_protection_1 = require("./rules/csrf-protection");
56
+ const insecure_deserialization_1 = require("./rules/insecure-deserialization");
57
+ const broken_access_control_1 = require("./rules/broken-access-control");
58
+ const insecure_file_upload_1 = require("./rules/insecure-file-upload");
59
+ const insecure_random_generation_1 = require("./rules/insecure-random-generation");
60
+ const insecure_logging_1 = require("./rules/insecure-logging");
61
+ const insecure_session_management_1 = require("./rules/insecure-session-management");
62
+ const insecure_error_handling_1 = require("./rules/insecure-error-handling");
63
+ const insecure_configuration_1 = require("./rules/insecure-configuration");
64
+ const version_1 = require("./types/version");
54
65
  class VibeGuard {
55
66
  constructor() {
56
67
  this.rules = [
@@ -63,22 +74,44 @@ class VibeGuard {
63
74
  new unvalidated_input_1.UnvalidatedInputRule(),
64
75
  new directory_traversal_1.DirectoryTraversalRule(),
65
76
  new insecure_dependencies_1.InsecureDependenciesRule(),
66
- new missing_security_headers_1.MissingSecurityHeadersRule()
77
+ new missing_security_headers_1.MissingSecurityHeadersRule(),
78
+ new xss_detection_1.XssDetectionRule(),
79
+ new csrf_protection_1.CsrfProtectionRule(),
80
+ new insecure_deserialization_1.InsecureDeserializationRule(),
81
+ new broken_access_control_1.BrokenAccessControlRule(),
82
+ new insecure_file_upload_1.InsecureFileUploadRule(),
83
+ new insecure_random_generation_1.InsecureRandomGenerationRule(),
84
+ new insecure_logging_1.InsecureLoggingRule(),
85
+ new insecure_session_management_1.InsecureSessionManagementRule(),
86
+ new insecure_error_handling_1.InsecureErrorHandlingRule(),
87
+ new insecure_configuration_1.InsecureConfigurationRule()
67
88
  ];
68
89
  this.scanner = new scanner_1.FileScanner();
69
90
  this.reporter = new reporter_1.Reporter();
70
91
  }
71
92
  async scan(options) {
72
93
  const targetPath = path.resolve(options.target);
94
+ console.log('DEBUG: VibeGuard.scan called with target:', targetPath);
95
+ console.log('DEBUG: Number of rules:', this.rules.length);
73
96
  // Verify target exists
74
97
  if (!fs.existsSync(targetPath)) {
75
98
  throw new Error(`Target path does not exist: ${targetPath}`);
76
99
  }
77
100
  const stats = fs.statSync(targetPath);
101
+ console.log('DEBUG: Target is file:', stats.isFile());
102
+ console.log('DEBUG: Target is directory:', stats.isDirectory());
78
103
  if (stats.isFile()) {
79
- return await this.scanner.scanFile(targetPath, this.rules);
104
+ console.log('DEBUG: Calling scanner.scanFile...');
105
+ const result = await this.scanner.scanFile(targetPath, this.rules);
106
+ console.log('DEBUG: scanFile result:', {
107
+ filesScanned: result.filesScanned,
108
+ issuesFound: result.issuesFound,
109
+ summary: result.summary
110
+ });
111
+ return result;
80
112
  }
81
113
  else if (stats.isDirectory()) {
114
+ console.log('DEBUG: Calling scanner.scanDirectory...');
82
115
  return await this.scanner.scanDirectory(targetPath, this.rules);
83
116
  }
84
117
  else {
@@ -105,14 +138,7 @@ class VibeGuard {
105
138
  return this.rules.find(rule => rule.name === name);
106
139
  }
107
140
  getVersion() {
108
- try {
109
- const packagePath = path.join(__dirname, '..', 'package.json');
110
- const packageJson = JSON.parse(fs.readFileSync(packagePath, 'utf-8'));
111
- return packageJson.version || '1.0.0';
112
- }
113
- catch {
114
- return '1.0.0';
115
- }
141
+ return version_1.VERSION;
116
142
  }
117
143
  }
118
144
  exports.VibeGuard = VibeGuard;
package/dist/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA,uCAAyB;AACzB,2CAA6B;AAC7B,uCAAwC;AACxC,yCAAsC;AAEtC,6DAA6D;AAC7D,2EAA2E;AAC3E,iDAAiD;AACjD,+EAA8E;AAC9E,yDAAyD;AACzD,yDAAyD;AACzD,iEAAiE;AACjE,qEAAqE;AACrE,yEAAyE;AACzE,+EAA8E;AAC9E,yDAAyD;AACzD,6DAA6D;AAC7D,+EAA+E;AAC/E,yEAAwE;AACxE,uEAAsE;AACtE,mFAAkF;AAClF,+DAA+D;AAC/D,qFAAoF;AACpF,6EAA4E;AAC5E,2EAA2E;AAC3E,6CAA0C;AAE1C,MAAa,SAAS;IAKpB;QACE,IAAI,CAAC,KAAK,GAAG;YACX,IAAI,oCAAkB,EAAE;YACxB,IAAI,kDAAyB,EAAE;YAC/B,IAAI,wBAAY,EAAE;YAClB,IAAI,qDAA0B,EAAE;YAChC,IAAI,gCAAgB,EAAE;YACtB,IAAI,gCAAgB,EAAE;YACtB,IAAI,wCAAoB,EAAE;YAC1B,IAAI,4CAAsB,EAAE;YAC5B,IAAI,gDAAwB,EAAE;YAC9B,IAAI,qDAA0B,EAAE;YAChC,IAAI,gCAAgB,EAAE;YACtB,IAAI,oCAAkB,EAAE;YACxB,IAAI,sDAA2B,EAAE;YACjC,IAAI,+CAAuB,EAAE;YAC7B,IAAI,6CAAsB,EAAE;YAC5B,IAAI,yDAA4B,EAAE;YAClC,IAAI,sCAAmB,EAAE;YACzB,IAAI,2DAA6B,EAAE;YACnC,IAAI,mDAAyB,EAAE;YAC/B,IAAI,kDAAyB,EAAE;SAChC,CAAC;QACF,IAAI,CAAC,OAAO,GAAG,IAAI,qBAAW,EAAE,CAAC;QACjC,IAAI,CAAC,QAAQ,GAAG,IAAI,mBAAQ,EAAE,CAAC;IACjC,CAAC;IAED,KAAK,CAAC,IAAI,CAAC,OAAoB;QAC7B,MAAM,UAAU,GAAG,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC;QAEhD,OAAO,CAAC,GAAG,CAAC,2CAA2C,EAAE,UAAU,CAAC,CAAC;QACrE,OAAO,CAAC,GAAG,CAAC,yBAAyB,EAAE,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC;QAE1D,uBAAuB;QACvB,IAAI,CAAC,EAAE,CAAC,UAAU,CAAC,UAAU,CAAC,EAAE,CAAC;YAC/B,MAAM,IAAI,KAAK,CAAC,+BAA+B,UAAU,EAAE,CAAC,CAAC;QAC/D,CAAC;QAED,MAAM,KAAK,GAAG,EAAE,CAAC,QAAQ,CAAC,UAAU,CAAC,CAAC;QACtC,OAAO,CAAC,GAAG,CAAC,wBAAwB,EAAE,KAAK,CAAC,MAAM,EAAE,CAAC,CAAC;QACtD,OAAO,CAAC,GAAG,CAAC,6BAA6B,EAAE,KAAK,CAAC,WAAW,EAAE,CAAC,CAAC;QAEhE,IAAI,KAAK,CAAC,MAAM,EAAE,EAAE,CAAC;YACnB,OAAO,CAAC,GAAG,CAAC,oCAAoC,CAAC,CAAC;YAClD,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,OAAO,CAAC,QAAQ,CAAC,UAAU,EAAE,IAAI,CAAC,KAAK,CAAC,CAAC;YACnE,OAAO,CAAC,GAAG,CAAC,yBAAyB,EAAE;gBACrC,YAAY,EAAE,MAAM,CAAC,YAAY;gBACjC,WAAW,EAAE,MAAM,CAAC,WAAW;gBAC/B,OAAO,EAAE,MAAM,CAAC,OAAO;aACxB,CAAC,CAAC;YACH,OAAO,MAAM,CAAC;QAChB,CAAC;aAAM,IAAI,KAAK,CAAC,WAAW,EAAE,EAAE,CAAC;YAC/B,OAAO,CAAC,GAAG,CAAC,yCAAyC,CAAC,CAAC;YACvD,OAAO,MAAM,IAAI,CAAC,OAAO,CAAC,aAAa,CAAC,UAAU,EAAE,IAAI,CAAC,KAAK,CAAC,CAAC;QAClE,CAAC;aAAM,CAAC;YACN,MAAM,IAAI,KAAK,CAAC,kDAAkD,UAAU,EAAE,CAAC,CAAC;QAClF,CAAC;IACH,CAAC;IAED,aAAa,CAAC,MAAkB,EAAE,SAA2B,OAAO;QAClE,QAAQ,MAAM,EAAE,CAAC;YACf,KAAK,MAAM;gBACT,OAAO,IAAI,CAAC,QAAQ,CAAC,UAAU,CAAC,MAAM,CAAC,CAAC;YAC1C,KAAK,OAAO,CAAC;YACb;gBACE,OAAO,IAAI,CAAC,QAAQ,CAAC,WAAW,CAAC,MAAM,CAAC,CAAC;QAC7C,CAAC;IACH,CAAC;IAED,KAAK,CAAC,aAAa,CAAC,OAAoB;QACtC,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;QACxC,OAAO,IAAI,CAAC,aAAa,CAAC,MAAM,EAAE,OAAO,CAAC,MAAM,CAAC,CAAC;IACpD,CAAC;IAED,QAAQ;QACN,OAAO,CAAC,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC;IACzB,CAAC;IAED,aAAa,CAAC,IAAY;QACxB,OAAO,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,IAAI,CAAC,IAAI,KAAK,IAAI,CAAC,CAAC;IACrD,CAAC;IAED,UAAU;QACR,OAAO,iBAAO,CAAC;IACjB,CAAC;CACF;AA1FD,8BA0FC;AAED,qCAAqC;AACrC,0CAAwB;AACxB,0CAAwB;AACxB,qCAAwC;AAA/B,sGAAA,WAAW,OAAA;AACpB,uCAAsC;AAA7B,oGAAA,QAAQ,OAAA;AAEjB,iBAAiB;AACjB,kBAAe,SAAS,CAAC"}
@@ -0,0 +1,14 @@
1
+ import { BaseRule, FileContent, SecurityIssue } from '../types';
2
+ export declare class BrokenAccessControlRule extends BaseRule {
3
+ readonly name = "broken-access-control";
4
+ readonly description = "Detects missing authorization checks and insecure direct object references";
5
+ readonly severity: "high";
6
+ private readonly accessControlPatterns;
7
+ private readonly authorizationPatterns;
8
+ check(fileContent: FileContent): SecurityIssue[];
9
+ private hasAuthorizationCheck;
10
+ private isCommentOrTest;
11
+ private isSimplePropertyAccess;
12
+ private isDevelopmentContext;
13
+ }
14
+ //# sourceMappingURL=broken-access-control.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"broken-access-control.d.ts","sourceRoot":"","sources":["../../src/rules/broken-access-control.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,WAAW,EAAE,aAAa,EAAE,MAAM,UAAU,CAAC;AAEhE,qBAAa,uBAAwB,SAAQ,QAAQ;IACnD,QAAQ,CAAC,IAAI,2BAA2B;IACxC,QAAQ,CAAC,WAAW,gFAAgF;IACpG,QAAQ,CAAC,QAAQ,EAAG,MAAM,CAAU;IAEpC,OAAO,CAAC,QAAQ,CAAC,qBAAqB,CAgDpC;IAEF,OAAO,CAAC,QAAQ,CAAC,qBAAqB,CA2BpC;IAEF,KAAK,CAAC,WAAW,EAAE,WAAW,GAAG,aAAa,EAAE;IAkEhD,OAAO,CAAC,qBAAqB;IAI7B,OAAO,CAAC,eAAe;IAiCvB,OAAO,CAAC,sBAAsB;IAkB9B,OAAO,CAAC,oBAAoB;CAoB7B"}