{"answers":{"affected":"4 open source packages ship an affected version, including @earendil-works/pi-coding-agent and @mariozechner/pi-coding-agent.","exploited":"There is no known exploitation of CVE-2026-54328 in the wild and no public exploit code.","fix":"Upgrade @earendil-works/pi-coding-agent to 0.78.1 or later.","what":"CVE-2026-54328 is a high-severity vulnerability in earendil-works pi, published on 23 Jun 2026. It can only be exploited from the same machine or local network, and only if a user opens a file or follows a link."},"fix_prompt":"Check this codebase for CVE-2026-54328 and fix it if it is affected.\n\nWhat it is: CVE-2026-54328 is a high-severity vulnerability in earendil-works pi, published on 23 Jun 2026. It can only be exploited from the same machine or local network, and only if a user opens a file or follows a link.\nExploitation: There is no known exploitation of CVE-2026-54328 in the wild and no public exploit code.\n\nAffected packages and fixed versions:\n- @earendil-works/pi-coding-agent (npm): affected from 0.74.0; fixed in 0.78.1\n- @earendil-works/pi-coding-agent (npm): affected from 0.74.0; fixed in 0.78.1\n- @mariozechner/pi-coding-agent (npm): affected from 0.50.0 up to 0.73.1; no fix listed\n- @mariozechner/pi-coding-agent (npm): affected from 0.50.0 up to 0.73.1; no fix listed\n\nTask:\n1. Search the dependency manifests and lockfiles (for example package.json, package-lock.json, requirements.txt, poetry.lock, uv.lock, pom.xml, build.gradle, go.mod, Cargo.lock, Gemfile.lock) and any Dockerfiles for the affected packages, including transitive dependencies.\n2. If an affected version is in use, upgrade it to the fixed version for its release line with the project's package manager, so the lockfile is regenerated. Prefer the smallest upgrade that fixes it.\n3. If there is no fix, or the upgrade would break the build, do not guess: explain the risk and the safest workaround instead.\n4. Run the tests and summarise what changed and why.\n5. If nothing in the project is affected, say so and change nothing.\n\nReference: https://insights.sbomify.com/CVE-2026-54328/ (Markdown: https://insights.sbomify.com/CVE-2026-54328/index.md)","id":"CVE-2026-54328","markdown":"https://insights.sbomify.com/CVE-2026-54328/index.md","name":"CVE-2026-54328","record":{"aliases":["GHSA-jfgx-wxx8-mp94","MINI-qrc4-qxgr-hgmx"],"analysis":{"component_type":"developer_tool","fix_type":"upgrade","impacts":["code_execution","privilege_escalation"],"network_reachable":"adjacent_or_local","non_default_config":false,"product_category":"Terminal coding harness","requires_auth":"low_privilege","summary":"Local attackers can execute arbitrary code in victim processes by pre-creating predictable temporary extension paths on shared Linux hosts.","user_interaction":"required","vuln_class":"privilege_escalation"},"analysis_generated_by":"qwen3.8-flash-next","assigner":"GitHub_M","cpe":[],"cvss":{"score":7.3,"severity":"high","source":"cna","vector":"CVSS:3.1/AV:L/AC:L/PR:L/UI:R/S:U/C:H/I:H/A:H","version":"3.1"},"cwes":[{"id":"CWE-379","name":"Creation of Temporary File in Directory with Insecure Permissions"}],"description":"Pi is a minimal terminal coding harness. From 0.74.0 until 0.78.1, Pi versions with temporary npm or git extension package installs used predictable paths under the operating system temporary directory. On Linux-based multi-user systems, a local attacker who can write to the shared temporary directory could prepare the expected package location before another user runs pi with a temporary extension package source. Pi could then load attacker-controlled extension code in the victim user's process.  This vulnerability is fixed in 0.78.1.","ecosystems":["npm"],"exploits":{"exploitdb":0,"first_seen":null,"github_poc":0,"max_poc_stars":null,"metasploit":0,"nuclei":0,"refs":[],"tier":"none_known"},"has_fix":true,"headline":"Pi: Predictable temporary extension install paths allow local privilege escalation on shared Linux hosts","id":"CVE-2026-54328","indexable":true,"kev":null,"kind":"cve","links":{"ecosystem":"npm","product":null,"products":[],"type":"privilege_escalation","year":"2026"},"n_packages":4,"n_references":5,"next":{"headline":"Snipe-IT: Cross-Tenant Accessory Injection in Snipe-IT API","id":"CVE-2026-54329"},"packages":[{"ecosystem":"npm","fixed":["0.78.1"],"introduced":["0.74.0"],"last_affected":[],"package":"@earendil-works/pi-coding-agent","purl":null,"source":"GHSA-jfgx-wxx8-mp94"},{"ecosystem":"npm","fixed":["0.78.1"],"introduced":["0.74.0"],"last_affected":[],"package":"@earendil-works/pi-coding-agent","purl":"pkg:npm/%40earendil-works/pi-coding-agent","source":"GHSA-jfgx-wxx8-mp94"},{"ecosystem":"npm","fixed":[],"introduced":["0.50.0"],"last_affected":["0.73.1"],"package":"@mariozechner/pi-coding-agent","purl":null,"source":"GHSA-jfgx-wxx8-mp94"},{"ecosystem":"npm","fixed":[],"introduced":["0.50.0"],"last_affected":["0.73.1"],"package":"@mariozechner/pi-coding-agent","purl":"pkg:npm/%40mariozechner/pi-coding-agent","source":"GHSA-jfgx-wxx8-mp94"}],"prev":{"headline":"Pi: Race condition in auth.json writes could expose stored credentials","id":"CVE-2026-54327"},"products":["pi"],"published":"2026-06-23","related":[],"sources":[{"class":"attribution","licence":"CVE Terms of Use (MITRE)","name":"CVE List","prefix":"CVE"},{"class":"attribution","licence":"CC BY 4.0","name":"GitHub Advisory Database","prefix":"GHSA"},{"class":"attribution","licence":"CWE Terms of Use","name":"CWE (MITRE)"},{"class":"attribution","licence":"FIRST CVSS licence","name":"CVSS (FIRST)"}],"ssvc":{"automatable":"no","exploitation":"none","technical_impact":"total"},"state":"PUBLISHED","updated":"2026-06-24","vendors":["earendil-works"]},"summary":"Local attackers can execute arbitrary code in victim processes by pre-creating predictable temporary extension paths on shared Linux hosts.","url":"https://insights.sbomify.com/CVE-2026-54328/"}