<?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>Fri, 02 Oct 2026 20:22:26 +0000</lastBuildDate>
    <item>
      <title>bdu:2026-14810</title>
      <link>https://vulnerability.circl.lu/vuln/bdu:2026-14810</link>
      <description>bdu:2026-14810</description>
      <guid isPermaLink="false">https://vulnerability.circl.lu/vuln/bdu:2026-14810</guid>
    </item>
    <item>
      <title>fkie_cve-2026-47253</title>
      <link>https://vulnerability.circl.lu/vuln/fkie_cve-2026-47253</link>
      <description>&lt;p&gt;Anyquery is an SQL query engine built on top of SQLite. Prior to 0.4.5, the clear_plugin_cache(plugin) SQL scalar function in namespace/other_functions.go passes the caller-controlled plugin parameter through path.Join to os.RemoveAll without rejecting traversal segments. A low-privileged bearer-token holder can invoke the function through the /v1/query HTTP endpoint, causing path.Join to resolve .. segments outside $XDG_CACHE_HOME/anyquery/plugins/ and os.RemoveAll to recursively delete any reachable directory writable by the Anyquery server process. This causes permanent data loss and denial of service without disclosing file contents. This issue is fixed in version 0.4.5.&lt;/p&gt;</description>
      <content:encoded>&lt;p&gt;Anyquery is an SQL query engine built on top of SQLite. Prior to 0.4.5, the clear_plugin_cache(plugin) SQL scalar function in namespace/other_functions.go passes the caller-controlled plugin parameter through path.Join to os.RemoveAll without rejecting traversal segments. A low-privileged bearer-token holder can invoke the function through the /v1/query HTTP endpoint, causing path.Join to resolve .. segments outside $XDG_CACHE_HOME/anyquery/plugins/ and os.RemoveAll to recursively delete any reachable directory writable by the Anyquery server process. This causes permanent data loss and denial of service without disclosing file contents. This issue is fixed in version 0.4.5.&lt;/p&gt;</content:encoded>
      <guid isPermaLink="false">https://vulnerability.circl.lu/vuln/fkie_cve-2026-47253</guid>
    </item>
    <item>
      <title>GHSA-j9rx-rppg-6hh4 — Anyquery has Path Traversal through `clear_plugin_cache`, Allowing Arbitrary Directory Deletion</title>
      <link>https://vulnerability.circl.lu/vuln/ghsa-j9rx-rppg-6hh4</link>
      <description>&lt;p&gt;&lt;strong&gt;Affected:&lt;/strong&gt; Go: github.com/julien040/anyquery&lt;/p&gt;
&lt;p&gt;# Path Traversal in `clear_plugin_cache` Allows Arbitrary Directory Deletion&lt;/p&gt;
&lt;p&gt;| Field            | Value |
| ---------------- | ----- |
| Repository       | julien040/anyquery |
| Affected version | 0.4.4 |
| Vulnerability    | CWE-22 — Improper Limitation of a Pathname to a Restricted Directory |
| Severity         | High |&lt;/p&gt;
&lt;p&gt;## Summary&lt;/p&gt;
&lt;p&gt;The SQL scalar function `clear_plugin_cache(plugin)` in `namespace/other_functions.go` passes the caller-supplied `plugin` argument directly to `path.Join` and then to `os.RemoveAll`, with only an empty-string check as a guard. Because `path.Join` silently resolves `..` segments, a low-privileged bearer-token holder can submit `SELECT clear_plugin_cache(&amp;#39;../../../../tmp/target&amp;#39;)` to the `/v1/query` HTTP endpoint and delete any directory reachable by the server process. In the verified scenario, a directory outside `$XDG_CACHE_HOME/anyquery/plugins/` was successfully deleted, confirming full path-traversal exploitation.&lt;/p&gt;
&lt;p&gt;## Affected Code&lt;/p&gt;
&lt;p&gt;`namespace/other_functions.go:46` — `pathlib.Join` resolves `..` segments in attacker-controlled `plugin`, producing a path outside the cache root&lt;/p&gt;
&lt;p&gt;`namespace/other_functions.go:53` — `os.RemoveAll` unconditionally deletes the traversed path&lt;/p&gt;
&lt;p&gt;```go
func clear_plugin_cache(plugin string) string {
	pathToRemove := pathlib.Join(xdg.CacheHome, &amp;#34;anyquery&amp;#34;, &amp;#34;plugins&amp;#34;, plugin)&lt;/p&gt;
&lt;p&gt;if plugin == &amp;#34;&amp;#34; {
		return &amp;#34;The plugin name is empty&amp;#34;
	}&lt;/p&gt;
&lt;p&gt;// Remove the directory
	err := os.RemoveAll(pathToRemove)
	if err != nil {…&lt;/p&gt;</description>
      <content:encoded>&lt;p&gt;&lt;strong&gt;Affected:&lt;/strong&gt; Go: github.com/julien040/anyquery&lt;/p&gt;
&lt;p&gt;# Path Traversal in `clear_plugin_cache` Allows Arbitrary Directory Deletion&lt;/p&gt;
&lt;p&gt;| Field            | Value |
| ---------------- | ----- |
| Repository       | julien040/anyquery |
| Affected version | 0.4.4 |
| Vulnerability    | CWE-22 — Improper Limitation of a Pathname to a Restricted Directory |
| Severity         | High |&lt;/p&gt;
&lt;p&gt;## Summary&lt;/p&gt;
&lt;p&gt;The SQL scalar function `clear_plugin_cache(plugin)` in `namespace/other_functions.go` passes the caller-supplied `plugin` argument directly to `path.Join` and then to `os.RemoveAll`, with only an empty-string check as a guard. Because `path.Join` silently resolves `..` segments, a low-privileged bearer-token holder can submit `SELECT clear_plugin_cache(&amp;#39;../../../../tmp/target&amp;#39;)` to the `/v1/query` HTTP endpoint and delete any directory reachable by the server process. In the verified scenario, a directory outside `$XDG_CACHE_HOME/anyquery/plugins/` was successfully deleted, confirming full path-traversal exploitation.&lt;/p&gt;
&lt;p&gt;## Affected Code&lt;/p&gt;
&lt;p&gt;`namespace/other_functions.go:46` — `pathlib.Join` resolves `..` segments in attacker-controlled `plugin`, producing a path outside the cache root&lt;/p&gt;
&lt;p&gt;`namespace/other_functions.go:53` — `os.RemoveAll` unconditionally deletes the traversed path&lt;/p&gt;
&lt;p&gt;```go
func clear_plugin_cache(plugin string) string {
	pathToRemove := pathlib.Join(xdg.CacheHome, &amp;#34;anyquery&amp;#34;, &amp;#34;plugins&amp;#34;, plugin)&lt;/p&gt;
&lt;p&gt;if plugin == &amp;#34;&amp;#34; {
		return &amp;#34;The plugin name is empty&amp;#34;
	}&lt;/p&gt;
&lt;p&gt;// Remove the directory
	err := os.RemoveAll(pathToRemove)
	if err != nil {…&lt;/p&gt;</content:encoded>
      <guid isPermaLink="false">https://vulnerability.circl.lu/vuln/ghsa-j9rx-rppg-6hh4</guid>
    </item>
  </channel>
</rss>
