{"id":"CVE-2023-23608","aliases":["GHSA-q764-g6fm-555v","PYSEC-2026-926"],"title":"Path traversal in spotipy","summary":"Path traversal in spotipy","severity":"medium","cvss":5.4,"cvssVector":"CVSS:3.1/AV:N/AC:L/PR:N/UI:R/S:U/C:N/I:L/A:L","vendor":"spotipy","product":"spotipy","ecosystem":"pip","affected":["spotipy < 2.22.1"],"patched":["spotipy 2.22.1"],"published":"2023-01-23","updated":"2026-09-10","sourceUpdated":"2026-09-10T03:49:51.557617217Z","source":"OSV","sourceUrl":"https://osv.dev/vulnerability/GHSA-q764-g6fm-555v","references":[{"url":"https://github.com/spotipy-dev/spotipy/security/advisories/GHSA-q764-g6fm-555v"},{"url":"https://nvd.nist.gov/vuln/detail/CVE-2023-23608"},{"url":"https://github.com/spotipy-dev/spotipy"}],"tags":["osv","pip"],"epss":0.00658,"epssPercentile":0.5009,"ingestedAt":"2026-07-08T18:25:52.114Z","slug":"CVE-2023-23608","body":"## Overview\n\n### Summary\nIf a malicious URI is passed to the library, the library can be tricked into performing an operation on a different API endpoint than intended.\n\n### Details\nThe [code Spotipy uses to parse URIs and URLs ](https://github.com/spotipy-dev/spotipy/blob/master/spotipy/client.py#L1942) accepts user data too liberally which allows a malicious user to insert arbitrary characters into the path that is used for API requests. Because it is possible to include `..`, an attacker can redirect for example a track lookup via `spotifyApi.track()` to an arbitrary API endpoint like playlists, but this is possible for other endpoints as well.\n\nBefore the security advisory feature was enabled on GitHub, I was already in contact with Stéphane Bruckert via e-mail, and he asked me to look into a potential fix. \n\nMy recommendation is to perform stricter parsing of URLs and URIs, which I implemented in the patch included at the end of the report. If you prefer, I can also invite you to a private fork of the repository.\n\n### Impact\nThe impact of this vulnerability depends heavily on what operations a client application performs when it handles a URI from a user and how it uses the responses it receives from the API.\n\n\n## Affected packages\n\n- `spotipy < 2.22.1`\n\n## Remediation\n\nUpgrade to a patched release:\n\n- `spotipy 2.22.1`","depth":"sunlit","depthScore":30,"depthScoreParts":{"impact":29.7,"likelihood":0.1,"exploitation":0,"ransomware":0},"changes":[]}