vibeauditor 0.1.0__tar.gz
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.
- vibeauditor-0.1.0/LICENSE +17 -0
- vibeauditor-0.1.0/PKG-INFO +318 -0
- vibeauditor-0.1.0/README.md +297 -0
- vibeauditor-0.1.0/pyproject.toml +35 -0
- vibeauditor-0.1.0/setup.cfg +4 -0
- vibeauditor-0.1.0/src/vibe_audit/__init__.py +3 -0
- vibeauditor-0.1.0/src/vibe_audit/__main__.py +4 -0
- vibeauditor-0.1.0/src/vibe_audit/cli.py +3 -0
- vibeauditor-0.1.0/src/vibeauditor/__init__.py +3 -0
- vibeauditor-0.1.0/src/vibeauditor/__main__.py +4 -0
- vibeauditor-0.1.0/src/vibeauditor/cli.py +71 -0
- vibeauditor-0.1.0/src/vibeauditor/config.py +58 -0
- vibeauditor-0.1.0/src/vibeauditor/external.py +73 -0
- vibeauditor-0.1.0/src/vibeauditor/files.py +113 -0
- vibeauditor-0.1.0/src/vibeauditor/models.py +140 -0
- vibeauditor-0.1.0/src/vibeauditor/profiles.py +47 -0
- vibeauditor-0.1.0/src/vibeauditor/report.py +469 -0
- vibeauditor-0.1.0/src/vibeauditor/rules.py +396 -0
- vibeauditor-0.1.0/src/vibeauditor.egg-info/PKG-INFO +318 -0
- vibeauditor-0.1.0/src/vibeauditor.egg-info/SOURCES.txt +21 -0
- vibeauditor-0.1.0/src/vibeauditor.egg-info/dependency_links.txt +1 -0
- vibeauditor-0.1.0/src/vibeauditor.egg-info/entry_points.txt +3 -0
- vibeauditor-0.1.0/src/vibeauditor.egg-info/top_level.txt +2 -0
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
Apache License
|
|
2
|
+
Version 2.0, January 2004
|
|
3
|
+
http://www.apache.org/licenses/
|
|
4
|
+
|
|
5
|
+
Copyright 2026 vibeAuditor Contributors
|
|
6
|
+
|
|
7
|
+
Licensed under the Apache License, Version 2.0 (the "License");
|
|
8
|
+
you may not use this file except in compliance with the License.
|
|
9
|
+
You may obtain a copy of the License at
|
|
10
|
+
|
|
11
|
+
http://www.apache.org/licenses/LICENSE-2.0
|
|
12
|
+
|
|
13
|
+
Unless required by applicable law or agreed to in writing, software
|
|
14
|
+
distributed under the License is distributed on an "AS IS" BASIS,
|
|
15
|
+
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
16
|
+
See the License for the specific language governing permissions and
|
|
17
|
+
limitations under the License.
|
|
@@ -0,0 +1,318 @@
|
|
|
1
|
+
Metadata-Version: 2.4
|
|
2
|
+
Name: vibeauditor
|
|
3
|
+
Version: 0.1.0
|
|
4
|
+
Summary: Audit AI-built apps before they ship.
|
|
5
|
+
Author: vibeAuditor Contributors
|
|
6
|
+
License-Expression: Apache-2.0
|
|
7
|
+
Project-URL: Homepage, https://github.com/whitechart-studio/VibeAuditor-
|
|
8
|
+
Project-URL: Repository, https://github.com/whitechart-studio/VibeAuditor-
|
|
9
|
+
Project-URL: Issues, https://github.com/whitechart-studio/VibeAuditor-/issues
|
|
10
|
+
Keywords: security,audit,ai,vibe-coding,sast,supabase,llm
|
|
11
|
+
Classifier: Development Status :: 3 - Alpha
|
|
12
|
+
Classifier: Environment :: Console
|
|
13
|
+
Classifier: Intended Audience :: Developers
|
|
14
|
+
Classifier: Programming Language :: Python :: 3
|
|
15
|
+
Classifier: Topic :: Security
|
|
16
|
+
Classifier: Topic :: Software Development :: Quality Assurance
|
|
17
|
+
Requires-Python: >=3.10
|
|
18
|
+
Description-Content-Type: text/markdown
|
|
19
|
+
License-File: LICENSE
|
|
20
|
+
Dynamic: license-file
|
|
21
|
+
|
|
22
|
+
# vibeAuditor
|
|
23
|
+
|
|
24
|
+
Audit AI-built apps before they ship.
|
|
25
|
+
|
|
26
|
+
vibeAuditor is a local-first security and quality audit CLI for vibe-coded and
|
|
27
|
+
AI-assisted software. It blends trusted open-source scanners with AI-app-specific
|
|
28
|
+
checks for secrets, auth gaps, Supabase mistakes, webhook risks, unsafe execution,
|
|
29
|
+
and prompt-injection surfaces.
|
|
30
|
+
|
|
31
|
+
The goal is simple: one command, one professional report.
|
|
32
|
+
|
|
33
|
+
## Why vibeAuditor
|
|
34
|
+
|
|
35
|
+
AI coding tools are fast, but they do not reliably prove that an app is safe to
|
|
36
|
+
ship. vibeAuditor gives builders a practical pre-ship gate: built-in checks for
|
|
37
|
+
the mistakes common in AI-built apps, plus a clean path to proven open-source
|
|
38
|
+
scanners such as Trivy, Semgrep, OSV-Scanner, Gitleaks, Syft, Grype, and ZAP.
|
|
39
|
+
|
|
40
|
+
## What it checks
|
|
41
|
+
|
|
42
|
+
- Exposed secrets and high-risk environment files.
|
|
43
|
+
- Supabase service-role key leaks and client/server boundary mistakes.
|
|
44
|
+
- Missing or suspicious auth guards around API routes.
|
|
45
|
+
- Stripe webhook handlers without signature verification.
|
|
46
|
+
- LLM prompt injection patterns, unsafe tool calls, and model output passed to code execution.
|
|
47
|
+
- Risky dependency manifests and lockfile presence.
|
|
48
|
+
- Optional external scanner availability: Trivy, Semgrep, OSV-Scanner, Gitleaks, Syft, Grype, and ZAP.
|
|
49
|
+
|
|
50
|
+
## Quick Start
|
|
51
|
+
|
|
52
|
+
Install from a local checkout:
|
|
53
|
+
|
|
54
|
+
```bash
|
|
55
|
+
pipx install .
|
|
56
|
+
```
|
|
57
|
+
|
|
58
|
+
Or during active development:
|
|
59
|
+
|
|
60
|
+
```bash
|
|
61
|
+
pipx install --editable .
|
|
62
|
+
```
|
|
63
|
+
|
|
64
|
+
```bash
|
|
65
|
+
vibeauditor /path/to/project
|
|
66
|
+
```
|
|
67
|
+
|
|
68
|
+
From this repository during development:
|
|
69
|
+
|
|
70
|
+
```bash
|
|
71
|
+
PYTHONPATH=src python3 -m vibeauditor .
|
|
72
|
+
```
|
|
73
|
+
|
|
74
|
+
Write JSON for CI or AI agents:
|
|
75
|
+
|
|
76
|
+
```bash
|
|
77
|
+
vibeauditor . --json report.json
|
|
78
|
+
```
|
|
79
|
+
|
|
80
|
+
Write a bucketed Markdown report for GitHub issues, PR comments, or product review:
|
|
81
|
+
|
|
82
|
+
```bash
|
|
83
|
+
vibeauditor . --markdown vibeauditor-report.md
|
|
84
|
+
```
|
|
85
|
+
|
|
86
|
+
Write a GitHub issue-friendly report with detailed finding sections instead of
|
|
87
|
+
wide tables:
|
|
88
|
+
|
|
89
|
+
```bash
|
|
90
|
+
vibeauditor . --github-markdown vibeauditor-github.md
|
|
91
|
+
```
|
|
92
|
+
|
|
93
|
+
Fail CI when high or critical findings exist:
|
|
94
|
+
|
|
95
|
+
```bash
|
|
96
|
+
vibeauditor . --fail-on high
|
|
97
|
+
```
|
|
98
|
+
|
|
99
|
+
Use a project profile:
|
|
100
|
+
|
|
101
|
+
```bash
|
|
102
|
+
vibeauditor . --profile next-supabase
|
|
103
|
+
```
|
|
104
|
+
|
|
105
|
+
GitHub Actions template:
|
|
106
|
+
|
|
107
|
+
```text
|
|
108
|
+
examples/github-actions/vibeauditor.yml
|
|
109
|
+
```
|
|
110
|
+
|
|
111
|
+
Copy it into `.github/workflows/vibeauditor.yml` in a repository where you want
|
|
112
|
+
vibeAuditor to run on pull requests.
|
|
113
|
+
|
|
114
|
+
## Optional Scanner Integrations
|
|
115
|
+
|
|
116
|
+
vibeAuditor does not install scanners for you. If these commands exist on your
|
|
117
|
+
machine, it can run them and include a short summary:
|
|
118
|
+
|
|
119
|
+
```bash
|
|
120
|
+
trivy fs .
|
|
121
|
+
semgrep scan --config auto .
|
|
122
|
+
osv-scanner scan source .
|
|
123
|
+
gitleaks detect --source .
|
|
124
|
+
```
|
|
125
|
+
|
|
126
|
+
Use:
|
|
127
|
+
|
|
128
|
+
```bash
|
|
129
|
+
vibeauditor . --external
|
|
130
|
+
```
|
|
131
|
+
|
|
132
|
+
## Example Output
|
|
133
|
+
|
|
134
|
+
vibeAuditor leads with a product decision, not a raw vulnerability dump:
|
|
135
|
+
|
|
136
|
+
```text
|
|
137
|
+
vibeAuditor Report
|
|
138
|
+
==================
|
|
139
|
+
|
|
140
|
+
Profile: next-supabase - Next.js and Supabase pre-ship checks.
|
|
141
|
+
Focus: supabase, auth, secrets, dependencies
|
|
142
|
+
|
|
143
|
+
Findings: 9 (critical 3, high 1, medium 5, low 0)
|
|
144
|
+
Verdict: BLOCKED - fix blocker findings before production
|
|
145
|
+
Primary reason: Credentials detected in env, source, or build output
|
|
146
|
+
Product risk: Blocker 3, High 1, Medium 3, Low 2
|
|
147
|
+
|
|
148
|
+
Top Actions
|
|
149
|
+
-----------
|
|
150
|
+
1. Rotate exposed credentials, remove real keys from env/build artifacts, and rerun gitleaks plus vibeAuditor.
|
|
151
|
+
2. Verify every write path derives identity from the server/session and blocks cross-user access with tests.
|
|
152
|
+
3. Prove RLS-sensitive tables deny direct anon/authenticated access or document SECURITY DEFINER-only access.
|
|
153
|
+
|
|
154
|
+
Risk Buckets
|
|
155
|
+
------------
|
|
156
|
+
| Domain | Risk | Findings | Status |
|
|
157
|
+
| --------------------- | ------- | -------- | --------------------- |
|
|
158
|
+
| Secrets & Credentials | Blocker | 4 | Needs fix before ship |
|
|
159
|
+
| Auth & Access Control | High | 1 | Needs owner review |
|
|
160
|
+
| Data Privacy & RLS | Medium | 2 | Needs verification |
|
|
161
|
+
| Developer Tooling | Low | 2 | Optional hardening |
|
|
162
|
+
```
|
|
163
|
+
|
|
164
|
+
Detailed sections include asset context, confidence, product impact, AI fix
|
|
165
|
+
prompt, verification steps, and safely redacted evidence:
|
|
166
|
+
|
|
167
|
+
```text
|
|
168
|
+
Secrets & Credentials
|
|
169
|
+
---------------------
|
|
170
|
+
| Risk | Conf | Asset | Location | Issue |
|
|
171
|
+
| ------- | --------- | -------------- | ---------------------------- | ---------------------------------- |
|
|
172
|
+
| Blocker | confirmed | local_env | .env:2 | Possible Supabase JWT-like key... |
|
|
173
|
+
| Blocker | confirmed | build_artifact | dist-ssr/entry-server.js:126 | Possible Supabase JWT-like key... |
|
|
174
|
+
|
|
175
|
+
AI fix prompt:
|
|
176
|
+
You are fixing credential exposure in this project. A Supabase JWT-like key was
|
|
177
|
+
found in build_artifact. Do not remove required runtime env usage. Ensure
|
|
178
|
+
browser/client code only receives public anon keys, never service-role or
|
|
179
|
+
private keys. Remove real values from env/build artifacts, update .env.example
|
|
180
|
+
with placeholders, verify .gitignore excludes local env and generated build
|
|
181
|
+
output, rotate any exposed credential, then rerun vibeAuditor and gitleaks.
|
|
182
|
+
|
|
183
|
+
Verification:
|
|
184
|
+
git ls-files .env .env.local dist-ssr/entry-server.js
|
|
185
|
+
gitleaks detect --source .
|
|
186
|
+
vibeauditor . --profile next-supabase
|
|
187
|
+
```
|
|
188
|
+
|
|
189
|
+
With `--external`, scanner coverage is summarized in the same report:
|
|
190
|
+
|
|
191
|
+
```text
|
|
192
|
+
Tooling Coverage
|
|
193
|
+
----------------
|
|
194
|
+
- Trivy: secrets found in .env and build output
|
|
195
|
+
- Semgrep: shell/spawn usage in developer scripts
|
|
196
|
+
- OSV-Scanner: no dependency issues found
|
|
197
|
+
- Gitleaks: leak detected in git history
|
|
198
|
+
- Syft: package inventory generated
|
|
199
|
+
- Grype: no vulnerabilities found
|
|
200
|
+
```
|
|
201
|
+
|
|
202
|
+
For GitHub issues, use the sectioned format:
|
|
203
|
+
|
|
204
|
+
```bash
|
|
205
|
+
vibeauditor . --profile next-supabase --github-markdown vibeauditor-github.md
|
|
206
|
+
```
|
|
207
|
+
|
|
208
|
+
It produces issue-friendly blocks like:
|
|
209
|
+
|
|
210
|
+
```markdown
|
|
211
|
+
## Secrets & Credentials
|
|
212
|
+
|
|
213
|
+
**Bucket risk:** Blocker
|
|
214
|
+
**Findings:** 4
|
|
215
|
+
|
|
216
|
+
### VA002: Possible Supabase JWT-like key exposed
|
|
217
|
+
|
|
218
|
+
- **Risk:** Blocker
|
|
219
|
+
- **Confidence:** confirmed
|
|
220
|
+
- **Asset context:** `build_artifact`
|
|
221
|
+
- **Location:** `dist-ssr/entry-server.js:126`
|
|
222
|
+
- **Fingerprint:** `0259095bde85a569`
|
|
223
|
+
|
|
224
|
+
**Product impact**
|
|
225
|
+
|
|
226
|
+
A Supabase JWT-like credential appears in build_artifact. If this is a
|
|
227
|
+
service-role key, it can bypass RLS and expose marketplace user, worker,
|
|
228
|
+
contractor, OTP, or payment data.
|
|
229
|
+
```
|
|
230
|
+
|
|
231
|
+
## Scanner Blend
|
|
232
|
+
|
|
233
|
+
vibeAuditor is designed as an orchestration layer, not a replacement for mature
|
|
234
|
+
security tools.
|
|
235
|
+
|
|
236
|
+
| Layer | Tool | Purpose |
|
|
237
|
+
| --- | --- | --- |
|
|
238
|
+
| Vibe rules | Built in | AI-app mistakes, Supabase/auth/webhook/LLM checks |
|
|
239
|
+
| SAST | Semgrep | insecure source patterns |
|
|
240
|
+
| Code intelligence | CodeQL | deeper semantic analysis for GitHub/open-source repos |
|
|
241
|
+
| Dependencies | OSV-Scanner | open-source package vulnerabilities |
|
|
242
|
+
| Repo/container/IaC | Trivy | vulnerabilities, secrets, misconfig, SBOM, licenses |
|
|
243
|
+
| Secrets | Gitleaks | high-signal secret detection |
|
|
244
|
+
| SBOM | Syft | software bill of materials |
|
|
245
|
+
| SBOM vulnerabilities | Grype | vulnerability scan from filesystem/SBOM |
|
|
246
|
+
| Live app | ZAP | dynamic web app security testing |
|
|
247
|
+
|
|
248
|
+
## Report Model
|
|
249
|
+
|
|
250
|
+
vibeAuditor groups findings into product-risk domains instead of dumping a flat
|
|
251
|
+
scanner list:
|
|
252
|
+
|
|
253
|
+
- Secrets & Credentials
|
|
254
|
+
- Auth & Access Control
|
|
255
|
+
- Data Privacy & RLS
|
|
256
|
+
- Payments & Webhooks
|
|
257
|
+
- AI / LLM Safety
|
|
258
|
+
- Supply Chain
|
|
259
|
+
- Infrastructure & Deployment
|
|
260
|
+
- General Code Quality
|
|
261
|
+
|
|
262
|
+
Each finding includes:
|
|
263
|
+
|
|
264
|
+
- severity
|
|
265
|
+
- product risk: `Blocker`, `High`, `Medium`, `Low`
|
|
266
|
+
- confidence: `confirmed`, `likely`, `needs_review`
|
|
267
|
+
- asset context: `tracked_source`, `local_env`, `build_artifact`, `developer_script`, `database_migration`, etc.
|
|
268
|
+
- domain bucket
|
|
269
|
+
- stable fingerprint
|
|
270
|
+
- product impact
|
|
271
|
+
- AI fix prompt
|
|
272
|
+
- verification step
|
|
273
|
+
|
|
274
|
+
This structure is designed for the next GitHub workflow:
|
|
275
|
+
|
|
276
|
+
```text
|
|
277
|
+
scan project -> bucket findings -> create/update GitHub issues -> close fixed buckets
|
|
278
|
+
```
|
|
279
|
+
|
|
280
|
+
## Suppressions
|
|
281
|
+
|
|
282
|
+
Known accepted-risk findings can be suppressed with `.vibeauditor.toml`.
|
|
283
|
+
Suppressions use stable fingerprints from the JSON or GitHub Markdown report.
|
|
284
|
+
|
|
285
|
+
```toml
|
|
286
|
+
[[suppress]]
|
|
287
|
+
fingerprint = "abc123def4567890"
|
|
288
|
+
reason = "Local developer script only spawns a static Semgrep command."
|
|
289
|
+
expires = "2026-07-01"
|
|
290
|
+
```
|
|
291
|
+
|
|
292
|
+
Suppressions should always include a reason and an expiry date so risk does not
|
|
293
|
+
silently disappear forever.
|
|
294
|
+
|
|
295
|
+
## Planned Rule Packs
|
|
296
|
+
|
|
297
|
+
- `next-supabase`: service-role exposure, RLS gaps, API auth, public env safety.
|
|
298
|
+
- `stripe-saas`: webhook signatures, payment state transitions, secret handling.
|
|
299
|
+
- `ai-agent`: prompt injection, unsafe tools, model output execution, data leaks.
|
|
300
|
+
- `mcp-server`: tool auth, filesystem/network boundaries, prompt/tool injection.
|
|
301
|
+
- `browser-extension`: manifest permissions, content-script leakage, token exposure.
|
|
302
|
+
|
|
303
|
+
Current profile names:
|
|
304
|
+
|
|
305
|
+
```text
|
|
306
|
+
default
|
|
307
|
+
next-supabase
|
|
308
|
+
ai-agent
|
|
309
|
+
stripe-saas
|
|
310
|
+
mcp-server
|
|
311
|
+
```
|
|
312
|
+
|
|
313
|
+
## Philosophy
|
|
314
|
+
|
|
315
|
+
This tool is not trying to replace mature scanners. It is a friendly front door:
|
|
316
|
+
fast local checks, plain-English findings, and pointers to the next best tool.
|
|
317
|
+
It is especially tuned for projects built quickly with Cursor, Codex, Claude Code,
|
|
318
|
+
Lovable, Bolt, v0, Replit, and similar workflows.
|
|
@@ -0,0 +1,297 @@
|
|
|
1
|
+
# vibeAuditor
|
|
2
|
+
|
|
3
|
+
Audit AI-built apps before they ship.
|
|
4
|
+
|
|
5
|
+
vibeAuditor is a local-first security and quality audit CLI for vibe-coded and
|
|
6
|
+
AI-assisted software. It blends trusted open-source scanners with AI-app-specific
|
|
7
|
+
checks for secrets, auth gaps, Supabase mistakes, webhook risks, unsafe execution,
|
|
8
|
+
and prompt-injection surfaces.
|
|
9
|
+
|
|
10
|
+
The goal is simple: one command, one professional report.
|
|
11
|
+
|
|
12
|
+
## Why vibeAuditor
|
|
13
|
+
|
|
14
|
+
AI coding tools are fast, but they do not reliably prove that an app is safe to
|
|
15
|
+
ship. vibeAuditor gives builders a practical pre-ship gate: built-in checks for
|
|
16
|
+
the mistakes common in AI-built apps, plus a clean path to proven open-source
|
|
17
|
+
scanners such as Trivy, Semgrep, OSV-Scanner, Gitleaks, Syft, Grype, and ZAP.
|
|
18
|
+
|
|
19
|
+
## What it checks
|
|
20
|
+
|
|
21
|
+
- Exposed secrets and high-risk environment files.
|
|
22
|
+
- Supabase service-role key leaks and client/server boundary mistakes.
|
|
23
|
+
- Missing or suspicious auth guards around API routes.
|
|
24
|
+
- Stripe webhook handlers without signature verification.
|
|
25
|
+
- LLM prompt injection patterns, unsafe tool calls, and model output passed to code execution.
|
|
26
|
+
- Risky dependency manifests and lockfile presence.
|
|
27
|
+
- Optional external scanner availability: Trivy, Semgrep, OSV-Scanner, Gitleaks, Syft, Grype, and ZAP.
|
|
28
|
+
|
|
29
|
+
## Quick Start
|
|
30
|
+
|
|
31
|
+
Install from a local checkout:
|
|
32
|
+
|
|
33
|
+
```bash
|
|
34
|
+
pipx install .
|
|
35
|
+
```
|
|
36
|
+
|
|
37
|
+
Or during active development:
|
|
38
|
+
|
|
39
|
+
```bash
|
|
40
|
+
pipx install --editable .
|
|
41
|
+
```
|
|
42
|
+
|
|
43
|
+
```bash
|
|
44
|
+
vibeauditor /path/to/project
|
|
45
|
+
```
|
|
46
|
+
|
|
47
|
+
From this repository during development:
|
|
48
|
+
|
|
49
|
+
```bash
|
|
50
|
+
PYTHONPATH=src python3 -m vibeauditor .
|
|
51
|
+
```
|
|
52
|
+
|
|
53
|
+
Write JSON for CI or AI agents:
|
|
54
|
+
|
|
55
|
+
```bash
|
|
56
|
+
vibeauditor . --json report.json
|
|
57
|
+
```
|
|
58
|
+
|
|
59
|
+
Write a bucketed Markdown report for GitHub issues, PR comments, or product review:
|
|
60
|
+
|
|
61
|
+
```bash
|
|
62
|
+
vibeauditor . --markdown vibeauditor-report.md
|
|
63
|
+
```
|
|
64
|
+
|
|
65
|
+
Write a GitHub issue-friendly report with detailed finding sections instead of
|
|
66
|
+
wide tables:
|
|
67
|
+
|
|
68
|
+
```bash
|
|
69
|
+
vibeauditor . --github-markdown vibeauditor-github.md
|
|
70
|
+
```
|
|
71
|
+
|
|
72
|
+
Fail CI when high or critical findings exist:
|
|
73
|
+
|
|
74
|
+
```bash
|
|
75
|
+
vibeauditor . --fail-on high
|
|
76
|
+
```
|
|
77
|
+
|
|
78
|
+
Use a project profile:
|
|
79
|
+
|
|
80
|
+
```bash
|
|
81
|
+
vibeauditor . --profile next-supabase
|
|
82
|
+
```
|
|
83
|
+
|
|
84
|
+
GitHub Actions template:
|
|
85
|
+
|
|
86
|
+
```text
|
|
87
|
+
examples/github-actions/vibeauditor.yml
|
|
88
|
+
```
|
|
89
|
+
|
|
90
|
+
Copy it into `.github/workflows/vibeauditor.yml` in a repository where you want
|
|
91
|
+
vibeAuditor to run on pull requests.
|
|
92
|
+
|
|
93
|
+
## Optional Scanner Integrations
|
|
94
|
+
|
|
95
|
+
vibeAuditor does not install scanners for you. If these commands exist on your
|
|
96
|
+
machine, it can run them and include a short summary:
|
|
97
|
+
|
|
98
|
+
```bash
|
|
99
|
+
trivy fs .
|
|
100
|
+
semgrep scan --config auto .
|
|
101
|
+
osv-scanner scan source .
|
|
102
|
+
gitleaks detect --source .
|
|
103
|
+
```
|
|
104
|
+
|
|
105
|
+
Use:
|
|
106
|
+
|
|
107
|
+
```bash
|
|
108
|
+
vibeauditor . --external
|
|
109
|
+
```
|
|
110
|
+
|
|
111
|
+
## Example Output
|
|
112
|
+
|
|
113
|
+
vibeAuditor leads with a product decision, not a raw vulnerability dump:
|
|
114
|
+
|
|
115
|
+
```text
|
|
116
|
+
vibeAuditor Report
|
|
117
|
+
==================
|
|
118
|
+
|
|
119
|
+
Profile: next-supabase - Next.js and Supabase pre-ship checks.
|
|
120
|
+
Focus: supabase, auth, secrets, dependencies
|
|
121
|
+
|
|
122
|
+
Findings: 9 (critical 3, high 1, medium 5, low 0)
|
|
123
|
+
Verdict: BLOCKED - fix blocker findings before production
|
|
124
|
+
Primary reason: Credentials detected in env, source, or build output
|
|
125
|
+
Product risk: Blocker 3, High 1, Medium 3, Low 2
|
|
126
|
+
|
|
127
|
+
Top Actions
|
|
128
|
+
-----------
|
|
129
|
+
1. Rotate exposed credentials, remove real keys from env/build artifacts, and rerun gitleaks plus vibeAuditor.
|
|
130
|
+
2. Verify every write path derives identity from the server/session and blocks cross-user access with tests.
|
|
131
|
+
3. Prove RLS-sensitive tables deny direct anon/authenticated access or document SECURITY DEFINER-only access.
|
|
132
|
+
|
|
133
|
+
Risk Buckets
|
|
134
|
+
------------
|
|
135
|
+
| Domain | Risk | Findings | Status |
|
|
136
|
+
| --------------------- | ------- | -------- | --------------------- |
|
|
137
|
+
| Secrets & Credentials | Blocker | 4 | Needs fix before ship |
|
|
138
|
+
| Auth & Access Control | High | 1 | Needs owner review |
|
|
139
|
+
| Data Privacy & RLS | Medium | 2 | Needs verification |
|
|
140
|
+
| Developer Tooling | Low | 2 | Optional hardening |
|
|
141
|
+
```
|
|
142
|
+
|
|
143
|
+
Detailed sections include asset context, confidence, product impact, AI fix
|
|
144
|
+
prompt, verification steps, and safely redacted evidence:
|
|
145
|
+
|
|
146
|
+
```text
|
|
147
|
+
Secrets & Credentials
|
|
148
|
+
---------------------
|
|
149
|
+
| Risk | Conf | Asset | Location | Issue |
|
|
150
|
+
| ------- | --------- | -------------- | ---------------------------- | ---------------------------------- |
|
|
151
|
+
| Blocker | confirmed | local_env | .env:2 | Possible Supabase JWT-like key... |
|
|
152
|
+
| Blocker | confirmed | build_artifact | dist-ssr/entry-server.js:126 | Possible Supabase JWT-like key... |
|
|
153
|
+
|
|
154
|
+
AI fix prompt:
|
|
155
|
+
You are fixing credential exposure in this project. A Supabase JWT-like key was
|
|
156
|
+
found in build_artifact. Do not remove required runtime env usage. Ensure
|
|
157
|
+
browser/client code only receives public anon keys, never service-role or
|
|
158
|
+
private keys. Remove real values from env/build artifacts, update .env.example
|
|
159
|
+
with placeholders, verify .gitignore excludes local env and generated build
|
|
160
|
+
output, rotate any exposed credential, then rerun vibeAuditor and gitleaks.
|
|
161
|
+
|
|
162
|
+
Verification:
|
|
163
|
+
git ls-files .env .env.local dist-ssr/entry-server.js
|
|
164
|
+
gitleaks detect --source .
|
|
165
|
+
vibeauditor . --profile next-supabase
|
|
166
|
+
```
|
|
167
|
+
|
|
168
|
+
With `--external`, scanner coverage is summarized in the same report:
|
|
169
|
+
|
|
170
|
+
```text
|
|
171
|
+
Tooling Coverage
|
|
172
|
+
----------------
|
|
173
|
+
- Trivy: secrets found in .env and build output
|
|
174
|
+
- Semgrep: shell/spawn usage in developer scripts
|
|
175
|
+
- OSV-Scanner: no dependency issues found
|
|
176
|
+
- Gitleaks: leak detected in git history
|
|
177
|
+
- Syft: package inventory generated
|
|
178
|
+
- Grype: no vulnerabilities found
|
|
179
|
+
```
|
|
180
|
+
|
|
181
|
+
For GitHub issues, use the sectioned format:
|
|
182
|
+
|
|
183
|
+
```bash
|
|
184
|
+
vibeauditor . --profile next-supabase --github-markdown vibeauditor-github.md
|
|
185
|
+
```
|
|
186
|
+
|
|
187
|
+
It produces issue-friendly blocks like:
|
|
188
|
+
|
|
189
|
+
```markdown
|
|
190
|
+
## Secrets & Credentials
|
|
191
|
+
|
|
192
|
+
**Bucket risk:** Blocker
|
|
193
|
+
**Findings:** 4
|
|
194
|
+
|
|
195
|
+
### VA002: Possible Supabase JWT-like key exposed
|
|
196
|
+
|
|
197
|
+
- **Risk:** Blocker
|
|
198
|
+
- **Confidence:** confirmed
|
|
199
|
+
- **Asset context:** `build_artifact`
|
|
200
|
+
- **Location:** `dist-ssr/entry-server.js:126`
|
|
201
|
+
- **Fingerprint:** `0259095bde85a569`
|
|
202
|
+
|
|
203
|
+
**Product impact**
|
|
204
|
+
|
|
205
|
+
A Supabase JWT-like credential appears in build_artifact. If this is a
|
|
206
|
+
service-role key, it can bypass RLS and expose marketplace user, worker,
|
|
207
|
+
contractor, OTP, or payment data.
|
|
208
|
+
```
|
|
209
|
+
|
|
210
|
+
## Scanner Blend
|
|
211
|
+
|
|
212
|
+
vibeAuditor is designed as an orchestration layer, not a replacement for mature
|
|
213
|
+
security tools.
|
|
214
|
+
|
|
215
|
+
| Layer | Tool | Purpose |
|
|
216
|
+
| --- | --- | --- |
|
|
217
|
+
| Vibe rules | Built in | AI-app mistakes, Supabase/auth/webhook/LLM checks |
|
|
218
|
+
| SAST | Semgrep | insecure source patterns |
|
|
219
|
+
| Code intelligence | CodeQL | deeper semantic analysis for GitHub/open-source repos |
|
|
220
|
+
| Dependencies | OSV-Scanner | open-source package vulnerabilities |
|
|
221
|
+
| Repo/container/IaC | Trivy | vulnerabilities, secrets, misconfig, SBOM, licenses |
|
|
222
|
+
| Secrets | Gitleaks | high-signal secret detection |
|
|
223
|
+
| SBOM | Syft | software bill of materials |
|
|
224
|
+
| SBOM vulnerabilities | Grype | vulnerability scan from filesystem/SBOM |
|
|
225
|
+
| Live app | ZAP | dynamic web app security testing |
|
|
226
|
+
|
|
227
|
+
## Report Model
|
|
228
|
+
|
|
229
|
+
vibeAuditor groups findings into product-risk domains instead of dumping a flat
|
|
230
|
+
scanner list:
|
|
231
|
+
|
|
232
|
+
- Secrets & Credentials
|
|
233
|
+
- Auth & Access Control
|
|
234
|
+
- Data Privacy & RLS
|
|
235
|
+
- Payments & Webhooks
|
|
236
|
+
- AI / LLM Safety
|
|
237
|
+
- Supply Chain
|
|
238
|
+
- Infrastructure & Deployment
|
|
239
|
+
- General Code Quality
|
|
240
|
+
|
|
241
|
+
Each finding includes:
|
|
242
|
+
|
|
243
|
+
- severity
|
|
244
|
+
- product risk: `Blocker`, `High`, `Medium`, `Low`
|
|
245
|
+
- confidence: `confirmed`, `likely`, `needs_review`
|
|
246
|
+
- asset context: `tracked_source`, `local_env`, `build_artifact`, `developer_script`, `database_migration`, etc.
|
|
247
|
+
- domain bucket
|
|
248
|
+
- stable fingerprint
|
|
249
|
+
- product impact
|
|
250
|
+
- AI fix prompt
|
|
251
|
+
- verification step
|
|
252
|
+
|
|
253
|
+
This structure is designed for the next GitHub workflow:
|
|
254
|
+
|
|
255
|
+
```text
|
|
256
|
+
scan project -> bucket findings -> create/update GitHub issues -> close fixed buckets
|
|
257
|
+
```
|
|
258
|
+
|
|
259
|
+
## Suppressions
|
|
260
|
+
|
|
261
|
+
Known accepted-risk findings can be suppressed with `.vibeauditor.toml`.
|
|
262
|
+
Suppressions use stable fingerprints from the JSON or GitHub Markdown report.
|
|
263
|
+
|
|
264
|
+
```toml
|
|
265
|
+
[[suppress]]
|
|
266
|
+
fingerprint = "abc123def4567890"
|
|
267
|
+
reason = "Local developer script only spawns a static Semgrep command."
|
|
268
|
+
expires = "2026-07-01"
|
|
269
|
+
```
|
|
270
|
+
|
|
271
|
+
Suppressions should always include a reason and an expiry date so risk does not
|
|
272
|
+
silently disappear forever.
|
|
273
|
+
|
|
274
|
+
## Planned Rule Packs
|
|
275
|
+
|
|
276
|
+
- `next-supabase`: service-role exposure, RLS gaps, API auth, public env safety.
|
|
277
|
+
- `stripe-saas`: webhook signatures, payment state transitions, secret handling.
|
|
278
|
+
- `ai-agent`: prompt injection, unsafe tools, model output execution, data leaks.
|
|
279
|
+
- `mcp-server`: tool auth, filesystem/network boundaries, prompt/tool injection.
|
|
280
|
+
- `browser-extension`: manifest permissions, content-script leakage, token exposure.
|
|
281
|
+
|
|
282
|
+
Current profile names:
|
|
283
|
+
|
|
284
|
+
```text
|
|
285
|
+
default
|
|
286
|
+
next-supabase
|
|
287
|
+
ai-agent
|
|
288
|
+
stripe-saas
|
|
289
|
+
mcp-server
|
|
290
|
+
```
|
|
291
|
+
|
|
292
|
+
## Philosophy
|
|
293
|
+
|
|
294
|
+
This tool is not trying to replace mature scanners. It is a friendly front door:
|
|
295
|
+
fast local checks, plain-English findings, and pointers to the next best tool.
|
|
296
|
+
It is especially tuned for projects built quickly with Cursor, Codex, Claude Code,
|
|
297
|
+
Lovable, Bolt, v0, Replit, and similar workflows.
|
|
@@ -0,0 +1,35 @@
|
|
|
1
|
+
[build-system]
|
|
2
|
+
requires = ["setuptools>=69"]
|
|
3
|
+
build-backend = "setuptools.build_meta"
|
|
4
|
+
|
|
5
|
+
[project]
|
|
6
|
+
name = "vibeauditor"
|
|
7
|
+
version = "0.1.0"
|
|
8
|
+
description = "Audit AI-built apps before they ship."
|
|
9
|
+
readme = "README.md"
|
|
10
|
+
requires-python = ">=3.10"
|
|
11
|
+
license = "Apache-2.0"
|
|
12
|
+
authors = [
|
|
13
|
+
{ name = "vibeAuditor Contributors" }
|
|
14
|
+
]
|
|
15
|
+
keywords = ["security", "audit", "ai", "vibe-coding", "sast", "supabase", "llm"]
|
|
16
|
+
classifiers = [
|
|
17
|
+
"Development Status :: 3 - Alpha",
|
|
18
|
+
"Environment :: Console",
|
|
19
|
+
"Intended Audience :: Developers",
|
|
20
|
+
"Programming Language :: Python :: 3",
|
|
21
|
+
"Topic :: Security",
|
|
22
|
+
"Topic :: Software Development :: Quality Assurance",
|
|
23
|
+
]
|
|
24
|
+
|
|
25
|
+
[project.urls]
|
|
26
|
+
Homepage = "https://github.com/whitechart-studio/VibeAuditor-"
|
|
27
|
+
Repository = "https://github.com/whitechart-studio/VibeAuditor-"
|
|
28
|
+
Issues = "https://github.com/whitechart-studio/VibeAuditor-/issues"
|
|
29
|
+
|
|
30
|
+
[project.scripts]
|
|
31
|
+
vibeauditor = "vibeauditor.cli:main"
|
|
32
|
+
vibe-audit = "vibeauditor.cli:main"
|
|
33
|
+
|
|
34
|
+
[tool.setuptools.packages.find]
|
|
35
|
+
where = ["src"]
|