verification-layer 0.21.0 โ 0.22.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +251 -615
- package/dist/cli.js +283 -0
- package/dist/cli.js.map +1 -1
- package/dist/reporters/audit-report.d.ts.map +1 -1
- package/dist/reporters/audit-report.js +180 -0
- package/dist/reporters/audit-report.js.map +1 -1
- package/dist/reporters/index.d.ts.map +1 -1
- package/dist/reporters/index.js +2612 -5
- package/dist/reporters/index.js.map +1 -1
- package/dist/scan.d.ts.map +1 -1
- package/dist/scan.js +14 -1
- package/dist/scan.js.map +1 -1
- package/dist/scanners/api-security/index.d.ts +7 -0
- package/dist/scanners/api-security/index.d.ts.map +1 -0
- package/dist/scanners/api-security/index.js +139 -0
- package/dist/scanners/api-security/index.js.map +1 -0
- package/dist/scanners/api-security/index.test.d.ts +5 -0
- package/dist/scanners/api-security/index.test.d.ts.map +1 -0
- package/dist/scanners/api-security/index.test.js +360 -0
- package/dist/scanners/api-security/index.test.js.map +1 -0
- package/dist/scanners/api-security/patterns.d.ts +32 -0
- package/dist/scanners/api-security/patterns.d.ts.map +1 -0
- package/dist/scanners/api-security/patterns.js +159 -0
- package/dist/scanners/api-security/patterns.js.map +1 -0
- package/dist/scanners/authentication/index.d.ts +7 -0
- package/dist/scanners/authentication/index.d.ts.map +1 -0
- package/dist/scanners/authentication/index.js +107 -0
- package/dist/scanners/authentication/index.js.map +1 -0
- package/dist/scanners/authentication/index.test.d.ts +5 -0
- package/dist/scanners/authentication/index.test.d.ts.map +1 -0
- package/dist/scanners/authentication/index.test.js +379 -0
- package/dist/scanners/authentication/index.test.js.map +1 -0
- package/dist/scanners/authentication/patterns.d.ts +32 -0
- package/dist/scanners/authentication/patterns.d.ts.map +1 -0
- package/dist/scanners/authentication/patterns.js +133 -0
- package/dist/scanners/authentication/patterns.js.map +1 -0
- package/dist/scanners/configuration/index.d.ts +8 -0
- package/dist/scanners/configuration/index.d.ts.map +1 -0
- package/dist/scanners/configuration/index.js +87 -0
- package/dist/scanners/configuration/index.js.map +1 -0
- package/dist/scanners/configuration/index.test.d.ts +5 -0
- package/dist/scanners/configuration/index.test.d.ts.map +1 -0
- package/dist/scanners/configuration/index.test.js +344 -0
- package/dist/scanners/configuration/index.test.js.map +1 -0
- package/dist/scanners/configuration/patterns.d.ts +32 -0
- package/dist/scanners/configuration/patterns.d.ts.map +1 -0
- package/dist/scanners/configuration/patterns.js +146 -0
- package/dist/scanners/configuration/patterns.js.map +1 -0
- package/dist/scanners/credentials/index.d.ts +7 -0
- package/dist/scanners/credentials/index.d.ts.map +1 -0
- package/dist/scanners/credentials/index.js +129 -0
- package/dist/scanners/credentials/index.js.map +1 -0
- package/dist/scanners/credentials/index.test.d.ts +5 -0
- package/dist/scanners/credentials/index.test.d.ts.map +1 -0
- package/dist/scanners/credentials/index.test.js +395 -0
- package/dist/scanners/credentials/index.test.js.map +1 -0
- package/dist/scanners/credentials/patterns.d.ts +32 -0
- package/dist/scanners/credentials/patterns.d.ts.map +1 -0
- package/dist/scanners/credentials/patterns.js +140 -0
- package/dist/scanners/credentials/patterns.js.map +1 -0
- package/dist/scanners/errors/index.d.ts +8 -0
- package/dist/scanners/errors/index.d.ts.map +1 -0
- package/dist/scanners/errors/index.js +78 -0
- package/dist/scanners/errors/index.js.map +1 -0
- package/dist/scanners/errors/index.test.d.ts +5 -0
- package/dist/scanners/errors/index.test.d.ts.map +1 -0
- package/dist/scanners/errors/index.test.js +330 -0
- package/dist/scanners/errors/index.test.js.map +1 -0
- package/dist/scanners/errors/patterns.d.ts +27 -0
- package/dist/scanners/errors/patterns.d.ts.map +1 -0
- package/dist/scanners/errors/patterns.js +97 -0
- package/dist/scanners/errors/patterns.js.map +1 -0
- package/dist/scanners/hipaa2026/index.d.ts.map +1 -1
- package/dist/scanners/hipaa2026/index.js +49 -17
- package/dist/scanners/hipaa2026/index.js.map +1 -1
- package/dist/scanners/hipaa2026/index.test.js +26 -15
- package/dist/scanners/hipaa2026/index.test.js.map +1 -1
- package/dist/scanners/operational/index.d.ts +7 -0
- package/dist/scanners/operational/index.d.ts.map +1 -0
- package/dist/scanners/operational/index.js +171 -0
- package/dist/scanners/operational/index.js.map +1 -0
- package/dist/scanners/operational/index.test.d.ts +5 -0
- package/dist/scanners/operational/index.test.d.ts.map +1 -0
- package/dist/scanners/operational/index.test.js +406 -0
- package/dist/scanners/operational/index.test.js.map +1 -0
- package/dist/scanners/operational/patterns.d.ts +33 -0
- package/dist/scanners/operational/patterns.d.ts.map +1 -0
- package/dist/scanners/operational/patterns.js +151 -0
- package/dist/scanners/operational/patterns.js.map +1 -0
- package/dist/scanners/rbac/index.d.ts +7 -0
- package/dist/scanners/rbac/index.d.ts.map +1 -0
- package/dist/scanners/rbac/index.js +145 -0
- package/dist/scanners/rbac/index.js.map +1 -0
- package/dist/scanners/rbac/index.test.d.ts +5 -0
- package/dist/scanners/rbac/index.test.d.ts.map +1 -0
- package/dist/scanners/rbac/index.test.js +422 -0
- package/dist/scanners/rbac/index.test.js.map +1 -0
- package/dist/scanners/rbac/patterns.d.ts +32 -0
- package/dist/scanners/rbac/patterns.d.ts.map +1 -0
- package/dist/scanners/rbac/patterns.js +124 -0
- package/dist/scanners/rbac/patterns.js.map +1 -0
- package/dist/scanners/revocation/index.d.ts +8 -0
- package/dist/scanners/revocation/index.d.ts.map +1 -0
- package/dist/scanners/revocation/index.js +83 -0
- package/dist/scanners/revocation/index.js.map +1 -0
- package/dist/scanners/revocation/index.test.d.ts +5 -0
- package/dist/scanners/revocation/index.test.d.ts.map +1 -0
- package/dist/scanners/revocation/index.test.js +332 -0
- package/dist/scanners/revocation/index.test.js.map +1 -0
- package/dist/scanners/revocation/patterns.d.ts +27 -0
- package/dist/scanners/revocation/patterns.d.ts.map +1 -0
- package/dist/scanners/revocation/patterns.js +109 -0
- package/dist/scanners/revocation/patterns.js.map +1 -0
- package/dist/scanners/sanitization/index.d.ts +8 -0
- package/dist/scanners/sanitization/index.d.ts.map +1 -0
- package/dist/scanners/sanitization/index.js +98 -0
- package/dist/scanners/sanitization/index.js.map +1 -0
- package/dist/scanners/sanitization/index.test.d.ts +5 -0
- package/dist/scanners/sanitization/index.test.d.ts.map +1 -0
- package/dist/scanners/sanitization/index.test.js +370 -0
- package/dist/scanners/sanitization/index.test.js.map +1 -0
- package/dist/scanners/sanitization/patterns.d.ts +27 -0
- package/dist/scanners/sanitization/patterns.d.ts.map +1 -0
- package/dist/scanners/sanitization/patterns.js +117 -0
- package/dist/scanners/sanitization/patterns.js.map +1 -0
- package/dist/training/certificate.d.ts +26 -0
- package/dist/training/certificate.d.ts.map +1 -0
- package/dist/training/certificate.js +92 -0
- package/dist/training/certificate.js.map +1 -0
- package/dist/training/index.d.ts +3 -0
- package/dist/training/index.d.ts.map +1 -0
- package/dist/training/index.js +243 -0
- package/dist/training/index.js.map +1 -0
- package/dist/training/modules.d.ts +13 -0
- package/dist/training/modules.d.ts.map +1 -0
- package/dist/training/modules.js +608 -0
- package/dist/training/modules.js.map +1 -0
- package/dist/training/questions.d.ts +9 -0
- package/dist/training/questions.d.ts.map +1 -0
- package/dist/training/questions.js +505 -0
- package/dist/training/questions.js.map +1 -0
- package/dist/types.d.ts +45 -0
- package/dist/types.d.ts.map +1 -1
- package/dist/utils/npm-audit.d.ts +6 -0
- package/dist/utils/npm-audit.d.ts.map +1 -0
- package/dist/utils/npm-audit.js +95 -0
- package/dist/utils/npm-audit.js.map +1 -0
- package/dist/utils/scan-history.d.ts +59 -0
- package/dist/utils/scan-history.d.ts.map +1 -0
- package/dist/utils/scan-history.js +170 -0
- package/dist/utils/scan-history.js.map +1 -0
- package/package.json +4 -1
- package/templates/baa-verification-letter.md +105 -0
- package/templates/irp.md +545 -0
- package/templates/notice-of-privacy-practices.md +491 -0
- package/templates/physical-safeguards-checklist.md +247 -0
- package/templates/security-officer-designation.md +237 -0
package/README.md
CHANGED
|
@@ -1,590 +1,326 @@
|
|
|
1
|
-
# vlayer - HIPAA Compliance
|
|
1
|
+
# vlayer - HIPAA Compliance on Every Commit
|
|
2
2
|
|
|
3
|
-
**Automated security scanning for healthcare applications.**
|
|
3
|
+
**Automated security scanning for healthcare applications.** 163+ detection rules that catch PHI exposures, missing encryption, and access control gaps before they reach production. HIPAA 2026 ready - 15/15 requirements covered.
|
|
4
4
|
|
|
5
5
|
[](https://github.com/Francosimon53/verification-layer/actions/workflows/ci.yml)
|
|
6
6
|
[](https://www.npmjs.com/package/verification-layer)
|
|
7
|
+
[](https://vlayer.app)
|
|
7
8
|
[](LICENSE)
|
|
8
9
|
[](package.json)
|
|
9
10
|
|
|
10
11
|
---
|
|
11
12
|
|
|
12
|
-
##
|
|
13
|
-
|
|
14
|
-
vlayer is a CLI tool that scans your codebase for HIPAA compliance issues. It's designed for healthcare startups and developers building applications that handle Protected Health Information (PHI).
|
|
15
|
-
|
|
16
|
-
**Key capabilities:**
|
|
17
|
-
- Scan for 50+ security vulnerabilities and PHI exposure patterns
|
|
18
|
-
- **AI Agent Skills scanner** - First HIPAA-focused scanner for SKILL.md files (Claude Code, MCP, Cursor)
|
|
19
|
-
- **AI-powered analysis** with Claude API for complex violations and false positive reduction
|
|
20
|
-
- Auto-fix common issues with one command
|
|
21
|
-
- Generate professional audit reports (HTML, PDF, JSON)
|
|
22
|
-
- Detect your tech stack and provide tailored recommendations
|
|
23
|
-
- Create cryptographic audit trails for compliance documentation
|
|
24
|
-
- **Professional suppression system** with inline comments and justifications
|
|
25
|
-
- **Baseline support** to focus on new findings while tracking existing issues
|
|
26
|
-
- **Confidence levels** for progressive strictness adoption
|
|
27
|
-
|
|
28
|
-
---
|
|
29
|
-
|
|
30
|
-
## Quick Start
|
|
13
|
+
## ๐ Quick Start
|
|
31
14
|
|
|
32
15
|
```bash
|
|
33
|
-
# Install
|
|
34
|
-
npm install
|
|
35
|
-
npm run build
|
|
36
|
-
|
|
37
|
-
# Scan a project
|
|
38
|
-
node dist/cli.js scan /path/to/your/project
|
|
16
|
+
# Install globally
|
|
17
|
+
npm install -g verification-layer
|
|
39
18
|
|
|
40
|
-
#
|
|
41
|
-
|
|
19
|
+
# Or use with npx (no install needed)
|
|
20
|
+
npx vlayer scan ./src
|
|
42
21
|
|
|
43
|
-
#
|
|
44
|
-
|
|
22
|
+
# Scan with HTML report
|
|
23
|
+
npx vlayer scan ./src -f html -o report.html
|
|
45
24
|
|
|
46
25
|
# Check compliance score
|
|
47
|
-
|
|
26
|
+
npx vlayer score ./src
|
|
48
27
|
|
|
49
|
-
#
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
# Scan AI Agent Skills (NEW!)
|
|
53
|
-
node dist/cli.js skill-scan ~/Downloads/patient-lookup.SKILL.md
|
|
28
|
+
# Auto-fix issues
|
|
29
|
+
npx vlayer scan ./src --fix
|
|
54
30
|
```
|
|
55
31
|
|
|
56
32
|
---
|
|
57
33
|
|
|
58
|
-
##
|
|
59
|
-
|
|
60
|
-
**vlayer is the first HIPAA-focused security scanner for AI Agent Skills.**
|
|
61
|
-
|
|
62
|
-
Protect your healthcare environment from malicious skills before installation:
|
|
63
|
-
|
|
64
|
-
```bash
|
|
65
|
-
# Scan before installing any skill
|
|
66
|
-
vlayer skill-scan ~/Downloads/patient-exporter.SKILL.md
|
|
67
|
-
|
|
68
|
-
# Scan all skills in directory
|
|
69
|
-
vlayer skill-scan ~/.claw/skills/
|
|
70
|
-
|
|
71
|
-
# CI/CD integration
|
|
72
|
-
vlayer skill-scan ./custom-skills/ || exit 1
|
|
73
|
-
```
|
|
34
|
+
## What is vlayer?
|
|
74
35
|
|
|
75
|
-
|
|
36
|
+
vlayer is a CLI tool and platform that scans your codebase for HIPAA compliance issues. Built for healthcare startups and developers building applications that handle Protected Health Information (PHI).
|
|
76
37
|
|
|
77
|
-
|
|
78
|
-
- **
|
|
79
|
-
- **
|
|
80
|
-
- **
|
|
38
|
+
**๐ฏ Key Features:**
|
|
39
|
+
- **163+ detection rules** across 12 categories (PHI exposure, encryption, access control, audit logging, data retention, and more)
|
|
40
|
+
- **HIPAA 2026 NPRM ready** - Covers all 15 new cybersecurity requirements
|
|
41
|
+
- **10 training modules** with 45+ questions and SHA-256 verifiable certificates
|
|
42
|
+
- **5 HIPAA templates** - IRP, BAA, NPP, Security Officer role, Physical Safeguards
|
|
43
|
+
- **Compliance scoring (0-100)** - Track your HIPAA readiness over time
|
|
44
|
+
- **CI/CD integration** - GitHub Actions, pre-commit hooks, PR comments
|
|
45
|
+
- **PDF audit reports** - Executive summaries and technical findings for auditors
|
|
46
|
+
- **VS Code Extension** - Real-time scanning with inline diagnostics
|
|
47
|
+
- **Pro Dashboard** - Historical scans, team management, templates access at [app.vlayer.app](https://app.vlayer.app)
|
|
81
48
|
|
|
82
|
-
|
|
49
|
+
---
|
|
83
50
|
|
|
84
|
-
|
|
85
|
-
- โ
Hardcoded credentials (API keys, passwords)
|
|
86
|
-
- โ
Malicious patterns (reverse shells, data exfiltration)
|
|
87
|
-
- โ
HIPAA violations (HTTP transmission, no audit logging)
|
|
51
|
+
## ๐ Links
|
|
88
52
|
|
|
89
|
-
|
|
53
|
+
- **Landing**: [vlayer.app](https://vlayer.app) - Product overview and pricing
|
|
54
|
+
- **Dashboard**: [app.vlayer.app](https://app.vlayer.app) - Pro dashboard with historical scans and team management
|
|
55
|
+
- **Documentation**: [docs.vlayer.app](https://docs.vlayer.app) - Complete guides and API reference
|
|
56
|
+
- **GitHub**: [github.com/Francosimon53/verification-layer](https://github.com/Francosimon53/verification-layer) - Open source CLI
|
|
57
|
+
- **npm**: [npmjs.com/package/verification-layer](https://www.npmjs.com/package/verification-layer) - Install the scanner
|
|
90
58
|
|
|
91
|
-
|
|
92
|
-
๐จ Critical: 7 | โ ๏ธ High: 14 | โก Medium: 1
|
|
59
|
+
---
|
|
93
60
|
|
|
94
|
-
|
|
95
|
-
PHI Exposure: 8
|
|
96
|
-
Credential Leaks: 1
|
|
97
|
-
Data Exfiltration: 1
|
|
61
|
+
## ๐ฐ Pricing
|
|
98
62
|
|
|
99
|
-
|
|
100
|
-
|
|
101
|
-
|
|
63
|
+
| Plan | Price | Features |
|
|
64
|
+
|------|-------|----------|
|
|
65
|
+
| **Open Source** | **$0/forever** | Full scanner, CLI, 163+ rules, compliance scoring, training module, community support |
|
|
66
|
+
| **Pro** | **$49/month** ($490/year) | Everything in OSS + GitHub App with PR comments, pre-commit hooks, historical scan dashboard, HIPAA document templates, team tracking (10 users), PDF audit reports, email support (48h SLA). **14-day free trial** |
|
|
67
|
+
| **Enterprise** | **Custom** | Everything in Pro + custom detection rules, self-hosted deployment, SSO/RBAC integration, dedicated compliance consultant, custom training modules, audit preparation support, priority support (4h SLA). Contact: [sales@vlayer.app](mailto:sales@vlayer.app) |
|
|
102
68
|
|
|
103
|
-
|
|
69
|
+
[Start Free Trial](https://app.vlayer.app/pricing) โข [View Pricing](https://vlayer.app/#pricing)
|
|
104
70
|
|
|
105
71
|
---
|
|
106
72
|
|
|
107
|
-
##
|
|
108
|
-
|
|
109
|
-
|
|
110
|
-
|
|
111
|
-
|
|
112
|
-
|
|
113
|
-
|
|
114
|
-
|
|
115
|
-
|
|
116
|
-
|
|
117
|
-
|
|
118
|
-
|
|
119
|
-
|
|
120
|
-
|
|
121
|
-
|
|
122
|
-
|
|
123
|
-
|
|
124
|
-
|
|
125
|
-
|
|
126
|
-
|
|
127
|
-
|
|
128
|
-
-
|
|
129
|
-
-
|
|
130
|
-
-
|
|
131
|
-
-
|
|
132
|
-
- ๐ **Detailed Findings View** - Filter by severity with comprehensive issue breakdowns
|
|
133
|
-
- ๐ **Executive Summaries** - Professional reports with grade assignments (A-F)
|
|
134
|
-
- ๐จ **Enterprise Tables** - Sortable project lists with circular scores and status badges
|
|
135
|
-
- ๐ฑ **Responsive Design** - Optimized for desktop, tablet, and mobile devices
|
|
136
|
-
- ๐ค **User Management** - User profiles with logout functionality in sidebar
|
|
137
|
-
|
|
138
|
-
### Quick Start
|
|
139
|
-
|
|
140
|
-
1. **Create Account**: Sign up at [app.vlayer.app/signup](https://app.vlayer.app/signup) with your email
|
|
141
|
-
2. **Login**: Access the dashboard at [app.vlayer.app](https://app.vlayer.app)
|
|
142
|
-
3. **Create Project**: Click "+ New Project" and enter your project details
|
|
143
|
-
4. **Run Scan**: Execute a compliance scan on your codebase
|
|
144
|
-
```bash
|
|
145
|
-
node dist/cli.js scan ./src --format json --output scan.json
|
|
146
|
-
```
|
|
147
|
-
5. **Upload Results**: Send scan data to your project via API
|
|
148
|
-
```bash
|
|
149
|
-
curl -X POST https://app.vlayer.app/api/projects/{projectId}/scans \
|
|
150
|
-
-H "Content-Type: application/json" \
|
|
151
|
-
-d @scan.json
|
|
152
|
-
```
|
|
153
|
-
|
|
154
|
-
### Demo Data
|
|
155
|
-
|
|
156
|
-
The dashboard includes 4 demo projects with realistic compliance data:
|
|
157
|
-
- **HealthCare Portal** - 92/100 (Grade A - Excellent)
|
|
158
|
-
- **Telemedicine API** - 78/100 (Grade C - Fair)
|
|
159
|
-
- **Insurance Claims System** - 56/100 (Grade F - Critical)
|
|
160
|
-
- **Mobile Health App** - 95/100 (Grade A - Excellent)
|
|
161
|
-
|
|
162
|
-
### API & Documentation
|
|
163
|
-
|
|
164
|
-
See [dashboard/README.md](dashboard/README.md) for complete API documentation and deployment instructions.
|
|
73
|
+
## ๐ก๏ธ HIPAA 2026 Ready
|
|
74
|
+
|
|
75
|
+
The new HIPAA Security Rule (NPRM 2026) adds 15 cybersecurity requirements. vlayer covers **all 15**:
|
|
76
|
+
|
|
77
|
+
โ
Network Segmentation
|
|
78
|
+
โ
Encryption Standards
|
|
79
|
+
โ
Multi-Factor Auth
|
|
80
|
+
โ
Audit Log Monitoring
|
|
81
|
+
โ
Incident Response
|
|
82
|
+
โ
Vulnerability Scanning
|
|
83
|
+
โ
Asset Inventory
|
|
84
|
+
โ
Access Controls
|
|
85
|
+
โ
Data Minimization
|
|
86
|
+
โ
Secure Configuration
|
|
87
|
+
โ
Patch Management
|
|
88
|
+
โ
Risk Assessments
|
|
89
|
+
โ
Business Continuity
|
|
90
|
+
โ
Security Training
|
|
91
|
+
โ
Third-Party Risk
|
|
92
|
+
|
|
93
|
+
**Non-Compliance Costs:**
|
|
94
|
+
- $2M average breach cost
|
|
95
|
+
- $100-$50K per violation (Tier 1-4)
|
|
96
|
+
- $1.5M annual cap per violation type
|
|
97
|
+
- Criminal penalties: $250K + 10 years jail
|
|
165
98
|
|
|
166
99
|
---
|
|
167
100
|
|
|
168
|
-
##
|
|
169
|
-
|
|
170
|
-
### HIPAA Compliance Score (0-100)
|
|
101
|
+
## ๐ Detection Categories
|
|
171
102
|
|
|
172
|
-
|
|
173
|
-
|
|
174
|
-
```bash
|
|
175
|
-
# Calculate compliance score
|
|
176
|
-
node dist/cli.js score ./src
|
|
103
|
+
vlayer scans for **163+ security patterns** across 12 HIPAA compliance categories:
|
|
177
104
|
|
|
178
|
-
|
|
179
|
-
|
|
180
|
-
|
|
105
|
+
| Category | Rules | What it detects |
|
|
106
|
+
|----------|-------|-----------------|
|
|
107
|
+
| **PHI Exposure** | 28 | SSN/MRN in code, PHI in logs, localStorage, URLs, diagnosis codes, unencrypted patient data |
|
|
108
|
+
| **Encryption** | 18 | Weak crypto (MD5, DES), disabled SSL/TLS, HTTP URLs, missing at-rest encryption |
|
|
109
|
+
| **Access Control** | 24 | SQL injection, XSS, CORS wildcards, hardcoded credentials, IDOR vulnerabilities, missing auth |
|
|
110
|
+
| **Audit Logging** | 15 | Missing logging framework, unlogged PHI operations, insufficient audit trails |
|
|
111
|
+
| **Data Retention** | 12 | Bulk deletes without audit, missing retention policies, improper data deletion |
|
|
112
|
+
| **Network Segmentation** | 14 | Missing network isolation, insecure API endpoints, unrestricted PHI access |
|
|
113
|
+
| **Multi-Factor Auth** | 8 | Missing MFA, weak authentication, password-only access to PHI |
|
|
114
|
+
| **Incident Response** | 10 | Missing IRP, unmonitored security events, no breach notification process |
|
|
115
|
+
| **Vulnerability Management** | 11 | Unpatched dependencies, missing security updates, known CVEs |
|
|
116
|
+
| **Asset Inventory** | 9 | Undocumented PHI storage, shadow IT, untracked data flows |
|
|
117
|
+
| **Session Management** | 8 | Weak session configs, missing timeouts, insecure cookies |
|
|
118
|
+
| **Third-Party Risk** | 6 | Unsafe vendor integrations, missing BAAs, unvetted third-party code |
|
|
181
119
|
|
|
182
|
-
**
|
|
183
|
-
- ๐ด Critical: -10 points each
|
|
184
|
-
- ๐ High: -5 points each
|
|
185
|
-
- ๐ก Medium: -2 points each
|
|
186
|
-
- ๐ต Low: -1 point each
|
|
187
|
-
- โ
Acknowledged findings: 25% penalty reduction
|
|
120
|
+
**Total: 163+ rules**
|
|
188
121
|
|
|
189
|
-
|
|
190
|
-
- A (90-100): Excellent compliance posture
|
|
191
|
-
- B (80-89): Good compliance
|
|
192
|
-
- C (70-79): Fair compliance
|
|
193
|
-
- D (60-69): Poor compliance
|
|
194
|
-
- F (<60): Critical - requires immediate attention
|
|
122
|
+
---
|
|
195
123
|
|
|
196
|
-
|
|
124
|
+
## ๐ Training Module
|
|
197
125
|
|
|
198
|
-
|
|
126
|
+
Turn your developers into HIPAA-aware engineers with built-in training:
|
|
199
127
|
|
|
200
128
|
```bash
|
|
201
|
-
|
|
202
|
-
node dist/cli.js report ./src
|
|
203
|
-
|
|
204
|
-
# Full-featured report
|
|
205
|
-
node dist/cli.js report ./src \
|
|
206
|
-
-o compliance-report.html \
|
|
207
|
-
--org "HealthTech Inc" \
|
|
208
|
-
--period "Q1 2024" \
|
|
209
|
-
--auditor "John Doe" \
|
|
210
|
-
--include-baseline
|
|
129
|
+
vlayer train
|
|
211
130
|
```
|
|
212
131
|
|
|
213
|
-
**
|
|
214
|
-
-
|
|
215
|
-
-
|
|
216
|
-
-
|
|
217
|
-
|
|
218
|
-
|
|
219
|
-
-
|
|
220
|
-
-
|
|
132
|
+
- **10 interactive modules** covering HIPAA fundamentals, technical safeguards, and best practices
|
|
133
|
+
- **45+ quiz questions** with immediate feedback
|
|
134
|
+
- **SHA-256 verifiable certificates** for audit documentation
|
|
135
|
+
- Track team progress and completion rates (Pro plan)
|
|
136
|
+
|
|
137
|
+
**Topics covered:**
|
|
138
|
+
- HIPAA Privacy & Security Rules
|
|
139
|
+
- PHI identification and handling
|
|
140
|
+
- Encryption standards and implementation
|
|
141
|
+
- Access controls and authentication
|
|
142
|
+
- Audit logging and monitoring
|
|
143
|
+
- Incident response procedures
|
|
144
|
+
- Business Associate Agreements
|
|
145
|
+
- Data breach notification requirements
|
|
146
|
+
- Physical and technical safeguards
|
|
147
|
+
- Compliance penalties and enforcement
|
|
221
148
|
|
|
222
149
|
---
|
|
223
150
|
|
|
224
|
-
##
|
|
225
|
-
|
|
226
|
-
### VS Code Extension
|
|
151
|
+
## ๐ HIPAA Templates
|
|
227
152
|
|
|
228
|
-
|
|
153
|
+
5 production-ready policy templates (Pro plan):
|
|
229
154
|
|
|
230
155
|
```bash
|
|
231
|
-
|
|
232
|
-
|
|
233
|
-
npm install
|
|
234
|
-
npm run compile
|
|
156
|
+
vlayer templates list
|
|
157
|
+
vlayer templates export irp
|
|
235
158
|
```
|
|
236
159
|
|
|
237
|
-
|
|
238
|
-
|
|
239
|
-
|
|
240
|
-
|
|
241
|
-
|
|
242
|
-
|
|
243
|
-
|
|
160
|
+
| Template | Description |
|
|
161
|
+
|----------|-------------|
|
|
162
|
+
| **Incident Response Plan (IRP)** | Step-by-step breach response procedures |
|
|
163
|
+
| **Business Associate Agreement (BAA)** | Standard BAA for third-party vendors |
|
|
164
|
+
| **Notice of Privacy Practices (NPP)** | Patient rights and PHI usage disclosure |
|
|
165
|
+
| **Security Officer Role** | Responsibilities and authority documentation |
|
|
166
|
+
| **Physical Safeguards** | Facility access controls and workstation security |
|
|
244
167
|
|
|
245
|
-
|
|
246
|
-
|
|
247
|
-
|
|
248
|
-
|
|
249
|
-
|
|
250
|
-
"vlayer.showStatusBar": true,
|
|
251
|
-
"vlayer.configPath": ".vlayerrc.json"
|
|
252
|
-
}
|
|
253
|
-
```
|
|
254
|
-
|
|
255
|
-
### Watch Mode
|
|
256
|
-
|
|
257
|
-
Continuous monitoring with real-time feedback:
|
|
258
|
-
|
|
259
|
-
```bash
|
|
260
|
-
# Watch a directory for changes
|
|
261
|
-
node dist/cli.js watch ./src
|
|
262
|
-
|
|
263
|
-
# Watch with specific categories
|
|
264
|
-
node dist/cli.js watch ./src --categories phi-exposure encryption
|
|
265
|
-
|
|
266
|
-
# Watch with custom config
|
|
267
|
-
node dist/cli.js watch ./src --config .vlayerrc.json
|
|
268
|
-
```
|
|
269
|
-
|
|
270
|
-
**Features:**
|
|
271
|
-
- ๐ Automatic scan on file save/create
|
|
272
|
-
- ๐จ Colored terminal output by severity
|
|
273
|
-
- ๐ Diff tracking (new findings vs. previous scan)
|
|
274
|
-
- ๐จ Alerts for new critical/high severity findings
|
|
275
|
-
- โก Smart file filtering (excludes node_modules, dist, etc.)
|
|
168
|
+
All templates are:
|
|
169
|
+
- โ
HIPAA-compliant and audit-ready
|
|
170
|
+
- โ
Customizable to your organization
|
|
171
|
+
- โ
Available in Word and PDF formats
|
|
172
|
+
- โ
Regularly updated for regulatory changes
|
|
276
173
|
|
|
277
174
|
---
|
|
278
175
|
|
|
279
|
-
##
|
|
280
|
-
|
|
281
|
-
### Inline Suppressions
|
|
282
|
-
|
|
283
|
-
Suppress specific findings with inline comments (justification required):
|
|
176
|
+
## ๐ง CLI Commands
|
|
284
177
|
|
|
285
|
-
```
|
|
286
|
-
|
|
287
|
-
|
|
288
|
-
|
|
178
|
+
```bash
|
|
179
|
+
# Scanning
|
|
180
|
+
vlayer scan <path> # Basic scan
|
|
181
|
+
vlayer scan <path> -f html -o report.html # HTML report
|
|
182
|
+
vlayer scan <path> -f markdown -o report.md # Markdown report
|
|
183
|
+
vlayer scan <path> --fix # Auto-fix issues
|
|
184
|
+
vlayer scan <path> -c phi-exposure encryption # Specific categories
|
|
289
185
|
|
|
290
|
-
|
|
186
|
+
# Compliance Score
|
|
187
|
+
vlayer score <path> # Calculate compliance score (0-100)
|
|
188
|
+
vlayer score <path> -f json # JSON output
|
|
291
189
|
|
|
292
|
-
|
|
190
|
+
# Watch Mode
|
|
191
|
+
vlayer watch <path> # Watch for changes
|
|
192
|
+
vlayer watch <path> -c phi-exposure # Watch specific categories
|
|
293
193
|
|
|
294
|
-
|
|
295
|
-
# Generate
|
|
296
|
-
|
|
194
|
+
# Audit Reports
|
|
195
|
+
vlayer report <path> # Generate auditor-ready report
|
|
196
|
+
vlayer report <path> -o report.html # Custom output path
|
|
197
|
+
vlayer report <path> --org "Company" # Set organization name
|
|
297
198
|
|
|
298
|
-
#
|
|
299
|
-
|
|
300
|
-
|
|
199
|
+
# Training
|
|
200
|
+
vlayer train # Start interactive training
|
|
201
|
+
vlayer train --module 2 # Specific module
|
|
202
|
+
vlayer train --certificate # Generate certificate
|
|
301
203
|
|
|
302
|
-
|
|
204
|
+
# Templates (Pro)
|
|
205
|
+
vlayer templates list # List available templates
|
|
206
|
+
vlayer templates export irp # Export Incident Response Plan
|
|
207
|
+
vlayer templates export baa # Export Business Associate Agreement
|
|
303
208
|
|
|
304
|
-
|
|
209
|
+
# Baseline
|
|
210
|
+
vlayer baseline <path> # Generate baseline
|
|
211
|
+
vlayer scan <path> --baseline .vlayer-baseline.json # Scan with baseline
|
|
305
212
|
|
|
306
|
-
|
|
307
|
-
#
|
|
308
|
-
node dist/cli.js scan . --min-confidence high
|
|
213
|
+
# Configuration
|
|
214
|
+
vlayer init # Generate .vlayerrc.json
|
|
309
215
|
```
|
|
310
216
|
|
|
311
|
-
|
|
312
|
-
|
|
313
|
-
|
|
314
|
-
|
|
315
|
-
### 1. Vulnerability Detection
|
|
316
|
-
|
|
317
|
-
Scans for **50+ security patterns** across 5 HIPAA compliance categories:
|
|
318
|
-
|
|
319
|
-
| Category | What it detects |
|
|
320
|
-
|----------|-----------------|
|
|
321
|
-
| **PHI Exposure** | SSN/MRN in code, PHI in logs, localStorage, URLs |
|
|
322
|
-
| **Encryption** | Weak crypto (MD5, DES), disabled SSL/TLS, HTTP URLs |
|
|
323
|
-
| **Access Control** | SQL injection, XSS, CORS wildcards, hardcoded credentials |
|
|
324
|
-
| **Audit Logging** | Missing logging framework, unlogged PHI operations |
|
|
325
|
-
| **Data Retention** | Bulk deletes without audit, missing retention policies |
|
|
326
|
-
|
|
327
|
-
<details>
|
|
328
|
-
<summary><strong>View all detection patterns</strong></summary>
|
|
329
|
-
|
|
330
|
-
**PHI Exposure (18 patterns)**
|
|
331
|
-
- Social Security Numbers (XXX-XX-XXXX)
|
|
332
|
-
- Medical Record Numbers (MRN patterns)
|
|
333
|
-
- Date of Birth handling
|
|
334
|
-
- Diagnosis codes (ICD-10)
|
|
335
|
-
- PHI in console.log statements
|
|
336
|
-
- PHI in localStorage/sessionStorage
|
|
337
|
-
- Patient data in URLs
|
|
338
|
-
- Unencrypted patient contact info
|
|
339
|
-
|
|
340
|
-
**Security Vulnerabilities (20+ patterns)**
|
|
341
|
-
- Hardcoded passwords and secrets
|
|
342
|
-
- API keys (generic, Stripe, AWS)
|
|
343
|
-
- Database URIs with credentials
|
|
344
|
-
- SQL injection (template literals & concatenation)
|
|
345
|
-
- innerHTML without sanitization
|
|
346
|
-
- eval() and Function constructor
|
|
347
|
-
- dangerouslySetInnerHTML in React
|
|
348
|
-
|
|
349
|
-
**Infrastructure Issues**
|
|
350
|
-
- HTTP URLs for PHI transmission
|
|
351
|
-
- Disabled SSL/TLS verification
|
|
352
|
-
- CORS wildcard origins
|
|
353
|
-
- Sessions without expiration
|
|
354
|
-
- Missing authentication checks
|
|
355
|
-
|
|
356
|
-
</details>
|
|
217
|
+
**Exit codes:**
|
|
218
|
+
- `0` - No critical issues
|
|
219
|
+
- `1` - Critical issues found (useful for CI/CD)
|
|
357
220
|
|
|
358
221
|
---
|
|
359
222
|
|
|
360
|
-
|
|
361
|
-
|
|
362
|
-
Automatically remediate common vulnerabilities:
|
|
223
|
+
## โ๏ธ CI/CD Integration
|
|
363
224
|
|
|
364
|
-
|
|
365
|
-
node dist/cli.js scan ./my-app --fix
|
|
366
|
-
```
|
|
225
|
+
### GitHub Actions
|
|
367
226
|
|
|
368
|
-
|
|
369
|
-
|
|
370
|
-
|
|
371
|
-
| Hardcoded password | Replace with `process.env.PASSWORD` |
|
|
372
|
-
| Hardcoded API key | Replace with `process.env.API_KEY` |
|
|
373
|
-
| HTTP URL | Upgrade to HTTPS |
|
|
374
|
-
| innerHTML | Replace with `textContent` |
|
|
375
|
-
| PHI in console.log | Comment out with review marker |
|
|
227
|
+
```yaml
|
|
228
|
+
name: HIPAA Compliance
|
|
229
|
+
on: [push, pull_request]
|
|
376
230
|
|
|
377
|
-
|
|
231
|
+
jobs:
|
|
232
|
+
vlayer-scan:
|
|
233
|
+
runs-on: ubuntu-latest
|
|
234
|
+
steps:
|
|
235
|
+
- uses: actions/checkout@v3
|
|
236
|
+
- uses: actions/setup-node@v3
|
|
237
|
+
with:
|
|
238
|
+
node-version: '18'
|
|
239
|
+
- run: npx vlayer scan ./src
|
|
378
240
|
```
|
|
379
|
-
โ Scan complete. Found 29 issues.
|
|
380
|
-
โ Applied 8 automatic fixes.
|
|
381
|
-
|
|
382
|
-
Changes by file:
|
|
383
|
-
src/api/users.ts
|
|
384
|
-
Line 45: SQL injection โ parameterized query
|
|
385
|
-
Line 89: Hardcoded password โ process.env.DB_PASSWORD
|
|
386
|
-
src/utils/logger.ts
|
|
387
|
-
Line 12: PHI in console.log โ commented out
|
|
388
|
-
```
|
|
389
|
-
|
|
390
|
-
---
|
|
391
241
|
|
|
392
|
-
###
|
|
242
|
+
### Pre-commit Hook
|
|
393
243
|
|
|
394
|
-
|
|
244
|
+
```bash
|
|
245
|
+
# Install pre-commit hook
|
|
246
|
+
npx vlayer install-hook
|
|
395
247
|
|
|
396
|
-
|
|
397
|
-
Stack detected:
|
|
398
|
-
Framework: Next.js
|
|
399
|
-
Database: Supabase
|
|
400
|
-
Auth: Supabase Auth
|
|
248
|
+
# .git/hooks/pre-commit will now run vlayer on staged files
|
|
401
249
|
```
|
|
402
250
|
|
|
403
|
-
|
|
251
|
+
### Pull Request Comments (Pro)
|
|
404
252
|
|
|
405
|
-
|
|
406
|
-
|------|----------|
|
|
407
|
-
| Frameworks | Next.js, React, Vue, Nuxt, Angular, Express, Fastify, NestJS |
|
|
408
|
-
| Databases | Supabase, Firebase, PostgreSQL, MySQL, MongoDB, Prisma, Drizzle |
|
|
409
|
-
| Auth | NextAuth, Supabase Auth, Firebase Auth, Auth0, Clerk, Passport |
|
|
410
|
-
|
|
411
|
-
**Stack-specific recommendations include:**
|
|
412
|
-
|
|
413
|
-
- **Next.js + Supabase**: Server Components for PHI, Row Level Security (RLS), middleware protection
|
|
414
|
-
- **Express + PostgreSQL**: express-session with Redis, parameterized queries
|
|
415
|
-
- **React + Firebase**: Firestore Security Rules, Admin SDK for PHI
|
|
253
|
+
Install the [vlayer GitHub App](https://app.vlayer.app) to get automatic PR comments with compliance findings.
|
|
416
254
|
|
|
417
255
|
---
|
|
418
256
|
|
|
419
|
-
|
|
257
|
+
## ๐ Compliance Dashboard (Pro)
|
|
420
258
|
|
|
421
|
-
|
|
259
|
+
Access historical scans, team management, and audit reports at [app.vlayer.app](https://app.vlayer.app):
|
|
422
260
|
|
|
423
|
-
- **
|
|
424
|
-
- **
|
|
425
|
-
- **
|
|
426
|
-
- **
|
|
261
|
+
- **Historical Scans** - Track compliance trends over time
|
|
262
|
+
- **Team Management** - Invite team members (10 seats on Pro)
|
|
263
|
+
- **Templates Library** - Access all 5 HIPAA document templates
|
|
264
|
+
- **PDF Reports** - Generate audit-ready reports
|
|
265
|
+
- **Training Dashboard** - Track team training completion
|
|
266
|
+
- **Compliance Score Tracking** - Monitor your 0-100 score over time
|
|
427
267
|
|
|
428
|
-
|
|
268
|
+
**Features:**
|
|
269
|
+
- Dark theme with professional UI
|
|
270
|
+
- Filter findings by severity and category
|
|
271
|
+
- Export data in JSON, CSV, or PDF
|
|
272
|
+
- Email notifications for critical findings
|
|
273
|
+
- Integration with Slack/Teams (coming soon)
|
|
429
274
|
|
|
430
275
|
---
|
|
431
276
|
|
|
432
|
-
|
|
277
|
+
## ๐ VS Code Extension
|
|
433
278
|
|
|
434
|
-
|
|
279
|
+
Real-time HIPAA compliance feedback in your editor:
|
|
435
280
|
|
|
436
281
|
```bash
|
|
437
|
-
#
|
|
438
|
-
|
|
439
|
-
|
|
440
|
-
|
|
441
|
-
node dist/cli.js audit ./my-app --generate-report --org "Healthcare Inc" --auditor "Jane Smith"
|
|
282
|
+
# Install from the vscode-extension directory
|
|
283
|
+
cd vscode-extension
|
|
284
|
+
npm install
|
|
285
|
+
npm run compile
|
|
442
286
|
```
|
|
443
287
|
|
|
444
|
-
**
|
|
445
|
-
|
|
446
|
-
|
|
447
|
-
|
|
448
|
-
|
|
449
|
-
|
|
450
|
-
|
|
451
|
-
| HIPAA reference resolved | Full finding details |
|
|
452
|
-
|
|
453
|
-
**PDF Report sections:**
|
|
454
|
-
1. Cover Page - Project info, scan statistics
|
|
455
|
-
2. Executive Summary - Remediation rate, risk breakdown
|
|
456
|
-
3. Fix Evidence - Cryptographic proof of each change
|
|
457
|
-
4. Manual Reviews - Pending items with deadlines
|
|
458
|
-
5. Verification Page - Report hash, signature fields
|
|
288
|
+
**Features:**
|
|
289
|
+
- โ
Real-time scanning on file save
|
|
290
|
+
- โ
Inline diagnostics with severity markers
|
|
291
|
+
- โ
Hover tooltips with HIPAA references
|
|
292
|
+
- โ
Quick-fix actions for auto-remediation
|
|
293
|
+
- โ
Status bar compliance score
|
|
294
|
+
- โ
Commands: "VLayer: Scan Current File", "VLayer: Scan Workspace"
|
|
459
295
|
|
|
460
296
|
---
|
|
461
297
|
|
|
462
|
-
|
|
463
|
-
|
|
464
|
-
**Reduce false positives and catch complex violations with Claude AI.**
|
|
465
|
-
|
|
466
|
-
vlayer now includes optional AI-powered analysis using Anthropic's Claude API:
|
|
467
|
-
|
|
468
|
-
#### Features
|
|
469
|
-
|
|
470
|
-
- **๐ค LLM-Powered Rules**: 6 specialized AI rules for detecting complex HIPAA violations
|
|
471
|
-
- **๐ฏ AI Triage**: Automatically classify findings to reduce false positives by 50%+
|
|
472
|
-
- **๐ PHI Scrubbing**: All code is sanitized before sending to the LLM (HIPAA-safe)
|
|
473
|
-
- **๐ฐ Cost Control**: Budget limits, caching, and rate limiting built-in
|
|
474
|
-
- **๐ Confidence Scores**: AI provides reasoning and confidence for each finding
|
|
298
|
+
## ๐ค AI-Powered Scanning (Optional)
|
|
475
299
|
|
|
476
|
-
|
|
300
|
+
Reduce false positives and catch complex violations with Claude AI:
|
|
477
301
|
|
|
478
302
|
```bash
|
|
479
|
-
# Set
|
|
303
|
+
# Set API key
|
|
480
304
|
export ANTHROPIC_API_KEY="sk-ant-..."
|
|
481
305
|
|
|
482
|
-
# Run AI-powered scan
|
|
483
|
-
|
|
306
|
+
# Run AI-powered scan
|
|
307
|
+
vlayer ai-scan ./src
|
|
484
308
|
|
|
485
309
|
# Adjust budget
|
|
486
|
-
|
|
487
|
-
|
|
488
|
-
# Run LLM rules only (skip triage)
|
|
489
|
-
node dist/cli.js ai-scan ./my-app --rules-only
|
|
490
|
-
|
|
491
|
-
# Enable AI triage in regular scan
|
|
492
|
-
node dist/cli.js scan ./my-app # AI triage runs automatically if API key is set
|
|
493
|
-
|
|
494
|
-
# Disable AI features
|
|
495
|
-
node dist/cli.js scan ./my-app --no-ai
|
|
496
|
-
```
|
|
497
|
-
|
|
498
|
-
#### AI Rules
|
|
499
|
-
|
|
500
|
-
The AI scanner includes 6 specialized rules:
|
|
501
|
-
|
|
502
|
-
| Rule ID | Name | Detects |
|
|
503
|
-
|---------|------|---------|
|
|
504
|
-
| **HIPAA-PHI-003** | Minimum Necessary Access | APIs returning more PHI than needed (SELECT * violations) |
|
|
505
|
-
| **HIPAA-SEC-001** | PHI Encryption | Unencrypted PHI in transit or at rest |
|
|
506
|
-
| **HIPAA-ACCESS-001** | Role-Based Access Control | Missing auth checks, hardcoded roles, IDOR vulnerabilities |
|
|
507
|
-
| **HIPAA-AUDIT-001** | Audit Logging | PHI operations without proper audit trails |
|
|
508
|
-
| **HIPAA-RETENTION-001** | Data Retention | Improper deletion, missing retention policies |
|
|
509
|
-
| **HIPAA-AUTH-001** | Session Management | Weak session configs, missing timeouts |
|
|
510
|
-
|
|
511
|
-
#### Configuration
|
|
512
|
-
|
|
513
|
-
Add AI settings to `.vlayerrc.json`:
|
|
514
|
-
|
|
515
|
-
```json
|
|
516
|
-
{
|
|
517
|
-
"ai": {
|
|
518
|
-
"enabled": true,
|
|
519
|
-
"enableTriage": true,
|
|
520
|
-
"enableLLMRules": true,
|
|
521
|
-
"filterFalsePositives": true,
|
|
522
|
-
"budgetCents": 50
|
|
523
|
-
}
|
|
524
|
-
}
|
|
525
|
-
```
|
|
526
|
-
|
|
527
|
-
#### Cost & Performance
|
|
528
|
-
|
|
529
|
-
- **Typical scan**: 5-20 API calls, $0.10-$0.50
|
|
530
|
-
- **Caching**: Results cached for 24 hours by file hash
|
|
531
|
-
- **Rate limiting**: Max 20 calls/minute, 50 calls/scan
|
|
532
|
-
- **PHI protection**: All sensitive data scrubbed before API call
|
|
533
|
-
|
|
534
|
-
**Example output:**
|
|
535
|
-
```
|
|
536
|
-
๐ค Starting AI-powered HIPAA scan...
|
|
537
|
-
๐ Scrubbed 3 PHI patterns from src/api/patients.ts
|
|
538
|
-
๐ Running 6 LLM-powered rules...
|
|
539
|
-
โ
AI scan complete: 12 findings, 48ยข
|
|
540
|
-
|
|
541
|
-
AI Scan Summary:
|
|
542
|
-
Files scanned: 8
|
|
543
|
-
AI findings: 12
|
|
544
|
-
AI calls made: 18
|
|
545
|
-
Cost: 48ยข
|
|
546
|
-
Critical: 2
|
|
547
|
-
High: 5
|
|
310
|
+
vlayer ai-scan ./src --budget 100
|
|
548
311
|
```
|
|
549
312
|
|
|
550
|
-
|
|
551
|
-
|
|
552
|
-
|
|
313
|
+
**AI Features:**
|
|
314
|
+
- 6 specialized LLM rules for complex HIPAA violations
|
|
315
|
+
- Automatic triage to reduce false positives by 50%+
|
|
316
|
+
- PHI scrubbing (HIPAA-safe, no PHI sent to API)
|
|
317
|
+
- Cost control with budget limits and caching
|
|
553
318
|
|
|
554
|
-
|
|
555
|
-
|
|
556
|
-
The HTML report includes:
|
|
557
|
-
- Summary cards with severity counts
|
|
558
|
-
- Stack detection section with tailored recommendations
|
|
559
|
-
- Each finding with code context and line highlighting
|
|
560
|
-
- Expandable remediation guides with code examples
|
|
561
|
-
- Auto-fixable badge on issues that can be fixed automatically
|
|
562
|
-
|
|
563
|
-
### JSON Report
|
|
564
|
-
|
|
565
|
-
Machine-readable format for CI/CD integration:
|
|
566
|
-
|
|
567
|
-
```json
|
|
568
|
-
{
|
|
569
|
-
"summary": {
|
|
570
|
-
"total": 29,
|
|
571
|
-
"critical": 8,
|
|
572
|
-
"high": 12,
|
|
573
|
-
"medium": 6,
|
|
574
|
-
"low": 3
|
|
575
|
-
},
|
|
576
|
-
"stack": {
|
|
577
|
-
"framework": "nextjs",
|
|
578
|
-
"database": "supabase",
|
|
579
|
-
"auth": "supabase-auth"
|
|
580
|
-
},
|
|
581
|
-
"findings": [...]
|
|
582
|
-
}
|
|
583
|
-
```
|
|
319
|
+
**Typical cost:** $0.10-$0.50 per scan
|
|
584
320
|
|
|
585
321
|
---
|
|
586
322
|
|
|
587
|
-
## Configuration
|
|
323
|
+
## ๐ Configuration
|
|
588
324
|
|
|
589
325
|
Create `.vlayerrc.json` in your project root:
|
|
590
326
|
|
|
@@ -594,68 +330,38 @@ Create `.vlayerrc.json` in your project root:
|
|
|
594
330
|
"ignorePaths": ["sample-data", "fixtures"],
|
|
595
331
|
"safeHttpDomains": ["my-internal-cdn.com"],
|
|
596
332
|
"contextLines": 3,
|
|
597
|
-
"categories": ["phi-exposure", "encryption", "access-control"]
|
|
333
|
+
"categories": ["phi-exposure", "encryption", "access-control"],
|
|
334
|
+
"minConfidence": "medium",
|
|
335
|
+
"ai": {
|
|
336
|
+
"enabled": true,
|
|
337
|
+
"enableTriage": true,
|
|
338
|
+
"budgetCents": 50
|
|
339
|
+
}
|
|
598
340
|
}
|
|
599
341
|
```
|
|
600
342
|
|
|
601
|
-
| Option | Description | Default |
|
|
602
|
-
|--------|-------------|---------|
|
|
603
|
-
| `exclude` | Glob patterns to skip | `[]` |
|
|
604
|
-
| `ignorePaths` | Path substrings to ignore | `[]` |
|
|
605
|
-
| `safeHttpDomains` | HTTP domains to allow (CDNs) | Built-in list |
|
|
606
|
-
| `contextLines` | Lines of context in reports | `2` |
|
|
607
|
-
| `categories` | Categories to scan | All |
|
|
608
|
-
|
|
609
343
|
---
|
|
610
344
|
|
|
611
|
-
##
|
|
345
|
+
## ๐๏ธ Auto-Fix
|
|
612
346
|
|
|
613
|
-
|
|
614
|
-
# Basic scan
|
|
615
|
-
vlayer scan <path>
|
|
347
|
+
Automatically remediate common vulnerabilities:
|
|
616
348
|
|
|
617
|
-
|
|
618
|
-
vlayer scan
|
|
619
|
-
vlayer scan <path> -f markdown -o report.md # Markdown report
|
|
620
|
-
vlayer scan <path> -c phi-exposure encryption # Specific categories
|
|
621
|
-
vlayer scan <path> --fix # Auto-fix issues
|
|
622
|
-
|
|
623
|
-
# Watch mode
|
|
624
|
-
vlayer watch <path> # Watch for changes
|
|
625
|
-
vlayer watch <path> -c phi-exposure # Watch specific categories
|
|
626
|
-
vlayer watch <path> --config .vlayerrc.json # Watch with custom config
|
|
627
|
-
vlayer watch <path> --min-confidence high # Watch with confidence filter
|
|
628
|
-
|
|
629
|
-
# Audit commands
|
|
630
|
-
vlayer audit <path> --summary # View audit summary
|
|
631
|
-
vlayer audit <path> --generate-report # Generate PDF
|
|
632
|
-
vlayer audit <path> --generate-report --text # Generate text instead
|
|
633
|
-
vlayer audit <path> --generate-report --org "Company" --auditor "Name"
|
|
634
|
-
|
|
635
|
-
# Baseline commands
|
|
636
|
-
vlayer baseline <path> # Generate baseline
|
|
637
|
-
vlayer baseline <path> -o custom.json # Custom output path
|
|
638
|
-
vlayer scan <path> --baseline .vlayer-baseline.json # Scan with baseline
|
|
639
|
-
|
|
640
|
-
# Compliance score
|
|
641
|
-
vlayer score <path> # Calculate compliance score
|
|
642
|
-
vlayer score <path> -f json # JSON output
|
|
643
|
-
vlayer score <path> --baseline baseline.json # Score with baseline
|
|
644
|
-
|
|
645
|
-
# Auditor reports
|
|
646
|
-
vlayer report <path> # Generate auditor report
|
|
647
|
-
vlayer report <path> -o report.html # Custom output path
|
|
648
|
-
vlayer report <path> --org "Company Name" # Set organization
|
|
649
|
-
vlayer report <path> --include-baseline # Include baseline comparison
|
|
349
|
+
```bash
|
|
350
|
+
vlayer scan ./my-app --fix
|
|
650
351
|
```
|
|
651
352
|
|
|
652
|
-
|
|
653
|
-
|
|
654
|
-
|
|
353
|
+
| Issue | Auto-Fix Applied |
|
|
354
|
+
|-------|------------------|
|
|
355
|
+
| SQL injection | Convert to parameterized query |
|
|
356
|
+
| Hardcoded password | Replace with `process.env.PASSWORD` |
|
|
357
|
+
| Hardcoded API key | Replace with `process.env.API_KEY` |
|
|
358
|
+
| HTTP URL | Upgrade to HTTPS |
|
|
359
|
+
| innerHTML | Replace with `textContent` |
|
|
360
|
+
| PHI in console.log | Comment out with review marker |
|
|
655
361
|
|
|
656
362
|
---
|
|
657
363
|
|
|
658
|
-
## HIPAA References
|
|
364
|
+
## ๐ HIPAA References
|
|
659
365
|
|
|
660
366
|
Each finding maps to specific HIPAA regulations:
|
|
661
367
|
|
|
@@ -671,89 +377,7 @@ Each finding maps to specific HIPAA regulations:
|
|
|
671
377
|
|
|
672
378
|
---
|
|
673
379
|
|
|
674
|
-
##
|
|
675
|
-
|
|
676
|
-
### Recently Completed โ
|
|
677
|
-
- [x] **Phase 4E: Authentication & User Management**
|
|
678
|
-
- [x] Supabase Auth integration
|
|
679
|
-
- [x] Email/password authentication flow
|
|
680
|
-
- [x] Login and signup pages with dark theme
|
|
681
|
-
- [x] Protected routes via Next.js middleware
|
|
682
|
-
- [x] User session management
|
|
683
|
-
- [x] User profile display in sidebar
|
|
684
|
-
- [x] Logout functionality
|
|
685
|
-
- [x] Environment variables configured in Vercel
|
|
686
|
-
- [x] **Phase 4D: Custom Domain Configuration**
|
|
687
|
-
- [x] Configured custom domains on vlayer.app
|
|
688
|
-
- [x] Dashboard: app.vlayer.app
|
|
689
|
-
- [x] Playground: play.vlayer.app
|
|
690
|
-
- [x] Documentation: docs.vlayer.app
|
|
691
|
-
- [x] Landing page: vlayer.app
|
|
692
|
-
- [x] Automatic DNS configuration via Vercel
|
|
693
|
-
- [x] SSL/TLS certificates provisioned for all domains
|
|
694
|
-
- [x] Updated all cross-project links
|
|
695
|
-
- [x] **Phase 4C: Dashboard Consolidation**
|
|
696
|
-
- [x] Moved landing page to separate repo ([vlayer-website](https://github.com/Francosimon53/vlayer-website))
|
|
697
|
-
- [x] Dashboard now at root route (/) instead of /dashboard
|
|
698
|
-
- [x] Simplified route structure (/, /projects, /projects/[id])
|
|
699
|
-
- [x] Removed route groups for cleaner app organization
|
|
700
|
-
- [x] Dashboard-focused application architecture
|
|
701
|
-
- [x] **Phase 4A: Web Dashboard (Enterprise Redesign)**
|
|
702
|
-
- [x] Next.js dashboard deployed to Vercel
|
|
703
|
-
- [x] Enterprise-grade dark navy theme with emerald accents
|
|
704
|
-
- [x] Fixed sidebar navigation with VLayer branding
|
|
705
|
-
- [x] Circular progress gauges with animations
|
|
706
|
-
- [x] Multi-project management with REST API
|
|
707
|
-
- [x] Status badges (Compliant/At Risk/Critical)
|
|
708
|
-
- [x] Historical score tracking with visual charts
|
|
709
|
-
- [x] Demo data with 4 realistic projects
|
|
710
|
-
- [x] Glassmorphism effects and professional shadows
|
|
711
|
-
- [x] Responsive design optimized for all devices
|
|
712
|
-
- [x] **Phase 3B: Dashboard & Compliance Score**
|
|
713
|
-
- [x] HIPAA Compliance Score (0-100) with severity weighting
|
|
714
|
-
- [x] Enhanced HTML reports with visual gauge
|
|
715
|
-
- [x] Auditor-ready reports with SHA256 hash
|
|
716
|
-
- [x] Executive summary and filterable findings table
|
|
717
|
-
- [x] Print-friendly CSS for PDF export
|
|
718
|
-
- [x] **Phase 3A: IDE & Developer Experience**
|
|
719
|
-
- [x] VS Code Extension v2.0 with real-time scanning
|
|
720
|
-
- [x] Watch mode for continuous monitoring
|
|
721
|
-
- [x] Inline diagnostics with hover tooltips
|
|
722
|
-
- [x] Quick-fix actions and status bar integration
|
|
723
|
-
- [x] **Phase 2B: Enhanced Custom Rules**
|
|
724
|
-
- [x] Semantic awareness for custom rules
|
|
725
|
-
- [x] Pattern-aware context detection
|
|
726
|
-
- [x] Confidence level controls
|
|
727
|
-
- [x] **Phase 2A: Semantic Context Analysis**
|
|
728
|
-
- [x] AST-based semantic analysis
|
|
729
|
-
- [x] Context-aware confidence levels
|
|
730
|
-
- [x] Test file detection
|
|
731
|
-
- [x] **Phase 1B: Reusable GitHub Action**
|
|
732
|
-
- [x] GitHub Action for CI/CD integration
|
|
733
|
-
- [x] Enhanced npm package
|
|
734
|
-
- [x] Baseline and suppression systems
|
|
735
|
-
|
|
736
|
-
### Coming Soon
|
|
737
|
-
- [ ] Slack/Teams notifications for new findings
|
|
738
|
-
- [ ] CLI integration with dashboard auto-upload
|
|
739
|
-
- [ ] Database backend for dashboard (currently file-based)
|
|
740
|
-
|
|
741
|
-
### Planned
|
|
742
|
-
- [ ] HITRUST CSF mapping
|
|
743
|
-
- [ ] SOC 2 compliance checks
|
|
744
|
-
- [ ] AWS/GCP/Azure infrastructure scanning
|
|
745
|
-
- [ ] Team dashboard with trend tracking
|
|
746
|
-
- [ ] Jira/Linear integration for issue tracking
|
|
747
|
-
|
|
748
|
-
### Future
|
|
749
|
-
- [ ] AI-powered fix suggestions
|
|
750
|
-
- [ ] Dependency vulnerability scanning
|
|
751
|
-
- [ ] Runtime PHI detection agent
|
|
752
|
-
- [ ] Compliance certification workflows
|
|
753
|
-
|
|
754
|
-
---
|
|
755
|
-
|
|
756
|
-
## Contributing
|
|
380
|
+
## ๐ค Contributing
|
|
757
381
|
|
|
758
382
|
Contributions are welcome! Please read our contributing guidelines before submitting PRs.
|
|
759
383
|
|
|
@@ -763,20 +387,32 @@ npm install
|
|
|
763
387
|
npm run dev # Watch mode
|
|
764
388
|
npm run test # Run tests
|
|
765
389
|
npm run lint # Lint code
|
|
390
|
+
npm run typecheck # Type check
|
|
766
391
|
```
|
|
767
392
|
|
|
768
393
|
---
|
|
769
394
|
|
|
770
|
-
## License
|
|
395
|
+
## ๐ License
|
|
771
396
|
|
|
772
397
|
MIT License - see [LICENSE](LICENSE) for details.
|
|
773
398
|
|
|
774
399
|
---
|
|
775
400
|
|
|
401
|
+
## ๐ง Contact
|
|
402
|
+
|
|
403
|
+
- **General inquiries**: [hello@vlayer.app](mailto:hello@vlayer.app)
|
|
404
|
+
- **Sales & Enterprise**: [sales@vlayer.app](mailto:sales@vlayer.app)
|
|
405
|
+
- **Enterprise solutions**: [enterprise@vlayer.app](mailto:enterprise@vlayer.app)
|
|
406
|
+
- **Support**: [GitHub Issues](https://github.com/Francosimon53/verification-layer/issues)
|
|
407
|
+
|
|
408
|
+
---
|
|
409
|
+
|
|
776
410
|
<p align="center">
|
|
777
|
-
Built for healthcare developers who take compliance seriously
|
|
778
|
-
<br>
|
|
779
|
-
<a href="https://
|
|
780
|
-
|
|
411
|
+
<strong>Built for healthcare developers who take compliance seriously.</strong>
|
|
412
|
+
<br><br>
|
|
413
|
+
<a href="https://vlayer.app">Website</a> โข
|
|
414
|
+
<a href="https://docs.vlayer.app">Documentation</a> โข
|
|
415
|
+
<a href="https://app.vlayer.app">Dashboard</a> โข
|
|
416
|
+
<a href="https://github.com/Francosimon53/verification-layer/issues">Report Bug</a> โข
|
|
781
417
|
<a href="https://github.com/Francosimon53/verification-layer/issues">Request Feature</a>
|
|
782
418
|
</p>
|