Audit trail includes all user actions: login, transfer, withdrawal, adjustment, cancellation
Why it matters
A transaction log that records transfers but silently omits login events, fee adjustments, and account cancellations is not a complete audit trail — it is a partial record that creates blind spots regulators will find. NIST 800-53 AU-2 requires organizations to determine which event types are auditable and to coordinate the audit function with other entities requiring audit-related information; login/logout events are explicitly called out. PCI-DSS 4.0 Req-10.2.1 enumerates specific event types that must be logged: all individual user access to cardholder data, all actions taken by any individual with root or administrative privileges, and all invalid logical access attempts. FINRA Rule 4511 requires complete books and records. CWE-778 (Insufficient Logging) is the vulnerability. An attacker who escalates privileges via a path that does not trigger a log event leaves no forensic evidence of the intrusion.
Severity rationale
Medium because partial action coverage creates audit gaps that satisfy automated checks while concealing specific attack paths — particularly privilege escalation routes — from forensic investigation.
Remediation
Instrument every significant user action through a centralized logger in src/services/audit-logger.ts to ensure consistent coverage:
const AUDITABLE_OPERATIONS = [
'login', 'logout', 'transfer', 'withdrawal', 'deposit',
'adjustment', 'cancellation', 'reversal', 'fee_change'
] as const;
export async function logAction(
userId: string,
operation: typeof AUDITABLE_OPERATIONS[number],
details: Record<string, unknown>
) {
await db('transaction_logs').insert({
user_id: userId,
operation_type: operation,
details: JSON.stringify(details),
timestamp: new Date().toISOString()
});
}
Call logAction in each route — for login events, call it after successful credential verification, not only on successful session creation, so failed login attempts are also captured.
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 Financial Audit Trail Audit. The pattern definition, severity rationale, and remediation remain openly licensed under CC-BY-4.0.
External references
- cwe · CWE-778 — Insufficient Logging
- nist:rev5 · AU-2 — Event Logging — identify events to be logged
- pci-dss:4.0 · Req 10.2.1 — Implement audit logs to capture all individual user access and actions on cardholder data
- external · FINRA-Rule-4511 — FINRA Rule 4511 — General Requirements for Books and Records
Taxons
History
- 2026-04-18·v1.0.0·Initial import from finserv-audit-trail·automated