Skip to content
Heist/ feed
Back to feed
High

OneDev: RCE through absolute-path symlink following allows low-privileged users to overwrite arbitrary server via TarUtils.untar

Type: advisorySources: OSV

OneDev is a Git server with CI/CD, kanban, and packages. In versions 15.0.6 and below, TarUtils.untar() creates symbolic links verbatim from TAR entry getLinkName() without validating whether the target is an absolute path. A subsequent file entry in the same archive traverses the symlink, writing to arbitrary server-side locations. This is exploitable by any authenticated user with CI Job write access — no admin interaction required. This is an incomplete fix bypass of CVE-2021-21251 (GHSA-2w6j-wc8c-9mq2): that patch blocked .. path segments but did not address absolute symlink targets. This issue has been fixed in version 15.0.7.

Products
Not specified
Affected versions
Not specified
Fixed versions
Not specified
CVEs
CVE-2026-49248
Confirmed fixed CVEs
Not specified
Updated in this feed
3 Nov 2026, 15:10 UTC · Revision 1

Source evidence

OneDev: RCE through absolute-path symlink following allows low-privileged users to overwrite arbitrary server via TarUtils.untar

core-osv · Original source

Published 18 Jun 2026, 19:54 UTC

OneDev is a Git server with CI/CD, kanban, and packages. In versions 15.0.6 and below, TarUtils.untar() creates symbolic links verbatim from TAR entry getLinkName() without validating whether the target is an absolute path. A subsequent file entry in the same archive traverses the symlink, writing to arbitrary server-side locations. This is exploitable by any authenticated user with CI Job write access — no admin interaction required. This is an incomplete fix bypass of CVE-2021-21251 (GHSA-2w6j-wc8c-9mq2): that patch blocked .. path segments but did not address absolute symlink targets. This issue has been fixed in version 15.0.7.

