coursevault-preview has a path traversal due to improper base-directory boundary validation
Summary
coursevault-preview versions prior to 0.1.1 contain a path traversal vulnerability in the resolveSafe utility. The boundary check used String.prototype.startsWith(baseDir) on a normalized path, which does not enforce a directory boundary. An attacker who controls the relativePath argument to affected CoursevaultPreview methods may be able to read files outside the configured baseDir when a sibling directory exists whose name shares the same string prefix.
Details
The vulnerable code in src/utils/errors.ts:
if (!full.startsWith(base)) { // ← insufficient
throw new Error("Path escapes the base directory");
}
Because the check is a raw string prefix test rather than a path-boundary test, the following bypass is possible:
baseDir = "/srv/courses"
payload = "../courses-admin/config.json"
resolved = "/srv/courses-admin/config.json"
"/srv/courses-admin/config.json".startsWith("/srv/courses") // → true ✗
Any file whose absolute path begins with the baseDir string — including files in sibling directories that share a name prefix — passes the guard and can be accessed by the caller through affected file-access methods.
The fix replaces the check with a separator-aware comparison:
if (full !== base && !full.startsWith(base + sep)) {
throw new Error("Path escapes the base directory");
}
Impact
An application that passes untrusted input as the relativePath argument to affected file-access methods may expose file contents outside the intended directory.
- Attacker control over the
relativePathparameter. - A sibling directory on the filesystem whose name shares a string prefix with
baseDir.
There is no network exposure in the package itself; impact is limited to local file disclosure within the host process's file system permissions.
Software afectado
Haz clic en una tecnología para ver todas sus vulnerabilidades.
| Plataforma | Paquete | Versiones vulnerables | Corregida en |
|---|---|---|---|
| Paquete de npm | coursevault-preview | < 0.1.1 | 0.1.1 |
Referencias
- Vector CVSS
CVSS:3.1/AV:L/AC:H/PR:N/UI:N/S:U/C:H/I:N/A:N- Debilidad (CWE)
CWE-22- Plataforma
- npm
- Paquete
coursevault-preview- Publicada
- 08.04.2026
- Actualizado
- 11.10.2026 10:22
Fuentes y licencias
OSV / GitHub Advisory Database - GHSA-9h9m-rr67-9jpg - CC BY 4.0
Historial de vulnerabilidades: coursevault-preview
Todas las vulnerabilidades publicadas de este paquete (Paquete de npm), de la más reciente a la más antigua. Muestra si es un fallo aislado o un paquete que hay que vigilar.
Esta es la única vulnerabilidad conocida de este paquete.
Identifica las vulnerabilidades de tu aplicación
Con la integración de DockRay y el inventario de software activado, DockRay compara las versiones notificadas de los componentes con las vulnerabilidades conocidas y avisa de las coincidencias confirmadas. La cobertura depende de la tecnología compatible y de los avisos disponibles.