Responsible Aftercare And Active Failures in Embedded Device Security As A Vendor.
Responsible Aftercare and Active Failures in Embedded Device Security: A Vendor-Side Post-Mortem
An editorial on why, after more than a decade of ignored reports, "notify first, publish never" is a policy that protects vendors — not users — and what a defensible same-day disclosure model looks like.
- The Paradox We Never Resolved
- Archetype 1: The Hardware Is Someone Else's Problem
- Archetype 2: The Dashboard You Built Isn't Where the Holes Are
- Archetype 3: The Factory Is the Origin
- Archetype 4: Sovereignty Was Never Real
- The Ownership Argument
- The Model: Same-Day Public Disclosure, No Proof of Concept
- The Attribution Gap: A Blog Post Is Not a CVE
- Attribution Mining: The Quiet Art of the Late CVE
- The Objections, Answered
- The Contract, Rewritten
:: binding / definition
→ transformation, leads to
∴ therefore, conclusion
⊗ interaction, collision
⟲ recursion, iterative loop
✗ exclusion, "not"
The Paradox We Never Resolved
Responsible disclosure :: a social contract. Researcher reports → vendor acknowledges → patch ships → public advisory follows. Everyone nods. The model assumes good faith on one side and capacity on the other. After twelve-plus years of reporting vulnerabilities in the consumer ISP device ecosystem — routers, modems, CPE firmware pushed to the frontline of domestic deployment — I can tell you the contract is broken, and it isn't the researchers who broke it.
The pattern is so consistent it should be taught as a formal protocol:
Notification ⊗ vendor silence → quiet mitigation ∴ public posture of "not affected"
Time and again, reports have landed on deaf ears. Or worse — met with ignorance. And then, quietly, without acknowledgment, the issue gets fixed. You see it in the logs. You see it in a support request that gets observed but never answered. You see it in a firmware changelog that never mentions your report but suddenly closes the exact branch you documented. The vendor mitigates on their own clock, on their own terms, and the researcher is left holding a disclosure that never happened while the vendor claims — sometimes directly, sometimes by hiding behind a misconfigured portion of operational functionality or an alternate code execution branch — that the vulnerability "doesn't affect them."
Unless, of course, you keep the artifacts. The evidence that proves the vulnerable code exists inside their packages, their backend functions, their shipped binaries. That part is harder — deriving internally held code operations and execution vectors without internal access is real work — but it is the only currency that vendors respond to.
What follows is not one story but a set of archetypes. Each recurred across multiple vendors, multiple devices, multiple years — and each one breaks a different assumption that coordinated disclosure depends on.
Archetype 1: The Hardware Is Someone Else's Problem
Cost ⊗ triage burden → responsibility vacuum ∴ the distributor shrugs
Massive carriers have long relied on OEM arrangements where the actual hardware and software are handled by an external company. When the vulnerability lives in the device itself — not the carrier's backhaul, not the carrier's frontend — the carrier's response, structurally, is to wait for the OEM.
The Telstra/ZTE arrangement is the canonical example. Issues rooted in actual device hardware and firmware sat outside Telstra's ability — or willingness — to respond, and their chosen mitigation was to adjust backhaul and frontend capabilities in their own time, on their own roadmap, leaving the device-level flaw in place for everyone the backhaul didn't cover. As the reversing of the ZTE devices continued, the holes went deeper than the dashboard and display layer — the issues were contained in the GoAhead webserver and the cgi-bin functions of the device, alongside, for the era, genuinely elementary misses pushed to devices sitting on the domestic deployment frontline. This isn't malice. It's an incentive structure: the direct cost of triaging and fixing a vulnerability in someone else's product exceeds the perceived reputational cost of doing nothing, so nothing is what happens. Until someone makes the nothing visible.
Archetype 2: The Dashboard You Built Isn't Where the Holes Are
Reversing depth ⟲ discovery recursion → each layer exposes the next ∴ initial dismissal ages badly
Even when a carrier does control part of the stack, the part they control is rarely the part that is broken. The Sagemcom devices released under Optus branding followed this recursion almost perfectly. Initial reports were disregarded. But as reversing continued, the holes appeared deeper and deeper than the dashboard and display layer Optus had deployed themselves — what initially looked like a contained surface opened into layer after layer of device-level defect that Optus had never authored and, as the dismissal showed, never mapped.
For the era, these were elementary misses — mistakes pushed to devices that represented the domestic deployment frontline of routers and modems. This matters for disclosure policy: when a vendor dismisses a report, they are dismissing their understanding of their own stack's provenance. The vendor-deployed layer and the vulnerable layer are different parties, different codebases, different responsibility chains. Coordinated disclosure assumes the party you notify can see the whole picture. In embedded CPE, they demonstrably cannot.
Archetype 3: The Factory Is the Origin
Code review absence :: standardized base code → identical vulnerable chinks across devices ⊗ differing processors (MIPS/ARM)
Follow the provenance chain one step further and the pattern inverts again: the defect may not even belong to anyone the carrier has a contract with. Deeper investigation showed Yuxin as a responsible party across numerous firmware deployments. The pattern was unmistakable: vulnerable code was introduced into otherwise standardized, normal base code, and the same defects appeared across devices running on entirely different processor architectures. The problems began at the factory and were pushed onward into production without review that a schoolchild could have performed. Some of what was observed indicated not malice but a direct misunderstanding of how to structure and deploy these devices in a way that minimized exposure of the underlying operating system.
When a defect is factory-born, the downstream vendor's "we're not affected" is not just dismissive — it's structurally guaranteed to be wrong. The same code chink is already in their firmware, sourced from the same upstream, shipped to their customers.
Three archetypes in, the picture is consistent: at every hand-off in the chain — distributor, OEM, factory — the incentive is to deny, and the capacity to verify is somewhere else entirely. Zoom out one more level and it becomes clear this was never just a disclosure problem. It was a sovereignty problem.
Archetype 4: Sovereignty Was Never Real
Branding ⊗ white-label sourcing → "secure" as marketing copy ∴ sovereignty of the deployed fleet is fictional
The deeper failure underneath all of this is that the sovereignty of the devices deployed across Australian networks was, for the better part of a decade, a joke. The push was toward finding distributors for products a carrier could slap branding over and ship — with packaging and marketing copy alluding to some technologically feasible notion of "secure," while the devices themselves severely undermined the security of every environment they entered.
This didn't stay in the consumer lane. The same procurement logic extended into secure and government-contracted deployments: Hikvision, Dahua, and others embedded as infrastructure and community fixtures — speed cameras, security cameras, policing-adjacent systems. Devices with known supply-chain provenance concerns, deployed into the civic fabric, selected by procurement processes that evaluated price and brand fit rather than whether anyone had ever independently verified what the firmware actually does.
Nobody asked the people who could have answered. The group that drove embedded firmware and device reverse engineering through 2010–2020 — and the earlier lineage before it, 8051 work, the emergence of MIPS processors, the stepping up from 16-bit microcontrollers into ARM-class devices — sat outside every procurement conversation. The chipsets refined, the code frameworks improved, the devices became enormously more capable, and the verification capacity to match that capability was never institutionalized anywhere. It lived in community labs, in personal disassemblers, in the same people whose reports were landing on deaf ears.
Sovereignty ⊗ verification absence → procurement :: branding exercise ∴ the fleet answers to its factories, not its operators
The Ownership Argument
Full kernel comprehension :: verification floor. Understanding a device to the point of being able to fully own its kernel is not an attack capability — it is the only clear-fire way for an end user to ensure the devices they deploy are secure, rather than relying on the word of companies that have consistently demonstrated they would rather protect margins than ship tested, secure hardware.
This reframes the disclosure fight. The question is not whether researchers can break these devices. Everyone in this field already can. The question is whether operators retain any meaningful agency over what runs on their own networks. When the answer is no — when the vendor controls the firmware, the update channel, the acknowledgement process, and the public narrative — then kernel-level understanding isn't optional offensive skill. It's the only remaining defensive instrument.
And that is the premise the disclosure policy has to be built on. Not trust — the last twelve years burned that. Evidence, published on the researcher's clock.
A word on intent, because it matters. Understanding these devices to this depth — and publishing that understanding — was never aimed at anything but end-user sovereignty: the right of the person who owns and operates a device to know what it does, to verify it, and to secure it. Every earlier drop, every archived firmware, every documented artifact exists for that purpose and no other. In seeking employment and putting this body of work forward, that distinction is not a technicality — it is the whole point. This research is defensive by construction, and it should be read that way.
The Model: Same-Day Public Disclosure, No Proof of Concept
Given the above — vendors who cannot see their own stack, factories that ship unreviewed code, and a sovereignty posture that exists only in marketing copy — here is the disclosure posture this body of work has converged on:
1. Notify operator/maintainer and publish findings on the same day.
Not the PoC. Not the weaponized exploit chain. The findings — affected models, firmware versions, the nature of the flaw, enough technical specificity for defenders and other researchers to validate, not enough to hand a working exploit to script kiddies on a platter. Same-day publication removes the vendor's option to silently fix and deny. It creates the public record that the quiet-mitigation playbook depends on not existing.
2. No proof-of-concept code in the initial publication.
This is the actual ethical line, and it is not a concession. PoC code turns a disclosure into an arsenal. Publishing findings without exploit code preserves the defensive value (users, administrators, and downstream vendors can assess exposure and apply mitigations) while denying the lowest-effort abuse path. Where mature exploit code exists, it stays private, releasable under a defined timeline if the vendor continues to claim non-affectation.
3. Keep the artifacts.
Firmware dumps, disassembly, log evidence, version diffs — the proof that the vulnerable code exists inside their packages and backend functions. This is what converts "we're not affected" from a plausible-sounding dismissal into a documented false statement. It is also what protects the researcher legally in jurisdictions that criminalize "unauthorized access" regardless of intent.
4. Document the silence.
Every unanswered email, every observed-but-unacknowledged support request, every quiet mitigation that followed a report. The timeline is part of the disclosure. A vendor that has been notified and has silently patched has confirmed the vulnerability's reality — the record should show it.
Publishing this way solves the vendor side of the equation. It does not, on its own, solve the machinery side — and the machinery has failure modes of its own.
The Attribution Gap: A Blog Post Is Not a CVE
Blog/GitHub publication :: public record ✗ formal attribution → downstream indexing ∴ the finding dies in the open
There is a practical difference that rarely gets discussed: dropping a post on your own blog or a GitHub repository creates a public record, and almost nothing else. No CVE ID. No entry in the databases that scanners, compliance frameworks, and incident responders actually query. No formal acknowledgment that the finding exists as a security vulnerability. The work is visible to the community and invisible to the machinery.
The CVE pipeline is the machinery. And it has a failure mode that maps perfectly onto the vendor behavior described above.
The timeline trap. Researcher notifies vendor → 90-day window begins → at around 2.5 months the vendor pushes the fix silently → researcher approaches the CVE pipeline at the 90-day mark → the issue is "no longer applicable." Fixed before formal disclosure. Not attributed. And because acknowledgment was never given in the first place, the researcher has lost both halves: the grace period and the credit. The only thing that would have changed the outcome is direct evidence — code diffs, commit references, binary firmware diffs between shipped versions, changelog correlation — proving the silent fix addressed exactly what was reported.
Vendor silence ⊗ silent patching → CVE pipeline as second silencer ∴ attribution requires evidence the vendor never volunteered
Read that sequence again as an incentive diagram. A vendor who sits on a report for sixty to seventy-five days, then silently patches, achieves two things at once: no public acknowledgment of the vulnerability, and no CVE attribution for the researcher. The "responsible" waiting period becomes the attribution-killing mechanism. Patience is punished twice — once by the vendor, once by the pipeline's assumption that disclosure and fixing happen in a clean, documented order, which is precisely the order vendors are incentivized to avoid.
What actually protects attribution. The practical lessons from going through this cycle:
- Request CVE assignment concurrently with vendor notification, not after the window closes. A reserved CVE creates a formal record on day zero, before any silent fix can make the issue "not applicable."
- Archive the vulnerable firmware at report time. Binary diffing the silently-patched version against the archived original is exactly the "direct code diff" class of evidence the pipeline asks for.
- Timestamp and preserve everything. Emails, support tickets, observed-but-unacknowledged requests. The attribution dispute is won on documentation, not on being right.
- Publish the timeline publicly regardless. Even when the CVE is denied, the public record — with artifacts — remains the only version of events that cannot be quietly revised.
None of this is cynicism. It is the documented output of a disclosure ecosystem in which the default vendor strategy — wait, patch silently, deny applicability — is rational, profitable, and only countered by researchers who treat attribution evidence as a first-class deliverable of the research itself, not an afterthought.
Attribution Mining: The Quiet Art of the Late CVE
Prior research ⊗ absent citations → later CVE with no lineage ∴ plagiarism with an ID
The attribution problem has a quieter mirror image, and it deserves description even if it doesn't deserve names. Somewhere between a researcher's published work and the CVE database, findings have a way of changing hands. A write-up appears on a personal blog or a repository — documented, artifact-backed, sometimes years ahead of anyone with a formal ID. Then, at a later date, a CVE appears for substantially the same issue, filed by someone who never referenced the device lineage, the architecture work, or the pipeline research that made the finding reachable. Sometimes the derivation path from the earlier work to the later filing is short enough to trace with a ruler.
Nothing about this requires bad faith in every case, which is precisely why it's so corrosive: the behavior and an honest mistake are indistinguishable from the outside unless the prior art was looked for and not found — or found, and not mentioned.
Because the due diligence here isn't exotic. Anyone who has actually done this work knows the ritual:
Search before you write. Google, page 1 through page n — not the first page, the whole pagination, because buried on page six is someone's 2016 forum post documenting half of what you just rediscovered. DuckDuckGo, because the index overlap is real and the misses are different. Then fuzz-derive similar terms against everything: the chipset, the SoC, the firmware version string, the webserver (hello, GoAhead), the cgi-bin endpoints, the OEM, the rebadged OEM, the rebadged OEM's other rebadges, every prior CVE on the platform, the model number with and without regional suffixes. Search by UART pinout. Search by the bootloader banner. Search by the thing you'd search for if you were the person who found it three years ago — because someone usually has.
Real research ⊗ prior-art sweep → write-up worth publishing ∴ new methodology or an expanded idea, with lineage cited
And this is the ethic that separates the two cases: why write it up if it already exists? The legitimate answers are narrow and honorable — you bring a different methodology, you expand an existing idea into territory it hadn't reached, you chain it into something new, you validate or refute it at a depth nobody had bothered to reach. All of those are contributions. All of them require citing the lineage being extended. Attribution without lineage isn't research. It's a land grab on terrain other people surveyed, mapped, and published — often at the cost of being ignored by the same vendors who later benefit from the silence.
The irony writes itself. The researcher who reversed the device for six months, archived the firmware, documented the artifacts, and got told the issue was "no longer applicable" receives no CVE. The person who reads that research, re-derives the last ten percent, files without citing any of it, gets the ID, gets the scanner coverage, gets the conference talk. The pipeline that demanded code diffs as the price of attribution hands it out freely to filings that never showed lineage at all.
Sovereignty ⊗ attribution ⊗ credit → all three flow away from the people who did the work ∴ the record, with artifacts and citations, is the only currency that can't be mined
No names appear in this section, and none need to. The pattern is its own accusation — anyone who recognizes themselves in it was in a position to know better, and anyone who doesn't recognize themselves in it has nothing to worry about.
A Necessary Counterpoint: Parallel Discovery
Same object ⊗ different researchers → convergent findings ≠ mining ∴ independent replication strengthens verification
One clarification the previous section deserves, because the line matters. Two researchers studying the same object can absolutely produce near-mirror reports without either having touched the other's work. Their objectives differ — one maps the attack surface, one hardens the deployment, one audits the supply chain — and if both found the mistakes and caveats at depth, their write-ups will converge naturally. If they found 100% of the same defects, neither can derive anything the other hasn't, unless new vectors emerge to build upon the existing work — and that build is legitimate precisely when it cites not just one publisher but both.
The distinction is simple and strict: convergence with citation is research. Convergence without citation, after the prior art was findable, is mining. Same findings are not the accusation — the absence of lineage is.
And the value cut the other way too. Parallel discovery isn't redundancy to be squashed in an attribution dispute — it strengthens the availability of the information at more points, and more eyes make for more thoroughly verified findings, checked end to end. A vulnerability confirmed by two independent reversers, on two independent timelines, with two independent artifact sets, is harder for a vendor to dismiss, harder for a pipeline to call "not applicable," and harder for anyone to quietly revise later. Convergence, properly credited, is corroboration. The research community should want more of it — done with lineage, toward the same public record.
The Objections, Answered
The model above will draw the standard responses. Each deserves a direct answer, because each one assumes the old contract is still in force.
"You're enabling attackers." The vulnerabilities were enabled by the factory, the OEM, and the unreviewed firmware — years ago. A public finding with no PoC raises the cost of exploitation relative to a quiet fix that leaves every unpatched device exposed indefinitely while the vendor denies anything is wrong.
"You should give them 90 days." Twelve-plus years is a lot of 90-day windows. The grace period is a privilege vendors earn by responding, and it can be revoked — individually, by researcher, based on track record. As shown above, the window itself is the mechanism that kills attribution when the vendor uses it to patch silently.
"Same-day disclosure is irresponsible." What is irresponsible is a disclosure regime in which the only rational vendor strategy is silence-then-deny, because silence has never been made expensive.
The Contract, Rewritten
Responsible disclosure was never about protecting vendors from embarrassment. It was about protecting users from vulnerabilities. When the vendor ecosystem demonstrably uses the process to bury findings — quiet mitigation, no acknowledgment, claims of non-affectation backed by the assumption that researchers won't keep evidence — then the responsible act is to change the process.
Notify and publish, same day. No PoC. Keep the artifacts. Document the silence. Reserve the CVE before the window opens, archive the firmware before the fix ships, and cite the lineage of everyone who walked the terrain before you.
The aftercare is the vendor's job. When they stop performing it, the researcher shouldn't be expected to keep covering for them.
Comments
Post a Comment