Skip to content
Heist/ feed
Back to feed
High

Piccolo Admin: Privilege escalation - admin to superuser via session-token disclosure in GET /api/tables/sessions/.

Type: advisorySources: OSV

Piccolo Admin is an admin interface and content management system for Python, built on top of Piccolo. Prior to 1.14.0, piccolo_admin/endpoints.py uses superuser_validators to block PUT, PATCH, DELETE, and POST requests by non-superusers but permits GET requests to configured user and session tables, while piccolo_api/session_auth/tables.py exposes SessionsBase.token because the token column is not secret. In deployments that add the Sessions and User tables to create_admin, a non-superuser administrator can call GET /api/tables/sessions/, obtain another user's live session token, replay it as the Cookie id value to impersonate a superuser, and permanently set superuser to true on the attacker's own row. This issue is fixed in version 1.14.0.

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

Source evidence

Piccolo Admin: Privilege escalation - admin to superuser via session-token disclosure in GET /api/tables/sessions/.

core-osv · Original source

Published 28 Aug 2026, 18:13 UTC

Piccolo Admin is an admin interface and content management system for Python, built on top of Piccolo. Prior to 1.14.0, piccolo_admin/endpoints.py uses superuser_validators to block PUT, PATCH, DELETE, and POST requests by non-superusers but permits GET requests to configured user and session tables, while piccolo_api/session_auth/tables.py exposes SessionsBase.token because the token column is not secret. In deployments that add the Sessions and User tables to create_admin, a non-superuser administrator can call GET /api/tables/sessions/, obtain another user's live session token, replay it as the Cookie id value to impersonate a superuser, and permanently set superuser to true on the attacker's own row. This issue is fixed in version 1.14.0.

