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

Firmware vulnerabilities & fixes

SNMP agent vulnerabilities in embedded firmware: Net-SNMP and vendor agents, found and fixed

Last updated:

SNMP agent vulnerabilities in embedded firmware fall into four classes: memory-safety bugs in the agent, such as Net-SNMP's CVE-2025-68615 (fixed in 5.9.5), default or hard-coded community strings, cleartext SNMPv1 and SNMPv2c, and write access to dangerous MIB objects. Routers and gateways usually ship Net-SNMP; switches, PLCs and UPS cards often run the vendor's own SNMP stack. Find which agent and version the image ships, read its configuration, patch, then ship SNMPv3 with per-device credentials, or SNMP switched off.

Key takeaways

  • Two kinds, and they need different handling.
  • The same four classes recur across both kinds of agent.
  • Start with the files, then the configuration, then confirm against the network behaviour.
  • Download page. The Net-SNMP download page lists 5.9.5.2 as the current supported release on 2026-11-13, 5.10.pre2 as the pre-release, and 5.8, 5.7.3 and older lines as end-of-line.

Which SNMP agents ship in routers, switches, PLCs and UPS cards?

Two kinds, and they need different handling. Linux-based routers, gateways and many managed switches run Net-SNMP, which its own project page describes as a suite implementing "SNMP v1, SNMP v2c and SNMP v3" for monitoring "network equipment (eg. routers), computer equipment and even devices like UPSs." Its agent is snmpd, its trap receiver is snmptrapd, and both link against the libnetsnmp library. OpenWrt packages it, and vendor SDKs derived from OpenWrt inherit it.

PLCs, UPS network management cards, industrial switches and many RTOS-based devices instead compile a vendor SNMP stack, either in-house or licensed, into one monolithic firmware binary. There is no snmpd file to find and no upstream release notes to read; the stack's version is the firmware version, and fixes arrive only through the vendor's own advisories. The range of devices is wide. CERT/CC's 2002 note on SNMPv1 request handling, VU#854306, listed core network devices, broadband modems, printers, networked medical equipment, and "Manufacturing and Processing Equipment" among the places SNMP runs.

Which SNMP vulnerability classes matter for device makers?

The same four classes recur across both kinds of agent. The table lists representative CVEs; the fixed version for Net-SNMP comes from the project's NEWS file or its GitHub security advisory.

Class CVE Agent What it needs CVSS 3.x base Fixed in
Memory safety CVE-2025-68615 Net-SNMP snmptrapd A crafted trap; no credentials 9.8 (GitHub CNA) 5.9.5, 5.10.pre2
Memory safety CVE-2022-24805, -24809 Net-SNMP snmpd (NET-SNMP-VACM-MIB) Read-only credentials 8.8, 6.5 (NVD) 5.9.3
Memory safety CVE-2022-24806, -24807, -24808, -24810 Net-SNMP snmpd Read-write credentials 5.3 to 8.8 (NVD) 5.9.3
Memory safety CVE-2018-18065 Net-SNMP snmpd Authenticated request 6.5 (NVD, v3.0) 5.8
Memory safety CVE-2025-20352 Cisco IOS and IOS XE SNMP subsystem Read-only community or SNMPv3 user 7.7 (Cisco) Cisco fixed releases
Default or hard-coded community CVE-2018-0329 Cisco WAAS Knowing the static string 5.3 (Cisco) Cisco fixed releases
Default or hard-coded community CVE-2024-8450 PLANET Technology switches Knowing the string (read-write, SNMPv1) 8.6 (TWCERT) Vendor firmware
Write access abuse CVE-2020-15862 Net-SNMP EXTEND MIB Write access 7.8 (NVD) 5.9
Protocol parsing (PROTOS) CVE-2002-0012, CVE-2002-0013 Many SNMPv1 agents and managers A malformed packet Not scored in CVSS 3.x Per vendor

Agent memory bugs. SNMP agents parse ASN.1/BER from the network, and that parser has been a source of bugs since the University of Oulu's PROTOS test suite found "denial-of-service conditions, format string vulnerabilities, and buffer overflows" across many vendors in 2002. CERT/CC's VU#854306 adds that "some vulnerabilities do not require the request message to use the correct SNMP community string." Net-SNMP's recent cases follow the same pattern. The advisory for CVE-2025-68615 says "a specially crafted packet to an net-snmp snmptrapd daemon can cause a buffer overflow and the daemon to crash," and lists all versions as affected, with 5.9.5 and 5.10.pre2 as the patched releases. This one is in the trap receiver, not the agent, so it matters only on devices that ship and run snmptrapd.

