CVE-2026-67279: Verified Reproduction
CVE-2026-67279: MikroTik RouterOS CVE-2026-67279 + CVE-2026-86060 unauthenticated privileged command-execution chain
CVE-2026-67279 is verified against the affected target. This high reproduction includes runnable sandbox proof, artifacts, and a plain-text agent view under REPRO-2026-00344.
What Is CVE-2026-67279?
CVE-2026-67279 is a high-severity vulnerability. Pruva has independently reproduced it and publishes a verified, runnable proof-of-concept (reproduction REPRO-2026-00344).
CVE-2026-67279 Severity
CVE-2026-67279 is rated high severity.
High — serious impact or readily exploitable. Prioritize remediation.
How to Reproduce CVE-2026-67279
pruva-verify REPRO-2026-00344 curl -O https://www.pruva.dev/api/v1/reproductions/REPRO-2026-00344/artifacts/bundle/repro/reproduction_steps.sh && chmod +x reproduction_steps.sh && ./reproduction_steps.sh Proof of Reproduction for CVE-2026-67279
- reached the target end-to-end
- full exploit chain demonstrated
- on the real production code path
- high confidence
- the upstream fix blocks the same trigger
Rejected SSH password authentication attempt for username -2, client-requested rekey, session/PTY/exec requests, and NUL-delimited fd-2 policy fields
- TCP SSH transport
- rejected -2 userauth
- client rekey
- session channel
- PTY exec
- /nova/bin/login fd-2 trusted-field parser
- RouterOS /file add
How the agent worked
Root Cause and Exploit Chain for CVE-2026-67279
CVE-2026-67279 is a pre-authentication state-machine vulnerability in the MikroTik RouterOS SSH server. On RouterOS CHR 7.23.3, a rejected authentication attempt for the dash-led username -2 leaves that username pending; a client-requested SSH rekey then incorrectly makes the SSH connection protocol reachable while the transport remains unauthenticated. The client can open a session channel, request a PTY, and submit an exec request. The pending -2 reaches RouterOS's legacy login helper, where it means “read trusted login fields from file descriptor 2”; attacker-supplied NUL-delimited name/policy fields therefore establish a privileged RouterOS command context. This run dispatched /file add and independently observed the resulting RouterOS-managed file. RouterOS CHR 7.23.4 rejected the same sequence during rekey before channel creation.
- Affected component: MikroTik RouterOS SSH server and its
/nova/bin/loginhandoff. - Affected versions: CERT Polska lists RouterOS 7.0.0 through 7.23.3, 7.24 through 7.24.1, and 6.0.0 through 6.49.20 as affected. This run tested official CHR 7.23.3 as vulnerable and official CHR 7.23.4 as fixed.
- Risk: An unauthenticated network client can cross the real TCP SSH boundary, reach connection-protocol session/exec handling, and change RouterOS-managed file state. This is a high-risk management-plane authentication/workflow failure. The observed command is RouterOS command dispatch, not an arbitrary host-OS shell.
Impact Parity
- Disclosed/claimed maximum impact: Unauthenticated RouterOS command dispatch with creation, overwrite, or reconstruction of a file in the managed file namespace (
claimed_impact_class=code_execution). - Reproduced impact from this run: One rejected
-2authentication request was followed by an unauthenticated client-requested rekey, confirmed session channel, PTY, exec request for/file add, fd-2 policy-field injection, and independent serial-console observation of the created file. Two clean CHR 7.23.3 attempts reproduced the result. - Parity: full.
- Not demonstrated: Arbitrary host-OS command execution, a native shell outside RouterOS, or use of CVE-2026-67276 was neither required nor claimed.
Root Cause
The defect is a composition of RouterOS SSH/login workflow state:
- A password authentication request for username
-2is rejected, but 7.23.3 retains the requested username in session state. - A client-requested key exchange before successful authentication incorrectly advances or re-enables connection-protocol handling.
Transport.is_authenticated()remained false in every recorded state. - The server accepts SSH message 90 (session channel open), a PTY request, and SSH message 98 (
exec) after that rekey. - The retained
-2is eventually supplied as a positional argument to/nova/bin/login. Its legacy dash-number form means “read trusted name and policy fields from descriptor 2.” In the PTY child, descriptor 2 refers to the attacker-controlled terminal. - The bytes
30 00 34323934393637323935 00 04 04represent effective name0, decimal policy4294967295, and canonical-terminal EOF framing. The policy value enables the/file addcommand submitted in the exec request.
The fixed 7.23.4 server rejects the same client-requested rekey after the rejected authentication attempt (SSHException: Negotiation failed) before a channel or exec request can be sent. RouterOS is proprietary, so no public source fix commit is available. The vendor fix is shipped in 7.23.4, 7.24.2, 6.49.21, and later releases.
Reproduction Steps
- Run
bundle/repro/reproduction_steps.shfrom any directory. SetPRUVA_ROOTonly if the bundle root cannot be inferred from the script location. - The script installs QEMU if necessary, downloads official CHR 7.23.3 and 7.23.4 images, records source URLs and SHA-256 identities, and creates fresh copy-on-write guests.
- For two vulnerable and two fixed attempts, it boots RouterOS, verifies the reported version over the serial console, confirms the real
SSH-2.0-ROSSSHTCP service, and sends an identical state sequence: initial KEX, one intentionally rejected password request for-2, client-requested rekey, session/PTY/exec, and fd-2 trusted fields. - It independently queries
/fileover the RouterOS serial console. Vulnerable attempts must reportPRUVA_MARKER_COUNT=1; fixed attempts must reportPRUVA_MARKER_COUNT=0and must never reach a session channel. - Expected final output is:
PASS: CVE-2026-67279 reproduced twice on CHR 7.23.3; CHR 7.23.4 rejected identical pre-auth SSH sequences twice.
Evidence
bundle/repro/proof-summary.log: combined immutable proof and image identities.bundle/repro/vuln-{1,2}-client.json: ordered attacker state transitions. Each recordsauthentication_rejected=true,authentication_succeeded=false,authenticated=falseat the rekey/channel/exec stages,channel_open_confirmed=true, andexec_request_accepted=true.bundle/repro/vuln-{1,2}-ssh-state.log: Paramiko transport/KEX debug logs, including initial and second key exchanges and real RouterOS SSH banner.bundle/repro/vuln-{1,2}-serial-observation.log: independent RouterOS CLI observations showing version7.23.3 (stable)andPRUVA_MARKER_COUNT=1for the unique managed files.bundle/repro/fixed-{1,2}-client.json: fixed negative controls showing the same rejected authentication request followed bySSHException: Negotiation failed, with no channel, PTY, exec, or policy block.bundle/repro/fixed-{1,2}-serial-observation.log: independent RouterOS CLI observations showing version7.23.4 (stable)andPRUVA_MARKER_COUNT=0.bundle/repro/runtime_manifest.json: hashes all proof artifacts and binds the tested official CHR identity.
Pinned official archives in the final run:
- CHR 7.23.3:
https://download.mikrotik.com/routeros/7.23.3/chr-7.23.3.img.zip, SHA-256646764fb0a53e9b5a056cb9cf7420eb1629031096c7268c99fb9216c07f8e98c. - CHR 7.23.4:
https://download.mikrotik.com/routeros/7.23.4/chr-7.23.4.img.zip, SHA-2560d32a8da0950dee71e751281c39063f2bebee4b542291aedecc9dbfbe5d60c9d.
Recommendations / Next Steps
- Upgrade to RouterOS 7.23.4, 7.24.2, 6.49.21, or a later vendor-fixed release.
- Restrict SSH management to trusted administration networks or a management VPN; do not expose TCP/22 publicly.
- Add state-machine tests asserting that a failed authentication followed by client rekey cannot enable SSH connection-protocol messages.
- Clear retained identity/session state after every failed authentication and enforce a successful authentication invariant at rekey completion, channel open, PTY, shell, subsystem, and exec handlers.
- Remove or strictly authenticate the legacy
-Ntrusted-descriptor login interface, and validate dash-led values before passing them to/nova/bin/login. - Review RouterOS logs/history for failed user
-2requests and configuration actions attributed tossh:-2@<address>.
Additional Notes
- Idempotency: The final script passed twice consecutively without edits. Each pass used two fresh vulnerable overlays and two fresh fixed overlays, for four vulnerable and four fixed observations across the required consecutive verification runs.
- Isolation: Guests use QEMU user networking with SSH bound only to localhost host-forward ports. No public system is contacted except MikroTik's official image download endpoint.
- Scope: The proof uses one deliberately rejected password authentication request; no authentication succeeds. This is necessary to seed the pending
-2identity and does not use the separate RSA authentication bypass CVE-2026-67276. - Implementation limitation: RouterOS source is proprietary, so root-cause details are established through protocol state evidence, runtime divergence, and public reverse-engineering context rather than a source commit.
CVE-2026-67279 Reproduction Transcript
The agent's step-by-step process — every tool call, every handoff, the moment the exploit fired.
Full session Replay every step — scrub the timeline or play it back.
## Summary CVE-2026-67279 is a RouterOS SSH state-confusion vulnerability in which a client-requested rekey before user authentication can incorrectly advance an affected SSH server into the connection protocol. This permits an unauthenticated client to request a session channel and dispatch a RouterOS command. Runtime validation and exact evidence are pending execution of the stage reproducer. ## Impact - **Affected component:** MikroTik RouterOS SSH server. - **Affected versions:** RouterOS CHR 7.23.3 is the designated vulnerable target; CHR 7.23.4 is the designated fixed negative control. - **Risk and consequences:** High. If reproduced, a network client that has not attempted authentication can dispatch a RouterOS command and create or modify a file in the RouterOS-managed file namespace. ## Impact Parity - **Disclosed/claimed maximum impact:** Unauthenticated RouterOS command dispatch with a managed-file state change over SSH. The ticket's canonical impact class is code execution, but it explicitly does not claim arbitrary host-OS command execution. - **Reproduced impact from this run:** Pending runtime validation. - **Parity:** none (provisional until the reproducer is e… [truncated]
Artifacts and Evidence for CVE-2026-67279
Scripts, logs, diffs, and output captured during the reproduction.
How to Fix CVE-2026-67279
FAQ: CVE-2026-67279
Is CVE-2026-67279 exploitable?
How severe is CVE-2026-67279?
How can I reproduce CVE-2026-67279?
Is the CVE-2026-67279 reproduction verified?
References for CVE-2026-67279
Authoritative sources for CVE-2026-67279 — official vulnerability databases and the upstream advisory. Pruva's reproduction verifies the issue firsthand; these are the primary records to corroborate it.