mirror of
https://github.com/furyhawk/agent_delta.git
synced 2026-07-20 09:45:36 +00:00
2.8 KiB
2.8 KiB
Security
Reporting a vulnerability
Email: your@email.com (or open a private security advisory on the repo). Please include:
- Affected version / commit
- Steps to reproduce
- Impact assessment (data exposure / privilege escalation / DoS / …)
We aim to acknowledge within 48h and ship a fix within 7 days for high-severity issues.
Security model
Authentication
- JWT (
HS256) signed withSECRET_KEY. Access token TTL =ACCESS_TOKEN_EXPIRE_MINUTES(default 30 min). Refresh token TTL =REFRESH_TOKEN_EXPIRE_MINUTES(default 7 days). - Password hashing: bcrypt via
passlib. Plain passwords never persisted. - Stateless JWT — no DB session table. Logout is client-side (drop tokens). For server-side revocation, regenerate with
--session-management. - Admin API key — static
settings.API_KEYmatched viaX-API-Keyheader for service-to-service calls. Constant-time compared withsecrets.compare_digest().
Authorization
- Role-based via
RoleCheckerdep (UserRole.USER/UserRole.ADMIN).
Transport / network
- CORS — origin list from
settings.CORS_ORIGINS. Restrict to your domains in production. - HTTPS — enforce via reverse proxy (Nginx / Traefik / ALB). Strict-Transport-Security header set in middleware when
ENVIRONMENT=production. - CSP — frontend sets
frame-ancestors 'none'by default to prevent click-jacking. Seefrontend/next.config.tsheaders block.
Data
- Secrets — read from environment via
pydantic-settings. Never committed. See.env.example+ENV_VARS.md. - Audit log — admin-mutating actions (user updates, deletes, impersonations, role changes) recorded in
app_admin_audit_logtable with actor + IP + payload snapshot. - RAG documents — file uploads scoped per-org. No public read endpoint; all retrieval happens server-side during chat.
Hardening checklist for production
- Rotate
SECRET_KEYandAPI_KEYfrom generated defaults. - Set
DEBUG=falseandENVIRONMENT=production. - Restrict
CORS_ORIGINSto your domain(s). - Tune
RATE_LIMIT_REQUESTS/RATE_LIMIT_PERIODin.env. - Enforce HTTPS at the proxy layer.
- Run
pip-audit/bun auditin CI for dependency vulnerabilities. - Configure database backups + restore test schedule.
Known limitations
- No 2FA / MFA out of the box. Plan to add TOTP via
pyotp— seenotes/thingstofix.md§A.13. - No SAML / OIDC beyond Google OAuth. Enterprise SSO needs custom IdP integration.
- No automatic PII redaction in logs — be careful what you log.
- No server-side session revocation — JWTs valid until expiry. Compromised tokens require
SECRET_KEYrotation (invalidates ALL sessions). Enable--session-managementfor selective revocation.