In this edition
A stored same-input run shows the real v2026.07 U-Boot parser crashing while the compared fixed tree exits cleanly. We separate that result from a diagnostic write trace and a deliberately synthetic control-flow test. Neither establishes a production-device exploit. We also examine TP-Link's CVE-2026-8913 advisory for the Archer MR600 V5 and a supplied Neonix firmware comparison showing how the fixed V5 build removes the shell from the WireGuard configuration path. We then examine the multinational AA26-194A router advisory and source-backed July signals from OT and IoT reporting.
U-Boot FIT parsing: reproducing the failure before trust is established
Scope: We did not build a production-device exploit, test third-party systems or prove remote reachability.
On 1 July, Binarly disclosed six memory-safety flaws in
Das U-Boot, tracked as BRLY-2026-037 to
BRLY-2026-042. U-Boot is widely used across embedded, network and industrial
products. The affected code parses FIT (Flattened Image Tree) data while
determining which regions should be covered by signature verification.
A malicious FIT must first reach a device's boot or update path, whether through physical access, removable media or a product-specific remote update mechanism. The findings do not imply that every U-Boot device is remotely exploitable.
Root cause — an unchecked parser result
In BRLY-2026-038, fdt_get_name() can fail and return a null name
with a negative length. The vulnerable code continues to use both values. The negative
length can move a write pointer before its stack buffer; a later node name can then be
written below that buffer.
boot/fdt_region.c, fdt_find_regions()name = fdt_get_name(fdt, offset, &len); # can return NULL, len < 0 + if (!name) # absent in v2026.07 + return len; if (!depth && *name) # v2026.07: dereferences NULL return -FDT_ERR_BADLAYOUT; if (end - path + 2 + len >= path_len) # negative len skews the bounds check strcpy(end, name); end += len; # -> out-of-bounds write
What our lab confirmed
The frozen lab record includes a stored run of the real parser at two points — the released
v2026.07 and the fixed tree — under AddressSanitizer. The same crafted image
behaves differently on each build.
# v2026.07 — VULNERABLE ==ERROR: AddressSanitizer: SEGV on unknown address 0x000000000000 # READ, zero page #0 fdt_find_regions boot/fdt_region.c:91 SUMMARY: SEGV in fdt_find_regions # -> ABORTING # master — FIXED (identical input) fdt_find_regions => -11 # clean, exit 0
A bounded control-flow demonstration
To test what the recorded write could affect, we built a synthetic verifier-shaped harness with a function pointer deliberately placed immediately before the vulnerable buffer. It was compiled without PIE or stack protection and mapped page zero. A malformed FIT changed the pointer's low bytes and redirected the harness call; the fixed parser rejected the same input.
# v2026.07: verify -> synthetic test callback ● call redirected # master (identical input): verify -> benign callback ● clean fdt_find_regions => -11
fit_config_check_sig() on a production device. Binarly's original advisory
already describes pre-authentication code execution as the potential impact.
Why this matters for Australia
Australia's consumer smart-device standard commenced on 4 March 2026 for covered products manufactured from that date; it is not retrospective across the existing fleet. The July SOCI material concerning distributed energy resources is consultation material and is not yet law. Enhanced CIRMP requirements apply to specified critical-infrastructure assets and include staged transition periods.
CVE-2026-8913: how the MR600 V5 fix removes the shell
TP-Link's public advisory describes command injection in the Archer MR600 V5 WireGuard
client configuration. It requires an authenticated administrative user applying a
configuration through the web-management interface. TP-Link names
EU_V5_1.7.0 and JP_V5_1.2.0 as fixed builds.
Where configuration data becomes shell syntax
The supplied Neonix write-up compares the vulnerable EU_V5_1.5 build with the
fixed EU_V5_1.7.0 build and locates the change in libcmm.so. It
reports that oal_wgvpn_genInterfaceConfClient() and
oal_wgvpn_genPeerConfClient() generate the WireGuard
[Interface] and [Peer] blocks one field at a time. In the
vulnerable build, those fields are interpolated into formatted echo commands
and passed to util_execSystem().
That helper first materialises the command with vsnprintf() in a 512-byte
buffer. It rejects the string only if it contains a semicolon; otherwise it calls
system() as root. The flaw is deeper than one omitted character:
configuration data crosses an interpreter boundary and is parsed again as shell syntax,
where other operators and command-substitution forms still have meaning. An authenticated
administrator who can submit a crafted WireGuard configuration can therefore cross from
the management plane into commands running with the router process's privileges.
# vulnerable V5 field -> formatted echo command -> semicolon-only filter -> system() # fixed V5 field -> fputs() / fprintf() -> direct file write -> no shell
/var/wireguard/wgclient.conf, write
section headings with fputs(), render each field through fixed
fprintf() format strings, and close the file. The values must still form a
valid WireGuard configuration, but they are no longer fed to a command interpreter.
When router configuration is the vulnerability
The joint advisory AA26-194A was issued on 13 July by 19 agencies across
13 countries; ASD published its Australian page on 14 July. It describes a campaign attributed to Russia's
FSB Center 16, also tracked under names including Berserk Bear, Energetic
Bear, Ghost Blizzard and Static Tundra. The campaign spans more than a decade and targets
poorly secured network infrastructure.
1. SCAN internet SNMP agents answering to a default / weak community string 2. SET SNMP Set-Request abusing Cisco CISCO-CONFIG-COPY-MIB 3. EXFIL running-config copied out over TFTP to attacker infrastructure # occasionally paired with: CVE-2018-0171 # Cisco Smart Install (TCP 4786) CVE-2008-4128 # added to CISA KEV on 13 July
How an SNMP credential becomes a configuration export
In SNMPv1 and v2c, the community string is effectively a shared bearer credential. A
read-only string permits queries; a read-write string also permits state-changing Set
requests. With that access, the actor does not need an interactive CLI login. The
CISCO-CONFIG-COPY-MIB exposes a job table whose fields select the running
configuration as the source, a network file as the destination, TFTP as the transfer
protocol, and an external server and filename. Activating the row makes the router
initiate the transfer.
The sensitive subtree begins at 1.3.6.1.4.1.9.9.96.1.1; the joint advisory
specifically highlights the server-address object at
1.3.6.1.4.1.9.9.96.1.1.1.1.5. This is why a conventional vulnerability scan
can miss the condition: the decisive weakness may be a live management protocol plus an
over-privileged community string, not a missing patch. Credentialed configuration review
or controlled SNMP testing is needed to distinguish read-only exposure from read-write
control.
The named sectors — communications, energy, financial services, government (especially state and local), healthcare — overlap with several Australian critical-infrastructure sectors. The advisory names at-risk sectors, not confirmed Australian victims.
What the rest of July showed in OT and IoT
Drawn from vendor advisories, CISA and named reporting — not our own lab this month.
CVE-2026-10577, CVSS 10.0, ICSA-26-195-04): an unauthenticated
debug service can expose memory and I/O operations without credentials. CISA also
published July guidance for Schneider Easergy MiCOM Px40 protection
relays concerning CVE-2026-4832, a hardcoded-credential issue reachable
through SNMP. The CVE record itself was published in April, so this is a July advisory
update rather than a newly disclosed July vulnerability. The practical lesson is to
control management-service reachability, credentials and lifecycle ownership.
CVE-2026-9770 confirms that affected Kasa EC70 v4 and
EC71 v4 firmware contains a hardcoded cryptographic key that can enable local-network interception.
Researcher Christopher Childress reports that the affected build used the same RSA
private key across devices. We did not reproduce that finding and attribute it
accordingly. Owners should verify the hardware revision, install TP-Link's listed fixed
build or later, and update the Kasa app. The vendor describes the exposure as local-network
rather than internet-remote.
Black Hat USA postscript — two talks to follow
Black Hat USA Briefings ran on 5–6 August, after July closed. These are attributed conference results, not Neonix laboratory work.
For Australian leaders — this week
Each item is written so it can be assigned to the accountable owner. Regulatory mappings should be applied only where the organisation, asset and transition date are in scope.
- 01 Run the router-hygiene sweep (AA26-194A) Disable Cisco Smart Install; move to SNMPv3; block TFTP/SMI/SNMP at the edge; replace end-of-life gear. Owner: Network · ASD E8 — Patch OS / Restrict Admin
- 02 Confirm the June U-Boot FIT fixes are backported Ask affected product vendors; do not assume a future upstream release will reach deployed products. Owner: Product / OT
- 03 Add firmware & bootloader integrity to procurement Require firmware provenance, rollback protection and a defined support lifetime. Owner: Procurement / Product
- 04 Audit OT and router management services Remove weak credentials and unnecessary exposure. For Archer MR600 V5, apply TP-Link's region-specific fixed firmware or later. Owner: OT / Network
- 05 Apply smart-device rules only where they are in scope Check the product scope and manufacture date before treating the standard as applicable. Owner: Product / Legal
- 06 Map applicable enhanced CIRMP requirements Confirm the applicable critical-asset class, requirement and staged transition date. Owner: Risk / GRC
- 07 Track the distributed-energy SOCI proposal Treat the July material as consultation, not an existing fleet-wide obligation. Owner: Legal / GRC
Source-backed figures from this issue
That's Issue 003. The common failure is not that embedded and network devices are inherently unmanageable. It is that parsers, management services and update paths often receive less scrutiny than the applications around them. The U-Boot evidence shows a parser failure before trust is established; the MR600 V5 fix shows the value of removing a shell boundary instead of adding another input filter. AA26-194A shows the operational counterpart: useful access can come from old management paths without a new vulnerability.
Primary sources and attribution
- U-Boot: Binarly BRLY-2026-038, Unfit to Boot and the U-Boot release cycle
- MR600 V5: TP-Link CVE-2026-8913 advisory
- Router campaign: ASD's ACSC AA26-194A advisory and Cisco configuration-copy documentation
- OT and IoT: CISA ICSA-26-195-04, CVE-2026-4832 record, CISA Schneider Easergy advisory, Arelion DDoS report, TP-Link Kasa advisory, Childress Kasa research and the Dragos year in review
- Black Hat USA: Briefings schedule, Forescout TP-Link research and the Tesla Wall Connector talk summary
- Australian policy: consumer smart-device standard, SOCI consultation and enhanced CIRMP rules
The U-Boot vulnerabilities and original impact assessment are Binarly's research. Neonix independently reproduced the parser crash and recorded diagnostic and synthetic observations; we did not demonstrate a production-device exploit. The MR600 V5 implementation comparison is attributed to the supplied Neonix write-up and was not independently rebuilt. No third-party systems were tested.