Engineer working on a laptop connected to a device test rig, surrounded by wiring harnesses and test hardware

Firmware vulnerabilities & fixes

Dropbear SSH vulnerabilities in embedded firmware: identify, prioritise and fix

Last updated:

The Dropbear CVEs that matter in embedded firmware are the ones your build compiles in and exposes: the Terrapin protocol flaw (CVE-2023-48795) on images from 2020.79 to before 2024.84 that offer chacha20-poly1305, the unix-socket forwarding root escalation CVE-2025-14282 in 2024.84 to 2025.88, and old server memory bugs such as CVE-2016-7406 and CVE-2017-9078 on long-unpatched devices. Find the version from the SSH banner or binary strings, check the compile-time options, then upgrade, remove weak algorithms and restrict where the SSH port listens.

Key takeaways

  • Two properties shape how its CVEs behave in firmware.
  • The project's CHANGES file is the primary record: each release lists its security fixes, usually with the CVE ID.
  • For Dropbear the scope is narrower than for OpenSSH.
  • Start with the version, then the options.

Why is Dropbear in so many firmware images?

Dropbear is a small SSH server and client (dropbear, dbclient, dropbearkey, dropbearconvert and scp) that is often built as a single dropbearmulti binary, which makes it a common choice for routers, gateways, cameras and industrial controllers where OpenSSH is too large. It ships with build systems such as Buildroot and Yocto, which our embedded Linux build systems and SBOM guide covers, and it usually sits next to BusyBox in the same root filesystem (see BusyBox vulnerabilities in embedded Linux firmware for that half of the image).

Two properties shape how its CVEs behave in firmware. First, almost every feature is a compile-time switch. Dropbear's own default_options.h says it "documents compile-time options, and provides default values", and that local customisation goes into localoptions.h, so two devices running the same Dropbear version can have different ciphers, key exchange methods and forwarding features. Second, device makers often pin one Dropbear version for years, so a fleet in the field can carry CVEs that were fixed upstream long ago.

Which Dropbear CVEs matter most?

The project's CHANGES file is the primary record: each release lists its security fixes, usually with the CVE ID. The table below pulls the ones most likely to show up in a firmware scan. Scores are NVD's unless marked; EPSS values are from FIRST's 2026-11-09 dataset, and none of these CVEs was in CISA's KEV catalog as of its 2026.11.09 release.

CVE What it is Fixed upstream Score / EPSS Reachable when
CVE-2016-7406 Format string injection in server message printing (username, host argument) 2016.74 NVD 9.8 / 0.102 Any network access to the SSH port, before login
CVE-2017-9078 Double free in server TCP listener cleanup, possible post-auth root code execution 2017.75 NVD 8.8 / 0.055 An authenticated user with TCP forwarding enabled
CVE-2018-15599 Username enumeration through authentication failure handling 2019.77 NVD 5.3 / 0.027 Any network access to the SSH port
CVE-2021-36369 Client accepts "trivial" authentication with no prompt 2022.82 (-o DisableTrivialAuth) NVD 7.5 / 0.019 Only when the device uses dbclient to connect out
CVE-2023-48795 Terrapin prefix truncation of the SSH handshake 2024.84 (Strict KEX) NVD 5.9 / 0.935 chacha20-poly1305 negotiated and an active man-in-the-middle
CVE-2025-47203 dbclient multihop hostname passed to the shell 2025.88 CNA (MITRE) 4.5 / 0.006 Only when dbclient gets untrusted hostname arguments
CVE-2025-14282 Unix stream forwarding done as root, bypassing SO_PEERCRED checks 2025.89 CNA 5.4 / 0.004 2024.84 to 2025.88, multi-user logins, stream forwarding built in

The CHANGES file also lists 2026 server fixes that may not have a CVE ID: 2026.90 closes a bypass of an authorized_keys forced command when Dropbear runs with -t, and 2026.93 fixes a use-after-free in X11 forwarding, which is off by default (DROPBEAR_X11FWD 0). The latest release on 2026-11-10 is 2026.94 (23 July 2026).

What does Terrapin (CVE-2023-48795) actually mean for Dropbear?

The Terrapin paper site describes it as a prefix truncation attack: "by carefully adjusting the sequence numbers during the handshake, an attacker can remove an arbitrary amount of messages sent by the client or server at the beginning of the secure channel without the client or server noticing it." It needs an attacker who can intercept and modify traffic on the network path, and a connection secured with ChaCha20-Poly1305 or a CBC cipher with Encrypt-then-MAC.

For Dropbear the scope is narrower than for OpenSSH. Dropbear's 2024.84 release notes say "chacha20-poly1305 is the only affected cipher," and that the flaw "does not seem to reduce Dropbear's security," because the only packet affected would be the server-sig-algs extension, used for compatibility. The Debian security tracker entry marks Debian's older buster package not affected because ChaCha20-Poly1305 support only arrived in 2020.79, and lists the backported fixes as 2020.81-3+deb11u1 (bullseye) and 2022.83-1+deb12u1 (bookworm).

