Skip to content
Heist/ feed
Back to feed
Medium

Part-DB: Spreadsheet Formula Injection in XLSX Part Exports

Type: advisorySources: OSV

Part-DB is an open source inventory management system for electronic components. Prior to version 2.13.2, Part-DB contains a spreadsheet formula injection vulnerability in the part import/export workflow. An authenticated user with permission to import parts can import a CSV file containing formula-prefixed values, such as =1+1, into user-controlled part fields. When the affected part is later exported as an XLSX spreadsheet, Part-DB writes the attacker-controlled value using PhpSpreadsheet's setCellValue() method without neutralising spreadsheet formula characters. As a result, the exported XLSX file contains an executable spreadsheet formula cell rather than a plain text value. If another user exports and opens the spreadsheet, the formula may be evaluated by their spreadsheet software. This issue has been patched in version 2.13.2.

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

Source evidence

Part-DB: Spreadsheet Formula Injection in XLSX Part Exports

core-osv · Original source

Published 23 Oct 2026, 04:05 UTC

Part-DB is an open source inventory management system for electronic components. Prior to version 2.13.2, Part-DB contains a spreadsheet formula injection vulnerability in the part import/export workflow. An authenticated user with permission to import parts can import a CSV file containing formula-prefixed values, such as =1+1, into user-controlled part fields. When the affected part is later exported as an XLSX spreadsheet, Part-DB writes the attacker-controlled value using PhpSpreadsheet's setCellValue() method without neutralising spreadsheet formula characters. As a result, the exported XLSX file contains an executable spreadsheet formula cell rather than a plain text value. If another user exports and opens the spreadsheet, the formula may be evaluated by their spreadsheet software. This issue has been patched in version 2.13.2.

