Skip to content
Heist/ feed
Back to feed
Medium

Tautulli: Unauthenticated pms_image_proxy endpoint proxies arbitrary HTTP requests through the Plex Media Server

Type: advisorySources: OSV

Tautulli is a Python based monitoring and tracking tool for Plex Media Server. Prior to version 2.17.0, the /pms_image_proxy endpoint accepts a user-supplied img parameter and forwards it to Plex Media Server's /photo/:/ transcode transcoder without authentication and without restricting the scheme or host. The endpoint is intentionally excluded from all authentication checks in webstart.py, any value of img beginning with http is passed directly to Plex, this causes the Plex Media Server process, which typically runs on the same host or internal network as Tautulli, with access to RFC-1918 address space, to issue an outbound HTTP request to any attacker-specified URL. This issue has been patched in version 2.17.0.

Products
Not specified
Affected versions
Not specified
Fixed versions
Not specified
CVEs
CVE-2026-31804
Confirmed fixed CVEs
Not specified
Updated in this feed
3 Nov 2026, 09:45 UTC · Revision 1

Source evidence

Tautulli: Unauthenticated pms_image_proxy endpoint proxies arbitrary HTTP requests through the Plex Media Server

core-osv · Original source

Published 30 Mar 2026, 19:42 UTC

Tautulli is a Python based monitoring and tracking tool for Plex Media Server. Prior to version 2.17.0, the /pms_image_proxy endpoint accepts a user-supplied img parameter and forwards it to Plex Media Server's /photo/:/ transcode transcoder without authentication and without restricting the scheme or host. The endpoint is intentionally excluded from all authentication checks in webstart.py, any value of img beginning with http is passed directly to Plex, this causes the Plex Media Server process, which typically runs on the same host or internal network as Tautulli, with access to RFC-1918 address space, to issue an outbound HTTP request to any attacker-specified URL. This issue has been patched in version 2.17.0.

