Data in transit/at rest encrypted
Why it matters
Unencrypted data at rest is accessible to anyone with storage access — a misconfigured S3 bucket, a stolen database volume, or a compromised hosting account exposes every user record without any additional decryption step. NIST 800-53 rev5 SC-28 (Protection of Information at Rest) requires encryption for sensitive data in storage; SC-8 covers transit encryption; IA-5(1) specifically requires password hashing with approved algorithms. FedRAMP rev5 SC-28 applies to all CUI and federal data stored in cloud systems. CWE-311 (Missing Encryption of Sensitive Data) covers both cases. MD5 and SHA-1 password hashing are broken — bcrypt and Argon2 remain the approved choices.
Severity rationale
Low in this audit context because verifying encryption relies partly on documentation and provider configuration rather than direct code inspection, but the underlying risk of plaintext data exposure is severe.
Remediation
Verify your database provider's encryption-at-rest setting and document it explicitly. Hash passwords with bcrypt (cost factor ≥12) or Argon2id — never SHA-1 or MD5.
// lib/auth/password.ts
import bcrypt from 'bcryptjs'
export async function hashPassword(plain: string): Promise<string> {
return bcrypt.hash(plain, 12) // cost factor 12 = ~250ms on modern hardware
}
export async function verifyPassword(plain: string, hash: string): Promise<boolean> {
return bcrypt.compare(plain, hash)
}
For Supabase: encryption at rest is enabled by default for all projects — document this in docs/security.md so auditors can confirm it. For fields requiring application-layer encryption (PII, health data), use AES-256-GCM via Node's built-in crypto module with a key stored in your secrets manager, not in source code.
DetectionPro
The detection method for this pattern is part of AuditBuffet Pro.
The full method (what to look for, pass and fail conditions, and how results get reported) ships inside the FISMA/FedRAMP Readiness Audit. The pattern definition, severity rationale, and remediation remain openly licensed under CC-BY-4.0.
External references
- nist:rev5 · SC-28 — Protection of Information at Rest
- nist:rev5 · SC-8 — Transmission Confidentiality and Integrity
- nist:rev5 · IA-5(1) — Password-Based Authentication — hashing requirement
- fedramp:rev5 · SC-28 — FedRAMP SC-28 — encryption at rest required
- cwe · CWE-311 — Missing Encryption of Sensitive Data
Taxons
History
- 2026-04-18·v1.0.0·Initial import from gov-fisma-fedramp·automated