
Picture this: you build an oracle pipeline, you sweat over RPC endpoints and data freshness, and then you find out someone on the internet is using a smart contract the exact same way you do — except instead of a price feed, they are serving themselves a command-and-control URL. Welcome to EtherHiding.
A piece of Minecraft-targeted malware dubbed LoaderClient has been caught doing exactly that. The crew behind the WeedHack campaign is hiding their command-and-control address inside an Ethereum mainnet contract, so when defenders knock one domain offline, the malware quietly pulls a fresh one from immutable storage. Researchers at McAfee, PolySwarm, CyberInsider, and IntCyberDigest peg the operation at over 116,000 unique host compromises since January 2026, with thousands more landing daily.
What this looks like under the hood
LoaderClient masquerades as a Fabric mod for Minecraft, so the first mistake usually happens on a younger sibling's laptop — not yours, but maybe someone you mentor. Once it runs, the payload skips the usual "hardcode a domain and pray" approach. Instead, it queries a specific mainnet contract, pulls down an active server URL, verifies it against an embedded RSA public key, and only then phones home.
That single line — "queries a specific mainnet contract" — is the part that should make us all pause. The contract is the resolver. It is the DNS. It is the kill switch that no hosting provider can pull. If you have ever sat through a long argument about why you cannot simply "block that IP," this is the nightmare scenario, written in Solidity.
A separate campaign, TONResolver flagged by Trend Micro, pulls the same stunt on The Open Network. Attackers drop a C2 domain into a TON contract, fetch it on demand via a get_domain method on tonapi, and rotate servers at will while the payload itself stays untouched. Japan's hospitality sector has been the most heavily impacted region so far, mostly through phishing that imitates Booking.com guest review requests.
What this means for our stack
Here is the honest, slightly uncomfortable read: any data feed that lives on-chain can be repurposed. We build oracles to push the world onto the chain; EtherHiding turns that around and pulls attacker config off chain-based resilience onto a box near you. The decentralization we celebrate is the same property attackers love, and the contracts doing the lookup are otherwise indistinguishable from the boring ones we deploy.
A few practical shifts worth making in your own work:
- If you run public RPC endpoints or gateway infrastructure, keep an eye out for unusual read traffic to small, long-lived contracts that nobody else is calling. That silence is often the tell.
- If your tooling ingests contract addresses from user input, treat the address itself as untrusted config — validate, sandbox, rate-limit, and never assume a contract is "safe" just because it compiled cleanly.
- If you ship a consumer product, remember that "fileless" and "in-memory only" stages — like LoaderClient's JNIC-compiled second stage — bypass a lot of what your users think is protecting them. Disk artifacts are not the whole story, and the on-chain lookup leaves none at all.
What to track from here
The pattern is not going anywhere. It is, frankly, too convenient. Watch for two things over the coming weeks: more Malware-as-a-Service offerings priced aggressively enough that teenagers can run their own campaigns, and a slow uptick in obfuscation layers — VM-based instruction sets, custom ciphers, JNIC-native binaries — aimed squarely at the second-stage payload rather than the chain-side lookup.
So the next time you sketch out an oracle, a CCIP read, or any on-chain resolver, spend a quiet minute imagining the worst thing someone could quietly pull from it — and design accordingly. We have always told junior devs that the most boring contracts are the most resilient; this is, in the strangest possible way, proof of that.