Skip to content

Commit e80efbe

Browse files
committed
v1.2
1 parent a7e6358 commit e80efbe

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

44 files changed

+894
-100
lines changed

.gitignore

+125-2
Original file line numberDiff line numberDiff line change
@@ -14,9 +14,11 @@ build/
1414
# Log files
1515
*.log
1616

17-
# Markdown files (except README)
17+
# Markdown files (except README & CONTRIBUTING)
18+
/md/
1819
*.md
1920
!README.md
21+
!CONTRIBUTING.md
2022

2123
# Python
2224
__pycache__/
@@ -48,4 +50,125 @@ Thumbs.db
4850

4951
# Test Reports
5052
# test-*.md # Covered by *.md above
51-
# test-*.json
53+
# test-*.json
54+
55+
# Logs
56+
logs
57+
*.log
58+
npm-debug.log*
59+
yarn-debug.log*
60+
yarn-error.log*
61+
lerna-debug.log*
62+
.pnpm-debug.log*
63+
64+
# Diagnostic reports (https://nodejs.org/api/report.html)
65+
report.[0-9]*.[0-9]*.[0-9]*.[0-9]*.json
66+
67+
# Runtime data
68+
pids
69+
*.pid
70+
*.seed
71+
*.pid.lock
72+
73+
# Directory for instrumented libs generated by jscoverage/JSCover
74+
lib-cov
75+
76+
# Coverage directory used by tools like istanbul
77+
coverage
78+
*.lcov
79+
80+
# nyc test coverage
81+
.nyc_output
82+
83+
# Grunt intermediate storage (https://gruntjs.com/creating-plugins#storing-task-files)
84+
.grunt
85+
86+
# Bower dependency directory (https://bower.io/)
87+
bower_components
88+
89+
# node-waf configuration
90+
.lock-wscript
91+
92+
# Compiled binary addons (https://nodejs.org/api/addons.html)
93+
build/Release
94+
95+
# Dependency directories
96+
node_modules/
97+
jspm_packages/
98+
99+
# Snowpack dependency directory (https://snowpack.dev/)
100+
web_modules/
101+
102+
# TypeScript cache
103+
*.tsbuildinfo
104+
105+
# Optional npm cache directory
106+
.npm
107+
108+
# Optional eslint cache
109+
.eslintcache
110+
111+
# Microbundle cache
112+
.rpt2_cache/
113+
.rts2_cache_cjs/
114+
.rts2_cache_es/
115+
.rts2_cache_umd/
116+
117+
# Optional REPL history
118+
.node_repl_history
119+
120+
# Output of 'npm pack'
121+
*.tgz
122+
123+
# Yarn Integrity file
124+
.yarn-integrity
125+
126+
# dotenv environment variables file
127+
.env
128+
.env.*
129+
!.env.example
130+
131+
# parcel-bundler cache (https://parceljs.org/)
132+
.cache
133+
.parcel-cache
134+
135+
# Next.js build output
136+
.next
137+
out
138+
139+
# Nuxt.js build output
140+
.nuxt
141+
dist
142+
143+
# Nuxt.js static directory
144+
.output
145+
146+
# vuepress build output
147+
.vuepress/dist
148+
149+
# Serverless directories
150+
.serverless/
151+
152+
# FuseBox cache
153+
.fusebox/
154+
155+
# DynamoDB Local files
156+
.dynamodb/
157+
158+
# TernJS port file
159+
.tern-port
160+
161+
# Stores VSCode versions used for testing VSCode extensions
162+
.vscode-test
163+
164+
# Vercel project configuration file
165+
.vercel
166+
167+
# Temporary generated report files
168+
*-report.json
169+
*-report.md
170+
171+
# Blog content (internal)
172+
/blogs/
173+
174+
.cursor

CONTRIBUTING.md

+57
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,57 @@
1+
# Contributing to VibeSafe 🛡️
2+
3+
Thanks for your interest in improving VibeSafe!
4+
We're an open-source security CLI built for developers — fast, useful, and community-driven.
5+
6+
Whether you're fixing a typo, improving performance, adding new scanners, or suggesting a feature, we welcome your input.
7+
8+
---
9+
10+
## 💡 How to Contribute
11+
12+
1. **Fork the repo**
13+
2. **Clone your fork and create a new branch**
14+
```bash
15+
git checkout -b feature/your-feature-name
16+
```
17+
3. **Make your changes**
18+
4. **Run tests** (if applicable)
19+
5. **Open a Pull Request (PR)** with a clear description of what you changed and why
20+
21+
## 📏 Guidelines
22+
Keep PRs focused and minimal — smaller is better
23+
24+
Avoid introducing new dependencies unless absolutely necessary
25+
26+
Write clear, readable code (preferably TypeScript where applicable)
27+
28+
Add comments or docs for any non-obvious logic
29+
30+
If adding a new scanner or rule, explain the security impact or use case
31+
32+
## 🧪 Testing (Basic)
33+
Most of VibeSafe is modular and easy to test with sample files.
34+
You can test your changes by running:
35+
36+
```bash
37+
npm run build
38+
npm link
39+
vibesafe scan ./test-project
40+
```
41+
42+
If you're improving output formats or adding rules, try --output and --report modes to check formatting.
43+
44+
## 📛 Brand Reminder
45+
The name VibeSafe™ is a trademark of Secret Society LLC.
46+
Forks and derivative tools are welcome under the MIT License, but please use a different name and logo for your project.
47+
48+
If you'd like to collaborate, contribute under the official name, or build something commercial on top of VibeSafe, reach out:
49+
50+
51+
## 🤝 Code of Conduct
52+
Be respectful. This project is about making security tools accessible, not gatekeeping. We welcome newcomers, learners, and veterans alike.
53+
54+
## 🚀 Ready to go?
55+
Open your PR, and let's make security more developer-friendly — together.
56+
57+
Stay safe. Stay vibey. ✨

