Skip to content

Security: linstan1/edg

Security

SECURITY.md

Security Policy

Reporting a vulnerability

Report privately through Report a vulnerability on this repository. Do not open a public issue for anything exploitable.

Expect an acknowledgement within a few working days. If you hear nothing within a week, assume that the report went astray and send it again.

Scope

This tool reads chain state. It never signs, it never sends a transaction, and it holds no keys. The interesting attack surface is therefore not funds. It is what the tool tells you.

In scope, and taken seriously:

  • Anything that makes the graph lie. A path where EDG records a transport failure as a revert. A truncated crawl that scores complete. A frontier presented as a terminal. An input that fabricates an edge that does not exist. To be wrong quietly is the worst failure mode of this project. See the honesty invariants in CONTRIBUTING.md.
  • Cache poisoning. Reads are block-pinned and cache entries are never invalidated, so anything that writes an incorrect entry is permanent for that block. EDG can cache positively-confirmed contract-level outcomes only.
  • Code execution or SSRF through a crafted address, RPC response, or API payload.
  • Credential leakage, and chiefly an RPC URL with an embedded key that reaches evidence, logs, or a saved graph.

Out of scope:

  • Rate limiting or downtime of a third-party RPC endpoint or index API.
  • The optional Postgres layer that runs with its documented local-dev defaults (edg/edg). Do not expose that layer to a network.
  • A crawl of an address that is itself malicious. Contracts are untrusted input by definition here. That is the threat model, and not a vulnerability.

Operating notes

  • No .env files. Configuration is environment variables only. Settings sets env_file=None deliberately, so a stray .env cannot be read.
  • An RPC URL usually contains a key. Treat saved graphs and logs accordingly before you share them.
  • Probing calls every selector that a contract dispatches on. That is a lot of load for a public endpoint. Use your own node for anything sustained.

There aren't any published security advisories