CVE-2026-104025 (GCVE-0-2026-104025)

Vulnerability from cvelistv5 – Published: 2026-10-15 12:00 – Updated: 2026-10-15 13:11 X_Open Source
VLAI
Title
Path traversal in PeaZip object preview allows execution of arbitrary programs via a crafted archive entry name
Summary
Path Traversal (CWE-22) in the execute_obj function of the archive object viewer (peach.pas) in PeaZip 11.2.0 and earlier on Windows allows an attacker who convinces a victim to preview an entry of a crafted archive via the "Preview with... -> Associated application" action (Shift+Ctrl+O) to execute an arbitrary program already present on the victim's system, with no warning dialog. The function validates only outname (PeaZip's own temporary directory) with checkfiledirname, while the string actually executed is the concatenation outname+tempstring; tempstring is taken verbatim from the archive entry name (StringGridList.Cells[12,...]) and is never validated. checkfiledirname (list_utils.pas) rejects control and reserved characters in the file name but performs no ".." path-containment check, so an entry named ../../../../Windows/System32/calc.exe escapes the extraction directory and is passed to cp_open -> ShellExecuteW; the extracting backend (7-Zip) strips the traversal while the opener does not. In addition, the SECEXTCONST dangerous-extension confirmation prompt is implemented only in the double-click handler (grid_obj_open) and not on this preview route, so an executable inside an archive reaches ShellExecuteW unannounced, and where the prompt does fire it names the entry's display name rather than the resolved path that will run. Arbitrary code execution was demonstrated with a proof of concept against official PeaZip builds, confirmed on two archive formats (.zip and .tar) to show the defect is in PeaZip's own path handling and not in a single format parser.
SSVC
Exploitation: none Automatable: no Technical Impact: total
CISA Coordinator · CISA-ADP (v2.0.3)
Decision recorded 2026-10-15 13:11 UTC
CWE
  • CWE-22 - Improper Limitation of a Pathname to a Restricted Directory ('Path Traversal')
  • CWE-693 - Protection Mechanism Failure
Assigner
Secur0 CNA under the INCIBE root
CNA scorecard A 99/100 over 41 records in the last 180 days details
References
Impacted products
Vendor Product Version CPE status
PeaZip PeaZip Affected: 0 , < 11.3.0 (semver)
    cpe:2.3:a:peazip:peazip:*:*:*:*:*:*:windows:*:*
Create a notification for this product.
Date Public
2026-09-03 00:00
Show details on NVD website

