{"id":"CVE-2026-61722","aliases":["DEBIAN-CVE-2026-61722","EUVD-2026-83377","GHSA-hp72-35pr-6h6r","OESA-2026-3167","UBUNTU-CVE-2026-61722"],"status":"published","title":"FluidSynth: DLS Articulation Chunk Integer Overflow","description":"FluidSynth is a software synthesizer based on the SoundFont 2 specifications. From 2.5.0 until 2.5.6, the native DLS parser validates articulation chunks using the unsigned expression cbsize + connblocks * 12 without first ensuring that the multiplication and addition fit in 32 bits. A crafted DLS file can supply a large connblocks value that wraps the expression and bypasses the chunk-size check, after which the parser performs approximately one billion 12-byte iterations beyond the chunk boundary. The excessive processing and invalid reads can cause denial of service. Builds with the CMake option enable-native-dls set to OFF do not expose the parser. This issue is fixed in version 2.5.6.","severity":{"version":"3.1","score":6.8,"vector":"CVSS:3.1/AV:L/AC:L/PR:N/UI:N/S:U/C:N/I:L/A:H","level":"medium","assessor":"cna","from":"cve"},"epss":{"day":"2026-11-12","score":0.00198,"percentile":0.09597,"model":"v2026.06.15"},"facts":{"in_kev":false,"known_exploited":false,"public_exploit":false,"fix_available":true},"cwes":["CWE-190"],"published":"2026-07-24T11:12:02Z","modified":"2026-10-28T11:18:19Z","fixes":[{"ecosystem":"Debian:14","package":"fluidsynth","fixed_in":["2.5.6+dfsg-1"],"sources":["osv"]}],"affected":[{"source":"osv","ecosystem":"Debian:14","package":"fluidsynth","ranges":[{"type":"ECOSYSTEM","events":[{"introduced":"0"},{"fixed":"2.5.6+dfsg-1"}]}],"versions":["2.4.4+dfsg-1","2.4.6+dfsg-1","2.4.7+dfsg-1","2.4.7+dfsg-2","2.4.8+dfsg-1","2.5.0+dfsg-1","2.5.1+dfsg-1","2.5.1+dfsg-2","2.5.2+dfsg-1","2.5.3+dfsg-1","2.5.4+dfsg-1","2.5.5+dfsg-1","2.5.5+dfsg-2"]},{"source":"osv","ecosystem":"openEuler:24.03-LTS-SP4","package":"fluidsynth","ranges":[{"type":"ECOSYSTEM","events":[{"introduced":"0"},{"fixed":"2.5.6-1.oe2403sp4"}]}],"bundled":5},{"source":"osv","ecosystem":"Ubuntu:Pro:14.04:LTS","package":"fluidsynth","ranges":[{"type":"ECOSYSTEM","events":[{"introduced":"0"}]}],"versions":["1.1.6-2","1.1.6-2ubuntu0.1~esm1"]},{"source":"osv","ecosystem":"Ubuntu:Pro:16.04:LTS","package":"fluidsynth","ranges":[{"type":"ECOSYSTEM","events":[{"introduced":"0"}]}],"versions":["1.1.6-2build1","1.1.6-3","1.1.6-3ubuntu0.1~esm1"]},{"source":"osv","ecosystem":"Ubuntu:Pro:18.04:LTS","package":"fluidsynth","ranges":[{"type":"ECOSYSTEM","events":[{"introduced":"0"}]}],"versions":["1.1.6-4","1.1.8-1","1.1.8-2","1.1.8-3","1.1.9-1","1.1.9-1ubuntu0.1~esm1"]},{"source":"osv","ecosystem":"Ubuntu:Pro:20.04:LTS","package":"fluidsynth","ranges":[{"type":"ECOSYSTEM","events":[{"introduced":"0"}]}],"versions":["1.1.11-4","1.1.11-4ubuntu1","2.1.0-1","2.1.1-2","2.1.1-2ubuntu0.1~esm1"]},{"source":"osv","ecosystem":"Ubuntu:Pro:22.04:LTS","package":"fluidsynth","ranges":[{"type":"ECOSYSTEM","events":[{"introduced":"0"}]}],"versions":["2.1.7-1.1","2.2.4-2","2.2.5-1","2.2.5-1ubuntu0.1~esm1"]},{"source":"osv","ecosystem":"Ubuntu:Pro:24.04:LTS","package":"fluidsynth","ranges":[{"type":"ECOSYSTEM","events":[{"introduced":"0"}]}],"versions":["2.3.3-2.1","2.3.4-1","2.3.4-1build1","2.3.4-1build2","2.3.4-1build3","2.3.4-1ubuntu0.1~esm1"]},{"source":"osv","ecosystem":"Ubuntu:Pro:26.04:LTS","package":"fluidsynth","ranges":[{"type":"ECOSYSTEM","events":[{"introduced":"0"}]}],"versions":["2.4.7+dfsg-2","2.4.8+dfsg-1","2.4.8+dfsg-1ubuntu0.1~esm1"]}],"products":[{"vendor":"fluidsynth","product":"fluidsynth"}],"references":[{"url":"https://github.com/FluidSynth/fluidsynth/security/advisories/GHSA-hp72-35pr-6h6r","tags":["x_refsource_CONFIRM","advisory","report"]},{"url":"https://github.com/FluidSynth/fluidsynth/commit/4d7084fca7c876f5d738498b4917a39faf603425","tags":["x_refsource_MISC","fix"]},{"url":"https://github.com/FluidSynth/fluidsynth/releases/tag/v2.5.6","tags":["x_refsource_MISC","web"]},{"url":"https://github.com/CVEProject/cvelistV5/tree/main/cves/2026/61xxx/CVE-2026-61722.json","tags":["advisory"]},{"url":"https://nvd.nist.gov/vuln/detail/CVE-2026-61722","tags":["advisory"]},{"url":"https://security-tracker.debian.org/tracker/CVE-2026-61722","tags":["advisory"]},{"url":"https://www.openeuler.org/zh/security/security-bulletins/detail/?id=openEuler-SA-2026-3167","tags":["advisory"]},{"url":"https://nvd.nist.gov/vuln/detail/CVE-2026-61714","tags":["advisory"]},{"url":"https://nvd.nist.gov/vuln/detail/CVE-2026-61720","tags":["advisory"]},{"url":"https://nvd.nist.gov/vuln/detail/CVE-2026-61721","tags":["advisory"]},{"url":"https://nvd.nist.gov/vuln/detail/CVE-2026-61723","tags":["advisory"]},{"url":"https://ubuntu.com/security/CVE-2026-61722","tags":["report"]},{"url":"https://www.cve.org/CVERecord?id=CVE-2026-61722","tags":["report"]}],"sources":{"cve":[{"id":"CVE-2026-61722","title":"FluidSynth: DLS Articulation Chunk Integer Overflow","description":"FluidSynth is a software synthesizer based on the SoundFont 2 specifications. From 2.5.0 until 2.5.6, the native DLS parser validates articulation chunks using the unsigned expression cbsize + connblocks * 12 without first ensuring that the multiplication and addition fit in 32 bits. A crafted DLS file can supply a large connblocks value that wraps the expression and bypasses the chunk-size check, after which the parser performs approximately one billion 12-byte iterations beyond the chunk boundary. The excessive processing and invalid reads can cause denial of service. Builds with the CMake option enable-native-dls set to OFF do not expose the parser. This issue is fixed in version 2.5.6.","status":"published","published":"2026-09-18T20:01:58.603Z","modified":"2026-09-22T15:44:05.935Z","cvss":[{"version":"3.1","score":6.8,"vector":"CVSS:3.1/AV:L/AC:L/PR:N/UI:N/S:U/C:N/I:L/A:H","level":"medium","assessor":"cna"}],"cwes":["CWE-190"],"updated_at":"2026-11-02T14:19:53.4444Z"}],"euvd":[{"id":"EUVD-2026-83377","description":"FluidSynth is a software synthesizer based on the SoundFont 2 specifications. From 2.5.0 until 2.5.6, the native DLS parser validates articulation chunks using the unsigned expression cbsize + connblocks * 12 without first ensuring that the multiplication and addition fit in 32 bits. A crafted DLS file can supply a large connblocks value that wraps the expression and bypasses the chunk-size check, after which the parser performs approximately one billion 12-byte iterations beyond the chunk boundary. The excessive processing and invalid reads can cause denial of service. Builds with the CMake option enable-native-dls set to OFF do not expose the parser. This issue is fixed in version 2.5.6.","status":"published","published":"2026-09-18T20:01:58Z","modified":"2026-09-22T15:44:05Z","cvss":[{"version":"3.1","score":6.8,"vector":"CVSS:3.1/AV:L/AC:L/PR:N/UI:N/S:U/C:N/I:L/A:H","level":"medium"}],"updated_at":"2026-11-02T17:28:02.601428Z"}],"nvd":[{"id":"CVE-2026-61722","description":"FluidSynth is a software synthesizer based on the SoundFont 2 specifications. From 2.5.0 until 2.5.6, the native DLS parser validates articulation chunks using the unsigned expression cbsize + connblocks * 12 without first ensuring that the multiplication and addition fit in 32 bits. A crafted DLS file can supply a large connblocks value that wraps the expression and bypasses the chunk-size check, after which the parser performs approximately one billion 12-byte iterations beyond the chunk boundary. The excessive processing and invalid reads can cause denial of service. Builds with the CMake option enable-native-dls set to OFF do not expose the parser. This issue is fixed in version 2.5.6.","status":"published","published":"2026-09-18T20:17:18.713Z","modified":"2026-09-23T18:28:25.093Z","cvss":[{"version":"3.1","score":6.8,"vector":"CVSS:3.1/AV:L/AC:L/PR:N/UI:N/S:U/C:N/I:L/A:H","level":"medium","assessor":"secondary"}],"cwes":["CWE-190"],"updated_at":"2026-11-02T14:12:50.043898Z"}],"osv":[{"id":"CVE-2026-61722","title":"FluidSynth: DLS Articulation Chunk Integer Overflow","description":"FluidSynth is a software synthesizer based on the SoundFont 2 specifications. From 2.5.0 until 2.5.6, the native DLS parser validates articulation chunks using the unsigned expression cbsize + connblocks * 12 without first ensuring that the multiplication and addition fit in 32 bits. A crafted DLS file can supply a large connblocks value that wraps the expression and bypasses the chunk-size check, after which the parser performs approximately one billion 12-byte iterations beyond the chunk boundary. The excessive processing and invalid reads can cause denial of service. Builds with the CMake option enable-native-dls set to OFF do not expose the parser. This issue is fixed in version 2.5.6.","status":"published","published":"2026-09-18T20:01:58.603Z","modified":"2026-10-28T11:18:19.34845851Z","cvss":[{"version":"3.1","score":6.8,"vector":"CVSS:3.1/AV:L/AC:L/PR:N/UI:N/S:U/C:N/I:L/A:H","level":"medium"}],"cwes":["CWE-190"],"updated_at":"2026-11-02T15:45:12.933503Z"},{"id":"DEBIAN-CVE-2026-61722","description":"FluidSynth is a software synthesizer based on the SoundFont 2 specifications. From 2.5.0 until 2.5.6, the native DLS parser validates articulation chunks using the unsigned expression cbsize + connblocks * 12 without first ensuring that the multiplication and addition fit in 32 bits. A crafted DLS file can supply a large connblocks value that wraps the expression and bypasses the chunk-size check, after which the parser performs approximately one billion 12-byte iterations beyond the chunk boundary. The excessive processing and invalid reads can cause denial of service. Builds with the CMake option enable-native-dls set to OFF do not expose the parser. This issue is fixed in version 2.5.6.","status":"published","published":"2026-09-18T20:17:18.713Z","modified":"2026-09-24T08:47:35.151623655Z","cvss":[{"version":"3.1","score":6.8,"vector":"CVSS:3.1/AV:L/AC:L/PR:N/UI:N/S:U/C:N/I:L/A:H","level":"medium"}],"updated_at":"2026-11-02T15:45:57.932517Z"},{"id":"OESA-2026-3167","title":"fluidsynth security update","description":"FluidSynth is a free software synthesizer. Its currently based on the SoundFont 2 specifications and supports real time MIDI effect controls. It can be used as a shared library for embedding in other applications, can play MIDI files and has a command line shell. Many other applications use FluidSynth for audio synthesis.\r\n\r\nSecurity Fix(es):\n\nA heap-based buffer overflow was discovered in fluidsynth\u0026apos;s MIDI player. When the synth is configured with `synth.midi-channels \u0026gt; 16` an out-of-bounds memory access is performed on the array `_fluid_player_t::channel_isplaying` in heap memory invoking undefined behavior. No crafted MIDI file is required to expose this vulnerability.(CVE-2026-61714)\n\nAn unsigned integer overflow in fluidsynth\u0026apos;s SF2 parser was discovered. The DMOD chunk handler calculates modulator count as `chunk.size / SF_MOD_SIZE - 1`. When `chunk.size = 0`, the division yields 0 and the unsigned subtraction wraps to `UINT_MAX` (4,294,967,295). The guard check passes because `0 % 10 == 0`. The loop iterates billions of times, allocating an `SFMod` struct per iteration until causing a denial of service via out-of-memory.(CVE-2026-61720)\n\nFluidsynth\u0026apos;s native DLS loader sets sample loop points from file-sourced `wsmp.loop_start` and `wsmp.loop_length` values without calling `fluid_sample_validate()` or `fluid_sample_sanitize_loop()`. Crafted DLS files with loop values exceeding the sample buffer cause out-of-bounds reads during audio rendering, invoking undefined behavior and denial of service.(CVE-2026-61721)\n\nAn integer overflow was discovered in fluidsynth\u0026apos;s native DLS parser. The expression `cbsize + connblocks * 12` overflows for `connblocks = 0x40000001`. The loop reads 12 bytes per iteration for ~1 billion iterations (~12.8 GB total) past the chunk boundary.(CVE-2026-61722)\n\nAn integer overflow was discovered in fluidsynth\u0026apos;s native DLS parser. The ptbl chunk validation uses `uint32_t` arithmetic: `cues * 4 + cbsize != subchunk.size`. For `cues = 0x40000002` and `cbsize = 8`, the multiplication overflows: `0x40000002 * 4 = 0x100000008`, truncated to `0x8`. The check `8 + 8 = 16 == subchunk.size` passes. The subsequent `poolcues.resize(cues)` attempts a ~4GB allocation, and the loop reads billions of entries past the file\u0026apos;s chunk boundary.(CVE-2026-61723)","status":"published","published":"2026-07-24T11:12:02Z","modified":"2026-08-18T01:21:25.300385427Z","cvss":[{"version":"3.1","score":8,"vector":"CVSS:3.1/AV:L/AC:L/PR:N/UI:N/S:U/C:H/I:L/A:H","level":"high"}],"updated_at":"2026-11-02T15:52:46.823443Z"},{"id":"UBUNTU-CVE-2026-61722","description":"FluidSynth is a software synthesizer based on the SoundFont 2 specifications. From 2.5.0 until 2.5.6, the native DLS parser validates articulation chunks using the unsigned expression cbsize + connblocks * 12 without first ensuring that the multiplication and addition fit in 32 bits. A crafted DLS file can supply a large connblocks value that wraps the expression and bypasses the chunk-size check, after which the parser performs approximately one billion 12-byte iterations beyond the chunk boundary. The excessive processing and invalid reads can cause denial of service. Builds with the CMake option enable-native-dls set to OFF do not expose the parser. This issue is fixed in version 2.5.6.","status":"published","published":"2026-09-18T20:17:00Z","modified":"2026-10-06T23:31:58.39852357Z","cvss":[{"version":"3.1","score":6.8,"vector":"CVSS:3.1/AV:L/AC:L/PR:N/UI:N/S:U/C:N/I:L/A:H","level":"medium"}],"updated_at":"2026-11-02T16:56:43.630667Z"}]}}