Default and hard-coded community strings. A community string is the only credential SNMPv1 and SNMPv2c have. Cisco's WAAS advisory shows why firmware analysis has to look inside the image, not at the device's visible configuration: the hard-coded read-only string sat "in the configuration file for the SNMP daemon," and was "not visible in the current operation configuration ('running-config') or the startup configuration ('startup-config')." CVE-2024-8450 describes a hard-coded SNMPv1 community on PLANET switches that gave read-write access. A device shipped with public and private is the same problem with a well-known string.

Cleartext SNMPv1 and SNMPv2c. This is a protocol property, not a bug. RFC 3410 states that SNMPv1 and SNMPv2c "support only trivial authentication based on plain-text community strings and, as a result, are fundamentally insecure," and that the SNMPv1 standard and the SNMPv2c specification were declared Historic for that reason. Anyone who can capture one request on the network has the community string and every value returned.

Write access abuse. Write access turns a monitoring protocol into a configuration channel. In Net-SNMP, CVE-2020-15862 meant SNMP write access to the EXTEND MIB "provides the ability to run arbitrary commands as root," per the NVD record; the fix commit makes "the extend mib read-only by default" and shipped in 5.9. Four of the six 2022 CVEs also need read-write credentials. A shared private community therefore gives an attacker the credential for those flaws as well.

How do you find which SNMP agent and version a firmware image ships?

Start with the files, then the configuration, then confirm against the network behaviour. A practical sequence:

  1. Unpack the imageExtract the root file system with binwalk or the vendor's tooling. Our firmware SBOM guide covers the extraction step.
  2. Look for Net-SNMP filesSearch for snmpd, snmptrapd, libnetsnmp.so.*, libnetsnmpagent.so.* and libnetsnmpmibs.so.*. A statically linked build folds the libraries into snmpd itself.
  3. Read the versionThe library stores its version as a bare string such as 5.9.4, which strings finds without running anything; snmpd -v prints the same value after "NET-SNMP version". The soname narrows it further: libnetsnmp.so.30 is 5.7.3, .35 is 5.8, .40 is 5.9 to 5.9.4 and .45 is 5.9.5.2.
  4. Check the package recordOn OpenWrt-based images the opkg database names the variant. OpenWrt's net-snmp package Makefile builds snmpd-ssl with OpenSSL and snmpd-nossl without it, plus a separate snmptrapd package.
  5. Read the agent configurationLook in /etc/snmp/snmpd.conf, /etc/config/snmpd on OpenWrt, the persistent file under /var/net-snmp/ or /usr/share/snmp/, and the init script that builds the command line. Record every rocommunity, rwcommunity, com2sec, createUser, rouser, rwuser, view, access, agentaddress, extend, exec and pass line.
  6. Search the whole image for stringsHard-coded communities often live outside the main configuration, as the WAAS case shows. Grep the file system and the main binaries for public, private and any string that reaches the SNMP code.
  7. Look for a vendor stackIf there is no snmpd but the product documentation, the web interface or a test unit shows SNMP on UDP port 161, the agent is inside the main firmware binary. Its configuration is in the vendor's own format, and its version is the firmware version.
  8. Look for backportsThe version string is the upstream base, not the patch level. Check the GPL source release or the build tree for patch files before you call a version-matched CVE affected.

OpenWrt's own default shows why step 5 matters. Its default snmpd configuration defines a public community allowed from any source with read access to the whole tree from OID .1, and a private read-write community limited to localhost, with the agent listening on UDP port 161 for IPv4 and IPv6. That is a reasonable starting point for a hobbyist router. In a product, the vendor has to replace it.

Where does Net-SNMP publish fixes?

In three places, and a device maker should watch all of them:

  • Download page. The Net-SNMP download page lists 5.9.5.2 as the current supported release on 2026-11-13, 5.10.pre2 as the pre-release, and 5.8, 5.7.3 and older lines as end-of-line. The project's GitHub repository also carries a 5.10.rc1 tag dated 2026-11-07.
  • NEWS file. The NEWS file names the CVE fixed in each release. It lists the six 2022 CVEs under 5.9.3, while the CVE records say "prior to version 5.9.2"; NEWS explains that 5.9.2 was "skipped due to a last minute library versioning found bug -- use 5.9.3 instead."
  • GitHub security advisories. Newer issues are published as repository advisories, such as GHSA-4389-rwqf-q9gq for CVE-2025-68615, with the patched versions and a CVSS vector.

