---
id: "CVE-2026-112779"
kind: "vulnerability"
aliases: ["CVE-2026-112779"]
title: "Grav API plugin: unauthenticated requests exhaust disk and bypass page rules"
severity: "medium"
cvss: 9.8
epss: null
exploited: false
status: "resolved"
category: "package"
products: [{"name": "grav-plugin-api", "fixed": ["1.0.42"], "affected": ">= 1.0.16, < 1.0.42", "ecosystem": "composer"}]
ecosystems: []
tags: ["api-plugin", "grav", "grav-plugin-api", "package", "php", "self-hosted"]
not_affected_if: ["api-plugin-disabled", "api-plugin-not-installed", "plugin-version-outside-range"]
published_at: "2026-10-19T20:17:55+00:00"
first_seen_at: "2026-10-23T21:57:19+00:00"
updated_at: "2026-10-23T23:24:23+00:00"
sources: [{"source": "nvd", "url": "https://nvd.nist.gov/vuln/detail/CVE-2026-112779", "first_seen_at": "2026-10-23T21:57:19+00:00"}, {"source": "analyst", "url": null, "first_seen_at": "2026-10-23T23:24:23+00:00"}]
---

# Grav API plugin: unauthenticated requests exhaust disk and bypass page rules

The Grav API plugin caches a full translation dictionary for every language code sent to an unauthenticated endpoint, so small requests can fill disk or APCu memory. Accounts with page-write permission can also copy or overwrite pages that page-level rules should deny.

_Summary, check and fix written by a model from the sources; labelled as such._

## Affected

- composer:grav-plugin-api affected >= 1.0.16, < 1.0.42 fixed 1.0.42

## How to check

Check whether the API plugin is installed and enabled: user/plugins/api/blueprints.yaml (version field), 'bin/gpm index' or Admin > Plugins. Affected: 1.0.40-1.0.41 (anonymous translations cache, GET /api/v1/translations/{lang}); 1.0.16-1.0.41 (sync and batch copy skip page rules, needs api.pages.write). Look for unusually large cache/ directory growth or many /api/v1/translations/<odd-code> requests in access logs.

## Fix

Upgrade grav-plugin-api to 1.0.42 (e.g. bin/gpm update api). If you cannot update, disable the API plugin or block unauthenticated access to /api/v1/translations/ at the web server (inference, not stated by the vendor).

## Timeline

- 2026-10-23T21:57:19+00:00 nvd https://nvd.nist.gov/vuln/detail/CVE-2026-112779
- 2026-10-23T23:24:23+00:00 analyst — Read vendor GHSA-8pcm-97fc-4xwh (published Oct 4, no CVE listed there): fixed in 1.0.42, reported by @ma4ter. Vendor rates Moderate; VulnCheck CNA scores CVSS 4.0 9.3 (availability/unauth DoS plus authenticated rule bypass), so I lowered severity from critical to medium per the vendor's rating; reasonable to treat as high if the site is public. No exploitation or PoC found, no X conversation (count 0).

## Documents

- [advisory] GHSA-8pcm-97fc-4xwh: Grav API plugin translation cache and page rules https://github.com/getgrav/grav/security/advisories/GHSA-8pcm-97fc-4xwh
- [mentions] NVD CVE-2026-112779 https://nvd.nist.gov/vuln/detail/CVE-2026-112779

## From the sources

Grav API plugin (grav-plugin-api) 1.0.40 before 1.0.42 caches a full translation dictionary for every well-formed language code sent to the unauthenticated GET /api/v1/translations/{lang} endpoint, and 1.0.16 before 1.0.42 fails to check target and destination page rules in the sync and batch copy endpoints. Unauthenticated attackers can send small requests that each store about 560 KB to exhaust disk or APCu, while accounts with api.pages.write can overwrite translations or create pages that page-level rules deny.

---

_Free to read at a human pace. An API with keys and an MCP server are in preparation; early access: hello@infrastack.ai_
