Part of #160 (privacy egress epic).
The worst leak in the stack: the dashboard fetches XvB stats over clearnet with the operator's wallet address as a query param, from a network_mode: host container — correlating real IP ↔ Monero wallet. And it's not gated by XVB_ENABLED, so disabling XvB doesn't stop it.
build/dashboard/mining_dashboard/client/xvb_client.py:37 → requests.get("https://xmrvsbeast.com/cgi-bin/p2pool_bonus_history.cgi?address=<WALLET>"), called unconditionally from service/data_service.py:482 (~every 5 min).
Changes
Acceptance
Labels: dashboard, security · Milestone: v1.0
Related issues
Part of #160 (privacy egress epic).
The worst leak in the stack: the dashboard fetches XvB stats over clearnet with the operator's wallet address as a query param, from a
network_mode: hostcontainer — correlating real IP ↔ Monero wallet. And it's not gated byXVB_ENABLED, so disabling XvB doesn't stop it.build/dashboard/mining_dashboard/client/xvb_client.py:37→requests.get("https://xmrvsbeast.com/cgi-bin/p2pool_bonus_history.cgi?address=<WALLET>"), called unconditionally fromservice/data_service.py:482(~every 5 min).Changes
requests.get(..., proxies={"https": "socks5h://172.28.0.25:9050"})— the host-net dashboard can reach the bridge Tor SOCKS at172.28.0.25:9050;socks5hresolves the hostname via Tor too (no local DNS leak). Add therequests[socks]/PySocks dependency to the dashboard image. xmrvsbeast still receives the wallet (inherent to the query) but no longer tied to your IP.ENABLE_XVBindata_serviceso turning XvB off actually stops the egress.TARI_EXPLORER_URLinconfig/config.py:135(defined, never called).Acceptance
tcpdumpon the host shows the xmrvsbeast request exiting via Tor (to172.28.0.25:9050), not direct to xmrvsbeast over clearnet.xvb.enabled: false, no request to xmrvsbeast.com is made at all.Labels: dashboard, security · Milestone: v1.0
Related issues
xvb.*config + algo_service path)