For the 2022 set, the 5.9.3 NEWS entry gives this guidance: "use strong SNMPv3 credentials and do not share them. If you must use SNMPv1 or SNMPv2c, use a complex community string and enhance the protection by restricting access to a given IP address range." For CVE-2025-68615, the advisory says "SNMP ports should never be open to public networks" and gives no other mitigation than firewalling snmptrapd or upgrading.

Vendor stacks publish fixes only through the vendor. Cisco's advisory for CVE-2025-20352 is a typical example. It lists "no workarounds" and a mitigation that excludes the affected OIDs from SNMP views. It also records that Cisco's PSIRT "became aware of successful exploitation of this vulnerability in the wild after local Administrator credentials were compromised."

How should you prioritise SNMP CVEs?

Rank by reachability first: is the agent running, which interfaces does it listen on, and which credentials does the attacker need? Then use exploitation data, and the CVSS base score last. Exploitation data: CISA KEV catalog version 2026.11.10 and FIRST EPSS scores dated 2026-11-12.

CVE(s) In KEV EPSS (percentile) Typical priority
CVE-2025-68615 No 0.424 (98.7th) High wherever snmptrapd runs and is reachable
CVE-2022-24805 to -24810 No 0.010 to 0.013 (64th to 71st) High if any read-only credential is shared or default; the read-write ones follow the write credential
CVE-2020-15862 No 0.004 (32nd) High on pre-5.9 builds with any write access
CVE-2018-18065 No 0.175 (97.2nd) Medium on pre-5.8 builds
CVE-2025-20352 Yes, added 2025-09-29 0.406 (98.7th) Top for affected Cisco IOS and IOS XE releases
CVE-2017-6736 (Cisco IOS SNMP) Yes, added 2022-03-03 0.704 (99.4th) Top for affected Cisco IOS releases
CVE-2002-0012, -0013 No 0.239, 0.508 (97.9th, 98.9th) High on any agent never retested since PROTOS

On 2026-11-10 the KEV catalog listed eleven SNMP vulnerabilities. All were in Cisco's own SNMP code, in IOS, IOS XE and ASA, and none was a Net-SNMP CVE. That does not make Net-SNMP safe: EPSS rates CVE-2025-68615 in the 98.7th percentile. It does show that SNMP agent code is exploited in practice, and that the confirmed cases so far sit in vendor stacks, which only the vendor can fix. Our KEV and EPSS prioritisation guide covers how the two signals combine, and CVSS v4 vs v3.1 covers why base scores need environmental context.

Exposure decides the rest. An agent that answers on a WAN interface makes every credential-free bug internet-reachable. The same agent bound to an isolated management VLAN does not. Our guide to CISA BOD 23-02 covers why management interfaces should not face the internet.

How do you configure SNMPv3 USM and VACM on a device?

SNMPv3 splits security into two models, and a device needs both configured.

USM authenticates and encrypts. The User-based Security Model in RFC 3414 defines three security levels: noAuthNoPriv, authNoPriv and authPriv. Ship authPriv. RFC 3414 itself defines MD5 and SHA-1 authentication and DES privacy; RFC 3826 adds AES, and RFC 7860 adds HMAC-SHA-2 authentication. USM also localises each key: the user's key is hashed together with the agent's snmpEngineID, so "the actual secrets shared between the user and each authoritative SNMP engine will be different." That protection holds only if engine IDs differ. Net-SNMP's snmpd.conf manual says the engine ID is normally built from "a (pseudo-)random number and the current time in seconds," and calls that "the recommended approach." Do not hard-code an engineID line into the image.

VACM decides what each user may see and change. The View-based Access Control Model in RFC 3415 maps users to groups and groups to read, write and notify views. It defines three initial configurations: "initial-minimum-security-configuration", "initial-semi-security-configuration" and "initial-no-access-configuration." In the minimum-secure option, the restricted view is the whole "internet" subtree. The no-access option, which has no initial configuration at all, is the right factory state for a product, with access created at commissioning.

In Net-SNMP, a minimal product configuration looks like this, with the user created per device during commissioning rather than baked into the image:

# Listen on the management interface only
agentaddress udp:192.0.2.10:161

# Read-only view of the subtrees the NMS actually polls
view monitor included .1.3.6.1.2.1.1
view monitor included .1.3.6.1.2.1.2
view monitor included .1.3.6.1.2.1.31

# SNMPv3 user, authPriv, read-only, restricted view
rouser -s usm nms_ro priv -V monitor

# No rocommunity / rwcommunity / extend / exec / pass lines

