429 lines
12 KiB
Markdown
429 lines
12 KiB
Markdown
# ๐ Security Audit Summary - MidStream Repository
|
|
|
|
**Date**: October 31, 2025
|
|
**Overall Security Score**: ๐ด **CRITICAL (28/100)**
|
|
**Status**: IMMEDIATE ACTION REQUIRED
|
|
|
|
---
|
|
|
|
## ๐จ CRITICAL ISSUES REQUIRING IMMEDIATE ACTION
|
|
|
|
### 1. **EXPOSED API KEYS AND CREDENTIALS** - CRITICAL โ ๏ธ
|
|
|
|
**Location**: `/workspaces/midstream/.env.local`
|
|
|
|
**Status**: โ **TRACKED BY GIT AND PUBLICLY ACCESSIBLE**
|
|
|
|
**Exposed Credentials** (15+ API keys):
|
|
- โ OpenRouter API Key: `sk-or-v1-33bc9dcfcb3107aa...`
|
|
- โ Anthropic API Key: `sk-ant-api03-A4quN8ZhLo8CIXWE...`
|
|
- โ HuggingFace API Key: `hf_DjHQclwWGPzwStPm...`
|
|
- โ Google Gemini API Key: `AIzaSyBKMO_UCkhn...`
|
|
- โ E2B API Keys (2): `e2b_79b115201a8cb697...`, `sk_e2b_6ed0679d1c20...`
|
|
- โ Supabase Keys (2): `sbp_ea6f6af965185721...`, JWT token
|
|
- โ Genesis Password & Hash
|
|
- โ Genesis Darknet Private Key: `2a97a18d1d1aac9c...`
|
|
- โ Flow Nexus Session Token (JWT)
|
|
- โ Flow Nexus Password: `password123`
|
|
- โ Requesty API Key
|
|
- โ Crates.io API Key
|
|
- โ Perplexity API Key: `pplx-VBynPwKCV6WUQGUf...`
|
|
|
|
**Impact**:
|
|
- Unauthorized API usage (financial liability)
|
|
- Complete access to E2B sandbox infrastructure
|
|
- Supabase database access
|
|
- User account compromise
|
|
- Potential data breach
|
|
- Cryptocurrency wallet compromise (darknet private key)
|
|
|
|
**IMMEDIATE ACTIONS** (Complete within 24 hours):
|
|
|
|
1. **Rotate ALL exposed API keys immediately**:
|
|
```bash
|
|
# Revoke and regenerate:
|
|
- OpenRouter dashboard โ API Keys โ Revoke
|
|
- Anthropic Console โ API Keys โ Delete
|
|
- HuggingFace Settings โ Access Tokens โ Revoke
|
|
- Google Cloud Console โ Credentials โ Delete
|
|
- E2B Dashboard โ API Keys โ Regenerate
|
|
- Supabase Project Settings โ API โ Reset keys
|
|
- Crates.io Account Settings โ API Access โ Revoke
|
|
- Perplexity AI โ API Keys โ Delete
|
|
```
|
|
|
|
2. **Remove .env.local from repository**:
|
|
```bash
|
|
# Remove from tracking
|
|
git rm --cached .env.local
|
|
git commit -m "Security: Remove exposed credentials"
|
|
git push
|
|
```
|
|
|
|
3. **Purge from Git history** (REQUIRED - file exists in history):
|
|
```bash
|
|
# WARNING: This rewrites history - coordinate with team
|
|
git filter-branch --force --index-filter \
|
|
"git rm --cached --ignore-unmatch .env.local" \
|
|
--prune-empty --tag-name-filter cat -- --all
|
|
|
|
# Force push to all branches
|
|
git push origin --force --all
|
|
git push origin --force --tags
|
|
|
|
# Clean local repository
|
|
rm -rf .git/refs/original/
|
|
git reflog expire --expire=now --all
|
|
git gc --prune=now --aggressive
|
|
```
|
|
|
|
4. **Revoke Genesis User Access**:
|
|
- Change password: `74059e26c4e06bf283064961d56ca57e0e33dcfb31a6d136e771a3ba4a2dda66`
|
|
- Regenerate darknet private key: `2a97a18d1d1aac9c29f69f5e136b5c5c3634cc52af3294da27ee21ef07f46417`
|
|
- Invalidate Flow Nexus session token
|
|
|
|
5. **Monitor for unauthorized usage**:
|
|
- Check OpenRouter usage logs
|
|
- Review Anthropic API usage
|
|
- Audit E2B sandbox creation logs
|
|
- Check Supabase database access logs
|
|
- Review Crates.io publish history
|
|
|
|
---
|
|
|
|
## ๐ด HIGH SEVERITY VULNERABILITIES
|
|
|
|
### 2. **Dependency Vulnerabilities** - HIGH
|
|
|
|
**Summary**: 14 vulnerabilities across 7 packages
|
|
|
|
**Critical Issues**:
|
|
- **axios โค0.30.1**: CSRF, SSRF, DoS vulnerabilities (CVSS 7.5)
|
|
- **Missing package-lock.json** in 5 packages (unable to audit)
|
|
- **Outdated critical dependencies**: axios, ws, vitest, wasm-pack
|
|
|
|
**Immediate Actions**:
|
|
```bash
|
|
# Update vulnerable dependencies
|
|
cd /workspaces/midstream/npm
|
|
npm update axios ws
|
|
|
|
cd /workspaces/midstream/AIMDS
|
|
npm update vitest esbuild
|
|
|
|
# Generate missing lockfiles
|
|
cd /workspaces/midstream/lean-agentic-js
|
|
npm install
|
|
|
|
cd /workspaces/midstream/wasm/www
|
|
npm install
|
|
```
|
|
|
|
**Details**: See `/workspaces/midstream/docs/SECURITY_VULNERABILITY_REPORT.md`
|
|
|
|
### 3. **Wildcard CORS Policy** - HIGH
|
|
|
|
**Location**: `npm/src/streaming.ts:165-167`
|
|
|
|
**Issue**:
|
|
```typescript
|
|
res.setHeader('Access-Control-Allow-Origin', '*');
|
|
```
|
|
|
|
**Risk**: CSRF attacks, credential theft, unauthorized access
|
|
|
|
**Fix**:
|
|
```typescript
|
|
const allowedOrigins = process.env.ALLOWED_ORIGINS?.split(',') || ['http://localhost:3000'];
|
|
const origin = req.headers.origin;
|
|
if (origin && allowedOrigins.includes(origin)) {
|
|
res.setHeader('Access-Control-Allow-Origin', origin);
|
|
}
|
|
```
|
|
|
|
### 4. **Missing Session Validation** - HIGH
|
|
|
|
**Location**: `npm/src/openai-realtime.ts:73-98`
|
|
|
|
**Issue**: Session IDs stored but never validated or expired
|
|
|
|
**Fix**:
|
|
```typescript
|
|
interface Session {
|
|
id: string;
|
|
createdAt: number;
|
|
expiresAt: number;
|
|
userId?: string;
|
|
}
|
|
|
|
const SESSION_TTL = 3600000; // 1 hour
|
|
|
|
function validateSession(sessionId: string): boolean {
|
|
const session = activeSessions.get(sessionId);
|
|
if (!session || Date.now() > session.expiresAt) {
|
|
activeSessions.delete(sessionId);
|
|
return false;
|
|
}
|
|
return true;
|
|
}
|
|
```
|
|
|
|
### 5. **No Authorization Layer** - HIGH
|
|
|
|
**Location**: `npm/src/mcp-server.ts:68-99`
|
|
|
|
**Issue**: MCP server accepts tool calls without permission checks
|
|
|
|
**Fix**: Implement RBAC (Role-Based Access Control)
|
|
|
|
### 6. **Path Traversal Vulnerability** - HIGH
|
|
|
|
**Location**: `npm/src/cli.ts:252-284`
|
|
|
|
**Issue**: User-provided paths not sanitized
|
|
|
|
**Fix**:
|
|
```typescript
|
|
import path from 'path';
|
|
|
|
function sanitizePath(userPath: string, baseDir: string): string {
|
|
const resolved = path.resolve(baseDir, userPath);
|
|
if (!resolved.startsWith(baseDir)) {
|
|
throw new Error('Path traversal detected');
|
|
}
|
|
return resolved;
|
|
}
|
|
```
|
|
|
|
---
|
|
|
|
## ๐ก MEDIUM SEVERITY ISSUES
|
|
|
|
### 7. Missing Input Sanitization (8 instances)
|
|
- JSON parsing without validation
|
|
- Unvalidated environment variables
|
|
- Direct database queries (potential injection)
|
|
|
|
### 8. Weak Docker Security
|
|
- Hardcoded Grafana password: `admin`
|
|
- No secrets management
|
|
- Environment file mounting
|
|
|
|
### 9. Documentation Contains Partial Keys
|
|
- Files with truncated API keys in AIMDS/docs/
|
|
- Risk of social engineering attacks
|
|
|
|
---
|
|
|
|
## โ
SECURITY STRENGTHS
|
|
|
|
**Positive Findings**:
|
|
1. โ
No hardcoded API keys in source code (except .env.local)
|
|
2. โ
Helmet.js security headers configured
|
|
3. โ
Rate limiting implemented (100 req/window)
|
|
4. โ
Parameterized SQL queries (no SQL injection)
|
|
5. โ
HTTPS/WSS for external connections
|
|
6. โ
TypeScript type safety
|
|
7. โ
Zod schema validation
|
|
8. โ
No eval() usage
|
|
9. โ
Graceful shutdown handling
|
|
10. โ
GitHub Actions use secrets properly
|
|
11. โ
.gitignore properly configured (now)
|
|
12. โ
No private key files (.pem, .key) in repository
|
|
|
|
---
|
|
|
|
## ๐ Security Scorecard
|
|
|
|
| Category | Score | Status | Priority |
|
|
|----------|-------|--------|----------|
|
|
| **Environment Files** | 0/100 | ๐ด CRITICAL | IMMEDIATE |
|
|
| **Dependency Security** | 40/100 | ๐ POOR | HIGH |
|
|
| **Code Security** | 72/100 | ๐ก FAIR | MEDIUM |
|
|
| **Authentication** | 50/100 | ๐ POOR | HIGH |
|
|
| **Authorization** | 30/100 | ๐ด POOR | HIGH |
|
|
| **Input Validation** | 60/100 | ๐ก FAIR | MEDIUM |
|
|
| **CORS/CSP** | 50/100 | ๐ POOR | HIGH |
|
|
| **Git Configuration** | 85/100 | ๐ข GOOD | LOW |
|
|
| **CI/CD Security** | 80/100 | ๐ข GOOD | MEDIUM |
|
|
| **Docker Security** | 60/100 | ๐ก FAIR | MEDIUM |
|
|
| **Secret Management** | 0/100 | ๐ด NONE | IMMEDIATE |
|
|
|
|
**Overall Score**: ๐ด **28/100 - CRITICAL**
|
|
|
|
---
|
|
|
|
## ๐ ACTION PLAN
|
|
|
|
### Phase 1: IMMEDIATE (0-24 hours) - CRITICAL
|
|
|
|
- [ ] **Rotate ALL 15+ exposed API keys**
|
|
- [ ] **Remove .env.local from Git tracking**
|
|
- [ ] **Purge .env.local from Git history**
|
|
- [ ] **Revoke Genesis user credentials**
|
|
- [ ] **Monitor API usage logs for unauthorized access**
|
|
- [ ] **Change all passwords exposed in .env.local**
|
|
- [ ] **Notify team members about security incident**
|
|
|
|
### Phase 2: URGENT (1-7 days) - HIGH PRIORITY
|
|
|
|
- [ ] **Update vulnerable dependencies** (axios, ws, vitest)
|
|
- [ ] **Generate missing package-lock.json files**
|
|
- [ ] **Fix wildcard CORS policy**
|
|
- [ ] **Implement session validation and expiration**
|
|
- [ ] **Add authorization layer to MCP server**
|
|
- [ ] **Sanitize all path inputs**
|
|
- [ ] **Implement secret scanning in CI/CD**
|
|
- [ ] **Add pre-commit hooks for secret detection**
|
|
- [ ] **Remove partial API keys from documentation**
|
|
|
|
### Phase 3: SHORT-TERM (1-4 weeks) - MEDIUM PRIORITY
|
|
|
|
- [ ] **Implement proper secret management** (AWS Secrets Manager/Vault)
|
|
- [ ] **Add input validation middleware**
|
|
- [ ] **Fix Docker security issues**
|
|
- [ ] **Implement RBAC system**
|
|
- [ ] **Add security monitoring and alerts**
|
|
- [ ] **Security training for development team**
|
|
- [ ] **Create incident response playbook**
|
|
- [ ] **Regular security audit schedule**
|
|
|
|
### Phase 4: LONG-TERM (1-3 months) - STRATEGIC
|
|
|
|
- [ ] **Zero-trust architecture implementation**
|
|
- [ ] **Automated secret rotation**
|
|
- [ ] **Comprehensive security testing suite**
|
|
- [ ] **SOC 2 / ISO 27001 compliance preparation**
|
|
- [ ] **Penetration testing**
|
|
- [ ] **Bug bounty program**
|
|
|
|
---
|
|
|
|
## ๐ DETAILED REPORTS
|
|
|
|
Three comprehensive reports have been generated:
|
|
|
|
1. **`SECURITY_VULNERABILITY_REPORT.md`** - Dependency vulnerabilities
|
|
- 14 vulnerabilities across 7 packages
|
|
- CVE details and CVSS scores
|
|
- Step-by-step remediation
|
|
|
|
2. **`SECURITY_ANALYSIS_REPORT.md`** - Code security analysis
|
|
- File-by-file security assessment
|
|
- Line-specific vulnerability locations
|
|
- Code examples for fixes
|
|
- OWASP/CWE compliance
|
|
|
|
3. **Configuration Security Audit** - Infrastructure security
|
|
- Complete .env.local exposure analysis
|
|
- Docker and CI/CD configuration review
|
|
- Git security assessment
|
|
- Compliance considerations
|
|
|
|
---
|
|
|
|
## ๐ฐ FINANCIAL IMPACT ESTIMATE
|
|
|
|
**Potential Costs from Exposed Credentials**:
|
|
|
|
| Service | Worst-Case Monthly Cost | Risk Level |
|
|
|---------|------------------------|------------|
|
|
| OpenRouter API | $5,000 - $50,000 | ๐ด CRITICAL |
|
|
| Anthropic API | $10,000 - $100,000 | ๐ด CRITICAL |
|
|
| Google Gemini | $1,000 - $10,000 | ๐ด CRITICAL |
|
|
| E2B Sandboxes | $500 - $5,000 | ๐ HIGH |
|
|
| HuggingFace | $100 - $1,000 | ๐ก MEDIUM |
|
|
| Perplexity | $500 - $5,000 | ๐ก MEDIUM |
|
|
| **Total Exposure** | **$17,100 - $171,000** | ๐ด **CRITICAL** |
|
|
|
|
**Additional Risks**:
|
|
- Data breach fines: $100,000 - $1,000,000+
|
|
- Legal fees: $50,000 - $500,000
|
|
- Reputation damage: Incalculable
|
|
- Regulatory penalties (GDPR/PCI-DSS): Up to 4% of annual revenue
|
|
|
|
---
|
|
|
|
## ๐ RECOMMENDED TOOLS
|
|
|
|
### Immediate Implementation:
|
|
1. **TruffleHog** - Secret scanning
|
|
2. **git-secrets** - Pre-commit hook
|
|
3. **npm audit** - Dependency scanning
|
|
4. **Snyk** - Continuous security monitoring
|
|
|
|
### Long-term:
|
|
1. **AWS Secrets Manager / HashiCorp Vault** - Secret management
|
|
2. **SonarQube** - Code quality and security
|
|
3. **OWASP ZAP** - Penetration testing
|
|
4. **Datadog / Sentry** - Security monitoring
|
|
|
|
---
|
|
|
|
## ๐ INCIDENT RESPONSE
|
|
|
|
**If you suspect credentials have been used**:
|
|
|
|
1. **Contact service providers immediately**:
|
|
- OpenRouter: support@openrouter.ai
|
|
- Anthropic: security@anthropic.com
|
|
- Google Cloud: cloud-support@google.com
|
|
- E2B: support@e2b.dev
|
|
|
|
2. **Document the incident**:
|
|
- Timeline of exposure
|
|
- Affected services
|
|
- Actions taken
|
|
- Lessons learned
|
|
|
|
3. **Review logs for unauthorized access**:
|
|
```bash
|
|
# Check API usage
|
|
# Review database access logs
|
|
# Audit infrastructure changes
|
|
```
|
|
|
|
4. **Consider disclosure requirements**:
|
|
- GDPR breach notification (72 hours)
|
|
- PCI-DSS incident reporting
|
|
- Customer notification if user data affected
|
|
|
|
---
|
|
|
|
## โ
VERIFICATION CHECKLIST
|
|
|
|
After completing remediation:
|
|
|
|
- [ ] All API keys rotated and old keys confirmed revoked
|
|
- [ ] .env.local removed from all branches
|
|
- [ ] Git history purged and verified clean
|
|
- [ ] No unauthorized API usage detected in logs
|
|
- [ ] All team members notified and credentials updated
|
|
- [ ] Secret scanning enabled in CI/CD
|
|
- [ ] Pre-commit hooks installed
|
|
- [ ] Documentation updated with security best practices
|
|
- [ ] Incident post-mortem completed
|
|
- [ ] Security training scheduled
|
|
|
|
---
|
|
|
|
## ๐ REFERENCES
|
|
|
|
- [OWASP Top 10](https://owasp.org/www-project-top-ten/)
|
|
- [CWE Top 25](https://cwe.mitre.org/top25/)
|
|
- [GitHub Secret Scanning](https://docs.github.com/en/code-security/secret-scanning)
|
|
- [npm Security Best Practices](https://docs.npmjs.com/security-best-practices)
|
|
- [NIST Cybersecurity Framework](https://www.nist.gov/cyberframework)
|
|
|
|
---
|
|
|
|
**Report Classification**: ๐ด CONFIDENTIAL - SECURITY CRITICAL
|
|
**Distribution**: Development Team, Security Team, Management
|
|
**Next Review**: After Phase 1 completion (24 hours)
|
|
|
|
---
|
|
|
|
**Generated**: October 31, 2025
|
|
**Auditors**: Multi-agent Security Review Team
|
|
**Status**: โ ๏ธ CRITICAL SECURITY INCIDENT - IMMEDIATE ACTION REQUIRED
|