The 0.935 EPSS score looks alarming, but the CVE record covers OpenSSH and dozens of other SSH implementations, so the score is not specific to Dropbear. Use the Dropbear-specific facts above to rank it, which usually places Terrapin below an unpatched memory-safety bug on the same device.

How do you identify the Dropbear version and build options in a firmware image?

Start with the version, then the options.

  1. SSH bannerDropbear's sysoptions.h builds the identification string as "SSH-2.0-dropbear" IDENT_VERSION_PART, where the default IDENT_VERSION_PART is "_" DROPBEAR_VERSION. A device that answers SSH-2.0-dropbear_2022.83 is running a 2022.83 base.
  2. Binary stringsIn the unpacked root filesystem, run strings on /usr/sbin/dropbear or dropbearmulti and search for dropbear_20. On a device you control, Dropbear's server help lists -V to print the version.
  3. Package metadataOpenWrt-based images record the dropbear package version in the opkg database, and Buildroot or Yocto build trees record it in the package recipe or manifest.
  4. Compile-time optionsLook for the build's localoptions.h or distrooptions.h in the vendor's source release or build tree, if you have it. Without the source, algorithm names compiled into the binary ([email protected], diffie-hellman-group1-sha1, ssh-dss, hmac-sha1) show what it can negotiate. From 2026.91 on, dropbear -Q prints the supported algorithms directly.

Treat the version as the upstream base only. A vendor can override IDENT_VERSION_PART to hide it, and Debian shipped the CVE-2025-47203 fix as 2022.83-1+deb12u3 per its tracker entry, so a "2022.83" banner can still be patched. Backport evidence is what turns a version match into a documented "fixed" or "affected" decision.

How should you prioritise Dropbear CVEs?

Order the matches by what is compiled in and reachable, then by public exploitation data. Our KEV and EPSS prioritisation guide covers how those scores work.

  • First: pre-authentication memory bugs on old versions (CVE-2016-7406 before 2016.74) and post-authentication root code execution (CVE-2017-9078 before 2017.75) where the SSH port is reachable from a network you do not control.
  • Next: CVE-2025-14282 on 2024.84 to 2025.88 if more than one account can log in. The 2025.89 notes say it allowed "root privilege escalation" through programs that authenticate unix sockets by peer credentials.
  • Then: Terrapin, if chacha20-poly1305 is built in and the SSH service is exposed beyond a trusted management network.
  • Context-dependent: client-side CVEs (CVE-2021-36369, CVE-2025-47203) only matter if the device itself runs dbclient, for example in a tunnel or backup script.

Exposure changes the order more than scores do. A Dropbear server bound to a management VLAN only, with password logins off, sits in a very different place from one listening on the WAN interface with a factory default password; our hard-coded credentials guide covers that second failure.

How do you fix Dropbear vulnerabilities in firmware?

  1. UpgradeMove to a current release from the Dropbear CHANGES file, check its >> compatibility notes (for example, 2024.84 changed how /etc/shadow is used), rebuild and re-scan. If you cannot move, backport the fix commits the CHANGES file links for each security entry.
  2. Disable weak or affected algorithms in `localoptions.h`Upstream defaults already turn off DROPBEAR_3DES, DROPBEAR_ENABLE_CBC_MODE, DROPBEAR_SHA1_HMAC, DROPBEAR_SHA1_96_HMAC, DROPBEAR_DSS and DROPBEAR_DH_GROUP1; check that your build has not turned them back on. For Terrapin on an unpatched build, the Terrapin FAQ's workaround is to disable chacha20-poly1305 and use AES-GCM instead, which for Dropbear means DROPBEAR_CHACHA20POLY1305 0 and DROPBEAR_ENABLE_GCM_MODE 1. Test interoperability with the tools your field engineers use first, because the Terrapin FAQ warns you can lose access if a client lacks the remaining algorithms. Our weak cryptography in embedded firmware guide covers algorithm choice in more depth.
  3. Turn off features you do not useRun the server with -j and -k to disable local and remote forwarding (the 2025.89 notes name -j as a CVE-2025-14282 mitigation), or build with DROPBEAR_SVR_LOCALSTREAMFWD 0 and the other forwarding options at 0. Keep DROPBEAR_X11FWD at its default of 0.
  4. Restrict exposure and loginsBind to a management interface or address with -p [address:]port, disable password logins with -s (or for root with -g), disallow root logins with -w, and generate unique host keys per device on first boot instead of shipping one key in the image. Secure boot and a locked bootloader keep those settings from being edited offline; see U-Boot bootloader security.

AI-assisted analysis: what SoftWSP actually runs

SoftWSP's automated scan unpacks a firmware image, identifies Dropbear and the other software components in the file system together with their versions (the same component inventory our firmware SBOM guide describes), and matches each version against CVE records, CISA's KEV catalog and FIRST's EPSS scores. That matching is deterministic: code produces the component, version and CVE list, and the scores come from NVD, KEV and EPSS.

