Security

What is guaranteed, and what is assumed.

A security page that omits the assumptions is marketing. These are stated first.

You must trust

  • The iExec Nox TEE

    It computes on plaintext inside the enclave. A broken TEE reveals everything.

  • The Nox gateway

    It performs decryptions. It cannot forge a proof, but it can decline to serve one.

  • Your Safe's owners

    The threshold is your security. shrud adds no protection against your own signers.

  • Uniswap v3 and Aave v3

    Remainders settle through them. shrud re-checks their code hashes on every use and cannot make them correct.

  • The reference price

    A thirty minute TWAP with a tick bound. Moving it costs sustained price impact across the window, which is a cost rather than an impossibility.

shrud does not protect against

  • Timing analysis

    Submission times are public. Submitting alone, immediately before a seal, is identifying whatever the protocol encrypts.

  • A Safe with one owner

    The privacy floor counts participants, not signatures.

  • Off-chain correlation

    If you announce your trade, the protocol cannot unannounce it.

  • A compromised owner key

    Nothing here helps.

The five public states, and the six that must never exist

SubmittedAuthorisedProcessedExpiredCancelled

Processed carries every outcome an order can have. Each state below is a free oracle, and a pull request adding any of them should be rejected on sight.

Rejected

That something went wrong, and roughly what

InsufficientBalance

Turns repeated oversized orders into a binary search over a confidential balance

Buy or Sell

Exactly what the product exists to hide

Crossed

Which orders found counterparties

LimitFailed

The relationship between a private limit and a public price

Excluded

Who did not make the cut, which with a small set identifies who did

Status

Not audited. Testnet only.

This software has not been through an external security review. It is deployed on Ethereum Sepolia and must not be used on a network holding real value.

Reporting

Private advisory, not a public issue

Open a private security advisory on the repository, under Security then Report a vulnerability. Please do not open a public issue for anything affecting funds, privacy or access control. There is no bug bounty, and saying so is better than implying one.