{"id":"CVE-2026-48049","aliases":["GHSA-rcvq-m9j9-6f4g"],"url":"https://o3.security/vulnerability/CVE-2026-48049","summary":"@hapi/inert: Static-file confinement bypass via sibling-prefix path","details":"### Impact\n`@hapi/inert` serves static files from a directory configured with `path` (in the `directory` / `file` handlers) or `relativeTo` (for `h.file()`), with confinement enforced by the `confine` option (default `true`). Before the patch, the confinement check compared the resolved absolute path against the confine directory using a raw string-prefix test, so a sibling directory whose absolute path begins with the same characters as the confine directory (eg. `/app/static-secret` next to a served `/app/static`) was incorrectly accepted as confined. An unauthenticated remote attacker who knows or guesses such a sibling name can read any file inside it via a request like `/..%2fstatic-secret/secret.txt`, provided the file is readable by the server process. Only applications that happen to have a sibling directory sharing a string prefix with the served directory are exploitable; applications with no such sibling are unaffected.\n\n### Patches\nUpgrade to 7.1.1.\n\n### Workarounds\nFor users who cannot upgrade immediately: ensure the directory served via inert has no sibling whose name starts with the same characters (for example, rename `static-secret/` to `secret/`, or move it to a different parent directory).\n\n### Resources\nPull Request: https://github.com/hapijs/inert/pull/176","published":"2026-07-17T21:03:16.577Z","modified":"2026-10-21T02:58:17.775030895Z","cvss":{"score":5.3,"severity":"MEDIUM","vector":"CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:L/I:N/A:N"},"epss":{"score":0.0059,"percentile":0.45951,"asOf":"2026-09-02"},"cisaKev":null,"exploitsKnown":0,"affectedPackages":[{"ecosystem":"npm","name":"@hapi/inert","fixedVersion":"7.1.1"}],"fix":{"url":"https://github.com/hapijs/inert/commit/bcceb761a43b9d1178eb6bd553e4ad2bb70494d9","label":"hapijs/inert@bcceb76"},"references":[{"type":"WEB","url":"https://github.com/hapijs/inert/releases/tag/v7.1.1"},{"type":"ADVISORY","url":"https://github.com/CVEProject/cvelistV5/tree/main/cves/2026/48xxx/CVE-2026-48049.json"},{"type":"ADVISORY","url":"https://github.com/hapijs/inert/security/advisories/GHSA-rcvq-m9j9-6f4g"},{"type":"ADVISORY","url":"https://nvd.nist.gov/vuln/detail/CVE-2026-48049"},{"type":"FIX","url":"https://github.com/hapijs/inert/commit/bcceb761a43b9d1178eb6bd553e4ad2bb70494d9"},{"type":"FIX","url":"https://github.com/hapijs/inert/pull/176"},{"type":"WEB","url":"https://github.com/hapijs/inert/commit/a65e5b271b5c3405af463469959c5e052eb23a62"},{"type":"PACKAGE","url":"https://github.com/hapijs/inert"}],"provenance":{"sources":["OSV.dev","FIRST.org (EPSS)"],"lastVerified":"2026-10-21T02:58:17.775030895Z"}}