{
  "affected": [
    {
      "database_specific": {
        "source": "https://github.com/github/advisory-database/blob/main/advisories/github-reviewed/2026/06/GHSA-85jm-cwp2-mvpv/GHSA-85jm-cwp2-mvpv.json"
      },
      "package": {
        "ecosystem": "NuGet",
        "name": "CefSharp.Common",
        "purl": "pkg:nuget/CefSharp.Common"
      },
      "ranges": [
        {
          "events": [
            {
              "introduced": "0"
            },
            {
              "fixed": "148.0.90"
            }
          ],
          "type": "ECOSYSTEM"
        }
      ],
      "versions": [
        "100.0.120-pre",
        "100.0.140",
        "100.0.230",
        "101.0.150",
        "101.0.180",
        "102.0.100",
        "102.0.90",
        "103.0.120",
        "103.0.80",
        "103.0.90",
        "104.4.180",
        "104.4.240",
        "105.3.330",
        "105.3.390",
        "106.0.260",
        "106.0.290",
        "107.1.120",
        "107.1.40",
        "107.1.50",
        "107.1.90",
        "108.4.130",
        "109.1.110",
        "110.0.250",
        "110.0.280",
        "110.0.300",
        "111.2.20",
        "111.2.70",
        "112.2.70",
        "112.3.0",
        "113.1.40",
        "113.3.50",
        "114.2.100",
        "114.2.120",
        "115.3.110",
        "115.3.130",
        "116.0.130",
        "116.0.150",
        "116.0.190",
        "116.0.230",
        "117.2.20",
        "117.2.40",
        "118.6.80",
        "119.1.20",
        "119.4.30",
        "120.1.110",
        "120.1.80",
        "120.2.50",
        "120.2.70",
        "121.3.130",
        "121.3.70",
        "122.1.120",
        "123.0.60",
        "124.3.20",
        "124.3.50",
        "124.3.80",
        "125.0.210",
        "126.2.180",
        "126.2.70",
        "127.3.50",
        "128.4.90",
        "129.0.110",
        "130.1.90",
        "131.2.70",
        "131.3.10",
        "131.3.50",
        "132.3.11",
        "133.4.21",
        "134.3.60",
        "134.3.90",
        "135.0.170",
        "135.0.220",
        "136.1.40",
        "137.0.100",
        "138.0.170",
        "138.0.340",
        "139.0.280",
        "140.1.140",
        "141.0.110",
        "143.0.90",
        "144.0.120",
        "144.0.250",
        "144.0.260",
        "144.0.270",
        "144.0.300",
        "145.0.260",
        "146.0.100",
        "146.0.70",
        "147.0.100",
        "31.0.0-pre1",
        "33.0.0",
        "33.0.2",
        "33.1.0-pre01",
        "37.0.0",
        "37.0.0-pre01",
        "37.0.0-pre02",
        "37.0.1",
        "37.0.2",
        "37.0.3",
        "39.0.0",
        "39.0.0-pre01",
        "39.0.0-pre02",
        "39.0.0-pre03",
        "39.0.1",
        "39.0.2",
        "41.0.0",
        "41.0.0-pre01",
        "41.0.1",
        "43.0.0",
        "43.0.0-pre01",
        "43.0.0-pre02",
        "43.0.1",
        "45.0.0",
        "45.0.0-pre01",
        "47.0.0",
        "47.0.0-pre01",
        "47.0.1",
        "47.0.2",
        "47.0.3",
        "47.0.4",
        "49.0.0",
        "49.0.0-pre01",
        "49.0.0-pre02",
        "49.0.1",
        "51.0.0",
        "51.0.0-pre01",
        "51.0.0-pre02",
        "53.0.0",
        "53.0.0-pre01",
        "53.0.1",
        "55.0.0",
        "55.0.0-pre01",
        "57.0.0",
        "57.0.0-pre01",
        "62.0.0-pre01",
        "62.0.0-proprietary-codecs",
        "62.0.0-proprietary-codecs2",
        "63.0.0",
        "63.0.0-pre01",
        "63.0.0-pre02",
        "63.0.0-pre03",
        "63.0.1",
        "63.0.2",
        "63.0.3",
        "65.0.0",
        "65.0.0-pre01",
        "65.0.0-pre02",
        "65.0.1",
        "67.0.0",
        "67.0.0-pre01",
        "69.0.0",
        "69.0.0-pre01",
        "71.0.0",
        "71.0.0-pre01",
        "71.0.1",
        "71.0.2",
        "73.1.120-pre01",
        "73.1.130",
        "75.1.140-pre01",
        "75.1.141",
        "75.1.142",
        "75.1.143",
        "79.1.310-pre",
        "79.1.350",
        "79.1.360",
        "81.3.100",
        "81.3.20-pre",
        "83.3.120-pre",
        "83.4.20",
        "84.3.10-pre",
        "84.4.10",
        "85.3.120-pre",
        "85.3.121",
        "85.3.121-pre",
        "85.3.130",
        "86.0.240-pre",
        "86.0.241",
        "87.1.130-pre",
        "87.1.131-pre",
        "87.1.132",
        "88.2.40-pre",
        "88.2.90",
        "89.0.140-pre",
        "89.0.170",
        "90.5.70-pre",
        "90.6.50",
        "90.6.70",
        "91.1.160",
        "91.1.210",
        "91.1.211",
        "91.1.230",
        "91.1.60-pre",
        "92.0.250-pre",
        "92.0.251",
        "92.0.260",
        "93.1.110-pre",
        "93.1.111",
        "93.1.140",
        "94.3.0-pre",
        "94.4.110",
        "94.4.20",
        "94.4.50",
        "95.7.140-pre",
        "95.7.141",
        "96.0.140-pre",
        "96.0.141",
        "96.0.142",
        "96.0.170",
        "96.0.180",
        "97.1.10-pre",
        "97.1.11",
        "97.1.12",
        "97.1.60",
        "97.1.61",
        "98.1.190",
        "98.1.210",
        "99.2.120",
        "99.2.140",
        "99.2.90"
      ]
    }
  ],
  "aliases": [
    "CVE-2026-48796"
  ],
  "database_specific": {
    "cwe_ids": [
      "CWE-22"
    ],
    "github_reviewed": true,
    "github_reviewed_at": "2026-06-30T18:36:12Z",
    "nvd_published_at": null,
    "severity": "MODERATE"
  },
  "details": "### Summary\n\n`FolderSchemeHandlerFactory` was intended to restrict served files to a configured `rootFolder`, but its path validation used a raw string prefix check. A request could escape to a sibling directory whose full path starts with the root folder path, allowing files outside the configured root to be served.\n\n### Details\n\nIn affected versions, `FolderSchemeHandlerFactory` canonicalized `rootFolder`, decoded the request path, combined it with the root, and then allowed the file when:\n\n```csharp\nfilePath.StartsWith(rootFolder, StringComparison.OrdinalIgnoreCase)\n```\n\nThis does not enforce a directory boundary. For example, `/tmp/app/www2/secret.txt` starts with `/tmp/app/www`, but `www2` is a sibling of `www`, not a child. The same issue applies on Windows, for example `C:\\app\\www2\\secret.txt` starts with `C:\\app\\www`.\n\nThe affected code was reviewed at commit `b5fef3bb4bc58798c95170078c41de92cfe9066e`, assembly version `147.0.100`.\n\n### PoC\n\nSet `rootFolder` to a directory named `www` and create a sibling directory named `www2`:\n\n```text\n<temp>/www/index.html\n<temp>/www2/secret.txt\n```\n\nRegister `FolderSchemeHandlerFactory` for `<temp>/www`, then request:\n\n```text\nhttps://folderschemehandlerfactory.test/..%2fwww2/secret.txt\n```\n\nThe request path is URL-decoded to `../www2/secret.txt`, combined with `<temp>/www`, and canonicalized to:\n\n```text\n<temp>/www2/secret.txt\n```\n\nBecause `<temp>/www2/secret.txt` starts with `<temp>/www` as a string prefix, the affected check passes and `secret.txt` is served from outside `rootFolder`.\n\nExpected vulnerable result: HTTP 200 with the contents of `<temp>/www2/secret.txt`.\n\nExpected fixed result: 404 or equivalent not-found response because the resolved file is outside `rootFolder`.\n\n### Impact\n\nApplications using `FolderSchemeHandlerFactory` for a custom scheme or registered HTTP/HTTPS scheme may expose local files outside the intended served directory. This is most relevant when sensitive sibling directories share the root path prefix, such as `www`/`www2`, `public`/`public_backup`, or `static`/`static-secrets`.\n\nAn attacker must be able to cause the embedded browser to request URLs handled by the affected scheme registration.",
  "id": "GHSA-85jm-cwp2-mvpv",
  "modified": "2026-09-10T03:51:08.931531682Z",
  "published": "2026-06-30T18:36:12Z",
  "references": [
    {
      "type": "WEB",
      "url": "https://github.com/cefsharp/CefSharp/security/advisories/GHSA-85jm-cwp2-mvpv"
    },
    {
      "type": "PACKAGE",
      "url": "https://github.com/cefsharp/CefSharp"
    }
  ],
  "schema_version": "1.9.0",
  "severity": [
    {
      "score": "CVSS:3.1/AV:N/AC:H/PR:N/UI:R/S:U/C:H/I:N/A:N",
      "type": "CVSS_V3"
    }
  ],
  "summary": "CefSharp.Common: `FolderSchemeHandlerFactory` path boundary check can expose files outside the configured root folder"
}