LICENSE

+21-11
Original file line numberDiff line numberDiff line change
@@ -1,17 +1,27 @@
1-
Copyright (c) 2025 Secret Society LLC - All Rights Reserved
1+
MIT License
22

3-
NOTICE: This software, VibeSafe (the "Software"), is provided free of charge for execution and use. The source code is made available for transparency and inspection purposes only.
3+
Copyright (c) 2025 Secret Society LLC
44

5-
PERMISSION IS NOT GRANTED to modify, copy, merge, publish, distribute, sublicense, and/or sell copies of the Software, or any substantial portions of it.
5+
Permission is hereby granted, free of charge, to any person obtaining a copy
6+
of this software and associated documentation files (the "Software"), to deal
7+
in the Software without restriction, including without limitation the rights to
8+
use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies
9+
of the Software, and to permit persons to whom the Software is furnished to do
10+
so, subject to the following conditions:
611

7-
PERMISSION IS NOT GRANTED to create derivative works based on the Software or its source code.
12+
The above copyright notice and this permission notice shall be included in all
13+
copies or substantial portions of the Software.
814

9-
PERMISSION IS NOT GRANTED to redistribute the Software or its source code.
15+
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
16+
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
17+
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
18+
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
19+
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
20+
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
21+
SOFTWARE.
22+
---
1023

11-
Reverse engineering, decompiling, or disassembling the Software is prohibited.
24+
Trademark Notice:
1225

13-
The Software is provided "AS IS", without warranty of any kind, express or implied, including but not limited to the warranties of merchantability, fitness for a particular purpose and noninfringement. In no event shall the authors or copyright holders be liable for any claim, damages or other liability, whether in an action of contract, tort or otherwise, arising from, out of or in connection with the Software or the use or other dealings in the Software.
14-
15-
By using or accessing the Software or its source code, you agree to these terms. If you do not agree to these terms, do not use or access the Software or its source code.
16-
17-
For any licensing inquiries beyond the scope of this license, please contact [email protected].
26+
VibeSafe™ is a trademark of Secret Society LLC.
27+
The MIT License does not grant permission to use the trade name, trademark, service mark, or product name “VibeSafe” except for attribution or with prior written consent.

README.md

+65-20
Original file line numberDiff line numberDiff line change
@@ -4,30 +4,54 @@ A CLI tool to scan your codebase for security vibes.
44

55
VibeSafe helps developers quickly check their projects for common security issues like exposed secrets, outdated dependencies with known vulnerabilities (CVEs), and generates helpful reports.
66

