Security fixes are issued for the current 1.x release line. The
authoritative current version lives in default/app.conf
([launcher].version) and app.manifest
(info.id.version).
| Version line | Supported |
|---|---|
| 1.0.x (current) | Yes — actively maintained |
| Pre-1.0 development builds | No — never shipped publicly |
When a 2.x release line is opened, this table will be updated to reflect the supported window for each major.
If you discover a security vulnerability in Whitelist Manager, please report it responsibly:
- Do not open a public GitHub issue for security vulnerabilities
- Open a private security advisory,
or contact the maintainer via the GitHub profile listed in
app.manifest(info.author[0]) - Include:
- Description of the vulnerability
- Steps to reproduce
- Potential impact
- Suggested fix (if any)
We will acknowledge receipt within 48 hours and aim to release a fix within 7 days for CRITICAL issues.
We follow a coordinated-disclosure model. Default timeline once a report is acknowledged:
| Phase | Target |
|---|---|
| Acknowledgement | 48 hours after report received |
| Triage + initial severity assessment | 5 days |
| Fix shipped (CRITICAL / HIGH) | 7 days |
| Fix shipped (MEDIUM) | 30 days |
| Fix shipped (LOW) | Next regular release |
| Public disclosure | 90 days from initial report, OR after a fix is shipped, whichever is sooner |
We may negotiate the public-disclosure date if a fix is in active development at day 90 — please engage with us before publishing if so. We never silently drop a report; if we decide an issue is out of scope or non-exploitable, we explain the reasoning and you are free to publish on your timeline.
In scope (please report):
- All code under
bin/(REST handler, scripted inputs includingwl_fim.pyandwl_fim_watch.py, helpers) - All code under
appserver/static/(frontend AMD modules) - Splunk configuration under
default/(RBAC, restmap, indexes, inputs, collections, savedsearches) - Recovery scripts under
scripts/(emergency_unlock.sh,reset_cooldowns.sh,fim_deploy_window.sh, etc.) - The
.splrelease artifact and the Sigstore-signed release pipeline that produces it - Any vulnerability that allows: bypassing approval gates,
bypassing rate limits or daily limits, escalating role across
the
wl_analyst_viewer→wl_analyst_editor→wl_admin→wl_superadmintiers, forging audit events, suppressing FIM alerts, modifying CSVs without a corresponding audit record, forging HMAC-signed state (cooldowns, FIM baseline, CSV expected-hash registry, lockdown sentinel, deploy-window token), bypassing Emergency Lockdown, or exfiltrating session keys
Out of scope (typically forward elsewhere):
- Vulnerabilities in Splunk Enterprise itself — report to Splunk's product security team
- Vulnerabilities in third-party packages we depend on — please file with the upstream project; we track via Dependabot
- Issues that require an attacker to already hold
wl_superadminor built-in Splunkadminrole (those tiers are total compromise by design — seedocs/SECURITY_ARCHITECTURE.mdfor the post-compromise attribution path via Splunk's_auditindex) - Denial of service via legitimate but high-volume use of approved actions (this is rate-limit configuration, not a vuln)
- Theoretical issues with no demonstrated exploit path
If you are unsure whether your finding is in scope, report it anyway — we'd rather route a misfiled report than miss a real one.
We commit to the following for security researchers acting in good faith:
- We will not pursue legal action under the CFAA, DMCA, or equivalent statutes against research that is consistent with this policy
- We will not request that hosting providers, ISPs, or law enforcement take action against you
- We will work with you to understand and resolve the issue quickly
- We will publicly credit you in the release notes for the fix (unless you prefer to remain anonymous)
This safe harbor applies to research that:
- Targets only the Whitelist Manager codebase (not Splunk core, the host OS, or third-party services)
- Avoids accessing or exfiltrating data belonging to other users
- Stops at proof-of-concept depth — does not pivot, persist, or destroy
- Reports findings via the channels above before any public disclosure
If you reasonably believe your work falls under this safe harbor, you are authorized to perform the testing.
Researchers whose reports lead to a fix are listed in the release notes for the build that contains the fix, unless they request anonymity. We do not currently offer monetary bounties.
The Whitelist Manager implements defense-in-depth across the REST handler, scripted inputs, and supporting infrastructure:
- Authentication: All REST endpoints require Splunk
authentication (
requireAuthentication = trueindefault/restmap.conf) - 4-tier RBAC:
wl_superadmin/wl_admin/wl_analyst_editor/wl_analyst_viewer(plus backward-compat aliaseswl_editor/wl_viewer) — seedefault/authorize.conf - Input validation: Path-traversal protection, strict-ASCII validation on detection rule names + CSV filenames + approval reasons, payload size limits, JSON sanitization
- Rate limiting + daily limits: Sliding-window per-user rate
limiter and per-tier daily action caps backed by the
wl_cooldownsandwl_ratelimit_stateKV collections; both HMAC-signed with a runtime-derived key - Approval gates: Configurable per-action approval workflow;
destructive actions (rule/CSV delete, bulk edits above
threshold, trash purge) require an
wl_adminto approve before execution - Emergency Lockdown: System-wide write freeze activatable by
any
wl_superadmin; deactivation requires a DIFFERENTwl_superadmin(self-unlock blocked); narrow exempt-action set documented in CLAUDE.md - File Integrity Monitoring:
wl_fim.pyruns a 15-second cryptographic scan on critical source/sentinel files;wl_fim_watch.pyis a persistent ~2-second stat-based watcher for near-real-time detection of CSV mutations. Dual-store baseline (filesystem +wl_fim_baselineKV collection) catches attackers who tamper with one store - CSV expected-hash registry: HMAC-signed registry detects
out-of-band CSV modifications (SPL
| outputlookup, direct FS writes, REST lookup edits) that bypass the handler's approval + rate-limit + audit pipeline - Audit integrity: All data modifications produce
tamper-evident events in a dedicated
wl_auditindex; recovery actions (emergency unlock, cooldown reset) are tailed from an append-only_recovery_log.jsonlso out-of-band actions can't be suppressed - Concurrency control: Cross-process file locking
(
bin/wl_filelock.py, fcntl-based) on every shared-state RMW; optimistic content-hash + mtime locking on CSV saves - Release signing:
.splartifacts are Sigstore-keyless-signed by the GitHub Actions release workflow. Operators verify viacosign verify-blobbefore install — canonical command indocs/SBOM.md
For the threat model, STRIDE analysis, DREAD scoring, RBAC matrix, data flow diagrams, security-testing checklist, and evidence of mitigated vulnerabilities, see docs/SECURITY_ARCHITECTURE.md.
Operational and recovery procedures live in docs/RUNBOOKS.md — emergency-lockdown release, cooldown counter recovery, FIM deploy windows, GUID rotation / disaster recovery.
Each major hardening pass closes with an entry here. Findings that
required a fix landed in the corresponding build (see
default/app.conf [install].build at the time of the fix
commit; git log --grep=security for the full timeline).
- Comprehensive security review (2026-03-22): Active
exploitation testing during pre-public hardening. Fixed RBAC
bypass in approval cancel path, audit log injection via
log_event, client-controllable_bulk_edit_count, and approval request ID injection. Reference commit39d37ef. - Ring 6 — TOCTOU + insider-threat hardening (2026-04-21 … 2026-04-22): KV-backed presence + rate-limit state (closed per-worker state-coherence gaps), strict-ASCII validation dual-gate (closed homoglyph + bidi + zero-width attacks at the approval boundary), defense-in-depth gate audit (closed shape-mismatch silent bypass at 3 sites). 274/274 E2E green.
- Ring 8 / 9 — closure (2026-04-29): Long-term archival
guidance for compliance regimes (PCI DSS / HIPAA / SOX / GDPR),
CI gates (Semgrep + doc-drift + quarterly pip-audit + Sigstore
keyless signing). See
docs/DECISION_LOG.mdfor the closure declaration and re-opening criteria. - Phase 1 — AppInspect compliance (2026-05-13 …): Standalone
and cloud AppInspect verification, dynamic-findings triage.
Baseline + per-finding triage in
docs/APPINSPECT_FINDINGS.md.
Future reviews append here.