$ cat writeup.md…
$ cat writeup.md…
sekai2026
Task: exploit a Sui/Stellar bridge where relayer attestations omit fee_recipient and pending transactions leak signatures. Solution: front-run completions, repair failed Sui legs, and recycle honest funds until the Stellar balance reaches 250.
$ cat /etc/rate-limit
Rate limit reached (20 reads/hour per IP). Showing preview only — full content returns at the next hour roll-over.
No original organizer description was provided in the solved-task notes.
English summary: the challenge provides an integrated Stellar Soroban bridge and Sui Move bridge with an HTTP relayer. The /flag endpoint returns the flag only when the player's Stellar SEKAI balance is at least 250.
The system bridges SEKAI tokens between Stellar and Sui. A relayer observes deposits, signs cross-chain attestations, and submits complete_* transactions on the destination chain. The player can claim 100 SEKAI on Stellar and 100 SEKAI on Sui, while an honest bot continuously cycles funds between both chains.
The key Stellar-side vulnerability is in complete_from_sui(recipient, amount, message_id, attestation, fee_recipient):
recipient.to_string() bytes, amount encoded as little-endian 16 bytes, and message_id;fee_recipient is not included in the signed message and is therefore attacker-controlled.The relayer exposes pending Stellar completion transactions for about 15 seconds at /stellar/<uuid>/pending_transactions before submitting them. Those pending records contain the recipient, amount, message ID, and valid relayer attestation. By copying the pending transaction and submitting it first with fee_recipient set to the player, the attacker steals the amount / 8 bridge fee. The honest recipient still receives amount - fee, but the message becomes processed, so the relayer's later transaction fails with MessageAlreadyProcessed.
...
$ grep --similar