osv:CVE-2026-31804
Complete source record
{
  "id": "0a0d485d658e4b7136f5fec74bca9c9836437038b9c6f2f50aab4eccffa796f2",
  "url": "https://osv.dev/vulnerability/CVE-2026-31804",
  "method": "structured",
  "payload": {
    "kind": "advisory",
    "title": "Tautulli: Unauthenticated pms_image_proxy endpoint proxies arbitrary HTTP requests through the Plex Media Server",
    "summary": "Tautulli is a Python based monitoring and tracking tool for Plex Media Server. Prior to version 2.17.0, the /pms_image_proxy endpoint accepts a user-supplied img parameter and forwards it to Plex Media Server's /photo/:/ transcode transcoder without authentication and without restricting the scheme or host. The endpoint is intentionally excluded from all authentication checks in webstart.py, any value of img beginning with http is passed directly to Plex, this causes the Plex Media Server process, which typically runs on the same host or internal network as Tautulli, with access to RFC-1918 address space, to issue an outbound HTTP request to any attacker-specified URL. This issue has been patched in version 2.17.0.",
    "evidence": "osv:CVE-2026-31804",
    "products": [],
    "severity": "medium",
    "structured": {
      "id": "CVE-2026-31804",
      "aliases": [
        "CVE-2026-31804",
        "GHSA-qj2f-4c4p-wv97"
      ],
      "metrics": [
        {
          "type": "CVSS_V3",
          "score": "CVSS:3.1/AV:N/AC:H/PR:N/UI:N/S:C/C:L/I:N/A:N"
        }
      ],
      "affected": [
        {
          "ranges": [
            {
              "repo": "https://github.com/tautulli/tautulli",
              "type": "GIT",
              "events": [
                {
                  "introduced": "0"
                },
                {
                  "fixed": "5610c167a17b0898d93d0588a0df81c03306ac52"
                }
              ],
              "database_specific": {
                "extracted_events": [
                  {
                    "range": [
                      {
                        "introduced": "0"
                      },
                      {
                        "fixed": "2.17.0"
                      }
                    ],
                    "source": "AFFECTED_FIELD",
                    "strategy": "StringRangeExpression"
                  },
                  {
                    "range": [
                      {
                        "fixed": "5610c167a17b0898d93d0588a0df81c03306ac52"
                      }
                    ],
                    "source": "REFERENCES_TAG",
                    "original_tag": "v2.17.0"
                  },
                  {
                    "cpe": "cpe:2.3:a:tautulli:tautulli:*:*:*:*:*:*:*:*",
                    "range": [
                      {
                        "introduced": "0"
                      },
                      {
                        "fixed": "2.17.0"
                      }
                    ],
                    "source": "CPE_RANGE"
                  }
                ]
              }
            }
          ],
          "versions": [
            "v2.16.1",
            "v2.16.0",
            "v2.15.3",
            "v2.15.2",
            "v2.15.1",
            "v2.15.0",
            "v2.14.6",
            "v2.14.5",
            "v2.14.4",
            "v2.14.3",
            "v2.14.2",
            "v2.14.1-beta",
            "v2.14.0-beta",
            "v2.13.4",
            "v2.13.3",
            "v2.13.2",
            "v2.13.1",
            "v2.13.0",
            "v2.12.5",
            "v2.12.4",
            "v2.12.3",
            "v2.12.2",
            "v2.12.1",
            "v2.12.0",
            "v2.12.0-beta",
            "v2.11.1",
            "v2.11.0",
            "v2.10.5",
            "v2.10.4",
            "v2.10.3",
            "v2.10.2",
            "v2.10.1",
            "v2.10.0",
            "v2.9.7",
            "v2.9.6",
            "v2.9.5",
            "v2.9.4",
            "v2.9.3",
            "v2.9.2",
            "v2.9.1",
            "v2.9.0",
            "v2.9.0-beta",
            "v2.8.1",
            "v2.8.0",
            "v2.8.0-beta",
            "v2.7.7",
            "v2.7.6",
            "v2.7.5",
            "v2.7.4",
            "v2.7.3",
            "v2.7.2",
            "v2.7.1",
            "v2.7.0",
            "v2.7.0-beta",
            "v2.6.10",
            "v2.6.9",
            "v2.6.8",
            "v2.6.7",
            "v2.6.6",
            "v2.6.5",
            "v2.6.4",
            "v2.6.3",
            "v2.6.2",
            "v2.6.1",
            "v2.6.0",
            "v2.5.6",
            "v2.6.0-beta",
            "v2.5.5",
            "v2.5.4",
            "v2.5.3",
            "v2.5.2",
            "v2.5.2-beta",
            "v2.5.1-beta",
            "v2.5.0-beta",
            "v2.1.38",
            "v2.1.37",
            "v2.1.36-beta",
            "v2.1.35-beta",
            "v2.1.34",
            "v2.1.33",
            "v2.1.32",
            "v2.1.31",
            "v2.1.31-beta",
            "v2.1.30-beta",
            "v2.1.29-beta",
            "v2.1.28",
            "v2.1.27-beta",
            "v2.1.26",
            "v2.1.25",
            "v2.1.24-beta",
            "v2.1.23-beta",
            "v2.1.22",
            "v2.1.21",
            "v2.1.20",
            "v2.1.20-beta",
            "v2.1.19-beta",
            "v2.1.18",
            "v2.1.17-beta",
            "v2.1.16-beta",
            "v2.1.14",
            "v2.1.13",
            "v2.1.12",
            "v2.1.11-beta",
            "v2.1.10-beta",
            "v2.1.9",
            "v2.1.8-beta",
            "v2.1.7-beta",
            "v2.1.6-beta",
            "v2.1.5-beta",
            "v2.1.4",
            "v2.1.3-beta",
            "v2.1.2-beta",
            "v2.1.1-beta",
            "v2.1.0-beta",
            "v2.0.23-beta",
            "v2.0.22",
            "v2.0.22-beta",
            "v2.0.21-beta",
            "v2.0.20-beta",
            "v2.0.19-beta",
            "v2.0.18-beta",
            "v2.0.17-beta",
            "v2.0.16-beta",
            "v2.0.15-beta",
            "v2.0.14-beta",
            "v2.0.13-beta",
            "v2.0.12-beta",
            "v2.0.11-beta",
            "v2.0.10-beta",
            "v2.0.9-beta",
            "v2.0.8-beta",
            "v2.0.7-beta",
            "v2.0.6-beta",
            "v2.0.5-beta",
            "v2.0.4-beta",
            "v2.0.3-beta",
            "v2.0.2-beta",
            "v2.0.1-beta",
            "v2.0.0-beta",
            "v1.4.25",
            "v1.4.24",
            "v1.4.23",
            "v1.4.22",
            "v1.4.21",
            "v1.4.20",
            "v1.4.19",
            "v1.4.18",
            "v1.4.17",
            "v1.4.16",
            "v1.4.15",
            "v1.4.14",
            "v1.4.13",
            "v1.1.3",
            "v1.1.2",
            "v1.1.1",
            "v1.1.0",
            "v1.0"
          ],
          "database_specific": {
            "source": "https://storage.googleapis.com/cve-osv-conversion/osv-output/CVE-2026-31804.json"
          }
        }
      ],
      "modified": "2026-10-28T02:30:27.945319018Z",
      "provider": "osv",
      "references": [
        "https://github.com/Tautulli/Tautulli/releases/tag/v2.17.0",
        "https://github.com/CVEProject/cvelistV5/tree/main/cves/2026/31xxx/CVE-2026-31804.json",
        "https://github.com/Tautulli/Tautulli/security/advisories/GHSA-qj2f-4c4p-wv97",
        "https://nvd.nist.gov/vuln/detail/CVE-2026-31804"
      ],
      "provider_metadata": {
        "cwe_ids": [
          "CWE-918"
        ],
        "cna_assigner": "GitHub_M",
        "osv_generated_from": "https://github.com/CVEProject/cvelistV5/tree/main/cves/2026/31xxx/CVE-2026-31804.json"
      }
    },
    "related_cves": [
      {
        "value": "CVE-2026-31804",
        "evidence": "/id"
      }
    ],
    "security_relevant": true,
    "severity_evidence": "/severity/0/score"
  },
  "source_id": "core-osv",
  "document_id": 494299,
  "published_at": "2026-03-30T19:42:09.704+00:00"
}