{
  "containers": {
    "adp": [
      {
        "metrics": [
          {
            "other": {
              "content": {
                "id": "CVE-2026-104025",
                "options": [
                  {
                    "Exploitation": "none"
                  },
                  {
                    "Automatable": "no"
                  },
                  {
                    "Technical Impact": "total"
                  }
                ],
                "role": "CISA Coordinator",
                "timestamp": "2026-10-15T13:11:06.146482Z",
                "version": "2.0.3"
              },
              "type": "ssvc"
            }
          }
        ],
        "providerMetadata": {
          "dateUpdated": "2026-10-15T13:11:13.654Z",
          "orgId": "134c704f-9b21-4f2e-91b3-4a467353bcc0",
          "shortName": "CISA-ADP"
        },
        "title": "CISA ADP Vulnrichment"
      }
    ],
    "cna": {
      "affected": [
        {
          "collectionURL": "https://github.com/peazip/PeaZip/releases",
          "cpes": [
            "cpe:2.3:a:peazip:peazip:*:*:*:*:*:*:windows:*:*"
          ],
          "defaultStatus": "unaffected",
          "modules": [
            "archive object preview/open (execute_obj in peach.pas)"
          ],
          "platforms": [
            "Windows"
          ],
          "product": "PeaZip",
          "programFiles": [
            "peazip-sources/dev/peach.pas",
            "peazip-sources/dev/list_utils.pas"
          ],
          "programRoutines": [
            {
              "name": "execute_obj"
            },
            {
              "name": "checkfiledirname"
            }
          ],
          "repo": "https://github.com/peazip/PeaZip",
          "vendor": "PeaZip",
          "versions": [
            {
              "lessThan": "11.3.0",
              "status": "affected",
              "version": "0",
              "versionType": "semver"
            }
          ]
        }
      ],
      "credits": [
        {
          "lang": "en",
          "type": "finder",
          "value": "cgomezpob"
        },
        {
          "lang": "en",
          "type": "analyst",
          "value": "Dario Rivas Quero"
        },
        {
          "lang": "en",
          "type": "coordinator",
          "value": "Secur0 CNA"
        }
      ],
      "datePublic": "2026-09-03T00:00:00.000Z",
      "descriptions": [
        {
          "lang": "en",
          "supportingMedia": [
            {
              "base64": false,
              "type": "text/html",
              "value": "\u003cp\u003ePath Traversal (CWE-22) in the \u003ccode\u003eexecute_obj\u003c/code\u003e function of the archive object viewer (\u003ccode\u003epeach.pas\u003c/code\u003e) in PeaZip 11.2.0 and earlier on Windows allows an attacker who convinces a victim to preview an entry of a crafted archive via the \"Preview with... -\u0026gt; Associated application\" action (\u003ccode\u003eShift+Ctrl+O\u003c/code\u003e) to execute an arbitrary program already present on the victim\u0027s system, with no warning dialog. The function validates only \u003ccode\u003eoutname\u003c/code\u003e (PeaZip\u0027s own temporary directory) with \u003ccode\u003echeckfiledirname\u003c/code\u003e, while the string actually executed is the concatenation \u003ccode\u003eoutname+tempstring\u003c/code\u003e; \u003ccode\u003etempstring\u003c/code\u003e is taken verbatim from the archive entry name (\u003ccode\u003eStringGridList.Cells[12,...]\u003c/code\u003e) and is never validated. \u003ccode\u003echeckfiledirname\u003c/code\u003e (\u003ccode\u003elist_utils.pas\u003c/code\u003e) rejects control and reserved characters in the file name but performs no \"..\" path-containment check, so an entry named \u003ccode\u003e../../../../Windows/System32/calc.exe\u003c/code\u003e escapes the extraction directory and is passed to \u003ccode\u003ecp_open\u003c/code\u003e -\u0026gt; \u003ccode\u003eShellExecuteW\u003c/code\u003e; the extracting backend (7-Zip) strips the traversal while the opener does not. In addition, the \u003ccode\u003eSECEXTCONST\u003c/code\u003e dangerous-extension confirmation prompt is implemented only in the double-click handler (\u003ccode\u003egrid_obj_open\u003c/code\u003e) and not on this preview route, so an executable inside an archive reaches \u003ccode\u003eShellExecuteW\u003c/code\u003e unannounced, and where the prompt does fire it names the entry\u0027s display name rather than the resolved path that will run. Arbitrary code execution was demonstrated with a proof of concept against official PeaZip builds, confirmed on two archive formats (.zip and .tar) to show the defect is in PeaZip\u0027s own path handling and not in a single format parser.\u003c/p\u003e"
            }
          ],
          "value": "Path Traversal (CWE-22) in the execute_obj function of the archive object viewer (peach.pas) in PeaZip 11.2.0 and earlier on Windows allows an attacker who convinces a victim to preview an entry of a crafted archive via the \"Preview with... -\u003e Associated application\" action (Shift+Ctrl+O) to execute an arbitrary program already present on the victim\u0027s system, with no warning dialog. The function validates only outname (PeaZip\u0027s own temporary directory) with checkfiledirname, while the string actually executed is the concatenation outname+tempstring; tempstring is taken verbatim from the archive entry name (StringGridList.Cells[12,...]) and is never validated. checkfiledirname (list_utils.pas) rejects control and reserved characters in the file name but performs no \"..\" path-containment check, so an entry named ../../../../Windows/System32/calc.exe escapes the extraction directory and is passed to cp_open -\u003e ShellExecuteW; the extracting backend (7-Zip) strips the traversal while the opener does not. In addition, the SECEXTCONST dangerous-extension confirmation prompt is implemented only in the double-click handler (grid_obj_open) and not on this preview route, so an executable inside an archive reaches ShellExecuteW unannounced, and where the prompt does fire it names the entry\u0027s display name rather than the resolved path that will run. Arbitrary code execution was demonstrated with a proof of concept against official PeaZip builds, confirmed on two archive formats (.zip and .tar) to show the defect is in PeaZip\u0027s own path handling and not in a single format parser."
        }
      ],
      "impacts": [
        {
          "capecId": "CAPEC-126",
          "descriptions": [
            {
              "lang": "en",
              "value": "CAPEC-126 Path Traversal"
            }
          ]
        }
      ],
      "metrics": [
        {
          "cvssV4_0": {
            "Automatable": "NOT_DEFINED",
            "Recovery": "NOT_DEFINED",
            "Safety": "NOT_DEFINED",
            "attackComplexity": "LOW",
            "attackRequirements": "NONE",
            "attackVector": "LOCAL",
            "baseScore": 8.4,
            "baseSeverity": "HIGH",
            "exploitMaturity": "NOT_DEFINED",
            "privilegesRequired": "NONE",
            "providerUrgency": "NOT_DEFINED",
            "subAvailabilityImpact": "NONE",
            "subConfidentialityImpact": "NONE",
            "subIntegrityImpact": "NONE",
            "userInteraction": "ACTIVE",
            "valueDensity": "NOT_DEFINED",
            "vectorString": "CVSS:4.0/AV:L/AC:L/AT:N/PR:N/UI:A/VC:H/VI:H/VA:H/SC:N/SI:N/SA:N",
            "version": "4.0",
            "vulnAvailabilityImpact": "HIGH",
            "vulnConfidentialityImpact": "HIGH",
            "vulnIntegrityImpact": "HIGH",
            "vulnerabilityResponseEffort": "NOT_DEFINED"
          },
          "format": "CVSS",
          "scenarios": [
            {
              "lang": "en",
              "value": "GENERAL"
            }
          ]
        }
      ],
      "problemTypes": [
        {
          "descriptions": [
            {
              "cweId": "CWE-22",
              "description": "CWE-22 Improper Limitation of a Pathname to a Restricted Directory (\u0027Path Traversal\u0027)",
              "lang": "en",
              "type": "CWE"
            },
            {
              "cweId": "CWE-693",
              "description": "CWE-693 Protection Mechanism Failure",
              "lang": "en",
              "type": "CWE"
            }
          ]
        }
      ],
      "providerMetadata": {
        "dateUpdated": "2026-10-15T12:00:49.995Z",
        "orgId": "4daa8cea-433a-44bd-9456-53b127fc289a",
        "shortName": "Secur0"
      },
      "references": [
        {
          "tags": [
            "patch"
          ],
          "url": "https://github.com/peazip/PeaZip/commit/009fc35530e26729863969eddf4c18f1b48331cf"
        },
        {
          "tags": [
            "third-party-advisory",
            "technical-description"
          ],
          "url": "https://secur0.com/en/cna/cve-list/cve-2026-104025-path-traversal-in-peazip-object-preview"
        }
      ],
      "solutions": [
        {
          "lang": "en",
          "supportingMedia": [
            {
              "base64": false,
              "type": "text/html",
              "value": "\u003cp\u003eUpgrade to PeaZip 11.3.0 or higher. The fix sanitizes the archive entry name used to build the executed path (\u003ccode\u003esanitizenamestr\u003c/code\u003e, stripping \u003ccode\u003e../\u003c/code\u003e and \u003ccode\u003e..\\\u003c/code\u003e sequences) and enforces that the resolved path stays inside the extraction directory (\u003ccode\u003esanitizepath\u003c/code\u003e, via \u003ccode\u003eExpandFileName\u003c/code\u003e containment) in \u003ccode\u003eexecute_obj\u003c/code\u003e, and extends the dangerous-extension check to the \"Open/Preview with associated application\" route, not only the double-click event. Fix commit \u003ccode\u003e009fc35\u003c/code\u003e (2026-09-03).\u003c/p\u003e"
            }
          ],
          "value": "Upgrade to PeaZip 11.3.0 or higher. The fix sanitizes the archive entry name used to build the executed path (sanitizenamestr, stripping ../ and ..\\ sequences) and enforces that the resolved path stays inside the extraction directory (sanitizepath, via ExpandFileName containment) in execute_obj, and extends the dangerous-extension check to the \"Open/Preview with associated application\" route, not only the double-click event. Fix commit 009fc35 (2026-09-03)."
        }
      ],
      "source": {
        "discovery": "EXTERNAL"
      },
      "tags": [
        "x_open-source"
      ],
      "title": "Path traversal in PeaZip object preview allows execution of arbitrary programs via a crafted archive entry name",
      "x_generator": {
        "engine": "Vulnogram 1.0.5"
      }
    }
  },
  "cveMetadata": {
    "assignerOrgId": "4daa8cea-433a-44bd-9456-53b127fc289a",
    "assignerShortName": "Secur0",
    "cveId": "CVE-2026-104025",
    "datePublished": "2026-10-15T12:00:49.995Z",
    "dateReserved": "2026-10-01T17:09:25.587Z",
    "dateUpdated": "2026-10-15T13:11:13.654Z",
    "state": "PUBLISHED"
  },
  "dataType": "CVE_RECORD",
  "dataVersion": "5.2",
  "vulnerability-lookup:meta": {
    "nvd": {
      "cve": {
        "affected": [
          {
            "affectedData": [
              {
                "collectionURL": "https://github.com/peazip/PeaZip/releases",
                "cpes": [
                  "cpe:2.3:a:peazip:peazip:*:*:*:*:*:*:windows:*:*"
                ],
                "defaultStatus": "unaffected",
                "modules": [
                  "archive object preview/open (execute_obj in peach.pas)"
                ],
                "platforms": [
                  "Windows"
                ],
                "product": "PeaZip",
                "programFiles": [
                  "peazip-sources/dev/peach.pas",
                  "peazip-sources/dev/list_utils.pas"
                ],
                "programRoutines": [
                  {
                    "name": "execute_obj"
                  },
                  {
                    "name": "checkfiledirname"
                  }
                ],
                "repo": "https://github.com/peazip/PeaZip",
                "vendor": "PeaZip",
                "versions": [
                  {
                    "lessThan": "11.3.0",
                    "status": "affected",
                    "version": "0",
                    "versionType": "semver"
                  }
                ]
              }
            ],
            "source": "4daa8cea-433a-44bd-9456-53b127fc289a"
          }
        ],
        "cveTags": [],
        "descriptions": [
          {
            "lang": "en",
            "value": "Path Traversal (CWE-22) in the execute_obj function of the archive object viewer (peach.pas) in PeaZip 11.2.0 and earlier on Windows allows an attacker who convinces a victim to preview an entry of a crafted archive via the \"Preview with... -\u003e Associated application\" action (Shift+Ctrl+O) to execute an arbitrary program already present on the victim\u0027s system, with no warning dialog. The function validates only outname (PeaZip\u0027s own temporary directory) with checkfiledirname, while the string actually executed is the concatenation outname+tempstring; tempstring is taken verbatim from the archive entry name (StringGridList.Cells[12,...]) and is never validated. checkfiledirname (list_utils.pas) rejects control and reserved characters in the file name but performs no \"..\" path-containment check, so an entry named ../../../../Windows/System32/calc.exe escapes the extraction directory and is passed to cp_open -\u003e ShellExecuteW; the extracting backend (7-Zip) strips the traversal while the opener does not. In addition, the SECEXTCONST dangerous-extension confirmation prompt is implemented only in the double-click handler (grid_obj_open) and not on this preview route, so an executable inside an archive reaches ShellExecuteW unannounced, and where the prompt does fire it names the entry\u0027s display name rather than the resolved path that will run. Arbitrary code execution was demonstrated with a proof of concept against official PeaZip builds, confirmed on two archive formats (.zip and .tar) to show the defect is in PeaZip\u0027s own path handling and not in a single format parser."
          }
        ],
        "id": "CVE-2026-104025",
        "lastModified": "2026-10-15T14:17:13.717",
        "metrics": {
          "cvssMetricV40": [
            {
              "cvssData": {
                "Automatable": "NOT_DEFINED",
                "Recovery": "NOT_DEFINED",
                "Safety": "NOT_DEFINED",
                "attackComplexity": "LOW",
                "attackRequirements": "NONE",
                "attackVector": "LOCAL",
                "availabilityRequirement": "NOT_DEFINED",
                "baseScore": 8.4,
                "baseSeverity": "HIGH",
                "confidentialityRequirement": "NOT_DEFINED",
                "exploitMaturity": "NOT_DEFINED",
                "integrityRequirement": "NOT_DEFINED",
                "modifiedAttackComplexity": "NOT_DEFINED",
                "modifiedAttackRequirements": "NOT_DEFINED",
                "modifiedAttackVector": "NOT_DEFINED",
                "modifiedPrivilegesRequired": "NOT_DEFINED",
                "modifiedSubAvailabilityImpact": "NOT_DEFINED",
                "modifiedSubConfidentialityImpact": "NOT_DEFINED",
                "modifiedSubIntegrityImpact": "NOT_DEFINED",
                "modifiedUserInteraction": "NOT_DEFINED",
                "modifiedVulnAvailabilityImpact": "NOT_DEFINED",
                "modifiedVulnConfidentialityImpact": "NOT_DEFINED",
                "modifiedVulnIntegrityImpact": "NOT_DEFINED",
                "privilegesRequired": "NONE",
                "providerUrgency": "NOT_DEFINED",
                "subAvailabilityImpact": "NONE",
                "subConfidentialityImpact": "NONE",
                "subIntegrityImpact": "NONE",
                "userInteraction": "ACTIVE",
                "valueDensity": "NOT_DEFINED",
                "vectorString": "CVSS:4.0/AV:L/AC:L/AT:N/PR:N/UI:A/VC:H/VI:H/VA:H/SC:N/SI:N/SA:N/E:X/CR:X/IR:X/AR:X/MAV:X/MAC:X/MAT:X/MPR:X/MUI:X/MVC:X/MVI:X/MVA:X/MSC:X/MSI:X/MSA:X/S:X/AU:X/R:X/V:X/RE:X/U:X",
                "version": "4.0",
                "vulnAvailabilityImpact": "HIGH",
                "vulnConfidentialityImpact": "HIGH",
                "vulnIntegrityImpact": "HIGH",
                "vulnerabilityResponseEffort": "NOT_DEFINED"
              },
              "source": "4daa8cea-433a-44bd-9456-53b127fc289a",
              "type": "Secondary"
            }
          ],
          "ssvcV203": [
            {
              "source": "134c704f-9b21-4f2e-91b3-4a467353bcc0",
              "ssvcData": {
                "id": "CVE-2026-104025",
                "options": [
                  {
                    "exploitation": "none"
                  },
                  {
                    "automatable": "no"
                  },
                  {
                    "technicalImpact": "total"
                  }
                ],
                "role": "CISA Coordinator",
                "timestamp": "2026-10-15T13:11:06.146482Z",
                "version": "2.0.3"
              }
            }
          ]
        },
        "published": "2026-10-15T13:17:10.617",
        "references": [
          {
            "source": "4daa8cea-433a-44bd-9456-53b127fc289a",
            "url": "https://github.com/peazip/PeaZip/commit/009fc35530e26729863969eddf4c18f1b48331cf"
          },
          {
            "source": "4daa8cea-433a-44bd-9456-53b127fc289a",
            "url": "https://secur0.com/en/cna/cve-list/cve-2026-104025-path-traversal-in-peazip-object-preview"
          }
        ],
        "sourceIdentifier": "4daa8cea-433a-44bd-9456-53b127fc289a",
        "vulnStatus": "Received",
        "weaknesses": [
          {
            "description": [
              {
                "lang": "en",
                "value": "CWE-22"
              },
              {
                "lang": "en",
                "value": "CWE-693"
              }
            ],
            "source": "4daa8cea-433a-44bd-9456-53b127fc289a",
            "type": "Secondary"
          }
        ]
      }
    },
    "vulnrichment": {
      "containers": {
        "adp": [
          {
            "metrics": [
              {
                "other": {
                  "content": {
                    "id": "CVE-2026-104025",
                    "options": [
                      {
                        "Exploitation": "none"
                      },
                      {
                        "Automatable": "no"
                      },
                      {
                        "Technical Impact": "total"
                      }
                    ],
                    "role": "CISA Coordinator",
                    "timestamp": "2026-10-15T13:11:06.146482Z",
                    "version": "2.0.3"
                  },
                  "type": "ssvc"
                }
              }
            ],
            "providerMetadata": {
              "dateUpdated": "2026-10-15T13:11:10.013Z",
              "orgId": "134c704f-9b21-4f2e-91b3-4a467353bcc0",
              "shortName": "CISA-ADP"
            },
            "title": "CISA ADP Vulnrichment"
          }
        ],
        "cna": {
          "affected": [
            {
              "collectionURL": "https://github.com/peazip/PeaZip/releases",
              "cpes": [
                "cpe:2.3:a:peazip:peazip:*:*:*:*:*:*:windows:*:*"
              ],
              "defaultStatus": "unaffected",
              "modules": [
                "archive object preview/open (execute_obj in peach.pas)"
              ],
              "platforms": [
                "Windows"
              ],
              "product": "PeaZip",
              "programFiles": [
                "peazip-sources/dev/peach.pas",
                "peazip-sources/dev/list_utils.pas"
              ],
              "programRoutines": [
                {
                  "name": "execute_obj"
                },
                {
                  "name": "checkfiledirname"
                }
              ],
              "repo": "https://github.com/peazip/PeaZip",
              "vendor": "PeaZip",
              "versions": [
                {
                  "lessThan": "11.3.0",
                  "status": "affected",
                  "version": "0",
                  "versionType": "semver"
                }
              ]
            }
          ],
          "credits": [
            {
              "lang": "en",
              "type": "finder",
              "value": "cgomezpob"
            },
            {
              "lang": "en",
              "type": "analyst",
              "value": "Dario Rivas Quero"
            },
            {
              "lang": "en",
              "type": "coordinator",
              "value": "Secur0 CNA"
            }
          ],
          "datePublic": "2026-09-03T00:00:00.000Z",
          "descriptions": [
            {
              "lang": "en",
              "supportingMedia": [
                {
                  "base64": false,
                  "type": "text/html",
                  "value": "\u003cp\u003ePath Traversal (CWE-22) in the \u003ccode\u003eexecute_obj\u003c/code\u003e function of the archive object viewer (\u003ccode\u003epeach.pas\u003c/code\u003e) in PeaZip 11.2.0 and earlier on Windows allows an attacker who convinces a victim to preview an entry of a crafted archive via the \"Preview with... -\u0026gt; Associated application\" action (\u003ccode\u003eShift+Ctrl+O\u003c/code\u003e) to execute an arbitrary program already present on the victim\u0027s system, with no warning dialog. The function validates only \u003ccode\u003eoutname\u003c/code\u003e (PeaZip\u0027s own temporary directory) with \u003ccode\u003echeckfiledirname\u003c/code\u003e, while the string actually executed is the concatenation \u003ccode\u003eoutname+tempstring\u003c/code\u003e; \u003ccode\u003etempstring\u003c/code\u003e is taken verbatim from the archive entry name (\u003ccode\u003eStringGridList.Cells[12,...]\u003c/code\u003e) and is never validated. \u003ccode\u003echeckfiledirname\u003c/code\u003e (\u003ccode\u003elist_utils.pas\u003c/code\u003e) rejects control and reserved characters in the file name but performs no \"..\" path-containment check, so an entry named \u003ccode\u003e../../../../Windows/System32/calc.exe\u003c/code\u003e escapes the extraction directory and is passed to \u003ccode\u003ecp_open\u003c/code\u003e -\u0026gt; \u003ccode\u003eShellExecuteW\u003c/code\u003e; the extracting backend (7-Zip) strips the traversal while the opener does not. In addition, the \u003ccode\u003eSECEXTCONST\u003c/code\u003e dangerous-extension confirmation prompt is implemented only in the double-click handler (\u003ccode\u003egrid_obj_open\u003c/code\u003e) and not on this preview route, so an executable inside an archive reaches \u003ccode\u003eShellExecuteW\u003c/code\u003e unannounced, and where the prompt does fire it names the entry\u0027s display name rather than the resolved path that will run. Arbitrary code execution was demonstrated with a proof of concept against official PeaZip builds, confirmed on two archive formats (.zip and .tar) to show the defect is in PeaZip\u0027s own path handling and not in a single format parser.\u003c/p\u003e"
                }
              ],
              "value": "Path Traversal (CWE-22) in the execute_obj function of the archive object viewer (peach.pas) in PeaZip 11.2.0 and earlier on Windows allows an attacker who convinces a victim to preview an entry of a crafted archive via the \"Preview with... -\u003e Associated application\" action (Shift+Ctrl+O) to execute an arbitrary program already present on the victim\u0027s system, with no warning dialog. The function validates only outname (PeaZip\u0027s own temporary directory) with checkfiledirname, while the string actually executed is the concatenation outname+tempstring; tempstring is taken verbatim from the archive entry name (StringGridList.Cells[12,...]) and is never validated. checkfiledirname (list_utils.pas) rejects control and reserved characters in the file name but performs no \"..\" path-containment check, so an entry named ../../../../Windows/System32/calc.exe escapes the extraction directory and is passed to cp_open -\u003e ShellExecuteW; the extracting backend (7-Zip) strips the traversal while the opener does not. In addition, the SECEXTCONST dangerous-extension confirmation prompt is implemented only in the double-click handler (grid_obj_open) and not on this preview route, so an executable inside an archive reaches ShellExecuteW unannounced, and where the prompt does fire it names the entry\u0027s display name rather than the resolved path that will run. Arbitrary code execution was demonstrated with a proof of concept against official PeaZip builds, confirmed on two archive formats (.zip and .tar) to show the defect is in PeaZip\u0027s own path handling and not in a single format parser."
            }
          ],
          "impacts": [
            {
              "capecId": "CAPEC-126",
              "descriptions": [
                {
                  "lang": "en",
                  "value": "CAPEC-126 Path Traversal"
                }
              ]
            }
          ],
          "metrics": [
            {
              "cvssV4_0": {
                "Automatable": "NOT_DEFINED",
                "Recovery": "NOT_DEFINED",
                "Safety": "NOT_DEFINED",
                "attackComplexity": "LOW",
                "attackRequirements": "NONE",
                "attackVector": "LOCAL",
                "baseScore": 8.4,
                "baseSeverity": "HIGH",
                "exploitMaturity": "NOT_DEFINED",
                "privilegesRequired": "NONE",
                "providerUrgency": "NOT_DEFINED",
                "subAvailabilityImpact": "NONE",
                "subConfidentialityImpact": "NONE",
                "subIntegrityImpact": "NONE",
                "userInteraction": "ACTIVE",
                "valueDensity": "NOT_DEFINED",
                "vectorString": "CVSS:4.0/AV:L/AC:L/AT:N/PR:N/UI:A/VC:H/VI:H/VA:H/SC:N/SI:N/SA:N",
                "version": "4.0",
                "vulnAvailabilityImpact": "HIGH",
                "vulnConfidentialityImpact": "HIGH",
                "vulnIntegrityImpact": "HIGH",
                "vulnerabilityResponseEffort": "NOT_DEFINED"
              },
              "format": "CVSS",
              "scenarios": [
                {
                  "lang": "en",
                  "value": "GENERAL"
                }
              ]
            }
          ],
          "problemTypes": [
            {
              "descriptions": [
                {
                  "cweId": "CWE-22",
                  "description": "CWE-22 Improper Limitation of a Pathname to a Restricted Directory (\u0027Path Traversal\u0027)",
                  "lang": "en",
                  "type": "CWE"
                },
                {
                  "cweId": "CWE-693",
                  "description": "CWE-693 Protection Mechanism Failure",
                  "lang": "en",
                  "type": "CWE"
                }
              ]
            }
          ],
          "providerMetadata": {
            "dateUpdated": "2026-10-15T12:00:49.995Z",
            "orgId": "4daa8cea-433a-44bd-9456-53b127fc289a",
            "shortName": "Secur0"
          },
          "references": [
            {
              "tags": [
                "patch"
              ],
              "url": "https://github.com/peazip/PeaZip/commit/009fc35530e26729863969eddf4c18f1b48331cf"
            },
            {
              "tags": [
                "third-party-advisory",
                "technical-description"
              ],
              "url": "https://secur0.com/en/cna/cve-list/cve-2026-104025-path-traversal-in-peazip-object-preview"
            }
          ],
          "solutions": [
            {
              "lang": "en",
              "supportingMedia": [
                {
                  "base64": false,
                  "type": "text/html",
                  "value": "\u003cp\u003eUpgrade to PeaZip 11.3.0 or higher. The fix sanitizes the archive entry name used to build the executed path (\u003ccode\u003esanitizenamestr\u003c/code\u003e, stripping \u003ccode\u003e../\u003c/code\u003e and \u003ccode\u003e..\\\u003c/code\u003e sequences) and enforces that the resolved path stays inside the extraction directory (\u003ccode\u003esanitizepath\u003c/code\u003e, via \u003ccode\u003eExpandFileName\u003c/code\u003e containment) in \u003ccode\u003eexecute_obj\u003c/code\u003e, and extends the dangerous-extension check to the \"Open/Preview with associated application\" route, not only the double-click event. Fix commit \u003ccode\u003e009fc35\u003c/code\u003e (2026-09-03).\u003c/p\u003e"
                }
              ],
              "value": "Upgrade to PeaZip 11.3.0 or higher. The fix sanitizes the archive entry name used to build the executed path (sanitizenamestr, stripping ../ and ..\\ sequences) and enforces that the resolved path stays inside the extraction directory (sanitizepath, via ExpandFileName containment) in execute_obj, and extends the dangerous-extension check to the \"Open/Preview with associated application\" route, not only the double-click event. Fix commit 009fc35 (2026-09-03)."
            }
          ],
          "source": {
            "discovery": "EXTERNAL"
          },
          "tags": [
            "x_open-source"
          ],
          "title": "Path traversal in PeaZip object preview allows execution of arbitrary programs via a crafted archive entry name",
          "x_generator": {
            "engine": "Vulnogram 1.0.5"
          }
        }
      },
      "cveMetadata": {
        "assignerOrgId": "4daa8cea-433a-44bd-9456-53b127fc289a",
        "assignerShortName": "Secur0",
        "cveId": "CVE-2026-104025",
        "datePublished": "2026-10-15T12:00:49.995Z",
        "dateReserved": "2026-10-01T17:09:25.587Z",
        "dateUpdated": "2026-10-15T13:11:13.654Z",
        "state": "PUBLISHED"
      },
      "dataType": "CVE_RECORD",
      "dataVersion": "5.2"
    }
  }
}



