Skip to content
Heist/ feed
Back to feed
Medium

Mastodon's signature-dependent ActivityPub collection responses cached under signature-independent keys (Web Cache Poisoning via `Rails.cache`)

Type: advisorySources: OSV

Mastodon is a free, open-source social network server based on ActivityPub. Prior to versions 4.3.19, 4.4.13, 4.5.6, Mastodon is vulnerable to web cache poisoning via `Rails.cache. When AUTHORIZED_FETCH is enabled, the ActivityPub endpoints for pinned posts and featured hashtags have contents that depend on the account that signed the HTTP request. However, these contents are stored in an internal cache and reused with no regards to the signing actor. As a result, an empty response generated for a blocked user account may be served to requests from legitimate non-blocked actors, or conversely, content intended for non-blocked actors may be returned to blocked actors. This issue has been patched in versions 4.3.19, 4.4.13, 4.5.6.

Products
Not specified
Affected versions
Not specified
Fixed versions
Not specified
CVEs
CVE-2026-25540
Confirmed fixed CVEs
Not specified
Updated in this feed
4 Nov 2026, 18:13 UTC · Revision 1

Source evidence

Mastodon's signature-dependent ActivityPub collection responses cached under signature-independent keys (Web Cache Poisoning via `Rails.cache`)

core-osv · Original source

Published 4 Feb 2026, 21:42 UTC

Mastodon is a free, open-source social network server based on ActivityPub. Prior to versions 4.3.19, 4.4.13, 4.5.6, Mastodon is vulnerable to web cache poisoning via `Rails.cache. When AUTHORIZED_FETCH is enabled, the ActivityPub endpoints for pinned posts and featured hashtags have contents that depend on the account that signed the HTTP request. However, these contents are stored in an internal cache and reused with no regards to the signing actor. As a result, an empty response generated for a blocked user account may be served to requests from legitimate non-blocked actors, or conversely, content intended for non-blocked actors may be returned to blocked actors. This issue has been patched in versions 4.3.19, 4.4.13, 4.5.6.

