Skip to content

fix: block RIP-201 bucket normalization spoofing (100 RTC)#1581

Merged
Scottcjn merged 1 commit intoScottcjn:mainfrom
mtarcure:fix/rip201-bucket-spoofing
Mar 21, 2026
Merged

fix: block RIP-201 bucket normalization spoofing (100 RTC)#1581
Scottcjn merged 1 commit intoScottcjn:mainfrom
mtarcure:fix/rip201-bucket-spoofing

Conversation

@mtarcure
Copy link
Copy Markdown
Contributor

Bounty: rustchain-bounties#554 — Fix RIP-201 Bucket Normalization Spoofing (100 RTC)

Vulnerability

Modern x86 CPUs (Intel Xeon, AMD EPYC) could claim device_arch=G4 and get routed into vintage_powerpc bucket with 2.5x multiplier — 10x reward gain over honest miners (PoC: Rustchain#551).

Fix: Four Server-Side Defences

# Defence What it catches
1 CPU brand cross-validation Intel Xeon / AMD EPYC brand strings claiming G4/G5/68k/SPARC
2 SIMD evidence requirement G4/G5/Power8 claims without AltiVec + vec_perm evidence
3 Cache-timing profile validation Clock CV too low for vintage PowerPC; unexpected large L3 on G4
4 Server-side bucket classification Infers actual architecture from verified features; downgrades spoofers to modern_x86 at 1.0x

Integration

get_verified_multiplier() is a drop-in replacement for get_time_aged_multiplier() in rewards_implementation_rip200.py. Logs audit rows to rip201_bucket_audit via raw sqlite3.

Tests

58 unit tests, all passing — key scenarios:

  • ✅ Intel Xeon + G4 claim → REJECTED (1.0x)
  • ✅ AMD EPYC + G4 claim → REJECTED (1.0x)
  • ✅ Real PowerPC G4 with valid AltiVec → ACCEPTED (2.5x)
  • ✅ Missing SIMD evidence → REJECTED
  • ✅ Cache timing mismatch → REJECTED
  • ✅ Modern x86 cannot spoof into ANY vintage bucket

RTC Wallet

wirework

…unties#554)

Four server-side defences against architecture spoofing for reward multiplier gaming:
1. CPU brand cross-validation (reject Intel/AMD claiming G4/G5/68k)
2. SIMD evidence requirement (AltiVec/vec_perm for PowerPC claims)
3. Cache-timing profile validation (clock CV, L3 size, tone ratios)
4. Server-side bucket classification from verified features

get_verified_multiplier() is a drop-in replacement for get_time_aged_multiplier()
in rewards_implementation_rip200.py. 58 tests, all passing.

RTC Wallet: wirework
@github-actions github-actions bot added BCOS-L1 Beacon Certified Open Source tier BCOS-L1 (required for non-doc PRs) tests Test suite changes labels Mar 20, 2026
@github-actions github-actions bot added the size/XL PR: 500+ lines label Mar 20, 2026
@Dlove123
Copy link
Copy Markdown

💰 Claiming! (100 RTC)

Payment:

  • PayPal: 979749654@qq.com
  • ETH: 0x31e323edC293B940695ff04aD1AFdb56d473351D
  • RTC: RTCb72a1accd46b9ba9f22dbd4b5c6aad5a5831572b
  • GitHub: Dlove123

Starting now! 🚀

@Dlove123
Copy link
Copy Markdown

💰 Claiming! (100 RTC)

Payment:

  • PayPal: 979749654@qq.com
  • ETH: 0x31e323edC293B940695ff04aD1AFdb56d473351D
  • RTC: RTCb72a1accd46b9ba9f22dbd4b5c6aad5a5831572b
  • GitHub: Dlove123

Starting now! 🚀

@Dlove123
Copy link
Copy Markdown

💰 Claiming! (100 RTC)

Payment:

  • PayPal: 979749654@qq.com
  • ETH: 0x31e323edC293B940695ff04aD1AFdb56d473351D
  • RTC: RTCb72a1accd46b9ba9f22dbd4b5c6aad5a5831572b
  • GitHub: Dlove123

Starting now! 🚀

1 similar comment
@Dlove123
Copy link
Copy Markdown

💰 Claiming! (100 RTC)

Payment:

  • PayPal: 979749654@qq.com
  • ETH: 0x31e323edC293B940695ff04aD1AFdb56d473351D
  • RTC: RTCb72a1accd46b9ba9f22dbd4b5c6aad5a5831572b
  • GitHub: Dlove123

Starting now! 🚀

@Dlove123
Copy link
Copy Markdown

💰 Claiming! (100 RTC)

Payment:

  • PayPal: 979749654@qq.com
  • ETH: 0x31e323edC293B940695ff04aD1AFdb56d473351D
  • RTC: RTCb72a1accd46b9ba9f22dbd4b5c6aad5a5831572b
  • GitHub: Dlove123

Starting now! 🚀

@Dlove123
Copy link
Copy Markdown

💰 Claiming! (100 RTC)

Payment:

  • PayPal: 979749654@qq.com
  • ETH: 0x31e323edC293B940695ff04aD1AFdb56d473351D
  • RTC: RTCb72a1accd46b9ba9f22dbd4b5c6aad5a5831572b
  • GitHub: Dlove123

Starting now! 🚀

@Dlove123
Copy link
Copy Markdown

💰 Claiming! (100 RTC)

Payment:

  • PayPal: 979749654@qq.com
  • ETH: 0x31e323edC293B940695ff04aD1AFdb56d473351D
  • RTC: RTCb72a1accd46b9ba9f22dbd4b5c6aad5a5831572b
  • GitHub: Dlove123

Starting now! 🚀

@Dlove123
Copy link
Copy Markdown

💰 Claiming! (100 RTC)

Payment:

  • PayPal: 979749654@qq.com
  • ETH: 0x31e323edC293B940695ff04aD1AFdb56d473351D
  • RTC: RTCb72a1accd46b9ba9f22dbd4b5c6aad5a5831572b
  • GitHub: Dlove123

Starting now! 🚀

@Dlove123
Copy link
Copy Markdown

💰 Claiming! (100 RTC)

Payment:

  • PayPal: 979749654@qq.com
  • ETH: 0x31e323edC293B940695ff04aD1AFdb56d473351D
  • RTC: RTCb72a1accd46b9ba9f22dbd4b5c6aad5a5831572b
  • GitHub: Dlove123

Starting now! 🚀

@Dlove123
Copy link
Copy Markdown

💰 Claiming! (100 RTC)

Payment:

  • PayPal: 979749654@qq.com
  • ETH: 0x31e323edC293B940695ff04aD1AFdb56d473351D
  • RTC: RTCb72a1accd46b9ba9f22dbd4b5c6aad5a5831572b
  • GitHub: Dlove123

Starting now! 🚀

@Dlove123
Copy link
Copy Markdown

💰 Claiming! (100 RTC)

Payment:

  • PayPal: 979749654@qq.com
  • ETH: 0x31e323edC293B940695ff04aD1AFdb56d473351D
  • RTC: RTCb72a1accd46b9ba9f22dbd4b5c6aad5a5831572b
  • GitHub: Dlove123

Starting now! 🚀

@Dlove123
Copy link
Copy Markdown

💰 Claiming! (100 RTC)

Payment:

  • PayPal: 979749654@qq.com
  • ETH: 0x31e323edC293B940695ff04aD1AFdb56d473351D
  • RTC: RTCb72a1accd46b9ba9f22dbd4b5c6aad5a5831572b
  • GitHub: Dlove123

Starting now! 🚀

@Dlove123
Copy link
Copy Markdown

💰 Claiming! (100 RTC)

Payment:

  • PayPal: 979749654@qq.com
  • ETH: 0x31e323edC293B940695ff04aD1AFdb56d473351D
  • RTC: RTCb72a1accd46b9ba9f22dbd4b5c6aad5a5831572b
  • GitHub: Dlove123

Starting now! 🚀

@Dlove123
Copy link
Copy Markdown

💰 Claiming! (100 RTC)

Payment:

  • PayPal: 979749654@qq.com
  • ETH: 0x31e323edC293B940695ff04aD1AFdb56d473351D
  • RTC: RTCb72a1accd46b9ba9f22dbd4b5c6aad5a5831572b
  • GitHub: Dlove123

Starting now! 🚀

@Dlove123
Copy link
Copy Markdown

💰 Claiming! (100 RTC)

Payment:

  • PayPal: 979749654@qq.com
  • ETH: 0x31e323edC293B940695ff04aD1AFdb56d473351D
  • RTC: RTCb72a1accd46b9ba9f22dbd4b5c6aad5a5831572b
  • GitHub: Dlove123

Starting now! 🚀

@Dlove123
Copy link
Copy Markdown

💰 Claiming! (100 RTC)

Payment:

  • PayPal: 979749654@qq.com
  • ETH: 0x31e323edC293B940695ff04aD1AFdb56d473351D
  • RTC: RTCb72a1accd46b9ba9f22dbd4b5c6aad5a5831572b
  • GitHub: Dlove123

Starting now! 🚀

@Dlove123
Copy link
Copy Markdown

💰 Claiming! (100 RTC)

Payment:

  • PayPal: 979749654@qq.com
  • ETH: 0x31e323edC293B940695ff04aD1AFdb56d473351D
  • RTC: RTCb72a1accd46b9ba9f22dbd4b5c6aad5a5831572b
  • GitHub: Dlove123

Starting now! 🚀

@Dlove123
Copy link
Copy Markdown

💰 Claiming! (100 RTC)

Payment:

  • PayPal: 979749654@qq.com
  • ETH: 0x31e323edC293B940695ff04aD1AFdb56d473351D
  • RTC: RTCb72a1accd46b9ba9f22dbd4b5c6aad5a5831572b
  • GitHub: Dlove123

Starting now! 🚀

@Dlove123
Copy link
Copy Markdown

💰 Claiming! (100 RTC)

Payment:

  • PayPal: 979749654@qq.com
  • ETH: 0x31e323edC293B940695ff04aD1AFdb56d473351D
  • RTC: RTCb72a1accd46b9ba9f22dbd4b5c6aad5a5831572b
  • GitHub: Dlove123

Starting now! 🚀

@Dlove123
Copy link
Copy Markdown

💰 Claiming! (100 RTC)

Payment:

  • PayPal: 979749654@qq.com
  • ETH: 0x31e323edC293B940695ff04aD1AFdb56d473351D
  • RTC: RTCb72a1accd46b9ba9f22dbd4b5c6aad5a5831572b
  • GitHub: Dlove123

Starting now! 🚀

@Dlove123
Copy link
Copy Markdown

💰 Claiming! (100 RTC)

Payment:

  • PayPal: 979749654@qq.com
  • ETH: 0x31e323edC293B940695ff04aD1AFdb56d473351D
  • RTC: RTCb72a1accd46b9ba9f22dbd4b5c6aad5a5831572b
  • GitHub: Dlove123

Starting now! 🚀

@Dlove123
Copy link
Copy Markdown

💰 Claiming! (100 RTC)

Payment:

  • PayPal: 979749654@qq.com
  • ETH: 0x31e323edC293B940695ff04aD1AFdb56d473351D
  • RTC: RTCb72a1accd46b9ba9f22dbd4b5c6aad5a5831572b
  • GitHub: Dlove123

Starting now! 🚀

@Dlove123
Copy link
Copy Markdown

💰 Claiming this bounty! (100 RTC)

Payment Information:

  • PayPal: 979749654@qq.com
  • ETH: 0x31e323edC293B940695ff04aD1AFdb56d473351D
  • RTC: RTCb72a1accd46b9ba9f22dbd4b5c6aad5a5831572b
  • GitHub: Dlove123

⚠️ Payment Terms

  • Payment due within 30 days of PR merge
  • Reminder on Day 10/20/25 if unpaid
  • Code rollback on Day 30 if payment not received

Starting work immediately! 🚀

@Dlove123
Copy link
Copy Markdown

💰 Claiming! (100 RTC)

Payment:

  • PayPal: 979749654@qq.com
  • ETH: 0x31e323edC293B940695ff04aD1AFdb56d473351D
  • RTC: RTCb72a1accd46b9ba9f22dbd4b5c6aad5a5831572b
  • GitHub: Dlove123

Starting now! 🚀

1 similar comment
@Dlove123
Copy link
Copy Markdown

💰 Claiming! (100 RTC)

Payment:

  • PayPal: 979749654@qq.com
  • ETH: 0x31e323edC293B940695ff04aD1AFdb56d473351D
  • RTC: RTCb72a1accd46b9ba9f22dbd4b5c6aad5a5831572b
  • GitHub: Dlove123

Starting now! 🚀

@Dlove123
Copy link
Copy Markdown

💰 Claiming! (100 RTC)

Payment:

  • PayPal: 979749654@qq.com
  • ETH: 0x31e323edC293B940695ff04aD1AFdb56d473351D
  • RTC: RTCb72a1accd46b9ba9f22dbd4b5c6aad5a5831572b
  • GitHub: Dlove123

Starting now! 🚀

@Scottcjn
Copy link
Copy Markdown
Owner

Review: Changes Requested

@mtarcure — solid security work. The four defense layers (CPU brand cross-validation, SIMD evidence, cache timing profiles, server-side bucket classification) are well-designed and the 58 tests are thorough.

Must fix — multiplier mismatches with production:

  • DECAY_RATE: you have 0.06, production uses 0.15 (full decay ~6.7yr vs ~16.7yr)
  • power8: you have 1.8, should be 1.5
  • vintage_powerpc_g3: you have 2.5, should be 1.8
  • apple_silicon: you have 1.0, should be 1.05-1.2
  • modern_x86: you have 1.0, should be 0.8

These would cause incorrect reward calculations if deployed. Reference: rip_200_round_robin_1cpu1vote.py for canonical values.

Suggestion: Import multipliers from the canonical source rather than duplicating them. That way future changes to RIP-200 tables propagate automatically.

Fix the values and this is a clean 100 RTC merge.

— Scott

@Scottcjn Scottcjn merged commit d5112eb into Scottcjn:main Mar 21, 2026
6 checks passed
@Scottcjn
Copy link
Copy Markdown
Owner

Merged! Strong security fix — the 4-layer defense (brand validation + SIMD evidence + cache-timing + server-side classification) is exactly right. 100 RTC approved. Payment pending. 🔨

createkr pushed a commit to createkr/Rustchain that referenced this pull request Mar 22, 2026
…fing

fix: block RIP-201 bucket normalization spoofing (100 RTC)
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

BCOS-L1 Beacon Certified Open Source tier BCOS-L1 (required for non-doc PRs) size/XL PR: 500+ lines tests Test suite changes

Projects

None yet

Development

Successfully merging this pull request may close these issues.

3 participants