🚨 SECURITY ALERT: Terra Classic Proposal #12235 Is NOT What It Seems
I reverse-engineered the raw on-chain data for $LUNC governance proposal #12235. What I found should concern every holder.
The Trojan Horse:
Proposal claims to be a simple IBC client recovery. Reality? It's bundling TWO separate operations:
1️⃣ IBC client recovery (07-tendermint-285 → 07-tendermint-294)
2️⃣ CosmWasm contract upload with ZERO source code disclosure
The Wasm Binary Red Flags:
Extracted the Base64 payload. Found internal Rust identifiers:
• drain::ExecMsg
• drain::MigrateMsg
• drain::BalResp
Exports migration entry points, IBC packet handling, token transfer logic. No human-readable source. Just raw bytecode.
SHA-256: 6f6ed8f1e216b550c798bdee43cc68cf63977004ceeb3bad432febf3b9eefdf7
The Permission Exploit:
Proposal #12234 just passed, restricting code uploads to governance only. Smart.
BUT it left instantiate_default_permission: Everybody
Proposal #12235 uploads code with instantiate_permission: null
Meaning? Anyone can deploy this contract after governance approves the bytecode. You're voting to arm a loaded gun and leave it on the table.
Why This Matters:
Legit IBC recovery doesn't need mystery smart contract uploads. Bundling them together is a governance attack pattern. Either the proposer doesn't understand operational security, or they're banking on voters not reading the raw transaction data.
My Verdict: VOTE NO
Until the proposer provides:
✅ Full source code
✅ Reproducible build matching the binary fingerprint
✅ Independent security audit
✅ Explanation of why IBC recovery needs a "drain" contract
✅ Clear deployment plan with admin permissions disclosed
This proposal is a hard pass.
Governance is not a rubber stamp. Opacity is not acceptable. If this is legitimate, publish the code and open a forum discussion. If it's not, this vote just saved the chain.
Security > speed. Always.
#LUNC #TerraClassic
I reverse-engineered the raw on-chain data for $LUNC governance proposal #12235. What I found should concern every holder.
The Trojan Horse:
Proposal claims to be a simple IBC client recovery. Reality? It's bundling TWO separate operations:
1️⃣ IBC client recovery (07-tendermint-285 → 07-tendermint-294)
2️⃣ CosmWasm contract upload with ZERO source code disclosure
The Wasm Binary Red Flags:
Extracted the Base64 payload. Found internal Rust identifiers:
• drain::ExecMsg
• drain::MigrateMsg
• drain::BalResp
Exports migration entry points, IBC packet handling, token transfer logic. No human-readable source. Just raw bytecode.
SHA-256: 6f6ed8f1e216b550c798bdee43cc68cf63977004ceeb3bad432febf3b9eefdf7
The Permission Exploit:
Proposal #12234 just passed, restricting code uploads to governance only. Smart.
BUT it left instantiate_default_permission: Everybody
Proposal #12235 uploads code with instantiate_permission: null
Meaning? Anyone can deploy this contract after governance approves the bytecode. You're voting to arm a loaded gun and leave it on the table.
Why This Matters:
Legit IBC recovery doesn't need mystery smart contract uploads. Bundling them together is a governance attack pattern. Either the proposer doesn't understand operational security, or they're banking on voters not reading the raw transaction data.
My Verdict: VOTE NO
Until the proposer provides:
✅ Full source code
✅ Reproducible build matching the binary fingerprint
✅ Independent security audit
✅ Explanation of why IBC recovery needs a "drain" contract
✅ Clear deployment plan with admin permissions disclosed
This proposal is a hard pass.
Governance is not a rubber stamp. Opacity is not acceptable. If this is legitimate, publish the code and open a forum discussion. If it's not, this vote just saved the chain.
Security > speed. Always.
#LUNC #TerraClassic