<?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://vulnerability.circl.lu</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>Thu, 01 Oct 2026 04:18:18 +0000</lastBuildDate>
    <item>
      <title>cnvd-2026-16597</title>
      <link>https://vulnerability.circl.lu/vuln/cnvd-2026-16597</link>
      <description>cnvd-2026-16597</description>
      <guid isPermaLink="false">https://vulnerability.circl.lu/vuln/cnvd-2026-16597</guid>
    </item>
    <item>
      <title>fkie_cve-2026-31817</title>
      <link>https://vulnerability.circl.lu/vuln/fkie_cve-2026-31817</link>
      <description>&lt;p&gt;OliveTin gives access to predefined shell commands from a web interface. Prior to 3000.11.2, when the saveLogs feature is enabled, OliveTin persists execution log entries to disk. The filename used for these log files is constructed in part from the user-supplied UniqueTrackingId field in the StartAction API request. This value is not validated or sanitized before being used in a file path, allowing an attacker to use directory traversal sequences (e.g., ../../../) to write files to arbitrary locations on the filesystem. This vulnerability is fixed in 3000.11.2.&lt;/p&gt;</description>
      <content:encoded>&lt;p&gt;OliveTin gives access to predefined shell commands from a web interface. Prior to 3000.11.2, when the saveLogs feature is enabled, OliveTin persists execution log entries to disk. The filename used for these log files is constructed in part from the user-supplied UniqueTrackingId field in the StartAction API request. This value is not validated or sanitized before being used in a file path, allowing an attacker to use directory traversal sequences (e.g., ../../../) to write files to arbitrary locations on the filesystem. This vulnerability is fixed in 3000.11.2.&lt;/p&gt;</content:encoded>
      <guid isPermaLink="false">https://vulnerability.circl.lu/vuln/fkie_cve-2026-31817</guid>
    </item>
    <item>
      <title>GHSA-364q-w7vh-vhpc — OliveTin's unsafe parsing of UniqueTrackingId can be used to write files</title>
      <link>https://vulnerability.circl.lu/vuln/ghsa-364q-w7vh-vhpc</link>
      <description>&lt;p&gt;&lt;strong&gt;Affected:&lt;/strong&gt; Go: github.com/OliveTin/OliveTin&lt;/p&gt;
&lt;p&gt;When the `saveLogs` feature is enabled, OliveTin persists execution log entries to disk. The filename used for these log files is constructed in part from the user-supplied `UniqueTrackingId` field in the `StartAction` API request. This value is not validated or sanitized before being used in a file path, allowing an attacker to use directory traversal sequences (e.g., `../../../`) to write files to arbitrary locations on the filesystem.
### Affected Code&lt;/p&gt;
&lt;p&gt;**Entry point — `service/internal/api/api.go` (line 130):**&lt;/p&gt;
&lt;p&gt;The `UniqueTrackingId` from the API request is passed directly to the executor without validation:&lt;/p&gt;
&lt;p&gt;```go
execReq := executor.ExecutionRequest{
    Binding:    pair,
    TrackingID: req.Msg.UniqueTrackingId, // user-controlled, no validation
    // ...
}
```&lt;/p&gt;
&lt;p&gt;**Tracking ID accepted as-is — `service/internal/executor/executor.go` (lines 508–512):**&lt;/p&gt;
&lt;p&gt;The tracking ID is only replaced with a UUID if it is empty or a duplicate. Any other string, including one containing path separators, is accepted:&lt;/p&gt;
&lt;p&gt;```go
_, isDuplicate := e.GetLog(req.TrackingID)&lt;/p&gt;
&lt;p&gt;if isDuplicate || req.TrackingID == &amp;#34;&amp;#34; {
    req.TrackingID = uuid.NewString()
}
```&lt;/p&gt;
&lt;p&gt;**Filename construction — `service/internal/executor/executor.go` (line 1042):**&lt;/p&gt;
&lt;p&gt;The tracking ID is interpolated directly into the log filename:&lt;/p&gt;
&lt;p&gt;```go
filename := fmt.Sprintf(&amp;#34;%v.%v.%v&amp;#34;,
    req.logEntry.ActionTitle,
    req.logEntry.DatetimeStarted.Unix(),
    req.logEntry.ExecutionTrackingID,
)
```&lt;/p&gt;
&lt;p&gt;**File write — `service/internal/ex…&lt;/p&gt;</description>
      <content:encoded>&lt;p&gt;&lt;strong&gt;Affected:&lt;/strong&gt; Go: github.com/OliveTin/OliveTin&lt;/p&gt;
&lt;p&gt;When the `saveLogs` feature is enabled, OliveTin persists execution log entries to disk. The filename used for these log files is constructed in part from the user-supplied `UniqueTrackingId` field in the `StartAction` API request. This value is not validated or sanitized before being used in a file path, allowing an attacker to use directory traversal sequences (e.g., `../../../`) to write files to arbitrary locations on the filesystem.
### Affected Code&lt;/p&gt;
&lt;p&gt;**Entry point — `service/internal/api/api.go` (line 130):**&lt;/p&gt;
&lt;p&gt;The `UniqueTrackingId` from the API request is passed directly to the executor without validation:&lt;/p&gt;
&lt;p&gt;```go
execReq := executor.ExecutionRequest{
    Binding:    pair,
    TrackingID: req.Msg.UniqueTrackingId, // user-controlled, no validation
    // ...
}
```&lt;/p&gt;
&lt;p&gt;**Tracking ID accepted as-is — `service/internal/executor/executor.go` (lines 508–512):**&lt;/p&gt;
&lt;p&gt;The tracking ID is only replaced with a UUID if it is empty or a duplicate. Any other string, including one containing path separators, is accepted:&lt;/p&gt;
&lt;p&gt;```go
_, isDuplicate := e.GetLog(req.TrackingID)&lt;/p&gt;
&lt;p&gt;if isDuplicate || req.TrackingID == &amp;#34;&amp;#34; {
    req.TrackingID = uuid.NewString()
}
```&lt;/p&gt;
&lt;p&gt;**Filename construction — `service/internal/executor/executor.go` (line 1042):**&lt;/p&gt;
&lt;p&gt;The tracking ID is interpolated directly into the log filename:&lt;/p&gt;
&lt;p&gt;```go
filename := fmt.Sprintf(&amp;#34;%v.%v.%v&amp;#34;,
    req.logEntry.ActionTitle,
    req.logEntry.DatetimeStarted.Unix(),
    req.logEntry.ExecutionTrackingID,
)
```&lt;/p&gt;
&lt;p&gt;**File write — `service/internal/ex…&lt;/p&gt;</content:encoded>
      <guid isPermaLink="false">https://vulnerability.circl.lu/vuln/ghsa-364q-w7vh-vhpc</guid>
    </item>
  </channel>
</rss>