Log in or create an account to share your comment.




Tags
Taxonomy of the tags.


Loading…

Loading…

Loading…

Drag nodes to arrange them. Double-click a related vulnerability to open it, or a source to visit its link. The Physics button on the left tunes the layout and the simulation; the legend at the bottom left hides or shows nodes by kind and by sighting type.

Forecast uses a logistic model when the trend is rising, or an exponential decay model when the trend is falling. Fitted via linearized least squares.

Sightings

Author Source Type Date Other

Nomenclature

  • Seen: The vulnerability was mentioned, discussed, or observed by the user.
  • Confirmed: The vulnerability has been validated from an analyst's perspective.
  • Published Proof of Concept: A public proof of concept is available for this vulnerability.
  • Exploited: The vulnerability was observed as exploited by the user who reported the sighting.
  • Patched: The vulnerability was observed as successfully patched by the user who reported the sighting.
  • Not exploited: The vulnerability was not observed as exploited by the user who reported the sighting.
  • Not confirmed: The user expressed doubt about the validity of the vulnerability.
  • Not patched: The vulnerability was not observed as successfully patched by the user who reported the sighting.
Vulnerability timeline

Sightings and recorded dates, grouped by day · UTC

JSON
Events included in the timeline

Loading timeline…


    Loading…

    Loading…

    Loading…

    Related by attack behaviour

    Vulnerabilities whose description is nearest to this one in the vector space of the CIRCL/vulnerability-attack-technique-biencoder model. This is a similarity search over the bi-encoder space (plain cosine), not a classification, and it has no measured accuracy.