osv:CVE-2026-49248
Complete source record
{
  "id": "4d7b48b47231b39e5ec1e706cf4dbefddc103f29521ef7bffd3cd22a793e66ec",
  "url": "https://osv.dev/vulnerability/CVE-2026-49248",
  "method": "structured",
  "payload": {
    "kind": "advisory",
    "title": "OneDev: RCE through absolute-path symlink following allows low-privileged users to overwrite arbitrary server via TarUtils.untar",
    "summary": "OneDev is a Git server with CI/CD, kanban, and packages. In versions 15.0.6 and below, TarUtils.untar() creates symbolic links verbatim from TAR entry getLinkName() without validating whether the target is an absolute path. A subsequent file entry in the same archive traverses the symlink, writing to arbitrary server-side locations. This is exploitable by any authenticated user with CI Job write access — no admin interaction required. This is an incomplete fix bypass of CVE-2021-21251 (GHSA-2w6j-wc8c-9mq2): that patch blocked .. path segments but did not address absolute symlink targets. This issue has been fixed in version 15.0.7.",
    "evidence": "osv:CVE-2026-49248",
    "products": [],
    "severity": "high",
    "structured": {
      "id": "CVE-2026-49248",
      "aliases": [
        "CVE-2026-49248",
        "GHSA-55g8-94r5-cj37"
      ],
      "metrics": [
        {
          "type": "CVSS_V4",
          "score": "CVSS:4.0/AV:N/AC:L/AT:N/PR:L/UI:N/VC:N/VI:H/VA:N/SC:N/SI:H/SA:N"
        }
      ],
      "affected": [
        {
          "ranges": [
            {
              "repo": "https://github.com/theonedev/onedev",
              "type": "GIT",
              "events": [
                {
                  "introduced": "0"
                },
                {
                  "fixed": "5305a2a5b11f968b13738b54cb78c9065be5ef34"
                },
                {
                  "fixed": "4f8684acebc4bfeefd3c7e23a34a4fd591cb27ad"
                }
              ],
              "database_specific": {
                "extracted_events": [
                  {
                    "range": [
                      {
                        "introduced": "0"
                      },
                      {
                        "fixed": "15.0.7"
                      }
                    ],
                    "source": "AFFECTED_FIELD",
                    "strategy": "StringRangeExpression"
                  },
                  {
                    "range": [
                      {
                        "fixed": "4f8684acebc4bfeefd3c7e23a34a4fd591cb27ad"
                      }
                    ],
                    "source": "REFERENCES_COMMIT"
                  }
                ]
              }
            }
          ],
          "versions": [
            "v15.0.6",
            "v15.0.5",
            "v15.0.4",
            "v15.0.3",
            "v15.0.2",
            "v15.0.1",
            "v15.0.0",
            "v14.1.7",
            "v14.1.6",
            "v11.1.6",
            "v14.1.5",
            "v14.1.4",
            "v14.1.3",
            "v14.1.2",
            "v14.1.1",
            "v14.1.0",
            "v14.0.8",
            "v14.0.7",
            "v14.0.6",
            "v14.0.5",
            "v14.0.4",
            "v14.0.3",
            "v14.0.2",
            "v14.0.1",
            "v14.0.0",
            "v13.1.7",
            "v13.1.6",
            "v13.1.4",
            "v13.1.3",
            "v13.1.0",
            "v13.0.10",
            "v13.0.9",
            "v13.0.8",
            "v13.0.7",
            "v13.0.6",
            "v13.0.5",
            "v13.0.4",
            "v13.0.3",
            "v13.0.2",
            "v13.0.1",
            "v13.0.0",
            "v12.0.10",
            "v12.0.9",
            "v12.0.8",
            "v12.0.7",
            "v12.0.6",
            "v12.0.5",
            "v12.0.4",
            "v12.0.3",
            "v12.0.2",
            "v12.0.1",
            "v12.0.0",
            "v11.11.1",
            "v11.11.0",
            "v11.10.4",
            "v11.10.3",
            "v11.10.2",
            "v11.10.1",
            "v11.10.0",
            "v11.9.9",
            "v11.9.8",
            "v11.9.7",
            "v11.9.6",
            "v11.9.5",
            "v11.9.4",
            "v11.9.3",
            "v11.9.2",
            "v11.9.1",
            "v11.8.7",
            "v11.8.6",
            "v11.8.5",
            "v11.8.4",
            "v11.8.3",
            "v11.8.2",
            "v11.8.1",
            "v11.8.0",
            "v11.7.6",
            "vv11.7.5",
            "v11.7.4",
            "v11.7.3",
            "v11.7.2",
            "v11.7.1",
            "v11.7.0",
            "v11.6.16",
            "v11.6.15",
            "v11.6.14",
            "v11.6.13",
            "v11.6.12",
            "v11.6.11",
            "v11.6.10",
            "v11.6.9",
            "v11.6.8",
            "v11.6.7",
            "v11.6.6",
            "v11.6.5",
            "v11.6.4",
            "v11.6.3",
            "v11.6.2",
            "v11.6.1",
            "v11.6.0",
            "v11.5.1",
            "v11.5.0",
            "v11.4.1",
            "v11.4.0",
            "v11.3.2",
            "v11.3.1",
            "v11.3.0",
            "v11.2.1",
            "v11.2.0",
            "v11.1.3",
            "v11.1.2",
            "v11.0.2",
            "v11.1.1",
            "v11.1.0",
            "v11.0.9",
            "v11.0.8",
            "v11.0.7",
            "v11.0.6",
            "v11.0.1",
            "v11.0.0",
            "v10.9.6",
            "v10.9.5",
            "v10.9.4",
            "v10.9.3",
            "v10.9.2",
            "v10.9.1",
            "v10.9.0",
            "v10.8.0",
            "v10.7.7",
            "v10.7.6",
            "v10.7.5",
            "v10.7.3",
            "v10.7.2",
            "v10.7.1",
            "v10.7.0",
            "v10.6.0",
            "v10.5.2",
            "v10.5.1",
            "v10.4.0",
            "v10.3.3",
            "v10.3.2",
            "v10.3.1",
            "v10.3.0",
            "v10.2.1",
            "v10.2.0",
            "v10.1.5",
            "v10.1.4",
            "v10.1.3",
            "v10.1.2",
            "v10.1.1",
            "v10.1.0",
            "v10.0.0",
            "v8.6.12",
            "v8.6.11",
            "v8.6.10",
            "v8.6.9",
            "v8.6.8",
            "v8.6.7",
            "v8.6.6",
            "v8.6.5",
            "v8.6.4",
            "v8.6.2",
            "v8.6.1",
            "v8.6.0",
            "v8.5.9",
            "v8.5.8",
            "v8.5.7",
            "v8.5.6",
            "v8.5.5",
            "v8.5.4",
            "v8.5.3",
            "v8.5.2",
            "v8.5.1",
            "v8.5.0",
            "v8.4.2",
            "v8.4.1",
            "v8.4.0",
            "v8.3.8",
            "v8.3.7",
            "v8.3.6",
            "v8.3.5",
            "v8.3.4",
            "v8.3.3",
            "v8.3.2",
            "v8.3.1",
            "v8.3.0",
            "v8.2.8",
            "v8.2.7",
            "v8.2.5",
            "v8.2.4",
            "v8.2.3",
            "v8.2.2",
            "v8.2.1",
            "v8.2.0",
            "v8.1.6",
            "v8.1.5",
            "v8.1.4",
            "v8.1.3",
            "v8.1.2",
            "v8.1.1",
            "v8.1.0",
            "v8.0.8",
            "v8.0.15",
            "v8.0.14",
            "v8.0.13",
            "v8.0.12",
            "v8.0.11",
            "v8.0.10",
            "v8.0.9",
            "v8.0.7",
            "v8.0.6",
            "v8.0.5",
            "v8.0.4",
            "v8.0.3",
            "v8.0.2",
            "v8.0.1",
            "v8.0.0",
            "v7.9.7",
            "v7.9.6",
            "v7.9.5",
            "v7.9.4",
            "v7.9.3",
            "v7.9.2",
            "v7.9.1",
            "v7.9.0",
            "v7.8.15",
            "v7.8.14",
            "v7.8.13",
            "v7.8.12",
            "v7.8.11",
            "v7.8.10",
            "v7.8.9",
            "v7.8.8",
            "v7.8.7",
            "v7.8.6",
            "v7.8.5",
            "v7.8.4",
            "v7.8.3",
            "v7.8.2",
            "v7.8.1",
            "v7.8.0",
            "v7.7.14",
            "v7.7.13",
            "v7.7.12",
            "v7.7.5",
            "v7.7.2",
            "v7.7.1",
            "v7.6.2",
            "v7.6.1",
            "v7.6.0",
            "v7.5.3",
            "v7.5.2",
            "v7.5.1",
            "v7.5.0",
            "v7.4.29",
            "v7.4.28",
            "v7.4.27",
            "v7.4.26",
            "v7.4.25",
            "v7.4.24",
            "v7.4.23",
            "v7.4.22",
            "v7.4.21",
            "v7.4.20",
            "v7.4.19",
            "v7.4.18",
            "v7.4.17",
            "v7.4.16",
            "v7.4.15",
            "v7.4.14",
            "v7.4.13",
            "v7.4.12",
            "v7.4.11",
            "v7.4.10",
            "v7.4.9",
            "v7.4.8",
            "v7.4.7",
            "v7.4.3",
            "v7.4.2",
            "v7.4.1",
            "v7.4.0",
            "v7.3.15",
            "v7.3.14",
            "v7.3.13",
            "v7.3.12",
            "v7.3.11",
            "v7.3.10",
            "v7.3.9",
            "v7.3.8",
            "v7.3.7",
            "v7.3.6",
            "v7.3.5",
            "v7.3.4",
            "v7.3.3",
            "v7.3.2",
            "v7.3.0",
            "v7.2.9",
            "v7.2.8",
            "v7.2.7",
            "v7.2.5",
            "v7.2.4",
            "v7.2.3",
            "v7.2.2",
            "v7.2.1",
            "v7.2.0",
            "v7.1.8",
            "v7.1.7",
            "v7.1.6",
            "v7.1.3",
            "v7.1.2",
            "v7.1.1",
            "v7.1.0",
            "v7.0.3",
            "v7.0.2",
            "v7.0.1",
            "v7.0.0",
            "v6.3.13",
            "v6.3.12",
            "v6.3.11",
            "v6.3.10",
            "v6.3.9",
            "v6.3.8",
            "v6.3.7",
            "v6.3.6",
            "v6.3.5",
            "v6.3.4",
            "v6.3.3",
            "v6.3.2",
            "v6.3.1",
            "v6.3.0",
            "v6.2.4",
            "v6.2.3",
            "v6.2.2",
            "v6.2.1",
            "v6.2.0",
            "v6.1.4",
            "v6.1.3",
            "v6.1.2",
            "v6.1.1",
            "v6.1.0",
            "v6.0.0",
            "v5.4.0",
            "v5.3.3",
            "v5.3.1",
            "v5.3.0",
            "v5.2.2",
            "v5.2.1",
            "v5.2.0",
            "v5.1.0",
            "v5.0.1",
            "v5.0.0",
            "v4.11.0",
            "v4.10.3",
            "v4.9.2",
            "v4.9.1",
            "v4.9.0",
            "v4.8.1",
            "v4.8.0",
            "v4.7.0",
            "v4.6.1",
            "v4.6.0",
            "v4.4.3",
            "v4.4.2",
            "v4.4.1",
            "v4.4.0",
            "v4.3.2",
            "v4.3.0",
            "v4.2.5",
            "v4.2.4",
            "v4.2.3",
            "v4.2.2",
            "v4.2.1",
            "v4.2.0",
            "v4.1.6",
            "v4.1.5",
            "v4.1.4",
            "v4.1.3",
            "v4.1.2",
            "v4.1.0",
            "v4.0.9",
            "v4.0.8",
            "v4.0.7",
            "v4.0.6",
            "v4.0.5",
            "v4.0.4",
            "v4.0.3",
            "v4.0.2",
            "v4.0.1",
            "v4.0.0",
            "v3.2.4",
            "v3.2.3",
            "v3.2.2",
            "v3.2.1",
            "v3.2.0",
            "v3.1.2",
            "v3.1.1",
            "v3.1.0",
            "v3.0.10",
            "v3.0.9",
            "v3.0.8",
            "v3.0.7",
            "v3.0.6",
            "v3.0.5",
            "v3.0.4",
            "2.0.5",
            "2.0.4",
            "2.0.0",
            "2.0-beta-build120",
            "2.0-beta-build119"
          ],
          "database_specific": {
            "source": "https://storage.googleapis.com/cve-osv-conversion/osv-output/CVE-2026-49248.json"
          }
        }
      ],
      "modified": "2026-10-28T02:30:29.709221376Z",
      "provider": "osv",
      "references": [
        "https://github.com/CVEProject/cvelistV5/tree/main/cves/2026/49xxx/CVE-2026-49248.json",
        "https://github.com/theonedev/onedev/security/advisories/GHSA-55g8-94r5-cj37",
        "https://nvd.nist.gov/vuln/detail/CVE-2026-49248",
        "https://github.com/theonedev/onedev/commit/4f8684acebc4bfeefd3c7e23a34a4fd591cb27ad"
      ],
      "provider_metadata": {
        "cwe_ids": [
          "CWE-61"
        ],
        "cna_assigner": "GitHub_M",
        "osv_generated_from": "https://github.com/CVEProject/cvelistV5/tree/main/cves/2026/49xxx/CVE-2026-49248.json"
      }
    },
    "related_cves": [
      {
        "value": "CVE-2026-49248",
        "evidence": "/id"
      }
    ],
    "security_relevant": true,
    "severity_evidence": "/severity/0/score"
  },
  "source_id": "core-osv",
  "document_id": 496690,
  "published_at": "2026-06-18T19:54:01.665+00:00"
}