The address is a documentation example. Create the user with createUser in the persistent file or with net-snmp-config --create-snmpv3-user; the manual explains that the passphrase line is read once and then replaced with the localised key. The 5.9.5.2 manual source lists SHA-224 to SHA-512 as authentication options and adds that SHA authentication and DES or AES privacy "require OpenSSL to be installed and the agent to be built with OpenSSL support. MD5 authentication may be used without OpenSSL." On OpenWrt-based firmware, that means the snmpd-nossl variant cannot offer SHA authentication or any privacy at all.

How does a device maker patch, harden defaults or disable SNMP?

Patch the agent, change the defaults, restrict exposure, then rebuild and re-scan to prove the result.

Patch. For Net-SNMP, move to 5.9.5.2, or to 5.9.5 as a minimum for CVE-2025-68615. A device on 5.8 or older also carries the 2022 set, CVE-2020-15862 and, below 5.8, CVE-2018-18065; at that point upgrading is usually less work than a backport stack. For a vendor stack, the fix is a firmware release from whoever owns the code, so ask your SNMP stack supplier for its advisory feed and fixed versions.

Harden the defaults. Each of these removes a whole class of risk:

If the product does not need Do this Removes
SNMP at all Do not ship or start snmpd; for a vendor stack, ship SNMP disabled All SNMP attack surface
SNMPv1 and SNMPv2c Remove every rocommunity, rwcommunity and com2sec line Cleartext community strings, default communities
Write access Use rouser only, no rwuser; give write views to no group Write-access abuse and the read-write 2022 CVEs
Command extensions Remove extend, exec and pass lines; build without the extend module if possible Command execution through SNMP
Trap reception Do not ship or start snmptrapd CVE-2025-68615
Reachability from every interface Set agentaddress to the management interface; block UDP 161 and 162 elsewhere Remote reachability of credential-free bugs
Shared factory credentials Create the SNMPv3 user per device at commissioning Fleet-wide credential reuse

Our hard-coded credentials guide covers per-device credential provisioning in general, and our memory corruption guide covers the parser bug class behind the agent CVEs.

Release with evidence. Regenerate the SBOM, confirm that the new Net-SNMP version or patch level is what actually shipped, and publish affected versions, fixed version and the CVE list. If your build never ships snmptrapd, say so, and mark CVE-2025-68615 "not affected" with that justification in a VEX statement; our CSAF and VEX for device makers guide shows the format. The same method applies to the other daemons that usually sit beside snmpd; see our guides on dnsmasq, BusyBox and OpenSSL in embedded firmware.

AI-assisted analysis: what SoftWSP actually runs

SoftWSP's automated scan unpacks a firmware image, catalogs the software packages in the extracted file system with their versions, and matches each one against CVE records, CISA's KEV catalog and FIRST's EPSS scores. On OpenWrt-style images, the opkg records for packages such as snmpd and libnetsnmp carry the Net-SNMP version, and the package revision is stripped before matching. This is deterministic code: the code scores, and AI narrates.

AI's part is the written explanation on top of that matching. It summarises which 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: reading snmpd.conf for communities, write views and extend lines, searching the image for hard-coded strings, checking whether snmptrapd actually runs, confirming that a package such as snmpd maps to NVD's Net-SNMP product entry, and recognising a vendor SNMP stack compiled into a monolithic RTOS image, which version matching cannot see as a separate component.

For where SNMP 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 the Net-SNMP project page, download page, NEWS file, snmpd.conf manual, GitHub security advisory and commit history, RFC 3410, 3414, 3415, 3826 and 7860, CERT/CC VU#854306 and VU#107186, Cisco advisories cisco-sa-snmp-x4LPhte and cisco-sa-20180606-waas-snmp, OpenWrt's net-snmp package files, NVD, CISA's KEV catalog (version 2026.11.10) and FIRST EPSS data dated 2026-11-12, all read directly on 2026-11-13.

Put this guide to work

Frequently asked questions

Which SNMP vulnerabilities matter most in embedded firmware?

Four classes. First, memory-safety bugs in the agent itself, such as Net-SNMP's snmptrapd overflow CVE-2025-68615 (fixed in 5.9.5 and 5.10.pre2) or the 2022 VACM table bugs CVE-2022-24805 to CVE-2022-24810. Second, default or hard-coded community strings, such as the read-only string Cisco WAAS kept in an internal SNMP daemon file (CVE-2018-0329). Third, SNMPv1 and SNMPv2c themselves, which RFC 3410 says support only trivial authentication based on plain-text community strings. Fourth, write access that reaches dangerous objects: CVE-2020-15862 let SNMP write access to Net-SNMP's EXTEND MIB run commands as root. On 2026-11-10 every SNMP entry in CISA's KEV catalog was a vendor stack, mostly Cisco IOS and IOS XE, and none was a Net-SNMP CVE.

How do I find which SNMP agent and version a firmware image ships?

