| Severity | Category | Description | Location |
|---|---|---|---|
| Medium | A09 |
Hand-rolled SHA-256 (233 lines) instead of sha2 crate. Violates "no custom crypto" principle. Functionally verified via RFC 7636 vectors but not independently auditable.
Replace with sha2 = "0.10" from RustCrypto.
|
src/domain/auth_code.rs:116 |
| Medium | A06 | No explicit request body size limits via JsonConfig or PayloadConfig. actix-web defaults to 256KB but no explicit enforcement. | src/main.rs |
| Medium | A09 | cargo-audit not installed. Automated dependency vulnerability scanning absent from CI pipeline. | Cargo.toml |
| Medium | Deps | actix-cors declared as a dependency but never imported or wired. Must be activated with proper CORS config (see HIGH finding above). | Cargo.toml:9 |
| Medium | A10 | login.failed event includes raw error reason string. Internal DB errors would expose their message in the Redpanda event payload to all event consumers. | src/api/auth.rs:55 |
| Low | A03 | login.succeeded and user.created events include email addresses in plaintext in Redpanda payload. Ensure topic ACLs restrict PII access. | src/events/producer.rs:108 |
| Low | A09 | rdkafka with cmake-build links librdkafka natively. librdkafka has historical CVEs — requires cargo audit monitoring in CI. | Cargo.toml:20 |
| Low | A06 | InMemoryProducer fallback silently activates when REDPANDA_BROKERS is unset. No guard prevents accidental production use. | src/main.rs:119 |
| Low | Deps | validator crate declared but never used. Manual validation implemented instead. Dead dependency increases attack surface unnecessarily. | Cargo.toml:28 |
| Low | A10 | Internal DB errors in login.failed events could expose system state to downstream Redpanda consumers with topic read access. | src/api/auth.rs:55 |
| Crate | Version | Purpose | Status |
|---|---|---|---|
| actix-web | 4 | HTTP framework | Current major version |
| sqlx | 0.8 | Database | Current, parameterized queries |
| argon2 | 0.5 | Password hashing | RustCrypto, sound |
| jsonwebtoken | 9 | JWT validation | Current |
| rsa | 0.9 | RS256 signing | RustCrypto, current |
| rand | 0.9 | CSPRNG | Current |
| rdkafka | — | Redpanda client | Links librdkafka natively — monitor CVEs in CI |
| actix-cors | — | CORS (unused) | Declared but never wired — configure or remove |
| validator | — | Validation (unused) | Dead dependency — remove to reduce surface area |