osv:CVE-2026-55485
Complete source record
{
  "id": "d2eb2dd3b70e45e3b461eb39a8a93f683743b618b45b3b4f182c3815c7cd8db0",
  "url": "https://osv.dev/vulnerability/CVE-2026-55485",
  "method": "structured",
  "payload": {
    "kind": "advisory",
    "title": "Piccolo Admin: Privilege escalation - admin to superuser via session-token disclosure in GET /api/tables/sessions/.",
    "summary": "Piccolo Admin is an admin interface and content management system for Python, built on top of Piccolo. Prior to 1.14.0, piccolo_admin/endpoints.py uses superuser_validators to block PUT, PATCH, DELETE, and POST requests by non-superusers but permits GET requests to configured user and session tables, while piccolo_api/session_auth/tables.py exposes SessionsBase.token because the token column is not secret. In deployments that add the Sessions and User tables to create_admin, a non-superuser administrator can call GET /api/tables/sessions/, obtain another user's live session token, replay it as the Cookie id value to impersonate a superuser, and permanently set superuser to true on the attacker's own row. This issue is fixed in version 1.14.0.",
    "evidence": "osv:CVE-2026-55485",
    "products": [],
    "severity": "high",
    "structured": {
      "id": "CVE-2026-55485",
      "aliases": [
        "CVE-2026-55485",
        "GHSA-2gh4-jmwq-rr8w",
        "PYSEC-2026-3882"
      ],
      "metrics": [
        {
          "type": "CVSS_V3",
          "score": "CVSS:3.1/AV:N/AC:L/PR:L/UI:N/S:U/C:H/I:H/A:H"
        }
      ],
      "affected": [
        {
          "ranges": [
            {
              "repo": "https://github.com/piccolo-orm/piccolo_admin",
              "type": "GIT",
              "events": [
                {
                  "introduced": "0"
                },
                {
                  "fixed": "d6053adc9f6d2db49cba9bcce97914ac3b2b989a"
                },
                {
                  "fixed": "96ddae12baf12288056cbb0cda6f9e8d7e22c86d"
                }
              ],
              "database_specific": {
                "extracted_events": [
                  {
                    "range": [
                      {
                        "introduced": "0"
                      },
                      {
                        "fixed": "1.14.0"
                      }
                    ],
                    "source": "AFFECTED_FIELD",
                    "strategy": "StringRangeExpression"
                  },
                  {
                    "range": [
                      {
                        "fixed": "96ddae12baf12288056cbb0cda6f9e8d7e22c86d"
                      }
                    ],
                    "source": "REFERENCES_COMMIT"
                  },
                  {
                    "range": [
                      {
                        "fixed": "d6053adc9f6d2db49cba9bcce97914ac3b2b989a"
                      }
                    ],
                    "source": "REFERENCES_TAG",
                    "original_tag": "1.14.0"
                  }
                ]
              }
            },
            {
              "repo": "https://github.com/piccolo-orm/piccolo_api",
              "type": "GIT",
              "events": [
                {
                  "introduced": "0"
                },
                {
                  "fixed": "520ec2567ae1d2cc417c8c0d1ad0ddc05549a8a4"
                },
                {
                  "fixed": "db250a319c36ac44fef67266f9b83f5b2d7fbb89"
                }
              ],
              "database_specific": {
                "extracted_events": [
                  {
                    "range": [
                      {
                        "fixed": "520ec2567ae1d2cc417c8c0d1ad0ddc05549a8a4"
                      }
                    ],
                    "source": "REFERENCES_COMMIT"
                  },
                  {
                    "range": [
                      {
                        "fixed": "db250a319c36ac44fef67266f9b83f5b2d7fbb89"
                      }
                    ],
                    "source": "REFERENCES_TAG",
                    "original_tag": "1.10.0"
                  }
                ]
              }
            }
          ],
          "versions": [
            "1.13.0",
            "1.12.0",
            "1.11.0",
            "1.10.0",
            "1.9.1",
            "1.9.0",
            "1.8.2",
            "1.8.1",
            "1.8.0",
            "1.7.1",
            "1.7.0",
            "1.6.0",
            "1.5.0",
            "1.4.0",
            "1.3.3",
            "1.3.2",
            "1.3.1",
            "1.3.0",
            "1.2.2",
            "1.2.1",
            "1.2.0",
            "1.1.3",
            "1.1.2",
            "1.1.1",
            "1.1.0",
            "1.0.0",
            "0.58.0",
            "0.57.0",
            "0.56.0",
            "0.55.0",
            "0.54.0",
            "0.53.0",
            "0.52.0",
            "0.51.0",
            "0.50.0",
            "0.49.0",
            "0.48.0",
            "0.47.0",
            "0.46.0",
            "0.45.2",
            "0.45.1",
            "0.45.0",
            "0.44.0",
            "0.43.0",
            "0.42.0",
            "0.41.0",
            "0.40.0",
            "0.39.0",
            "0.38.0",
            "0.37.0",
            "0.36.0",
            "0.35.0",
            "0.34.0",
            "0.33.1",
            "0.33.0",
            "0.32.0",
            "0.31.2",
            "0.31.1",
            "0.31.0",
            "0.30.0",
            "0.29.1",
            "0.29.0",
            "0.28.0",
            "0.27.0",
            "0.26.1",
            "0.26.0",
            "0.25.0",
            "0.24.0",
            "0.23.0",
            "0.22.2",
            "0.22.1",
            "0.22.0",
            "0.21.0",
            "0.20.0",
            "0.19.6",
            "0.19.5",
            "0.19.4",
            "0.19.3",
            "0.19.2",
            "0.19.1",
            "0.19.0",
            "0.18.2",
            "0.18.0",
            "0.17.0",
            "0.16.1",
            "0.16.0",
            "0.15.2",
            "0.15.1",
            "0.15.0",
            "0.14.0",
            "0.13.2",
            "0.13.1",
            "0.13.0",
            "0.12.1",
            "0.11.13",
            "0.11.12",
            "0.11.11",
            "0.11.10",
            "0.11.9",
            "0.11.8",
            "0.11.7",
            "0.11.6",
            "0.11.5",
            "0.11.4",
            "0.11.3",
            "0.11.2",
            "0.11.1",
            "0.11.0",
            "0.10.9",
            "0.10.8",
            "0.10.7",
            "0.10.6",
            "0.10.5",
            "0.10.3",
            "0.10.1",
            "0.10.0",
            "0.9.2",
            "0.9.1",
            "0.9.0",
            "0.8.1",
            "0.8.0",
            "0.7.0",
            "0.6.6",
            "0.6.5",
            "0.6.4",
            "0.6.3",
            "0.6.2",
            "0.6.1",
            "0.6.0",
            "0.5.1",
            "0.5.0",
            "0.4.1",
            "0.4.0",
            "0.3.7",
            "0.3.6",
            "0.3.5",
            "0.3.4",
            "0.3.3",
            "0.3.2",
            "0.3.1",
            "0.3.0",
            "0.2.0",
            "0.1.4",
            "0.1.3",
            "0.1.1",
            "1.5.2",
            "1.5.1",
            "1.4.1",
            "0.48.1",
            "0.37.2",
            "0.37.1",
            "0.32.3",
            "0.32.2",
            "0.32.1",
            "0.30.1",
            "0.29.2",
            "0.28.1",
            "0.25.1",
            "0.24.1",
            "0.23.1",
            "0.21.1",
            "0.17.1",
            "0.14.1",
            "0.12.13",
            "0.12.12",
            "0.12.11",
            "0.12.10",
            "0.12.9",
            "0.12.8",
            "0.12.7",
            "0.12.6",
            "0.12.5",
            "0.12.4",
            "0.12.3",
            "0.12.2",
            "0.12.0",
            "0.7.6",
            "0.7.5",
            "0.7.4",
            "0.7.3",
            "0.7.2",
            "0.7.1",
            "0.4.4",
            "0.4.3",
            "0.4.2",
            "0.2.1",
            "0.1.2"
          ],
          "database_specific": {
            "source": "https://storage.googleapis.com/cve-osv-conversion/osv-output/CVE-2026-55485.json"
          }
        }
      ],
      "modified": "2026-10-28T02:30:22.119153777Z",
      "provider": "osv",
      "references": [
        "https://github.com/piccolo-orm/piccolo_admin/releases/tag/1.14.0",
        "https://github.com/piccolo-orm/piccolo_api/releases/tag/1.10.0",
        "https://github.com/CVEProject/cvelistV5/tree/main/cves/2026/55xxx/CVE-2026-55485.json",
        "https://github.com/piccolo-orm/piccolo_admin/security/advisories/GHSA-2gh4-jmwq-rr8w",
        "https://nvd.nist.gov/vuln/detail/CVE-2026-55485",
        "https://github.com/piccolo-orm/piccolo_admin/commit/96ddae12baf12288056cbb0cda6f9e8d7e22c86d",
        "https://github.com/piccolo-orm/piccolo_api/commit/520ec2567ae1d2cc417c8c0d1ad0ddc05549a8a4",
        "https://github.com/piccolo-orm/piccolo_api/pull/331"
      ],
      "provider_metadata": {
        "cwe_ids": [
          "CWE-200",
          "CWE-269",
          "CWE-863"
        ],
        "cna_assigner": "GitHub_M",
        "osv_generated_from": "https://github.com/CVEProject/cvelistV5/tree/main/cves/2026/55xxx/CVE-2026-55485.json"
      }
    },
    "related_cves": [
      {
        "value": "CVE-2026-55485",
        "evidence": "/id"
      }
    ],
    "security_relevant": true,
    "severity_evidence": "/severity/0/score"
  },
  "source_id": "core-osv",
  "document_id": 488219,
  "published_at": "2026-08-28T18:13:23.605+00:00"
}