7-
## Features
8-
9-
* **Secret Scanning:** Detects potential secrets using regex patterns (AWS Keys, JWTs, SSH Keys, generic high-entropy strings) and specifically flags secrets found in `.env` files.
10-
* **Dependency Scanning:** Parses `package.json` (for npm/yarn projects) and checks dependencies against the OSV.dev vulnerability database for known CVEs. *(Note: Currently only scans direct dependencies listed in `package.json`. Lockfile analysis for precise versions and transitive dependencies is planned for a future update.)*
11-
* **Configuration Scanning:** Checks JSON and YAML files for common insecure settings (e.g., `DEBUG = true`, `devMode = true`, permissive CORS like `origin: '*'`)
12-
* **HTTP Client Issues:** Detects potential missing timeout or cancellation configurations in calls using `axios`, `fetch`, `got`, and `request`. (*See Limitations below*).
13-
* **Unvalidated Upload Detection:** Identifies potential missing file size/type restrictions in common upload libraries (`multer`, `formidable`, `express-fileupload`, `busboy`) and generic patterns (`new FormData()`, `<input type="file">`).
14-
* **Exposed Endpoint Detection:** Flags potentially sensitive endpoints (e.g., `/admin`, `/debug`, `/status`, `/info`, `/metrics`) in Node.js web applications using common routing patterns or string literals.
15-
* **Rate Limit Check (Heuristic):** Issues a project-level advisory if API routes are detected but no known rate-limiting package (e.g., `express-rate-limit`, `@upstash/ratelimit`) is found in dependencies.
16-
* **Improper Logging Detection:** Flags potential logging of full error objects (e.g., `console.error(err)`), which can leak stack traces, and detects logging of potentially sensitive data based on keywords (e.g., `password`, `email`, `token`).
17-
* **Multiple Output Formats:** Provides results via console output (with colors!), JSON (`--output`), or a Markdown report (`--report` with default `VIBESAFE-REPORT.md`).
18-
* **AI-Powered Suggestions (Optional):** Generates fix suggestions in the Markdown report using OpenAI (requires API key).
19-
* **Filtering:** Focus on high-impact issues using `--high-only`.
20-
* **Customizable Ignores:** Use a `.vibesafeignore` file (similar syntax to `.gitignore`) to exclude specific files or directories from the scan.
21-
22-
## Installation
7+
## ✨ Features
8+
9+
- 🔐 **Secret Scanning**
10+
Flags AWS keys, JWTs, SSH keys, high-entropy strings, and secrets in `.env` files.
11+
12+
- 📦 **Dependency Vulnerability Detection**
13+
Checks `package.json` dependencies against the [OSV.dev](https://osv.dev) vulnerability database. *(Direct deps only for now — lockfile support coming soon).*
14+
15+
- ⚙️ **Insecure Config Detection**
16+
Scans JSON/YAML for flags like `DEBUG=true`, `devMode`, permissive CORS, etc.
17+
18+
- 🌐 **HTTP Client Scan**
19+
Detects missing timeouts or abort controllers in `axios`, `fetch`, `got`, etc.
20+
21+
- 📤 **Upload Validation Check**
22+
Warns on lack of file size/type checks in `multer`, `formidable`, etc.
23+
24+
- 🔎 **Exposed Endpoint Detection**
25+
Flags risky endpoints like `/admin`, `/debug`, or `/metrics`, including for **Next.js API routes**.
26+
27+
- 🚫 **Missing Rate Limiting (Heuristic)**
28+
Warns if your project has API routes but no known rate-limit package installed.
29+
30+
- 🪵 **Improper Logging Patterns**
31+
Finds logs that may leak sensitive info or log full error stacks unsafely.
32+
33+
- 📄 **Multi-format Output**
34+
Console, JSON (`--output`), or Markdown reports (`--report`).
35+
36+
- 🧠 **AI-Powered Fix Suggestions (Optional)**
37+
Add an OpenAI API key for smart recommendations in Markdown reports.
38+
39+
- 🎯 **Focus on Critical Issues**
40+
Use `--high-only` to trim noise.
41+
42+
- 🙈 **Custom Ignores**
43+
Exclude files using `.vibesafeignore`, just like `.gitignore`.
44+
45+
46+
## 📦 Installation
2347

2448
```bash
2549
npm install -g vibesafe
2650
```
2751

2852
*(Note: Currently, for local development, use `npm link` after building)*
2953

30-
## Usage
54+
## 🚀 Usage
3155

3256
**Basic Scan (Current Directory):**
3357

@@ -83,7 +107,7 @@ vibesafe scan -r ai-report.md
83107
vibesafe scan --high-only
84108
```
85109

86-
## Ignoring Files (.vibesafeignore)
110+
## 🛑📁 Ignoring Files (.vibesafeignore)
87111

88112
Create a `.vibesafeignore` file in the root of the directory being scanned. Add file paths or glob patterns (one per line) to exclude them from the scan. The syntax is the same as `.gitignore`.
89113

@@ -99,7 +123,28 @@ config/legacy-secrets.conf
99123
# Allow scanning a specific .env file if needed (overrides default info behavior)
100124
# !.env.production
101125
```
126+
## 🤝 Contributing
127+
128+
We welcome contributions from the community!
129+
130+
If you have an idea for a new scanner, a bug fix, or a way to make VibeSafe better, check out our [Contributing Guide](./CONTRIBUTING.md) to get started.
131+
132+
Whether you're submitting a pull request or opening an issue, we appreciate your help in making security tools more developer-friendly.
133+
134+
## 🧾 License
135+
136+
VibeSafe is open source software licensed under the [MIT License](./LICENSE).
137+
138+
You're free to use, modify, and distribute it — even commercially — as long as the original copyright
139+
and license are included.
140+
141+
For questions or commercial partnership inquiries, contact **[email protected]**.
142+
143+
---
144+
145+
## 📛 Trademark Notice
102146

103-
## License
147+
**VibeSafe™** is a trademark of Secret Society LLC.
148+
Use of the name “VibeSafe” for derivative tools, competing products, or commercial services is **not permitted without prior written consent.**
104149

105-
This project uses a custom proprietary license. Please see the [LICENSE](LICENSE) file for details. TL;DR: Free to use, source visible, but no modification, copying, or redistribution allowed.
150+
You are free to fork or build upon this code under the [MIT License](./LICENSE), but please use a different name and branding for public or commercial distributions.

package-lock.json

+2-2
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

package.json

+1-1
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
{
22
"name": "vibesafe",
3-
"version": "1.1.0",
3+
"version": "1.2.0",
44
"description": "A CLI tool to scan your codebase for security vibes.",
55
"main": "dist/index.js",
66
"bin": {

0 commit comments

Comments
 (0)