Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
1,101 changes: 1,101 additions & 0 deletions ADMIN_API.md

Large diffs are not rendered by default.

405 changes: 405 additions & 0 deletions ADMIN_IMPLEMENTATION_SUMMARY.md

Large diffs are not rendered by default.

311 changes: 311 additions & 0 deletions ADMIN_SECURITY.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,311 @@
# Admin Control System - Security Summary

## Security Implementation Status

### βœ… Implemented Security Features

1. **Role-Based Access Control (RBAC)**
- Admin and moderator roles implemented
- Middleware enforces role requirements for sensitive operations
- Super admin role for system-critical operations

2. **Audit Logging**
- Comprehensive logging of all admin actions
- Captures: user ID, action, resource, IP address, user agent, timestamp
- Includes metadata for detailed action tracking
- Admin-specific logging flag for filtering

3. **IP Whitelisting**
- Middleware supports IP-based access control
- Can be configured via environment variables
- Restricts admin access to approved IP addresses

4. **SQL Injection Protection**
- All queries use parameterized statements
- Period/interval parameters validated against allowlists
- No string interpolation in SQL queries

5. **Impersonation Session Tracking**
- Full audit trail for admin impersonation
- Session tokens for secure impersonation
- Tracks actions performed during impersonation
- Can be ended at any time

6. **Rate Limiting Infrastructure**
- `adminRateLimit` middleware implemented
- Configurable request limits (default: 100/min)
- Per-user tracking with automatic reset
- Returns retry-after information

### ⚠️ Security Features Requiring Implementation

#### CRITICAL: 2FA Token Verification (NOT IMPLEMENTED)

**Status**: Placeholder only - accepts any token

**Location**: `backend/src/middleware/admin-auth.ts` line 174-176

**Required Implementation**:
```javascript
// Install required package
npm install speakeasy

// Implementation example
const speakeasy = require('speakeasy');
const verified = speakeasy.totp.verify({
secret: result.rows[0].secret,
encoding: 'base32',
token: tfaToken as string,
window: 2 // Allow 2 time steps before/after for clock drift
});

if (!verified) {
return res.status(403).json({ error: 'Invalid 2FA token' });
}
```

**Impact**: Currently, any string is accepted as a valid 2FA token, completely bypassing this security control.

**Risk Level**: CRITICAL

**Affected Operations**:
- User suspension/activation
- Subscription overrides
- Bulk operations (credits, emails)
- Affiliate payouts
- Refund processing
- Tax configuration
- Feature flag management
- Rate limit configuration
- CDN cache purging

---

#### CRITICAL: Password Verification (NOT IMPLEMENTED)

**Status**: Placeholder only - accepts any password

**Location**: `backend/src/middleware/admin-auth.ts` line 261-262

**Required Implementation**:
```javascript
// Install required package
npm install bcrypt

// Implementation example
const bcrypt = require('bcrypt');
const userResult = await pool.query(
'SELECT password_hash FROM users WHERE id = $1',
[req.user!.id]
);

const validPassword = await bcrypt.compare(
passwordConfirmation as string,
userResult.rows[0].password_hash
);

if (!validPassword) {
return res.status(403).json({ error: 'Invalid password' });
}
```

**Impact**: Password confirmation for sensitive operations is not enforced.

**Risk Level**: CRITICAL

**Notes**: This middleware is currently not used but should be added to critical operations.

---

#### HIGH: Rate Limiting Not Applied (NOT APPLIED)

**Status**: Middleware exists but not applied to routes

**Location**: Admin route files don't use `adminRateLimit` middleware

**Required Implementation**:
```typescript
// In each admin route file, add rate limiting:
import { adminRateLimit } from '../middleware/admin-auth';

// Apply to router
router.use(adminRateLimit(pool));
```

**Impact**: Admin endpoints can be called unlimited times.

**Risk Level**: HIGH

**Remediation**: Add `adminRateLimit` middleware to all admin route routers.

---

#### MEDIUM: Frontend Token Storage

**Status**: Uses localStorage for admin tokens

**Location**: `src/components/AdminDashboard.tsx` line 56, 107

**Issue**: Tokens stored in localStorage are accessible to JavaScript and persist across sessions.

**Recommended**: Use httpOnly cookies for token storage instead.

**Risk Level**: MEDIUM

**Remediation**:
1. Configure backend to send tokens via httpOnly cookies
2. Update frontend to rely on cookies instead of localStorage
3. Implement CSRF protection for cookie-based auth

---

#### MEDIUM: Frontend 2FA Input

**Status**: Uses browser's `prompt()` for 2FA token input

**Location**: `src/components/AdminDashboard.tsx` line 107

**Issue**: Poor UX and potential security issues with prompt-based input.

**Recommended**: Implement proper modal/form component for 2FA entry.

**Risk Level**: MEDIUM

---

