Visitar URL original
Document stellar-cli's RPC trust boundary · Issue #2781 · stellar/stellar-cli · GitHub
Skip to content

Document stellar-cli's RPC trust boundary #2781

Open

Description

@fnando

The CLI treats the configured RPC endpoint as a trusted component: authorization entries are built from simulateTransaction, and the signature expiration is derived from getLatestLedger. This assumption isn't written down anywhere user-facing.

Add documentation (README / a security section) stating that the RPC endpoint is trusted, what that implies when pointing the CLI at an untrusted or plain-HTTP endpoint, and guidance to prefer endpoints you control or trust over TLS.

Activity

  1. duongynhi000005-oss commented on Oct 26, 2026

    @duongynhi000005-oss

    Analysis & Proposed Documentation

    Currently, stellar-cli relies on the configured RPC endpoint (--rpc-url / STELLAR_RPC_URL or --network) for security-critical transaction construction steps without documenting the trust assumptions in user-facing documentation:

    1. Simulation-driven authorization & footprint construction: Contract invocation/deployment commands construct transaction footprints, resource fees, and SorobanAuthorizedEntry payloads from simulateTransaction responses.
    2. Ledger-derived signature expiration: Args::sign_soroban_authorizations (cmd/soroban-cli/src/config/mod.rs) queries client.get_latest_ledger().await?.sequence and sets signature_expiration_ledger = latest_ledger + 60.
    3. Sequence number resolution: Args::next_sequence_number queries client.get_account(...) from the RPC endpoint.

    Proposed Changes (README.md)

    • Add a dedicated Security & RPC Trust Boundary section (linked in the Table of Contents) detailing:
      • Which transaction and signing parameters are derived from the RPC endpoint (simulateTransaction, getLatestLedger, getAccount).
      • Concrete risks of using untrusted or plain-HTTP (http://) endpoints (manipulated SorobanAuthorizedEntry sub-invocations, skewed signature_expiration_ledger windows via inflated getLatestLedger responses, and MITM tampering over unencrypted transport).
      • Actionable operational guidance: prefer self-hosted or trusted RPC providers over TLS (https://), restrict http:// to local loopback development (localhost / 127.0.0.1), and inspect authorization details rather than using --auto-sign on non-local networks.

    I have prepared this documentation update on my fork branch duongynhi000005-oss/stellar-cli:docs/issue-2781-rpc-trust-boundary (commit b002ac8) and would be happy to open a PR if you'd like to assign this issue to me.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    • Status
      Backlog (Not Ready)

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions