Miner clients: restore TLS verification, remove a lab IP default, stop simulated attestations reaching production - #8084
Open
Scottcjn wants to merge 1 commit into
Open
Conversation
Two client-side problems that put miner operators at risk rather than the node. The macOS miner disabled certificate verification on every request. A comment in the fallback path said it was falling back to direct HTTPS with TLS verification; it was not, and the comment was simply wrong. Any on-path attacker could read and rewrite attestations, including the wallet field. Verification is now on, with an explicit opt-out for the old PowerPC Macs that genuinely cannot complete a modern handshake. That is a choice the operator makes rather than a silent default shipped to everyone. The same file defaulted its proxy to http://192.168.0.160:8089, a private lab address. On anyone else's network that IP is whatever machine happens to hold it, so the miner would hand its full attestation, hardware serial, MAC addresses, hostname and wallet included, in cleartext to a stranger's host. There is no default proxy now. The Pico console bridge accepted --simulate, which fabricates hardware readings, while still posting to its configured node, and that node defaults to rustchain.org. That combination is a working fake-hardware faucet checked into the repo. Simulation now refuses to run against anything but a local node. Signed-off-by: Scott <scottbphone12@gmail.com>
Contributor
|
| Metric | Value |
|---|---|
| Trust Score | 49/100 |
| Certificate ID | BCOS-9c4a0a3a |
| Tier | L1 (not met) |
What does this mean?
The BCOS (Beacon Certified Open Source) engine scans for:
- SPDX license header compliance
- Known CVE vulnerabilities (OSV database)
- Static analysis findings (Semgrep)
- SBOM completeness
- Dependency freshness
- Test infrastructure evidence
- Review attestation tier
BCOS v2 Engine - Free & Open Source (MIT) - Elyan Labs
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Found by a red-team pass over all sixteen miner clients. These are client-side problems: they put the operator at risk, not the node.
macOS miner disabled TLS verification on every request
miners/macos/rustchain_mac_miner_v2.5.pysetverify=Falsein bothget()andpost(), and again on the probe. The fallback message reads "Falling back to direct HTTPS with TLS verification" — it does not re-enable verification. The comment is simply false.Any on-path attacker (café wifi, ARP spoof, hostile ISP) could read and rewrite attestations in flight, including swapping the
minerwallet field.Verification is now on, with an explicit
RUSTCHAIN_TLS_VERIFY=0opt-out for the Tiger and Leopard machines that genuinely cannot complete a modern handshake. That is a decision the operator makes, not a silent default shipped to everyone.The same file shipped a private lab address as its default proxy
That is a machine on the maintainer's LAN. On anyone else's network,
192.168.0.160is whatever host happens to hold that address — and the miner hands it the full attestation in cleartext: hardware serial, MAC addresses, hostname, wallet. There is no default proxy now.The Pico bridge could post fabricated attestations to production
--simulatefabricates hardware readings, and its simulator floorscvat twice the pass threshold so simulated hardware always passes. It swapped only the bridge object; the submit path still usedconfig['node_url'], which defaults tohttps://rustchain.org.python pico_bridge_miner.py --simulate --wallet RTC...was a working fake-hardware faucet checked into the repo. Simulation now refuses to run against a non-local node.Not fixed here, needs a maintainer decision
miners/ppc/g4/rustchain_miner_v6.chas its entire fingerprint as a string literal, including"anti_emulation":{"passed":true,"data":{"vm_indicators":[]}}. There is no VM check anywhere in the program — it asserts real G4 hardware unconditionally, so compiling it inside a VM claims the 2.5x multiplier.This matters for the hardening on #8065: that change rejects a bare boolean from a capable device, but this client sends a dict with an empty
vm_indicatorsarray, which is evidence-shaped and passes. Worth knowing before #8065 is treated as closing the bypass.The same file hardcodes
WALLET,MAC_ADDRandSERIALat lines 18-22, so that identity is public and replayable by anyone who reads the repo. Retiring that wallet is your call.Also outstanding, listed for the record:
floppy-minergenerates its "measurements" withrandom.uniform()and fabricates a reward figure for display; the top-level Windows miner defaults to plaintexthttp://against a bare IP while the installer variant correctly uses https; andminer_crypto.pyXORs private keys against a constant that is published in the source on Windows, so the at-rest protection there is decorative.