## Security Best Practices Implemented

1. **Principle of Least Privilege**
- Different admin levels (admin, moderator)
- Super admin required for system-critical operations
- Fine-grained permission checks

2. **Defense in Depth**
- Multiple layers of security (auth, RBAC, 2FA, audit)
- IP whitelisting as additional layer
- Rate limiting to prevent abuse

3. **Secure by Default**
- All admin routes require authentication
- Sensitive operations require additional verification
- Comprehensive logging enabled by default

4. **Audit Trail**
- Complete action history
- Non-repudiation through audit logs
- Impersonation tracking

## Production Deployment Checklist

Before deploying to production, ensure:

- [ ] Implement actual 2FA token verification with speakeasy or otplib
- [ ] Implement password verification with bcrypt or argon2
- [ ] Apply rate limiting middleware to all admin routes
- [ ] Move token storage to httpOnly cookies
- [ ] Create proper 2FA input component
- [ ] Configure IP whitelist for production environment
- [ ] Set up monitoring/alerting for admin actions
- [ ] Review and adjust rate limit thresholds
- [ ] Test all security controls in staging environment
- [ ] Conduct security audit/penetration testing
- [ ] Document incident response procedures
- [ ] Set up admin session timeout (30 minutes recommended)
- [ ] Enable HTTPS with strong TLS configuration
- [ ] Configure CORS properly for production domains
- [ ] Set secure password policy for admin users
- [ ] Enable database query logging for audit

## Environment Variables

Required security-related environment variables:

```bash
# JWT Secret for authentication
JWT_SECRET=your_production_secret_here_min_32_chars

# IP Whitelist (comma-separated)
ADMIN_ALLOWED_IPS=192.168.1.1,10.0.0.1

# Session timeout (minutes)
ADMIN_SESSION_TIMEOUT=30

# Rate limits
ADMIN_RATE_LIMIT_REQUESTS=100
ADMIN_RATE_LIMIT_WINDOW_MS=60000

# 2FA Settings (when implemented)
TOTP_WINDOW=2
TOTP_STEP=30
```

## Monitoring and Alerting

Recommended monitoring:

1. **Failed Authentication Attempts**
- Alert on 5+ failed attempts in 5 minutes
- Auto-lock after 10 failed attempts

2. **Unusual Admin Activity**
- Multiple suspensions in short time
- Large bulk operations
- Off-hours access

3. **Security Events**
- 2FA failures
- IP whitelist violations
- Impersonation sessions
- Sensitive data access

4. **Performance Metrics**
- Rate limit violations
- API response times
- Database query performance

## Incident Response

If security breach suspected:

1. Immediately revoke all admin sessions
2. Review audit logs for suspicious activity
3. Check for unauthorized privilege escalation
4. Verify no data exfiltration occurred
5. Reset all admin passwords
6. Re-enable 2FA for all admins
7. Update IP whitelist
8. Conduct post-incident review

## Additional Security Recommendations

1. **Multi-Factor Authentication**
- Require hardware tokens for super admins
- Consider U2F/WebAuthn support

2. **Session Management**
- Implement session invalidation on password change
- Add "revoke all sessions" capability
- Log all session creation/termination

3. **Database Security**
- Use read-only database user for analytics queries
- Implement query timeout limits
- Regular database audit log review

4. **API Security**
- Add request signing for critical operations
- Implement idempotency keys for state changes
- Add correlation IDs for request tracking

5. **Compliance**
- GDPR: Implement data export/deletion APIs
- SOC 2: Ensure audit logs are tamper-proof
- PCI DSS: If handling payments, follow PCI requirements

## Contact

For security issues, contact: [email protected]

## Last Updated

2024-01-01 - Initial security assessment
10 changes: 10 additions & 0 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -40,6 +40,14 @@ A production-grade cloud IDE and deployment platform similar to Replit, built wi
- **MongoDB** - Collection operations and document queries
- Visual database management interface

### 7. **Admin Control System** πŸ†•
- **User Management** - Advanced search, suspension/activation, analytics, impersonation mode
- **Platform Analytics** - Real-time metrics, revenue tracking (MRR/ARR), churn analysis
- **Sales & Affiliates** - Affiliate program management, discount codes, commission tracking
- **Financial Controls** - Revenue reconciliation, subscription management, refund processing
- **System Administration** - Server health monitoring, deployment queue, feature flags
- **Security Features** - Role-based access control (RBAC), 2FA, audit logging, IP whitelisting

## πŸ› οΈ Tech Stack

### Frontend
Expand Down Expand Up @@ -203,6 +211,8 @@ npm test

## πŸ“ API Documentation

For detailed Admin Control System API documentation, see [ADMIN_API.md](./ADMIN_API.md)

### Git API
- `POST /api/git/clone` - Clone repository
- `GET /api/git/status` - Get git status
Expand Down
Loading
Loading