osv:CVE-2026-25540
Complete source record
{
  "id": "6a280c6150e6e5859e0c13e00bf17b60064e3d4d45f6fc303544102aa1a92eb5",
  "url": "https://osv.dev/vulnerability/CVE-2026-25540",
  "method": "structured",
  "payload": {
    "kind": "advisory",
    "title": "Mastodon's signature-dependent ActivityPub collection responses cached under signature-independent keys (Web Cache Poisoning via `Rails.cache`)",
    "summary": "Mastodon is a free, open-source social network server based on ActivityPub. Prior to versions 4.3.19, 4.4.13, 4.5.6, Mastodon is vulnerable to web cache poisoning via `Rails.cache. When AUTHORIZED_FETCH is enabled, the ActivityPub endpoints for pinned posts and featured hashtags have contents that depend on the account that signed the HTTP request. However, these contents are stored in an internal cache and reused with no regards to the signing actor. As a result, an empty response generated for a blocked user account may be served to requests from legitimate non-blocked actors, or conversely, content intended for non-blocked actors may be returned to blocked actors. This issue has been patched in versions 4.3.19, 4.4.13, 4.5.6.",
    "evidence": "osv:CVE-2026-25540",
    "products": [],
    "severity": "medium",
    "structured": {
      "id": "CVE-2026-25540",
      "aliases": [
        "BIT-mastodon-2026-25540",
        "CVE-2026-25540",
        "GHSA-ccpr-m53r-mfwr"
      ],
      "metrics": [
        {
          "type": "CVSS_V3",
          "score": "CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:L/I:N/A:L"
        }
      ],
      "affected": [
        {
          "ranges": [
            {
              "repo": "https://github.com/mastodon/mastodon",
              "type": "GIT",
              "events": [
                {
                  "introduced": "0"
                },
                {
                  "fixed": "02c9c71294321e35261036a11531a5e42d70aea8"
                },
                {
                  "introduced": "69e14246b838443985a541e97327494b8d2fdffb"
                },
                {
                  "fixed": "3871f3a3996d2832f66b1c219ae2f334e3e4c205"
                },
                {
                  "introduced": "26c78392f88afccebb8a88b68bc9994a9ce12648"
                },
                {
                  "fixed": "e8045de79bf0b445f43a7b7b7e5b38919edd93f6"
                }
              ],
              "database_specific": {
                "extracted_events": [
                  {
                    "cpe": "cpe:2.3:a:joinmastodon:mastodon:*:*:*:*:*:*:*:*",
                    "range": [
                      {
                        "introduced": "0"
                      },
                      {
                        "fixed": "4.3.19"
                      }
                    ],
                    "source": "CPE_RANGE"
                  },
                  {
                    "cpe": "cpe:2.3:a:joinmastodon:mastodon:*:*:*:*:*:*:*:*",
                    "range": [
                      {
                        "introduced": "4.4.0"
                      },
                      {
                        "fixed": "4.4.13"
                      }
                    ],
                    "source": "CPE_RANGE"
                  },
                  {
                    "cpe": "cpe:2.3:a:joinmastodon:mastodon:*:*:*:*:*:*:*:*",
                    "range": [
                      {
                        "introduced": "4.5.0"
                      },
                      {
                        "fixed": "4.5.6"
                      }
                    ],
                    "source": "CPE_RANGE"
                  }
                ]
              }
            }
          ],
          "versions": [
            "v4.3.18",
            "v4.4.12",
            "v4.5.5",
            "v4.5.4",
            "v4.4.11",
            "v4.3.17",
            "v4.5.3",
            "v4.3.16",
            "v4.4.10",
            "v4.5.2",
            "v4.4.9",
            "v4.3.15",
            "v4.5.1",
            "v4.5.0",
            "v4.4.8",
            "v4.3.14",
            "v4.4.7",
            "v4.4.6",
            "v4.4.5",
            "v4.3.13",
            "v4.3.12",
            "v4.4.4",
            "v4.3.11",
            "v4.4.3",
            "v4.3.10",
            "v4.4.2",
            "v4.4.1",
            "v4.4.0",
            "v4.3.9",
            "v4.3.8",
            "v4.3.7",
            "v4.3.6",
            "v4.3.5",
            "v4.3.4",
            "v4.3.3",
            "v4.3.2",
            "v4.3.1",
            "v4.3.0",
            "v4.3.0-rc.1",
            "v4.3.0-beta.2",
            "v4.3.0-beta.1",
            "v4.2.0",
            "v4.2.0-rc2",
            "v4.2.0-rc1",
            "v4.2.0-beta3",
            "v4.2.0-beta2",
            "v4.2.0-beta1",
            "v4.0.2",
            "v4.1.0",
            "v4.1.0rc3",
            "v4.1.0rc2",
            "v4.1.0rc1",
            "v4.0.1",
            "v4.0.0",
            "v4.0.0rc4",
            "v3.5.3",
            "v4.0.0rc3",
            "v4.0.0rc2",
            "v4.0.0rc1",
            "v3.5.2",
            "v3.5.1",
            "v3.5.0",
            "v3.5.0rc3",
            "v3.5.0rc2",
            "v3.5.0rc1",
            "v3.3.0",
            "v3.4.1",
            "v3.4.0",
            "v3.4.0rc2",
            "v3.4.0rc1",
            "v3.3.0rc3",
            "v3.3.0rc2",
            "v3.3.0rc1",
            "v3.2.0",
            "v3.2.0rc2",
            "v3.2.0rc1",
            "v3.1.4",
            "v3.1.3",
            "v3.1.2",
            "v3.0.1",
            "v3.1.1",
            "v3.1.0",
            "v3.1.0rc2",
            "v3.1.0rc1",
            "v3.0.0",
            "v3.0.0rc3",
            "v3.0.0rc2",
            "v3.0.0rc1",
            "v2.9.2",
            "v2.9.1",
            "v2.9.0",
            "v2.9.0rc2",
            "v2.9.0rc1",
            "v2.8.2",
            "v2.8.1",
            "v2.8.0",
            "v2.8.0rc3",
            "v2.8.0rc2",
            "v2.8.0rc1",
            "v2.7.1",
            "v2.7.0",
            "v2.7.0rc3",
            "v2.7.0rc2",
            "v2.7.0rc1",
            "v2.6.1",
            "v2.6.0",
            "v2.6.0rc4",
            "v2.6.0rc3",
            "v2.6.0rc2",
            "v2.6.0rc1",
            "v2.5.0",
            "v2.5.0rc2",
            "v2.5.0rc1",
            "v2.4.3",
            "v2.4.3rc3",
            "v2.4.3rc2",
            "v2.4.3rc1",
            "v2.4.2",
            "v2.4.2rc3",
            "v2.4.2rc2",
            "v2.4.2rc1",
            "v2.4.1",
            "v2.4.1rc4",
            "v2.4.1rc3",
            "v2.4.1rc2",
            "v2.4.1rc1",
            "v2.4.0",
            "v2.4.0rc5",
            "v2.4.0rc4",
            "v2.4.0rc3",
            "v2.4.0rc2",
            "v2.4.0rc1",
            "v2.3.2",
            "v2.3.2rc5",
            "v2.3.2rc4",
            "v2.3.2rc3",
            "v2.3.2rc2",
            "v2.3.2rc1",
            "v2.3.1",
            "v2.3.1rc3",
            "v2.3.1rc2",
            "v2.3.1rc1",
            "v2.3.0",
            "v2.3.0rc3",
            "v2.3.0rc2",
            "v2.3.0rc1",
            "v2.2.0",
            "v2.2.0rc2",
            "v2.2.0rc1",
            "v2.1.3",
            "v2.1.2",
            "v2.1.1",
            "v2.1.0",
            "v2.1.0rc6",
            "v2.1.0rc5",
            "v2.1.0rc4",
            "v2.1.0rc3",
            "v2.1.0rc2",
            "v2.1.0rc1",
            "v2.0.0",
            "v2.0.0rc4",
            "v2.0.0rc3",
            "v2.0.0rc2",
            "v2.0.0rc1",
            "v1.6.1",
            "v1.6.0",
            "v1.6.0rc5",
            "v1.6.0rc4",
            "v1.6.0rc3",
            "v1.6.0rc2",
            "v1.6.0rc1",
            "v1.5.1",
            "v1.5.0",
            "v1.5.0rc3",
            "v1.5.0rc2",
            "v1.5.0rc1",
            "v1.4.7",
            "v1.4.6",
            "v1.4.5",
            "v1.4.4",
            "v1.4.3",
            "v1.4.2",
            "v1.4.1",
            "v1.4rc6",
            "v1.4rc5",
            "v1.4rc4",
            "v1.4rc3",
            "v1.4rc2",
            "v1.4rc1",
            "v1.3.2",
            "v1.3.1",
            "v1.3",
            "v1.2.2",
            "v1.2.1",
            "v1.2",
            "v1.1.2",
            "v1.1.1",
            "v1.1",
            "v1.0",
            "v0.9.9",
            "v0.9",
            "v0.8",
            "v0.7",
            "v0.6",
            "v0.1.2",
            "v0.1.1",
            "v0.1.0"
          ],
          "database_specific": {
            "source": "https://storage.googleapis.com/cve-osv-conversion/osv-output/CVE-2026-25540.json"
          }
        }
      ],
      "modified": "2026-10-28T02:30:38.503698461Z",
      "provider": "osv",
      "references": [
        "https://github.com/CVEProject/cvelistV5/tree/main/cves/2026/25xxx/CVE-2026-25540.json",
        "https://github.com/mastodon/mastodon/security/advisories/GHSA-ccpr-m53r-mfwr",
        "https://nvd.nist.gov/vuln/detail/CVE-2026-25540"
      ],
      "provider_metadata": {
        "cwe_ids": [
          "CWE-524"
        ],
        "cna_assigner": "GitHub_M",
        "osv_generated_from": "https://github.com/CVEProject/cvelistV5/tree/main/cves/2026/25xxx/CVE-2026-25540.json"
      }
    },
    "related_cves": [
      {
        "value": "CVE-2026-25540",
        "evidence": "/id"
      }
    ],
    "security_relevant": true,
    "severity_evidence": "/severity/0/score"
  },
  "source_id": "core-osv",
  "document_id": 505595,
  "published_at": "2026-02-04T21:42:09.46+00:00"
}