Assess security logging and monitoring gaps including missing audit trails, log injection surfaces, sensitive data in logs, and alerting coverage.
Scanned 9/2/2026
Install to Claude Code
npx -y skills add Eliyce/paqad-ai --skill logging-monitoring-review --agent claude-codeInstalls into .claude/skills of the current project.
Are you the author of Logging Monitoring Review?
Add the live security badge to your README — it updates automatically with every re-scan.
[](https://www.skillsdirectory.com/skills/eliyce-logging-monitoring-review)More formats (shields.io, HTML) on the badges page.
---
name: logging-monitoring-review
description: Assess security logging and monitoring gaps including missing audit trails, log injection surfaces, sensitive data in logs, and alerting coverage.
model_tier: reasoning
triggers:
- workflow:
- pentest
cacheable: false
cache_key_inputs:
- docs/modules/**
- tests/**
output_format: markdown
input_schema:
module_doc_paths:
type: path[]
required: true
description: Module docs describing sensitive operations, financial actions, and authentication flows.
test_paths:
type: path[]
required: false
description: Tests that may prove audit logging or log integrity.
---
## What It Does
Reviews whether the application logs security-relevant events with sufficient context for incident detection and forensic analysis — and whether the logging itself is secure (no sensitive data in logs, no log injection surfaces). Maps to OWASP 2025 A09 — Security Logging and Alerting Failures.
## Use This When
Use this when module docs describe authentication, authorization decisions, financial transactions, data exports, admin operations, or any high-value action that must be auditable for compliance or incident response.
## Inputs
- Read module docs to identify which operations are high-value and must be audited.
- Read `references/logging-gaps-checklist.md` before evaluating each area.
- Read logging configuration files (Laravel `config/logging.php`, Django `LOGGING` dict, Express winston/pino config) and test files.
## Procedure
1. **Authentication event logging**: Check whether failed and successful login attempts are logged with IP address, timestamp, and username (not password). Check that password changes, MFA enrollment/removal, and session invalidations are also logged.
2. **Authorization event logging**: Check whether access denials (403 responses) are logged with the requested resource and caller identity. Check that privilege escalation attempts are detected and logged.
3. **Data modification logging**: For each create/update/delete operation on sensitive models (users, payments, permissions, audit records themselves), verify an audit log entry is written with actor identity. Financial transaction audit trails must be append-only and tamper-resistant.
4. **Log integrity**: Check whether logs can be tampered with by an application-level user (e.g., a normal user can delete their own activity logs). Check whether logs are stored on a separate system from the application server.
5. **Log injection**: Check whether user-supplied input is written directly into log strings without sanitization. An attacker controlling a username or message field can:
- Insert fake log entries by embedding newlines (`\n`) in the input
- Inject ANSI escape codes to corrupt terminal-based log viewers
- Corrupt structured JSON log format by embedding `}` or `"` characters
6. **Sensitive data in logs**: Check log statements around authentication, payment, and data export endpoints. Look for: passwords, authentication tokens, credit card numbers, full PII (SSN, passport numbers), session IDs.
7. **Alerting coverage**: Check whether there is alerting configured for: repeated authentication failures from a single IP, admin operations outside business hours, unusual data export volumes, or security-relevant configuration changes.
## Output Contract
- Match `assets/output.template.md`: severity, WSTG id (`WSTG-ERRH-02` default), area from `assets/event-checklist.txt`, Evidence: `file:line` only (never log content), Required action.
- Output must pass `scripts/lint-findings.sh` (exit 0).
## Escalate / Stop Conditions
- Ask when logging configuration is not accessible in the project — cannot evaluate log destinations or levels.
- Warn when financial transaction records lack an append-only audit trail — this is typically a compliance requirement, not just a security best practice.
- Do not flag logging gaps for non-sensitive operations (e.g., a missing log for a public read endpoint is not a security finding).
## Resources
- `references/logging-gaps-checklist.md`
- `scripts/scan-log-smells.sh` — pre-investigation grep for sensitive data and injection candidates
- `scripts/lint-findings.sh` — enforces WSTG id + Evidence:file:line per finding
- `assets/output.template.md`
- `assets/event-checklist.txt` — the 7-area walk required before drafting
Is this your skill, or is something wrong with this listing? Request removal or report an issue. Author removals are honored within 72 hours.
No comments yet. Be the first to comment!