🔥 CyberForge CVE of the Day #095
🚨 CVE-2026-112917 — Docker Desktop / WSL2 isolation bypass
Docker's fix has two parts: Docker Desktop 4.98.0+ AND WSL 3.0.3+. New Desktop with older WSL remains affected.
On Windows x86-64 WSL2 hosts, code in an unprivileged Linux container can bypass the default AF_VSOCK restriction through 32-bit socketcall, exposing host-facing capability and potentially the logged-in user's accessible files through a reachable host-side service.
⚠️ Scope applicable developer endpoints and verify both active components.
🎯 The quick hit:
What is happening? Docker reports an alternate syscall route around default container isolation on Windows x86-64 WSL2. The attacker starts with code in an unprivileged container.
Who checks? Desktop/endpoint owners: identify the actual backend, Desktop product version, WSL application and active kernel. LinuxKit-based backends are unaffected by this CVE.
Why care? Host-facing services and the logged-in user's accessible files may be exposed; file access needs the reachable host-side AF_VSOCK service. No universal Administrator/SYSTEM access is established.
Start with: owner and scope → preserve useful history → restrict suspect workloads as warranted → update both components.
Follow the evidence: exact container and endpoint → user/UTC context → host-side service → independently corroborated result.
Escalate: unapproved host operations linked to an applicable endpoint and suspect workload. Exposure alone does not prove compromise.
Watch the gaps: transport/file-read visibility, normal developer sharing, and an update record naming only one component.
🔑 Key details:
⭐ Severity: Docker CNA Critical.
📊 CVSS: v4.0 Base 9.2, assessed by Docker.
🧮 Vector: `CVSS:4.0/AV:L/AC:L/AT:N/PR:L/UI:N/VC:H/VI:H/VA:N/SC:H/SI:H/SA:N`
🧠 Weakness: CWE-424 — Improper Protection of Alternate Path.
🎯 Product / component: Docker Desktop for Windows, WSL2 backend, x86-64 host; stock WSL kernels have 32-bit syscall compatibility enabled according to the CNA.
🧩 Boundary: unprivileged container code → default seccomp AF_VSOCK restriction → host-facing capability.
🔓 Starting access: code running in an unprivileged Linux container; published AV:L / PR:L. No privileged-container or mounted-Docker-socket prerequisite is stated for this issue.
👆 User interaction: None in the published vector. That does not explain how malicious code first reached the container.
⚔️ Capability: host-facing services and user-accessible Windows files may be exposed. Host-file access requires a reachable host-side AF_VSOCK service. No particular service or port is named.
🛡️ Full correction: Desktop 4.98.0+ AND WSL 3.0.3+. The CNA identifies WSL kernel 6.18.54.1; reconcile the supported active kernel, especially if a custom kernel is configured.
🚨 Activity: CISA ADP's SSVC assessment, dated 3 November, records exploitation none, automatable no, technical impact total. This is an attributed assessment, not proof of universal absence.
🧪 Public PoC: not verified in the reviewed primary references and exact-ID discovery. The review was not an exhaustive exploit-repository survey; no exploit was executed.
📋 KEV: no exact match in captured CISA catalog 2026.11.03, released 2026-11-03T20:00:24.8741Z, containing 1,767 entries.
📉 FIRST EPSS: exact query returned HTTP 200 with `total: 0`, `data: []`. Probability, percentile and score date are unavailable, not zero.
🏷️ Credits: Oryam Halachmi and Tevel Halachmi of Deune, credited by Docker's CNA.
NVD was Received. Its v4.0 score is sourced to `security@docker.com` with role Secondary, not independently scored by NIST. NVD expands undefined optional metrics with `X`; the base assessment remains Docker's. No v3.x score was supplied in the captured CNA/NVD metrics.
🧬 What actually went wrong?
Seccomp restricts Linux system calls and selected arguments. Docker's guidance explains that filtering `socket` arguments does not cover `socketcall`; the CVE supplies the Windows WSL2 scope and impact.
The defensive sequence:
1. Code already runs in an unprivileged container on an applicable endpoint.
2. The compatible 32-bit interface bypasses the default AF_VSOCK restriction.
3. Host-facing capability becomes reachable as described by Docker.
4. Windows file exposure additionally needs a reachable host-side AF_VSOCK service and is bounded by the logged-in user's access.
AF_VSOCK is host/guest communication, not ordinary TCP/UDP exposure. Confirm a control or sensor actually covers the transport before relying on it.
Evidence boundary: vendor-reported mechanism, corroborated at release level. No exact security diff or exploit reproduction was validated here. No Windows administrative execution, actor, victim, persistence or exfiltration is established.
📦 Which deployments belong in scope?
🔴 Windows x86-64 WSL2 Desktop below 4.98.0: affected scope; new WSL alone does not meet the remedy.
🔴 Desktop 4.98.0+ with WSL below 3.0.3: explicitly remains affected.
🟢 Published correction: Desktop 4.98.0+ together with WSL 3.0.3+ and supported active kernel state. This is a criterion, not a finding on an examined machine.
Exception: LinuxKit-based backends are unaffected. Confirm the real backend; a generic Hyper-V/VMM/ECI label is not case-specific acceptance. Other platforms are outside this report's published scope or unassessed, without a broad safety verdict.
Data caveat: the CNA's structured Desktop row starts its unaffected range at 4.98.0; prose/configuration imposes the WSL condition. Keep both; a Desktop-only rule can miss the affected older-WSL pair.
Inventory: Desktop product, Engine, CLI plugin, WSL application, WSL generation and kernel versions are distinct. Image updates do not update the host pair. Remote contexts can describe another machine. Custom kernels require active-build/fix evidence.
🕰️ Exposure window and timeline:
6th October 2026: Microsoft kernel 6.18.54.1 release published at 22:28:50Z.
9th October: WSL 3.0.3 published at 18:21:40Z with that kernel dependency.
19th October: CVE reserved; not a discovery date.
3rd November: Docker 4.98.0 security release; CVE published at 19:08:11.422Z.
4th November: record/ADP and NVD updates captured before cutoff.
These dates do not establish first exploitation or local installation. Bound a hunt from evidenced affected state and suspect workload activity to verified correction/containment, extending for justified consequences. Record uncertain earlier history, retention, clocks and container replacements.
🗺️ MITRE ATT&CK:
Conditional CyberForge assessment: Privilege Escalation / TA0004 → T1611 Escape to Host is useful for the vendor-reported movement from a container isolation boundary to host-facing capability.
Basis: Docker's CVE supplies the behaviour and prerequisites; MITRE supplies the technique definition. This is not an observed intrusion mapping. The tactic name does not establish Windows Administrator/SYSTEM access.
Defender pivot: relate exact container and endpoint state to a corroborated unauthorised host operation. Establish which guest/transport and host-result sources actually cover the interval, then record alternatives and missing visibility.
Reference: Enterprise ATT&CK v20; T1611 version 1.6, last modified 24 October 2025; checked 4 November 2026.
Mapping limit: no initial-access route, actor, credential theft, persistence, lateral movement or exfiltration technique is inferred. One justified mapping is more useful than an invented chain.
🧭 SOC investigation trail:
Objective: determine whether a suspect container on an applicable endpoint reached a host-side service or caused an unauthorised host-file operation. These are proposed checks, not findings.
Scope: approved endpoints/workloads and a justified UTC interval. Confirm permissions, historical source health and clocks. Preserve stable device/container identities and process-creation context; names and PIDs can be reused.
C01 — Applicability and reachability
Action / location: endpoint owner collects Desktop product version, actual backend, architecture, WSL package/kernel and change history. Workload owner identifies daemon/context and container; identify the actual host-side service for a file-access question.
Signal / correlate: device, time, both components, active kernel and service scope agree.
Benign causes / limits: stale inventory, inactive updates, remote contexts and custom kernels can mislead.
Escalate: unmet joint correction to change owner; suspect workload plus host-result evidence to SOC/IR. No local assessment here.
C02 — Starting workload and access context
Action / location: preserve existing lifecycle/provenance, build/run and relevant runtime/service records through approved exports.
Signal / correlate: unexplained workload execution near an unapproved host operation; join exact instance, daemon, endpoint, user and UTC context. Preserve actual image identity, not only a mutable tag.
Benign causes / limits: normal builds/helpers/integration; Docker events returns only the last 256 events and not every syscall.
Escalate: suspicious workload with corroborated host activity warrants triage. No container was queried or entered here.
C03 — Host-side outcome
Action / location: service/data owner examines operation, target, user permissions and actual result; seek independent file/application evidence.
Signal / correlate: applicable endpoint/workload → service operation → unapproved outcome, with record IDs and authorisation context.
Benign causes / limits: approved sharing, sync, builds and Windows-native processes; Sysmon Event 11 covers create/overwrite, not all reads. CNA names no universal service/schema.
Escalate: corroborated outcome to IR; ambiguity to follow-up; missing history to a visibility gap. A changed file alone does not identify this CVE.
C04 — State transitions
Action / location: compare Desktop/WSL updates, backend/kernel and service/access changes with authorised change history.
Signal / correlate: endpoint state transition and suspect interval; distinguish original event from inventory refresh.
Benign causes / limits: planned maintenance and developer experiments. This CVE bypasses a default restriction; disabling seccomp is not a stated prerequisite.
Escalate: resolve contradictions with platform owner; corroborated unapproved changes to SOC. No settings changed here.
C05 — Conditional follow-on
Action / location: only if service/file evidence justifies it, scope a specific credential, source artifact or resource with its owner and existing audit records.
Signal / correlate: independently recorded unapproved use/change linked to the earlier event.
Benign causes / limits: ordinary account use and automation; no credential theft, destination or supply-chain compromise attributed in the primary material. Keep secrets private.
Escalate: widen on supported consequences or a recorded incident decision. Plan only.
C06 — Both corrections active
Action / location: change owner records active Desktop ≥4.98.0, WSL ≥3.0.3, supported kernel/backend and benign workload health for every in-scope endpoint.
Signal / correlate: trusted product inventory, runtime and change/restart record agree; review custom kernels separately.
Limits: partial rollout, stale VM or rollback can leave exposure; correction does not answer historical data/credential questions.
Escalate: unmet acceptance to change owner, continuing anomalies to IR, missing history to an owned gap. No update installed/tested here.
The analyst handover:
Record asset/owner → UTC window → source/record IDs → observation → alternatives/gaps → next action/owner. Separate applicability, exposure, suspicion, corroborated outcome and insufficient telemetry. A no-match needs examined sources, predicates, caps and retention; it cannot clear an unobserved transport or file-read path.
🔎 Indicators and observable behaviour:
No confirmed CVE-specific malicious address, domain, hash, filename, port or universal log signature was supplied in the reviewed primary references. Do not invent indicators to populate a hunt.
Useful behavioural leads are an applicable component/backend state, suspect container execution, an unexplained host-service operation and a corroborated unapproved file result. Each needs provenance and normal-workflow review.
Microsoft documents Sysmon Event 3 as TCP/UDP connection telemetry, disabled by default, and Event 11 as file creation/overwrite. Sensor presence alone does not establish relevant transport coverage, all file reads or historical retention.
🧰 Optional CVE checks:
These are documentation checked only; not run on Windows, Docker or WSL. No PowerShell parser or detector test is claimed. Keep raw results private with endpoint, UTC, execution identity, tool/version, exit status and errors.
Check A — Identify the WSL side of the remedy
On one approved Windows endpoint, run locally in PowerShell or Command Prompt:
```powershell
wsl --version
wsl --status
wsl --list --verbose
```
Interpret: version reports WSL/component information; status gives configuration/kernel context; list shows distribution state and WSL 1/2 generation. Compare the WSL application against 3.0.3, reconcile the supported active kernel, and separately verify Desktop product 4.98.0+ through About/trusted product inventory.
Limit: an unsupported option, error or missing field is a collection gap. “VERSION 2” is not “WSL 3.0.3.” Installed metadata does not prove active correction or an incident outcome. https://learn.microsoft.com/en-us/windows/wsl/basic-commands
Check B — Inspect one approved context
Purpose: avoid treating a remote daemon as the Windows endpoint. With an approved existing Docker CLI in PowerShell:
```powershell
$cfApprovedContext = Read-Host 'Enter one approved Docker context name'
if ([string]::IsNullOrWhiteSpace($cfApprovedContext)) {
throw 'An approved context name is required.'
}
docker context inspect "$cfApprovedContext"
```
Interpret / correlate: review the named context and endpoint configuration before any separate container inspection. Retain the chosen context with subsequent queries; a familiar name alone is insufficient. Output can contain private paths/endpoints.
Limit: unknown context and CLI errors remain failures. Context metadata is not a Desktop product version, active backend or proof of exploitability. No daemon/container was changed or queried here. https://docs.docker.com/reference/cli/docker/context/inspect/
Shortcut excluded: `docker desktop version` is documented as the Desktop CLI plugin version. It cannot establish the installed Desktop 4.98.0 product. https://docs.docker.com/reference/cli/docker/desktop/version/
🩹 Remediation and verification:
1⃣ — Establish scope and control exposure. Confirm the actual endpoint/backend and both component states. Restrict suspect/untrusted workloads through the responsible owner where warranted; this is opportunity reduction, not a substitute fix.
2⃣ — Preserve relevant history where feasible. Retain useful lifecycle, service, host-result and change records before restart/rotation. Do not delay urgent containment for an ideal collection set. Product diagnostics may contain sensitive data; no support upload is implied.
3⃣ — Complete the joint correction. Use supported vendor channels for Docker Desktop 4.98.0+ AND WSL 3.0.3+. The CNA references WSL kernel 6.18.54.1. Do not call either update alone the full fix.
4⃣ — Verify active state and health. Reconcile trusted Desktop product identity, WSL package, active supported kernel/backend, any required owner-managed restart and benign workload checks. Microsoft notes that WSL shutdown terminates all distributions and the utility VM, so plan changes deliberately.
5⃣ — Resolve consequences separately. If evidence supports relevant file, credential or artifact exposure, scope response with the data/identity/incident owner. An update does not undo an earlier unauthorised action.
Temporary-control limit: CNA says LinuxKit-based backends are unaffected; any proposed alternative-backend route needs support, actual backend and workload/data validation. No generic firewall, ECI or custom seccomp policy is certified here as an equivalent remedy. Keep seccomp restrictions enabled.
Completion: both corrected components active, scope reconciled, workload health acceptable, exceptions owned, and a bounded historical incident/visibility disposition recorded.
🧾 Evidence separation:
Vendor / official: Docker CNA scope, capability, score, joint fix and credits; Docker/Microsoft release evidence; dated CISA/FIRST responses.
Researcher / incident: CNA finder credits retained; no separate primary victim/campaign report or working PoC verified in this bounded review.
CyberForge: priority, proposed SOC checks, conditional T1611 mapping and acceptance questions.
Not established: local exposure, host service reach, malicious outcome, installed correction, detector effectiveness or incident recovery. Artifact validation cannot supply those findings.
🔥 CyberForge verdict:
CVE-2026-112917 matters because an alternate interface can undermine an intended container boundary on a specific developer-host configuration.
Priority: scope applicable Windows x86-64 WSL2 endpoints and complete the supported joint update, prioritising suspect/untrusted workloads and sensitive user context. Keep public severity, attributed activity and local evidence distinct.
Defender order: identify both active components → preserve and correlate useful history → correct both → verify running state → resolve any host-side consequence.
The decision that matters: a product update and a dependency update must agree on the same endpoint; an incident conclusion needs independent evidence of what happened.
> Close the alternate path, verify both components, and let host-side evidence decide the incident.
🔗 Sources and further reading:
Docker correction: https://docs.docker.com/desktop/release-notes/#4980
Microsoft WSL release: https://github.com/microsoft/WSL/releases/tag/3.0.3
Kernel dependency: https://github.com/microsoft/WSL2-Linux-Kernel/releases/tag/linux-msft-wsl-6.18.54.1
Docker CNA record: https://cveawg.mitre.org/api/cve/CVE-2026-112917
NVD: https://nvd.nist.gov/vuln/detail/CVE-2026-112917
MITRE T1611: https://attack.mitre.org/techniques/T1611/
KEV feed: https://www.cisa.gov/sites/default/files/feeds/known_exploited_vulnerabilities.json
FIRST exact query: https://api.first.org/data/v1/epss?cve=CVE-2026-112917
Docker event-history limit: https://docs.docker.com/reference/cli/docker/system/events/
#CyberSecurity #CVE #BlueTeam #ThreatHunting #SOC #CyberForge #Docker #WSL2