Unpack the image and look for snmpd, snmptrapd and libnetsnmp. The Net-SNMP library carries its version as a plain string such as 5.9.4, which strings finds without running anything, and snmpd prints "NET-SNMP version" when started with -v. The shared library's soname also narrows the release: libnetsnmp.so.30 is 5.7.3, .35 is 5.8, .40 is 5.9 to 5.9.4 and .45 is 5.9.5.2. On OpenWrt-based images the opkg database names the package and variant, for example snmpd-ssl or snmpd-nossl. If there is no snmpd at all but the device answers on UDP port 161, the agent is a vendor's own stack compiled into the main firmware binary, and its version is the firmware version.

Where does Net-SNMP publish security fixes?

In three places. The download page on net-snmp.org lists the supported release (5.9.5.2 on 2026-11-13), the 5.10 pre-release and the end-of-line branches, including 5.8 and 5.7.3. The NEWS file in the net-snmp GitHub repository names the CVEs fixed in each release, for example the six 2022 CVEs under 5.9.3; 5.9.2 was skipped because of a library versioning bug. The repository's GitHub security advisories carry the newer ones, such as GHSA-4389-rwqf-q9gq for CVE-2025-68615. Distributions such as Debian backport fixes into older version numbers, so a version string alone does not prove a device is affected.

What does a safe SNMPv3 configuration look like on a device?

Use the User-based Security Model (RFC 3414) at the authPriv level, with SHA-2 authentication (RFC 7860) and AES privacy (RFC 3826), and a per-device user created at commissioning, never a shared factory account. Then use the View-based Access Control Model (RFC 3415) to grant that user read access to only the MIB subtrees the management system needs, and no write access unless a feature requires it. Remove every rocommunity and rwcommunity line, bind the agent to the management interface, and leave a generated engine ID in place. Net-SNMP needs an OpenSSL build for SHA and AES; its manual says only MD5 authentication works without OpenSSL.

Does SoftWSP check SNMP agents in my firmware?

SoftWSP's automated scan catalogs the software packages in the unpacked firmware file system, with their versions, and matches them against CVE records, CISA's KEV catalog and FIRST EPSS scores. On OpenWrt-based images the opkg records for snmpd and libnetsnmp carry the Net-SNMP version that matching starts from. AI then writes a plain-language summary that cites the component, version and record behind each finding, and an engineer reviews it. Reading the SNMP configuration for community strings, write views and listening interfaces, and identifying a vendor's own SNMP stack compiled into a monolithic RTOS image, is part of that engineer review, not an automatic verdict.

Sources

  1. Net-SNMP: project home page
  2. Net-SNMP: download page (current, pre-release and end-of-line releases)
  3. Net-SNMP: NEWS file (security fixes per release)
  4. Net-SNMP GitHub security advisory GHSA-4389-rwqf-q9gq: snmptrapd vulnerability (CVE-2025-68615)
  5. Net-SNMP commit 77f6c60: make the extend MIB read-only by default (CVE-2020-15862)
  6. Net-SNMP: snmpd.conf manual page
  7. Net-SNMP 5.9.5.2: snmpd.conf manual source (createUser SHA-2 options)
  8. RFC 3410: Introduction and Applicability Statements for Internet Standard Management Framework
  9. RFC 3414: User-based Security Model (USM) for SNMPv3
  10. RFC 3415: View-based Access Control Model (VACM) for SNMP
  11. RFC 3826: The AES Cipher Algorithm in the SNMP User-based Security Model
  12. RFC 7860: HMAC-SHA-2 Authentication Protocols in USM for SNMPv3
  13. CERT/CC Vulnerability Note VU#854306: Multiple vulnerabilities in SNMPv1 request handling
  14. CERT/CC Vulnerability Note VU#107186: Multiple vulnerabilities in SNMPv1 trap handling
  15. Cisco Security Advisory cisco-sa-snmp-x4LPhte: IOS and IOS XE SNMP DoS and RCE (CVE-2025-20352)
  16. Cisco Security Advisory cisco-sa-20180606-waas-snmp: WAAS static SNMP credentials (CVE-2018-0329)
  17. OpenWrt packages: net-snmp default snmpd configuration
  18. OpenWrt packages: net-snmp package Makefile (ssl and nossl variants)
  19. NIST NVD: CVE-2024-8450 (PLANET Technology switches, hard-coded SNMPv1 community)
  20. CISA: Known Exploited Vulnerabilities (KEV) Catalog
Was this guide helpful?

In this cluster

SNMP agent vulnerabilities in embedded firmware: Net-SNMP and vendor agents, found and fixed