CVE-2026-62300: CVE-2026-62300: Uncontrolled Resource Consumption in filecoin-pin Daemon
CVE-2026-62300: Uncontrolled Resource Consumption in filecoin-pin Daemon Vulnerability ID: CVE-2026-62300 CVSS Score: 6.5 Published: 2026-11-05 CVE-2026-62300 is an uncontrolled resource consumption vulnerability (C
CVE-2026-62300: Uncontrolled Resource Consumption in filecoin-pin Daemon
Vulnerability ID: CVE-2026-62300
CVSS Score: 6.5
Published: 2026-11-05
CVE-2026-62300 is an uncontrolled resource consumption vulnerability (CWE-400) affecting the daemon mode of filecoin-pin in versions up to and including 1.1.0. The daemon implements the IPFS Pinning Service API to store content on Filecoin's Proof of Data Possession (PDP) service. Due to the absence of rate limits, concurrency caps, execution timeouts, and Directed Acyclic Graph (DAG) traversal limits, an authenticated userβor an unauthenticated user when authentication is disabledβcan exhaust system resources via crafted POST /pins requests.
TL;DR
The filecoin-pin daemon (<= 1.1.0) lacks concurrency controls, rate limits, and DAG size restrictions on the POST /pins endpoint. Each request spawns an isolated Helia/libp2p node and executes an unbounded recursive DAG traversal, writing incoming blocks directly to disk as CAR files. Attackers can trigger denial of service by exhausting disk space, file descriptors, memory, and CPU.
Technical Details
- CVE ID: CVE-2026-62300 (GHSA-m5ph-mmg5-6w5h)
- Weakness Class: CWE-400: Uncontrolled Resource Consumption
- CVSS v3.1 Score: 6.5 Medium (CVSS:3.1/AV:N/AC:L/PR:L/UI:N/S:U/C:N/I:N/A:H)
- EPSS Score: 0.25% (16.29th percentile)
- Affected Component: filecoin-pin daemon (<= 1.1.0)
- Attack Vector: Network via HTTP POST /pins with large DAG CIDs and custom libp2p origins
- Primary Impact: Host and process Denial of Service via disk, socket, memory, and CPU exhaustion
- CISA KEV Status: Not Listed
Affected Systems
- filecoin-pin (npm package / CLI daemon mode)
-
filecoin-pin: <= 1.1.0 (Fixed in:
1.1.1)
Code Analysis
Commit: 8db22b4
Strengthens the README Beta status block to make clear the pinning server is not intended for production use today, and adds an explicit Known limitations and operational guidance section listing the missing resource controls.
File: README.md
@@ -64,12 +64,32 @@ Use Filecoin Pin programmatically in your Node.js or browser applications. The l
### π‘ IPFS Pinning Server (Daemon Mode)
Run a localhost IPFS Pinning Service API server that implements the [IPFS Pinning Service API specification](https://ipfs.github.io/pinning-services-api-spec/). This allows you to use standard IPFS tooling (like `ipfs pin remote`) while storing data on Filecoin.
-- **Status**: Beta. Works and is tested, but hasn't received as many features as the CLI. State is held in memory and is lost across restarts. If it would benefit your use case, please comment on the [tracking issue](https://github.com/filecoin-project/filecoin-pin/issues/46) so we can be better informed when it comes to prioritizing.
+- **Status**: β οΈ **Beta β not intended for production use.** Works and is tested but does not yet have the resource controls or hardening required to safely serve untrusted (or even semi-trusted) callers. State is held in memory and is lost across restarts. Feature parity with the CLI is partial. If running a pinning server would benefit your use case, please comment on the [tracking issue](https://github.com/filecoin-project/filecoin-pin/issues/46) so we can prioritize.
- **Repository**: This repo (`filecoin-pin server` command in CLI)
- **Usage**: `PRIVATE_KEY=0x... ACCESS_TOKEN=... npx filecoin-pin server` (or use session key auth β see [Configuration](#configuration))
- **Authentication**: The server refuses to start unless an access token is configured via `--access-token` / `ACCESS_TOKEN`. Clients then authenticate with `Authorization: Bearer <token>` on every request except `GET /`. To run the server open to all requests (not recommended), pass `--allow-no-auth` / `ALLOW_NO_AUTH=true`.
- **`delegates` is always empty**: Each pin spins up its own short-lived Helia node that is stopped as soon as the pin operation finishes, so there is no long-lived node to advertise. The `delegates` array in pin responses is therefore always `[]`.
+#### β οΈ Known limitations and operational guidance
+
+The pinning server is currently safe to run only in trusted, single-operator environments. Specifically, **it does not enforce** any of the following:
+
+- Per-request, per-user, or global rate limits on `POST /pins`
+- Per-user quotas (active pins, total bytes pinned, transfer)
+- Maximum DAG byte count, block count, or traversal depth
+- Traversal timeout / `AbortController` on pin operations
+- Concurrency cap across in-flight pin operations
+- Filesystem quotas on the configured `CAR_STORAGE_PATH`
+
+As a result, a single caller can submit a CID resolving to a very large DAG (or supply a reachable `origins` peer that serves one) and exhaust disk, network, CPU, or libp2p resources on the host. Hardening this surface is tracked in [#46](https://github.com/filecoin-project/filecoin-pin/issues/46) and will be a prerequisite for promoting the affordance out of beta.
+
+Until then, operators should:
+
+- **Bind to `localhost`** (the default) and never expose the daemon directly to the public internet.
+- **Treat the `ACCESS_TOKEN` as a single-tenant secret.** Do not share it across users you don't fully trust to behave well; there's no per-token quota to contain misbehavior.
+- **Do not enable `ALLOW_NO_AUTH=true`** outside of disposable local development.
+- **Run on a host with bounded storage** (e.g., a dedicated volume) so a runaway pin can't take down other workloads on the same machine.
+
### π Management Console GUI
Web-based management console for monitoring and managing your Filecoin Pin deployments. This is effectively a Web UI equivalent to the [CLI](#-cli) affordance.
Mitigation Strategies
- Restrict network exposure by binding the filecoin-pin daemon exclusively to localhost (127.0.0.1).
- Enforce strict authentication by requiring a strong ACCESS_TOKEN and never enabling ALLOW_NO_AUTH=true in non-disposable environments.
- Treat the bearer token as a single-tenant secret and do not share it across semi-trusted or untrusted users.
- Deploy a reverse proxy (e.g., Nginx, Envoy) in front of the daemon to enforce request rate limits and concurrent connection caps on POST /pins.
- Isolate CAR_STORAGE_PATH on a dedicated, size-bounded filesystem partition or volume so runaway DAG writes cannot exhaust host root storage.
- Constrain the daemon process using systemd or container cgroup limits (MemoryMax, CPUQuota, LimitNOFILE) and schedule periodic cleanup of orphaned .car files.
Remediation Steps:
- Upgrade filecoin-pin to version 1.1.1 or later to ensure alignment with current upstream documentation and operational guidance.
- Verify daemon startup flags and environment variables to confirm --allow-no-auth / ALLOW_NO_AUTH=true is removed and --host is set to 127.0.0.1.
- Mount a dedicated, quota-restricted disk volume for CAR_STORAGE_PATH.
- If remote access is required, place the daemon behind an Nginx reverse proxy configured with limit_req_zone and limit_conn_zone directives targeting the /pins endpoint.
- Configure a cron job or systemd timer to delete stale partial .car files in CAR_STORAGE_PATH that exceed expected pinning durations.
References
- GitHub Security Advisory GHSA-m5ph-mmg5-6w5h
- Merge commit 8db22b47899deb78dadf415fc477cae4bd6e82c2 documenting limitations and operational guidance
- Commit afa019307db23a703737675e94316edcc6572050 in filecoin-pin
- filecoin-pin v1.1.1 Release
- GitHub Issue #46: Pinning Server Hardening Tracking Issue
- NVD Detail for CVE-2026-62300
- CVE.org Record for CVE-2026-62300
- CVEListV5 JSON Record for CVE-2026-62300
Read the full report for CVE-2026-62300 on our website for more details including interactive diagrams and full exploit analysis.
Originally published by Dev.to Security. Aggregated on AIWithGhost for educational purposes β full credit and traffic to the original publisher.