AI's part is the written explanation on top of that matching. It summarises which Dropbear CVEs matched, which are KEV-listed or have a high EPSS score, and what the version evidence was, and every sentence cites the component, version and record it relies on. An engineer reviews every finding before the report is delivered. The judgements this guide describes as manual stay with that engineer: which algorithms and forwarding features the build compiled in, whether the SSH port is reachable, and whether a vendor backport already closes a version-matched CVE. A Debian-style 2022.83 package with backports still matches CVE-2025-47203 on version alone, and the review step is where that becomes a documented "fixed" decision instead of a guess.

For where SSH service review fits in a full assessment, see the OWASP Firmware Security Testing Methodology guide, or device & firmware security services to have a specific image reviewed.

This guide draws on Dropbear's CHANGES file, default_options.h, sysoptions.h and server option help, the Terrapin paper site, the Debian Security Tracker, NVD, CISA's KEV catalog (version 2026.11.09) and FIRST EPSS data dated 2026-11-09, all read directly on 2026-11-10.

Put this guide to work

Frequently asked questions

Is Dropbear affected by the Terrapin attack (CVE-2023-48795)?

Yes, when a connection negotiates chacha20-poly1305. Dropbear's 2024.84 change log (4 April 2024) says "chacha20-poly1305 is the only affected cipher" for Dropbear and adds the "Strict KEX" countermeasure, which only takes effect when both client and server support it. Debian's security tracker notes that ChaCha20-Poly1305 support arrived in Dropbear 2020.79, so older builds are not affected by Terrapin itself, though they carry other CVEs. The Terrapin researchers state that the attack needs an active man-in-the-middle on the network path. NVD scores CVE-2023-48795 at CVSS 3.1 5.9, and it was not in CISA's KEV catalog as of the 2026-11-09 release.

How do I find the Dropbear version in a firmware image?

Two places usually give it away. On a running device, the SSH identification string the server sends first looks like "SSH-2.0-dropbear_2022.83", because Dropbear's sysoptions.h builds it from "SSH-2.0-dropbear" plus "_" and DROPBEAR_VERSION. In an unpacked root filesystem, search the dropbear or dropbearmulti binary for the same string. Vendors can override IDENT_VERSION_PART to hide the version, and distributions backport fixes without changing it, so treat the number as the upstream base version and check vendor or distribution patch records before calling a CVE open or closed.

Which Dropbear CVE should a device maker fix first?

Start with what the build compiles in and what an attacker can reach. On images older than 2016.74 or 2017.75, the pre-authentication format string bug CVE-2016-7406 (NVD 9.8) and the post-authentication double free CVE-2017-9078 (NVD 8.8) come first. On 2024.84 to 2025.88 with multi-user logins, CVE-2025-14282 lets any user who can log in reach unix sockets as root. Terrapin follows when chacha20-poly1305 is enabled and the SSH port is reachable from untrusted networks. CVE-2025-47203 only matters if a device runs dbclient with untrusted hostnames. None of these was in CISA's KEV catalog as of its 2026-11-09 release.

Can I fix Dropbear vulnerabilities without a full upgrade?

Partly. The Terrapin site recommends disabling chacha20-poly1305 and the -etm MAC algorithms as a workaround, which for Dropbear means building with DROPBEAR_CHACHA20POLY1305 set to 0 in localoptions.h. Dropbear's 2025.89 change log names running with "dropbear -j" or building with DROPBEAR_SVR_LOCALSTREAMFWD set to 0 as mitigations for CVE-2025-14282. Memory-safety bugs such as CVE-2016-7406 or CVE-2017-9078 have no configuration workaround, so they need the upstream fix, either a newer release or a backported patch, followed by a rebuild and a re-scan of the image.

Does SoftWSP read Dropbear's compile-time options from my firmware?

SoftWSP's automated scan identifies Dropbear as a component, with its version, from the unpacked firmware file system, and matches that version against CVE, CISA KEV and FIRST EPSS data. AI then writes a plain-language summary that cites the component, version and record behind each finding, and an engineer reviews it. Working out which algorithms and forwarding features a particular build compiled in, and whether a vendor backport already closes a matched CVE, is part of that engineer review, not an automatic verdict.

Sources

  1. Dropbear SSH: CHANGES (release notes, 2026.94 back to 0.x)
  2. Dropbear SSH (mkj/dropbear): src/default_options.h
  3. Dropbear SSH (mkj/dropbear): src/sysoptions.h
  4. Bäumer, Brinkmann, Schwenk: Terrapin Attack (paper site, FAQ and scanner)
  5. Debian Security Tracker: CVE-2023-48795
  6. Debian Security Tracker: CVE-2025-14282
  7. Debian Security Tracker: CVE-2025-47203
  8. NIST NVD: CVE-2023-48795
  9. NIST NVD: CVE-2016-7406
  10. NIST NVD: CVE-2017-9078
  11. CISA: Known Exploited Vulnerabilities (KEV) Catalog
Was this guide helpful?

In this cluster

Dropbear SSH vulnerabilities in embedded firmware: identify, prioritise and fix