<?xml version='1.0' encoding='UTF-8'?>
<?xml-stylesheet href="/static/style.xsl" type="text/xsl"?>
<rss xmlns:atom="http://www.w3.org/2005/Atom" xmlns:content="http://purl.org/rss/1.0/modules/content/" version="2.0">
  <channel>
    <title>Most recent entries from all</title>
    <link>https://db.gcve.eu</link>
    <description>Contains only the most 10 recent entries.</description>
    <docs>http://www.rssboard.org/rss-specification</docs>
    <generator>python-feedgen</generator>
    <language>en</language>
    <lastBuildDate>Tue, 06 Oct 2026 06:21:14 +0000</lastBuildDate>
    <item>
      <title>GHSA-g72f-jw3w-mgh7 — @openhop/server: Path Traversal in Flow ID File Operations</title>
      <link>https://db.gcve.eu/vuln/ghsa-g72f-jw3w-mgh7</link>
      <description>&lt;p&gt;&lt;strong&gt;Affected:&lt;/strong&gt; npm: @openhop/server&lt;/p&gt;
&lt;p&gt;## Path Traversal in Flow ID File Operations&lt;/p&gt;
&lt;p&gt;### Summary&lt;/p&gt;
&lt;p&gt;`@openhop/server` passes unsanitized HTTP route parameters directly to `path.join()` when constructing filesystem paths for flow YAML files. An unauthenticated attacker who can reach the server can read arbitrary `.yaml` files accessible to the OpenHop process outside the configured flow directory, and can delete arbitrary `.yaml` files at any path reachable by the process. Because CORS is set to `origin: true` (allow all origins), a victim&amp;#39;s browser can be used to exploit the vulnerability against a loopback-bound instance. Docker deployments bind `HOST=0.0.0.0` by default, enabling direct remote exploitation. CVSS Base Score: **8.3 (High)**.&lt;/p&gt;
&lt;p&gt;### Details&lt;/p&gt;
&lt;p&gt;`FlowStore.filePath()` in `packages/server/src/store.ts:52–53` constructs a filesystem path by concatenating the caller-supplied `id` directly into `path.join`:&lt;/p&gt;
&lt;p&gt;```ts
// packages/server/src/store.ts:52-53
private filePath(id: string): string {
  return join(this.dir, `${id}.yaml`)
}
```&lt;/p&gt;
&lt;p&gt;This result is consumed by two sinks:&lt;/p&gt;
&lt;p&gt;- **Read** (`packages/server/src/store.ts:78`): `readFile(this.filePath(id), &amp;#39;utf-8&amp;#39;)`
- **Delete** (`packages/server/src/store.ts:105`): `unlink(this.filePath(id))`&lt;/p&gt;
&lt;p&gt;The `id` value originates from unauthenticated Fastify HTTP route parameters:&lt;/p&gt;
&lt;p&gt;- `GET /api/flows/:id` (`packages/server/src/routes.ts:306`) → `store.get(id)` at line 333–335
- `DELETE /api/flows/:id` (`packages/server/src/routes.ts:509`) → `store.delete(id)` at line 539–541&lt;/p&gt;
&lt;p&gt;Th…&lt;/p&gt;</description>
      <content:encoded>&lt;p&gt;&lt;strong&gt;Affected:&lt;/strong&gt; npm: @openhop/server&lt;/p&gt;
&lt;p&gt;## Path Traversal in Flow ID File Operations&lt;/p&gt;
&lt;p&gt;### Summary&lt;/p&gt;
&lt;p&gt;`@openhop/server` passes unsanitized HTTP route parameters directly to `path.join()` when constructing filesystem paths for flow YAML files. An unauthenticated attacker who can reach the server can read arbitrary `.yaml` files accessible to the OpenHop process outside the configured flow directory, and can delete arbitrary `.yaml` files at any path reachable by the process. Because CORS is set to `origin: true` (allow all origins), a victim&amp;#39;s browser can be used to exploit the vulnerability against a loopback-bound instance. Docker deployments bind `HOST=0.0.0.0` by default, enabling direct remote exploitation. CVSS Base Score: **8.3 (High)**.&lt;/p&gt;
&lt;p&gt;### Details&lt;/p&gt;
&lt;p&gt;`FlowStore.filePath()` in `packages/server/src/store.ts:52–53` constructs a filesystem path by concatenating the caller-supplied `id` directly into `path.join`:&lt;/p&gt;
&lt;p&gt;```ts
// packages/server/src/store.ts:52-53
private filePath(id: string): string {
  return join(this.dir, `${id}.yaml`)
}
```&lt;/p&gt;
&lt;p&gt;This result is consumed by two sinks:&lt;/p&gt;
&lt;p&gt;- **Read** (`packages/server/src/store.ts:78`): `readFile(this.filePath(id), &amp;#39;utf-8&amp;#39;)`
- **Delete** (`packages/server/src/store.ts:105`): `unlink(this.filePath(id))`&lt;/p&gt;
&lt;p&gt;The `id` value originates from unauthenticated Fastify HTTP route parameters:&lt;/p&gt;
&lt;p&gt;- `GET /api/flows/:id` (`packages/server/src/routes.ts:306`) → `store.get(id)` at line 333–335
- `DELETE /api/flows/:id` (`packages/server/src/routes.ts:509`) → `store.delete(id)` at line 539–541&lt;/p&gt;
&lt;p&gt;Th…&lt;/p&gt;</content:encoded>
      <guid isPermaLink="false">https://db.gcve.eu/vuln/ghsa-g72f-jw3w-mgh7</guid>
    </item>
  </channel>
</rss>
