CVE-2026-9862 — Fortra Core PAM (BoKS) Unauthenticated Command Injection
boks_autoregisterd autoregistration service on TCP 6507. A crafted registration request injects shell commands that run with the service's privileges on the BoKS server — the Unix/Linux access-control hub. Compromise of a PAM appliance is a keys-to-the-kingdom event. Defensive hunt & harden pack — no offensive code / no exploit.Executive Summary
CVE-2026-9862 (Fortra advisory FI-2026-007, CVSS 9.8) is an unauthenticated OS command injection (CWE-78) in Fortra Core Privileged Access Manager (BoKS) — the Unix/Linux access-control and privileged-access product formerly sold as BoKS ServerControl. The flaw lives in the autoregistration functionality exposed by the boks_autoregisterd service, which listens by default on TCP 6507. Because user-supplied input is not properly neutralized, an attacker who can reach that port can craft a registration request that injects shell commands; those commands execute with the service's privileges on the BoKS host. No authentication and no user interaction are required (AV:N/AC:L/PR:N/UI:N), with full confidentiality, integrity and availability impact.
The vulnerability was identified on 27 May 2026 and publicly disclosed on 15 June 2026. BoKS is a privileged-access manager: it brokers and enforces access across an entire Unix/Linux estate, so command execution on the BoKS server is effectively a domain-takeover-class event — an attacker can pivot to managed hosts, harvest credentials, and disable access controls. There is no published exploit code or malware family tied to this CVE yet, so detection is behavior-first: the command-injection child processes spawned by boks_autoregisterd, anomalous traffic to TCP 6507, and post-exploitation tooling run from the BoKS service context.
boks_autoregisterd spawning ANY child process (it should not under normal operation); a shell, interpreter, or download tool as its child is command injection in progress. Pair with Q3 (anomalous TCP 6507 traffic). The pre-auth request body itself is a network-only artifact (Coverage Map GAP) — patch to the FI-2026-007 fixed build and firewall-restrict 6507 immediately; if you can't patch, disable the autoregister service.
Source Review & Web Hunter Notes
| Tier | Source | Key Finding | Carry |
|---|---|---|---|
| 1 · Authoritative | NVD — CVE-2026-9862 | CVSS 9.8 (AV:N/AC:L/PR:N/UI:N/S:U/C:H/I:H/A:H); CWE-78 OS command injection; externally-influenced input lacking neutralization | yes |
| 1 · Vendor PSIRT | Fortra Security Advisory FI-2026-007 | Affected product = Core PAM (BoKS); fixed build is the remediation; vendor mitigation = restrict 6507 / disable autoregisterd | yes |
| 1 · Advisory DB | GitHub Advisory GHSA-32v6-8gq7-4gxm | Confirms component boks_autoregisterd; service-level command execution; affected/patched versions listed Unknown — confirm build in tenant | yes |
| 2 · Vendor news | CyberSecurityNews · GBHackers — Fortra Access Manager command injection | Service on TCP 6507; injection during autoregistration; mitigations: firewall 6507, comment autoregisterd in boksinit, monitor 6507; timeline 27 May → 15 Jun 2026 | yes |
Decisions: No atomic IOCs (hash/IP/domain) are published for this CVE — exploitation is opportunistic and payloads vary — so §9 ships behavioral signatures + a patch/port audit rather than fabricated indicator blocks (the CSV uses explicit REPLACE_WITH placeholders). The durable detections are the boks_autoregisterd child-process tell and TCP 6507 anomalies. Affected/patched version numbers are listed "Unknown" in the public advisory DB, so the pack directs analysts to confirm their installed build against FI-2026-007 rather than asserting a version.
Hunt Brief & Attack Chain
Working hypothesis: An attacker who can reach TCP 6507 sends a crafted autoregistration request whose fields contain shell metacharacters; boks_autoregisterd passes them to a shell, executing attacker commands as the service account. From there the attacker retrieves a payload, establishes persistence/remote access, and abuses BoKS's privileged position to reach managed Unix/Linux hosts.
| Step | Behavior | Telemetry | Hunt Angle |
|---|---|---|---|
| 1 · Recon | Discover BoKS host with TCP 6507 open | Firewall / NetFlow / NetworkListenIP4 | N1, Q3 |
| 2 · Exploit (inject) | Crafted autoregistration request → shell metachars in user input | Network body (IDS) — not on endpoint | N1 (GAP) |
| 3 · Command exec | boks_autoregisterd spawns a shell / interpreter child | ProcessRollup2 (Linux) | Q1 / Q2 |
| 4 · Payload retrieval | Child runs curl/wget, chmod +x, base64 -d → drop & run | ProcessRollup2, file write | Q4 |
| 5 · Persistence / RAT | Cron/systemd unit, SSH key add, reverse shell from service context | ProcessRollup2, NetworkConnectIP4 | Q5, N3 |
| 6 · Config tamper | Edit boksinit / BoKS config to weaken controls or persist | File write events | Q6, N2 |
| 7 · Pivot / abuse PAM | Use BoKS privilege to reach managed hosts; harvest credentials | BoKS audit + managed-host logons | N2, N3 |
Affected surface & telemetry
| Surface | Required Telemetry | Priority | Gap Risk |
|---|---|---|---|
| BoKS master/server hosts (Unix/Linux) | Falcon Linux sensor — process lineage + command line | Critical | Medium — appliance-style hosts often unsensored |
| TCP 6507 exposure | Firewall / IDS / NetworkListenIP4 + NetworkConnectIP4 | Critical | Medium — appliance network logs often unforwarded |
| Pre-auth exploit request body | Network IDS / WAF inspection of 6507 traffic | High | High — opaque to EDR (network-only) |
| Managed Unix/Linux estate | Auth logs + BoKS audit to SIEM | High | Medium — confirm collection |
Consolidated IOC Table
| Type | Value | Conf | Action | Context |
|---|---|---|---|---|
| CVE | CVE-2026-9862 · FI-2026-007 | high | detect | Patch audit — Fortra Core PAM (BoKS) |
| Service | boks_autoregisterd | high | detect | Vulnerable autoregistration daemon |
| Port | TCP 6507 | high | hunt | Default autoregister listener — restrict/monitor |
| Behavior | boks_autoregisterd → child shell / interpreter | high | detect | Command injection in progress |
| Behavior | service-context curl/wget | sh ; chmod +x ; base64 -d | high | detect | Post-exploit payload retrieval |
| Config | boksinit (autoregisterd entry) | medium | hunt | Vendor mitigation + tamper-watch target |
| Payload hash / C2 | none published — capture in triage | low | pivot | Use §9 CSV placeholders per incident |
ATT&CK Mapping
| Tactic | Technique | Observed Behavior | Query / Control |
|---|---|---|---|
| Initial Access | T1190 — Exploit Public-Facing Application | Crafted autoregistration request to TCP 6507 | N1; patch; firewall |
| Execution | T1059.004 — Unix Shell | boks_autoregisterd injects/spawns a shell | Q1, Q2 |
| Command & Control | T1105 / T1071 — Ingress Tool Transfer / Web C2 | curl/wget retrieval of payload from service context | Q4 |
| Persistence | T1053.003 / T1098.004 — Cron / SSH authorized_keys | Cron/systemd unit; attacker SSH key add | Q5, N3 |
| Command & Control | T1059.004 / T1571 — reverse shell from service | sh -c with /dev/tcp or nc back-connect | Q5 |
| Defense Evasion | T1562.001 — Impair Defenses | Edit boksinit / BoKS config to weaken access controls | Q6, N2 |
| Lateral Movement | T1021.004 / T1556 — SSH / modify auth to managed hosts | Abuse BoKS privilege to reach managed Unix/Linux | N2, N3 |
| Impact / Cred Access | T1003 / T1485 — credential harvest / destruction | Harvest brokered credentials; disable access enforcement | N2, N3 |
Native Audit-Log Hunts
| Hunt | Source | Logic | Response |
|---|---|---|---|
| N1 · TCP 6507 exposure / exploit traffic | Firewall / IDS / WAF / NetFlow | Inbound to 6507 from outside the known BoKS-client subnets; IDS sigs for shell metacharacters in autoregistration payloads | Block/restrict 6507; alert; hunt the host (Q1) |
| N2 · BoKS audit anomaly | BoKS audit log | Unexpected host autoregistrations; access-rule or config changes outside change windows; new privileged grants | Validate against change tickets; escalate to IR |
| N3 · New session/key under service account | Unix auth / syslog / /var/log/secure | New SSH key in authorized_keys; new cron/systemd unit; interactive shell under the BoKS service account | Treat as compromise; rotate; remove persistence |
| N4 · Version / patch audit | Asset inventory / package manager | Enumerate Core PAM (BoKS) hosts; compare installed build to FI-2026-007 fixed release | Schedule emergency patch; mitigate unpatched hosts |
CrowdStrike LogScale CQL Hunt Queries
SyntheticProcessRollup2. Q3/Q6 need an env edit (your BoKS-client subnets / config paths). The pre-auth request body is network-only — pair these with N1.Looks for: any process whose parent is boks_autoregisterd. Accomplishes: the highest-fidelity signal — the autoregistration daemon should not spawn children; a child = command injection. FP: low — baseline first to learn any benign helper the daemon legitimately forks, then exclude it.
// HUNT: CVE-2026-9862 command injection — boks_autoregisterd child spawn (T1190 / T1059.004) // CONF: high FP: low COST: low | REQUIRES: Falcon Linux ProcessRollup2 on BoKS hosts #event_simpleName=/ProcessRollup2|SyntheticProcessRollup2/ | ParentBaseFileName=/^boks_autoregisterd$/i | table([@timestamp, aid, ComputerName, UserName, ImageFileName, ParentBaseFileName, CommandLine], limit=200) | sort(@timestamp, order=desc)
Looks for: a child of boks_autoregisterd that is a shell, scripting interpreter, or recon utility. Accomplishes: tightens Q1 to the classic command-injection follow-ons. FP: low — none expected from a registration daemon.
// HUNT: CVE-2026-9862 injected shell/recon (T1059.004) // CONF: high FP: low COST: low #event_simpleName=/ProcessRollup2|SyntheticProcessRollup2/ | ParentBaseFileName=/^boks_autoregisterd$/i | CommandLine=/\b(sh|bash|dash|ksh|zsh|python\d?|perl|awk)\b\s+-c|\b(id|whoami|uname|hostname|cat|ls|env)\b/i | table([@timestamp, aid, ComputerName, UserName, ImageFileName, CommandLine], limit=200) | sort(@timestamp, order=desc)
Looks for: connections involving the autoregister port 6507. Accomplishes: surfaces who is reaching the exposed service. FP: medium — legitimate BoKS clients register over 6507; allow-list your known client subnets so only unexpected sources alert.
// HUNT: CVE-2026-9862 autoregister port exposure (T1190) // CONF: medium FP: medium COST: low // TUNING: exclude RemoteAddressIP4 of sanctioned BoKS-client subnets; alert on the rest #event_simpleName=/NetworkConnectIP4|NetworkListenIP4|NetworkReceiveIP4/ | (RemotePort=6507 or LocalPort=6507) | groupBy([aid, ComputerName, RemoteAddressIP4, RemotePort, LocalPort], function=[count()]) | sort(_count, order=desc)
Looks for: download-and-run / decode-and-run patterns parented by a BoKS daemon. Accomplishes: catches ingress tool transfer right after injection. FP: low when scoped to the BoKS daemon parent; verify any hit.
// HUNT: CVE-2026-9862 payload retrieval from service context (T1105) // CONF: high FP: low COST: low #event_simpleName=/ProcessRollup2|SyntheticProcessRollup2/ | ParentBaseFileName=/^boks_/i | CommandLine=/(curl|wget|fetch).{0,80}(\bsh\b|bash|\| ?sh)|chmod\s+\+?x|base64\s+-d|\/dev\/tcp\//i | table([@timestamp, aid, ComputerName, UserName, ImageFileName, ParentBaseFileName, CommandLine], limit=200) | sort(@timestamp, order=desc)
Looks for: cron/systemd edits, SSH authorized_keys writes, or back-connect shells run on the BoKS host. Accomplishes: catches the persistence/RAT stage. FP: medium — admins legitimately edit cron/keys; allow-list change-window AIDs and known admin accounts.
// HUNT: CVE-2026-9862 persistence / reverse shell on BoKS host (T1053.003 / T1098.004 / T1571) // CONF: medium FP: medium COST: low // TUNING: exclude known admin AIDs and scheduled change-window maintenance #event_simpleName=/ProcessRollup2|SyntheticProcessRollup2/ | CommandLine=/(crontab\s+-|systemctl\s+(enable|daemon-reload)|authorized_keys|nc\s+-e|ncat\s+.{0,20}-e|bash\s+-i|\/dev\/tcp\/|mkfifo.{0,30}\| ?(sh|bash))/i | table([@timestamp, aid, ComputerName, UserName, ImageFileName, ParentBaseFileName, CommandLine], limit=200) | sort(@timestamp, order=desc)
Looks for: writes to BoKS configuration (e.g. boksinit) — used both as the vendor mitigation and as an attacker tamper target. Accomplishes: watches for control-weakening edits. FP: medium — legitimate admin/patch activity edits these; correlate with change tickets and allow-list maintenance windows.
// HUNT: CVE-2026-9862 BoKS config tamper (T1562.001) // CONF: medium FP: medium COST: low // TUNING: exclude approved patch/maintenance AIDs and change windows #event_simpleName=/RawFileModified|FileWritten/ | TargetFileName=/boksinit|boks.{0,12}\.(conf|cfg)$/i | table([@timestamp, aid, ComputerName, UserName, TargetFileName], limit=200) | sort(@timestamp, order=desc)
CrowdStrike Custom IOA Recommendations
| IOA Name | Field Patterns | Benign Exclusions | Deployment Path |
|---|---|---|---|
| BoKS — autoregisterd child process | ParentBaseFileName boks_autoregisterd with ANY child image | Baseline-confirmed benign helper fork (if any), excluded by image | Custom IOA → Process Creation (Linux), critical, Detect+Block |
| BoKS — service-context download+run | Parent boks_* + CmdLine curl|wget … sh / base64 -d | None expected | Custom IOA → Process Creation (Linux), high |
| BoKS — back-connect shell | CmdLine /dev/tcp/ / nc -e / bash -i on BoKS host group | Approved admin diagnostic AIDs (rare) | Custom IOA → Process Creation (Linux), high |
Machine-Readable IOC Appendix
Grouped IOC Quick-Copy
No public payload atoms exist for this CVE — the CSV uses explicit REPLACE_WITH placeholders for per-incident indicators. The durable layer is the behavioral signature and the patch/port audit.
type,value,action,severity,expiration,description,tags sha256,REPLACE_WITH_PAYLOAD_SHA256,prevent,critical,2026-12-28,CVE-2026-9862 dropped payload (per incident),cve:CVE-2026-9862 ipv4,REPLACE_WITH_C2_OR_SCANNER_IP,detect,high,2026-09-28,CVE-2026-9862 exploit source / C2 (per incident),cve:CVE-2026-9862 domain,REPLACE_WITH_PAYLOAD_DOMAIN,detect,medium,2026-09-28,CVE-2026-9862 payload host (per incident),cve:CVE-2026-9862
Inject: boks_autoregisterd spawns ANY child process (should never happen normally) Exec: child = sh / bash / python / perl with -c ; id / whoami / uname recon Retrieve: parent boks_* runs curl|wget piped to sh ; chmod +x ; base64 -d Persist: crontab - ; systemctl enable ; write to authorized_keys ; /dev/tcp/ back-connect Tamper: writes to boksinit / boks*.conf outside a change window Network: unexpected source connecting to TCP 6507 on a BoKS host
CVE-2026-9862 # OS command injection (CWE-78), CVSS 9.8, pre-auth Advisory: FI-2026-007 # Fortra Core Privileged Access Manager (BoKS) Service: boks_autoregisterd # autoregistration daemon Port: TCP 6507 # default listener Versions: confirm installed build vs FI-2026-007 fixed release (advisory DB: Unknown) Fix: apply Fortra fixed build ; until then firewall 6507 + disable autoregisterd
# 1) Restrict TCP 6507 to known BoKS-client subnets (example: iptables) iptables -A INPUT -p tcp --dport 6507 -s <BOKS_CLIENT_CIDR> -j ACCEPT iptables -A INPUT -p tcp --dport 6507 -j DROP # 2) If you cannot patch immediately, disable autoregistration (vendor mitigation) # Comment out the autoregisterd entry in the BoKS boksinit configuration, then: boksadm -S stop ; boksadm -S start # restart BoKS to apply (validate in a maintenance window) # 3) Confirm the listener is no longer exposed ss -lntp | grep 6507 || echo "6507 not listening"
Hardening — Tiered & Deployable
This is a pre-auth RCE on a privileged-access hub — patching and choking network reach to 6507 are the decisive moves; everything else limits blast radius.
- Apply the Fortra FI-2026-007 fixed build to all Core PAM (BoKS) hosts — M1051. This is the only complete fix; treat as emergency change.
- Firewall-restrict TCP 6507 to known BoKS-client subnets; block from everywhere else — M1037. See the §9 iptables block. Removes pre-auth reachability for the exploit.
- If you can't patch now, disable
autoregisterd— M1042. Comment the autoregisterd entry inboksinitand restart BoKS (vendor mitigation; validate in a maintenance window). - Ensure the Falcon Linux sensor is installed & reporting on every BoKS host — M1040. Q1/Q2 only work if the master/server hosts are sensored.
- Segment the PAM management plane; no direct internet path to BoKS — M1030. 6507 should be reachable only from the managed estate over controlled links.
- Deploy Q1/Q2/Q4 as Custom IOAs (Detect+Block) on a BoKS host group; forward BoKS audit + 6507 netflow to SIEM — M1040 / M1047. Feeds N1/N2/N3.
- Least-privilege the BoKS service account; file-integrity-monitor
boksinitand BoKS config — M1026 / M1022. Limits what injected commands can do and catches Q6 tamper. - Rotate credentials BoKS brokers if any exposure window is suspected — M1027. A compromised PAM means assume-breach for managed secrets.
- CIS / DISA STIG Unix hardening on BoKS hosts + egress filtering — M1037 / M1030. Blocks the curl/wget payload pull (Q4) and back-connect shells (Q5).
- Inventory all PAM/privileged-infrastructure appliances and bring them under EDR + patch SLAs — M1051. Appliance-style hosts are the common blind spot this CVE exploits.
- Vendor-advisory monitoring + tabletop for "PAM compromise" — M1047. Rehearse credential mass-rotation and managed-host isolation before it's needed.
Containment Runbook
| Phase | Actions | Owner | Evidence |
|---|---|---|---|
| Isolate | Network-contain any BoKS host with Q1/Q2/Q4 hits; block TCP 6507 at the firewall; freeze the BoKS service account | SOC L2 | Containment timestamps; Q1/Q2 process tree |
| Triage | Reconstruct the boks_autoregisterd child-process tree; identify payload, persistence (cron/keys), and any config tamper (Q5/Q6); scope which managed hosts the BoKS host could reach | IR | Process timeline; recovered payload + hash |
| Eradicate | Remove payloads, cron/systemd units, rogue SSH keys; restore boksinit/config from known-good; patch to FI-2026-007 | IR | Removed-artifact log; patch confirmation |
| Recover | Rotate every credential BoKS brokers and any secret reachable from the host; rebuild the BoKS host if integrity is in doubt; verify before reconnecting | IR + IAM | Credential-rotation log; integrity checks |
| Harden | Confirm patch; firewall 6507; deploy Q1/Q2/Q4 IOAs Detect+Block; forward BoKS audit/netflow; FIM on config | Detection Eng | Patch + IOA + logging status |
Detection Coverage Map & Validation
| Technique | Behavior | CQL | IOA | Coverage |
|---|---|---|---|---|
| T1190 (request body) | Pre-auth exploit payload on 6507 | — | — | GAP network-only — IDS/WAF + patch (N1) |
| T1190 / T1059.004 | boks_autoregisterd child spawn | Q1, Q2 | IOA-1 | Good decisive, needs Linux sensor |
| T1190 (exposure) | TCP 6507 reachability | Q3 | — | Partial tune BoKS-client subnets |
| T1105 | Payload retrieval | Q4 | IOA-2 | Good |
| T1053 / T1098.004 / T1571 | Persistence / reverse shell | Q5 | IOA-3 | Partial tune admin allow-list |
| T1562.001 | BoKS config tamper | Q6 | — | Partial correlate change tickets |
| T1021.004 / T1003 | Pivot to managed hosts / cred harvest | — | — | GAP BoKS audit + managed-host logons (N2/N3) |
Validation gates: (1) confirm a Falcon Linux sensor on every BoKS master/server host and that ProcessRollup2 carries ParentBaseFileName + command line; (2) baseline any benign child boks_autoregisterd may legitimately fork, then exclude it so Q1 stays clean; (3) populate sanctioned BoKS-client subnets (Q3) and admin/change-window allow-lists (Q5/Q6) before alerting; (4) lab-test a benign equivalent (a manual curl … | sh under a non-BoKS parent) to confirm Q4 scoping; (5) promote Q1/Q2/Q4 to Custom IOA Detect+Block on the BoKS host group. The CVE/port/service facts are advisory-cited and safe to use as-is; there is no payload hash to deploy.
Hunt Summary Ticket
TITLE: Hunt — CVE-2026-9862 Fortra Core PAM (BoKS) unauth command injection
SEVERITY: Critical (CVSS 9.8; pre-auth RCE on a privileged-access hub)
SCOPE: All Fortra Core PAM (BoKS) Unix/Linux hosts; TCP 6507 exposure
HYPOTHESIS: Crafted autoregistration request to 6507 -> boks_autoregisterd injects a shell
-> payload retrieval -> persistence/reverse shell -> abuse PAM to pivot.
QUERIES RUN: Q1 autoregisterd child (IOA) | Q2 injected shell/recon (IOA) | Q3 6507 traffic* |
Q4 payload retrieval (IOA) | Q5 persistence/revshell* | Q6 config tamper*
(* = requires env edit: BoKS-client subnets / admin + change-window allow-list)
DO FIRST: Q1, Q2, Q4 -- escalate any hit; assume PAM compromise = managed-secret exposure
FINDINGS: <pending analyst execution>
GAPS: Pre-auth request body (network-only; IDS/WAF) ; pivot to managed hosts (BoKS audit)
ACTIONS: Patch FI-2026-007; firewall 6507; disable autoregisterd if unpatched;
deploy Q1/Q2/Q4 IOAs Detect+Block; rotate BoKS-brokered credentials on suspicion
OWNER: HuntPack
VERSION: v0.1 - 2026-06-28
Changelog
table() calls now carry an explicit row limit: the default is 200 and truncation is silent, so a capped result was indistinguishable from a complete one. Atomic-IOC sweeps (filters over 5+ hashes or C2 IPs) use limit=max so a wide infection is never silently under-scoped; behavioural hunts use limit=200, where exceeding the cap indicates the query needs tuning. Where present, event names that do not exist in the Falcon data model were corrected (e.g. ServiceInstalled is a Sysmon concept, not a Falcon event; ElfFileWritten is ELFFileWritten) — such queries could never return a row. No detection logic, fields, or IOCs changed.References
| Tier | Source | Used For |
|---|---|---|
| 1 | NVD — CVE-2026-9862 | CVSS 9.8 vector, CWE-78 classification, authoritative description |
| 1 | Fortra Security Advisory FI-2026-007 | Affected product, fixed build, vendor mitigation guidance |
| 1 | GitHub Advisory GHSA-32v6-8gq7-4gxm | Component confirmation (boks_autoregisterd), service-level execution, version status |
| 2 | CyberSecurityNews — Fortra Access Manager command injection · GBHackers — Fortra Access Manager flaw | TCP 6507, autoregistration mechanism, mitigations, disclosure timeline |
HuntPack v0.1 · CVE-2026-9862 (Fortra Core PAM / BoKS) · Generated 2026-06-28 · Defensive use only — no offensive code or exploit. No public payload atoms exist; the behavioral detections plus the patch/port audit are the durable signal. Confirm your installed BoKS build against FI-2026-007, and validate field names + tune BoKS-client subnet / admin allow-lists in your tenant before promoting any query to alerting.