GHSA-Q6VM-XQC9-V3FF
Vulnerability from github – Published: 2026-07-28 20:16 – Updated: 2026-07-28 20:16Unarchive in pkg/utils/zip.go joined each archive entry name with the destination directory via filepath.Join and wrote the result without checking whether the resolved path stayed under the destination. A zip entry named
../../tmp/evil therefore landed at /tmp/evil. An attacker who could control a Package.Spec.Source.URL or Deployment.URL archive could induce the fetcher (running as the per-environment pod's fission-fetcher sidecar) to write
files anywhere that process could reach: into other tenants' /packages/<ns>/ directories, into mounted secret/config volumes, or into the fetcher's own binary.
### Affected
- Project:
github.com/fission/fission - Versions: all up to and including v1.24.0
- Audited commit:
647c141 - Component:
pkg/utils/zip.go(Unarchive) - Configuration: default; triggered when the fetcher downloads and extracts a zip archive
Fix section (paste into the Fix / Patches field)
Fixed in v1.25.0 by:
- PR #3444 (commit
55704aca) —Unarchivenow opens anos.Rooton the destination, validates each archive entry name (rejects absolute paths and..traversal), and refuses symlink entries up front. Theos.Rootconfines everymkdir/createto the destination in the kernel.
Regression coverage: TestUnarchiveZipSlip in pkg/utils/zip_test.go exercises parent-traversal, absolute-path, and symlink entries.
{
"affected": [
{
"database_specific": {
"last_known_affected_version_range": "\u003c= 1.24.0"
},
"package": {
"ecosystem": "Go",
"name": "github.com/fission/fission"
},
"ranges": [
{
"events": [
{
"introduced": "0"
},
{
"fixed": "1.25.0"
}
],
"type": "ECOSYSTEM"
}
]
}
],
"aliases": [
"CVE-2026-50567"
],
"database_specific": {
"cwe_ids": [
"CWE-22"
],
"github_reviewed": true,
"github_reviewed_at": "2026-07-28T20:16:52Z",
"nvd_published_at": "2026-06-10T18:17:13Z",
"severity": "HIGH"
},
"details": "`Unarchive` in `pkg/utils/zip.go` joined each archive entry name with the destination directory via `filepath.Join` and wrote the result without checking whether the resolved path stayed under the destination. A zip entry named\n `../../tmp/evil` therefore landed at `/tmp/evil`. An attacker who could control a `Package.Spec.Source.URL` or `Deployment.URL` archive could induce the fetcher (running as the per-environment pod\u0027s `fission-fetcher` sidecar) to write\n files anywhere that process could reach: into other tenants\u0027 `/packages/\u003cns\u003e/` directories, into mounted secret/config volumes, or into the fetcher\u0027s own binary.\n\n ### Affected\n\n - Project: `github.com/fission/fission`\n - Versions: all up to and including v1.24.0\n - Audited commit: `647c141`\n - Component: `pkg/utils/zip.go` (`Unarchive`)\n - Configuration: default; triggered when the fetcher downloads and extracts a zip archive\n\n Fix section (paste into the Fix / Patches field)\n\n Fixed in [v1.25.0](https://github.com/fission/fission/releases/tag/v1.25.0) by:\n\n - [PR #3444](https://github.com/fission/fission/pull/3444) (commit [`55704aca`](https://github.com/fission/fission/commit/55704aca1b8d6f45bc7c7c2e4805c7e14875ec0f)) \u2014 `Unarchive` now opens an `os.Root` on the destination, validates each\n archive entry name (rejects absolute paths and `..` traversal), and refuses symlink entries up front. The `os.Root` confines every `mkdir` / `create` to the destination in the kernel.\n\n Regression coverage: `TestUnarchiveZipSlip` in `pkg/utils/zip_test.go` exercises parent-traversal, absolute-path, and symlink entries.",
"id": "GHSA-q6vm-xqc9-v3ff",
"modified": "2026-07-28T20:16:52Z",
"published": "2026-07-28T20:16:52Z",
"references": [
{
"type": "WEB",
"url": "https://github.com/fission/fission/security/advisories/GHSA-q6vm-xqc9-v3ff"
},
{
"type": "ADVISORY",
"url": "https://nvd.nist.gov/vuln/detail/CVE-2026-50567"
},
{
"type": "WEB",
"url": "https://github.com/fission/fission/pull/3444"
},
{
"type": "PACKAGE",
"url": "https://github.com/fission/fission"
},
{
"type": "WEB",
"url": "https://github.com/fission/fission/releases/tag/v1.25.0"
}
],
"schema_version": "1.4.0",
"severity": [
{
"score": "CVSS:3.1/AV:N/AC:L/PR:L/UI:N/S:C/C:N/I:H/A:N",
"type": "CVSS_V3"
}
],
"summary": " Fission: Zip Slip in pkg/utils/zip.go:Unarchive allows fetcher to write outside the destination directory"
}
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.