osv:CVE-2026-86020
Complete source record
{
  "id": "04aa9b7060eb0a42344ddd3683932bad58ec5b15c6600ce70d832958f9ba0422",
  "url": "https://osv.dev/vulnerability/CVE-2026-86020",
  "method": "structured",
  "payload": {
    "kind": "advisory",
    "title": "Part-DB: Spreadsheet Formula Injection in XLSX Part Exports",
    "summary": "Part-DB is an open source inventory management system for electronic components. Prior to version 2.13.2, Part-DB contains a spreadsheet formula injection vulnerability in the part import/export workflow. An authenticated user with permission to import parts can import a CSV file containing formula-prefixed values, such as =1+1, into user-controlled part fields. When the affected part is later exported as an XLSX spreadsheet, Part-DB writes the attacker-controlled value using PhpSpreadsheet's setCellValue() method without neutralising spreadsheet formula characters. As a result, the exported XLSX file contains an executable spreadsheet formula cell rather than a plain text value. If another user exports and opens the spreadsheet, the formula may be evaluated by their spreadsheet software. This issue has been patched in version 2.13.2.",
    "evidence": "osv:CVE-2026-86020",
    "products": [],
    "severity": "medium",
    "structured": {
      "id": "CVE-2026-86020",
      "aliases": [
        "CVE-2026-86020",
        "GHSA-hxw4-frfg-f8jw"
      ],
      "metrics": [
        {
          "type": "CVSS_V3",
          "score": "CVSS:3.1/AV:L/AC:L/PR:L/UI:R/S:C/C:L/I:L/A:N"
        }
      ],
      "affected": [
        {
          "ranges": [
            {
              "repo": "https://github.com/part-db/part-db-server",
              "type": "GIT",
              "events": [
                {
                  "introduced": "0"
                },
                {
                  "fixed": "1a8ff831ab5a1135a3f8193e895c424596530051"
                }
              ],
              "database_specific": {
                "extracted_events": [
                  {
                    "range": [
                      {
                        "introduced": "0"
                      },
                      {
                        "fixed": "2.13.2"
                      }
                    ],
                    "source": "AFFECTED_FIELD",
                    "strategy": "StringRangeExpression"
                  },
                  {
                    "range": [
                      {
                        "fixed": "1a8ff831ab5a1135a3f8193e895c424596530051"
                      }
                    ],
                    "source": "REFERENCES_TAG",
                    "original_tag": "v2.13.2"
                  },
                  {
                    "range": [
                      {
                        "introduced": "0"
                      },
                      {
                        "fixed": "2.13.2"
                      }
                    ],
                    "source": "DESCRIPTION"
                  }
                ]
              }
            }
          ],
          "versions": [
            "v2.13.0",
            "v2.12.2",
            "v2.12.1",
            "v2.12.0",
            "v2.11.1",
            "v2.11.0",
            "v2.10.0",
            "v2.9.1",
            "v2.9.0",
            "v2.8.1",
            "v2.8.0",
            "v2.7.1",
            "v2.7.0",
            "v2.6.0",
            "v2.5.1",
            "v2.5.0",
            "v2.4.0",
            "v2.3.0",
            "v2.2.1",
            "v2.2.0",
            "v2.1.2",
            "v2.1.0",
            "v2.1.1",
            "v2.0.2",
            "v2.0.1",
            "v2.0.0",
            "v1.17.4",
            "v1.17.3",
            "v1.17.2",
            "v1.17.1",
            "v1.17.0",
            "v1.16.1",
            "v1.16.0",
            "v1.15.2",
            "v1.15.1",
            "v1.15.0",
            "v1.14.5",
            "v1.12.1",
            "v1.12.0",
            "v1.11.3",
            "v1.11.2",
            "v1.11.1",
            "v1.11.0",
            "v1.10.7",
            "v1.10.6",
            "v1.10.5",
            "v1.10.4",
            "v1.10.3",
            "v1.10.2",
            "v1.10.1",
            "v1.10.0",
            "v1.9.1",
            "v1.9.0",
            "v1.8.2",
            "v1.8.1",
            "v1.8.0",
            "v1.7.3",
            "v1.7.2",
            "v1.7.1",
            "v1.7.0",
            "v1.6.1",
            "v1.6.0",
            "v1.5.2",
            "v1.5.1",
            "v1.5.0",
            "v1.4.2",
            "v1.4.1",
            "v1.4.0",
            "v1.3.3",
            "v1.3.2",
            "v1.3.1",
            "v1.3.0",
            "v1.2.0",
            "v1.1.1",
            "v1.1.0",
            "v1.0.3",
            "v1.0.2",
            "v1.0.1",
            "v1.0.0",
            "v1.0.0-beta.1"
          ],
          "database_specific": {
            "source": "https://storage.googleapis.com/cve-osv-conversion/osv-output/CVE-2026-86020.json"
          }
        }
      ],
      "modified": "2026-10-28T02:30:39.831481560Z",
      "provider": "osv",
      "references": [
        "https://github.com/Part-DB/Part-DB-server/releases/tag/v2.13.2",
        "https://github.com/CVEProject/cvelistV5/tree/main/cves/2026/86xxx/CVE-2026-86020.json",
        "https://github.com/Part-DB/Part-DB-server/security/advisories/GHSA-hxw4-frfg-f8jw",
        "https://nvd.nist.gov/vuln/detail/CVE-2026-86020"
      ],
      "provider_metadata": {
        "cwe_ids": [
          "CWE-1236",
          "CWE-20"
        ],
        "cna_assigner": "GitHub_M",
        "osv_generated_from": "https://github.com/CVEProject/cvelistV5/tree/main/cves/2026/86xxx/CVE-2026-86020.json"
      }
    },
    "related_cves": [
      {
        "value": "CVE-2026-86020",
        "evidence": "/id"
      }
    ],
    "security_relevant": true,
    "severity_evidence": "/severity/0/score"
  },
  "source_id": "core-osv",
  "document_id": 507336,
  "published_at": "2026-10-23T04:05:24.42+00:00"
}