<?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://cve.radiocsirt.org</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 19:38:35 +0000</lastBuildDate>
    <item>
      <title>CVE-2025-27154 — Spotipy's cache file, containing spotify auth token, is created with overly broad permissions</title>
      <link>https://cve.radiocsirt.org/vuln/cve-2025-27154</link>
      <description>&lt;p&gt;&lt;strong&gt;Affected:&lt;/strong&gt; spotipy-dev spotipy&lt;/p&gt;
&lt;p&gt;Spotipy is a lightweight Python library for the Spotify Web API. The `CacheHandler` class creates a cache file to store the auth token. Prior to version 2.25.1, the file created has `rw-r--r--` (644) permissions by default, when it could be locked down to `rw-------` (600) permissions. This leads to overly broad exposure of the spotify auth token. If this token can be read by an attacker (another user on the machine, or a process running as another user), it can be used to perform administrative actions on the Spotify account, depending on the scope granted to the token. Version 2.25.1 tightens the cache file permissions.&lt;/p&gt;</description>
      <content:encoded>&lt;p&gt;&lt;strong&gt;Affected:&lt;/strong&gt; spotipy-dev spotipy&lt;/p&gt;
&lt;p&gt;Spotipy is a lightweight Python library for the Spotify Web API. The `CacheHandler` class creates a cache file to store the auth token. Prior to version 2.25.1, the file created has `rw-r--r--` (644) permissions by default, when it could be locked down to `rw-------` (600) permissions. This leads to overly broad exposure of the spotify auth token. If this token can be read by an attacker (another user on the machine, or a process running as another user), it can be used to perform administrative actions on the Spotify account, depending on the scope granted to the token. Version 2.25.1 tightens the cache file permissions.&lt;/p&gt;</content:encoded>
      <guid isPermaLink="false">https://cve.radiocsirt.org/vuln/cve-2025-27154</guid>
    </item>
    <item>
      <title>GHSA-pwhh-q4h6-w599 — Spotipy's cache file, containing spotify auth token, is created with overly broad permissions</title>
      <link>https://cve.radiocsirt.org/vuln/ghsa-pwhh-q4h6-w599</link>
      <description>&lt;p&gt;&lt;strong&gt;Affected:&lt;/strong&gt; PyPI: spotipy&lt;/p&gt;
&lt;p&gt;### Summary&lt;/p&gt;
&lt;p&gt;The `CacheHandler` class creates a cache file to store the auth token here: https://github.com/spotipy-dev/spotipy/blob/master/spotipy/cache_handler.py#L93-L98&lt;/p&gt;
&lt;p&gt;The file created has `rw-r--r--` (644) permissions by default, when it could be locked down to `rw-------` (600) permissions. I think `600` is a sensible default.&lt;/p&gt;
&lt;p&gt;![image](https://github.com/user-attachments/assets/0b7ebbc1-a27a-4528-ab6a-135c7886766a)&lt;/p&gt;
&lt;p&gt;### Details&lt;/p&gt;
&lt;p&gt;This leads to overly broad exposure of the spotify auth token. If this token can be read by an attacker (another user on the machine, or a process running as another user), it can be used to perform administrative actions on the Spotify account, depending on the scope granted to the token.&lt;/p&gt;
&lt;p&gt;### PoC&lt;/p&gt;
&lt;p&gt;Run an application that uses spotipy with client creation like this:&lt;/p&gt;
&lt;p&gt;```python
from pathlib import Path
import spotipy
from os import getenv&lt;/p&gt;
&lt;p&gt;def create_spotify_client(client_id: str, client_secret: str) -&amp;gt; spotipy.Spotify:
    &amp;#34;&amp;#34;&amp;#34;Create and return an authenticated Spotify client.&lt;/p&gt;
&lt;p&gt;Args:
        client_id: Spotify API client ID
        client_secret: Spotify API client secret&lt;/p&gt;
&lt;p&gt;Returns:
        An authenticated Spotify client instance
    &amp;#34;&amp;#34;&amp;#34;
    cache_path = Path.home() / &amp;#34;.cache&amp;#34; / &amp;#34;spotify-backup/.auth_cache&amp;#34;
    cache_path.parent.mkdir(parents=True, exist_ok=True)
    cache_handler = spotipy.cache_handler.CacheFileHandler(cache_path=str(cache_path))&lt;/p&gt;
&lt;p&gt;client = spotipy.Spotify(
        auth_manager=spotipy.oauth2.SpotifyOAuth(…&lt;/p&gt;</description>
      <content:encoded>&lt;p&gt;&lt;strong&gt;Affected:&lt;/strong&gt; PyPI: spotipy&lt;/p&gt;
&lt;p&gt;### Summary&lt;/p&gt;
&lt;p&gt;The `CacheHandler` class creates a cache file to store the auth token here: https://github.com/spotipy-dev/spotipy/blob/master/spotipy/cache_handler.py#L93-L98&lt;/p&gt;
&lt;p&gt;The file created has `rw-r--r--` (644) permissions by default, when it could be locked down to `rw-------` (600) permissions. I think `600` is a sensible default.&lt;/p&gt;
&lt;p&gt;![image](https://github.com/user-attachments/assets/0b7ebbc1-a27a-4528-ab6a-135c7886766a)&lt;/p&gt;
&lt;p&gt;### Details&lt;/p&gt;
&lt;p&gt;This leads to overly broad exposure of the spotify auth token. If this token can be read by an attacker (another user on the machine, or a process running as another user), it can be used to perform administrative actions on the Spotify account, depending on the scope granted to the token.&lt;/p&gt;
&lt;p&gt;### PoC&lt;/p&gt;
&lt;p&gt;Run an application that uses spotipy with client creation like this:&lt;/p&gt;
&lt;p&gt;```python
from pathlib import Path
import spotipy
from os import getenv&lt;/p&gt;
&lt;p&gt;def create_spotify_client(client_id: str, client_secret: str) -&amp;gt; spotipy.Spotify:
    &amp;#34;&amp;#34;&amp;#34;Create and return an authenticated Spotify client.&lt;/p&gt;
&lt;p&gt;Args:
        client_id: Spotify API client ID
        client_secret: Spotify API client secret&lt;/p&gt;
&lt;p&gt;Returns:
        An authenticated Spotify client instance
    &amp;#34;&amp;#34;&amp;#34;
    cache_path = Path.home() / &amp;#34;.cache&amp;#34; / &amp;#34;spotify-backup/.auth_cache&amp;#34;
    cache_path.parent.mkdir(parents=True, exist_ok=True)
    cache_handler = spotipy.cache_handler.CacheFileHandler(cache_path=str(cache_path))&lt;/p&gt;
&lt;p&gt;client = spotipy.Spotify(
        auth_manager=spotipy.oauth2.SpotifyOAuth(…&lt;/p&gt;</content:encoded>
      <guid isPermaLink="false">https://cve.radiocsirt.org/vuln/ghsa-pwhh-q4h6-w599</guid>
    </item>
  </channel>
</rss>
