CVE-2026-45104
MapServer: NULL pointer dereference in SLD `<ElseFilter>` rule parsing reachable via WMS `SLD_BODY`
MapServer is a system for developing web-based GIS applications. From 6.4.0 to before 8.6.3, msSLDParseUserStyle always calls _SLDApplyRuleValues(psRule, psLayer, 1); for any <Rule> carrying <ElseFilter/> — it assumes msSLDParseRule added one class. When the rule has no symbolizer (a structurally valid SLD), msSLDParseRule adds zero, and _SLDApplyRuleValues ends up indexing _class[-1], resulting in a NULL pointer dereference. A 200-byte well-formed SLD via the WMS SLD_BODY= parameter is enough to trigger this, no auth required. This vulnerability is fixed in 8.6.3.
Attack profile
How easy it is to exploit
- Attack vector
- Network
- Complexity
- Low
- Privileges needed
- None
- User interaction
- None
What an attacker can affect
- Confidentiality
- None
- Integrity
- None
- Availability
- High
Exploit likelihood
What each source reports
CVE List Score used
7.5
MapServer: NULL pointer dereference in SLD `<ElseFilter>` rule parsing reachable via WMS `SLD_BODY`
MapServer is a system for developing web-based GIS applications. From 6.4.0 to before 8.6.3, msSLDParseUserStyle always calls _SLDApplyRuleValues(psRule, psLayer, 1); for any <Rule> carrying <ElseFilter/> — it assumes msSLDParseRule added one class. When the rule has no symbolizer (a structurally valid SLD), msSLDParseRule adds zero, and _SLDApplyRuleValues ends up indexing _class[-1], resulting in a NULL pointer dereference. A 200-byte well-formed SLD via the WMS SLD_BODY= parameter is enough to trigger this, no auth required. This vulnerability is fixed in 8.6.3.
- Record
CVE-2026-45104- CVSS 3.1
- 7.5 High
CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:N/I:N/A:H - Weakness
- CWE-129, CWE-476
- Updated
- 2026-11-02
EUVDEUVD-2026-32631
7.5
MapServer is a system for developing web-based GIS applications. From 6.4.0 to before 8.6.3, msSLDParseUserStyle always calls _SLDApplyRuleValues(psRule, psLayer, 1); for any <Rule> carrying <ElseFilter/> — it assumes msSLDParseRule added one class. When the rule has no symbolizer (a structurally valid SLD), msSLDParseRule adds zero, and _SLDApplyRuleValues ends up indexing _class[-1], resulting in a NULL pointer dereference. A 200-byte well-formed SLD via the WMS SLD_BODY= parameter is enough to trigger this, no auth required. This vulnerability is fixed in 8.6.3.
- Record
EUVD-2026-32631- CVSS 3.1
- 7.5 High
CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:N/I:N/A:H - Updated
- 2026-11-02
NVD
7.5
MapServer is a system for developing web-based GIS applications. From 6.4.0 to before 8.6.3, msSLDParseUserStyle always calls _SLDApplyRuleValues(psRule, psLayer, 1); for any <Rule> carrying <ElseFilter/> — it assumes msSLDParseRule added one class. When the rule has no symbolizer (a structurally valid SLD), msSLDParseRule adds zero, and _SLDApplyRuleValues ends up indexing _class[-1], resulting in a NULL pointer dereference. A 200-byte well-formed SLD via the WMS SLD_BODY= parameter is enough to trigger this, no auth required. This vulnerability is fixed in 8.6.3.
- Record
CVE-2026-45104- CVSS 3.1
- 7.5 High
CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:N/I:N/A:H - Weakness
- CWE-129, CWE-476
- Updated
- 2026-11-02
OSV
7.5
MapServer: NULL pointer dereference in SLD `<ElseFilter>` rule parsing reachable via WMS `SLD_BODY`
MapServer is a system for developing web-based GIS applications. From 6.4.0 to before 8.6.3, msSLDParseUserStyle always calls _SLDApplyRuleValues(psRule, psLayer, 1); for any <Rule> carrying <ElseFilter/> — it assumes msSLDParseRule added one class. When the rule has no symbolizer (a structurally valid SLD), msSLDParseRule adds zero, and _SLDApplyRuleValues ends up indexing _class[-1], resulting in a NULL pointer dereference. A 200-byte well-formed SLD via the WMS SLD_BODY= parameter is enough to trigger this, no auth required. This vulnerability is fixed in 8.6.3.
- Record
CVE-2026-45104- CVSS 3.1
- 7.5 High
CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:N/I:N/A:H - Weakness
- CWE-129, CWE-476
- Updated
- 2026-11-02
OSVDEBIAN-CVE-2026-45104
7.5
MapServer is a system for developing web-based GIS applications. From 6.4.0 to before 8.6.3, msSLDParseUserStyle always calls _SLDApplyRuleValues(psRule, psLayer, 1); for any <Rule> carrying <ElseFilter/> — it assumes msSLDParseRule added one class. When the rule has no symbolizer (a structurally valid SLD), msSLDParseRule adds zero, and _SLDApplyRuleValues ends up indexing _class[-1], resulting in a NULL pointer dereference. A 200-byte well-formed SLD via the WMS SLD_BODY= parameter is enough to trigger this, no auth required. This vulnerability is fixed in 8.6.3.
- Record
DEBIAN-CVE-2026-45104- CVSS 3.1
- 7.5 High
CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:N/I:N/A:H - Updated
- 2026-11-02
OSVUBUNTU-CVE-2026-45104
7.5
MapServer is a system for developing web-based GIS applications. From 6.4.0 to before 8.6.3, msSLDParseUserStyle always calls _SLDApplyRuleValues(psRule, psLayer, 1); for any <Rule> carrying <ElseFilter/> — it assumes msSLDParseRule added one class. When the rule has no symbolizer (a structurally valid SLD), msSLDParseRule adds zero, and _SLDApplyRuleValues ends up indexing _class[-1], resulting in a NULL pointer dereference. A 200-byte well-formed SLD via the WMS SLD_BODY= parameter is enough to trigger this, no auth required. This vulnerability is fixed in 8.6.3.
- Record
UBUNTU-CVE-2026-45104- CVSS 3.1
- 7.5 High
CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:N/I:N/A:H - Updated
- 2026-11-02
OSVopenSUSE-SU-2026:20857-1 No score
Security update for mapserver
This update for mapserver fixes the following issues:
Changes in mapserver:
- Update to releasee 8.6.3
- SLD parser: fix out of bounds access on SLD with only a Rule with a ElseFilter but without a symbolizer [CVE-2026-33721, boo#1260869] [CVE-2026-45104, boo#1266663]
- Record
openSUSE-SU-2026:20857-1- Updated
- 2026-11-02
Affected products
Affected packages
| Package | Affected | Fixed |
|---|---|---|
mapserverDebian:12 |
All versions, plus listed versions 8.0.0-38.0.0-3+deb12u18.0.1-18.0.1-1~exp18.0.1-2 Show 45 moreShow less8.0.1-2.1~exp18.0.1-2~bpo12+18.0.1-38.0.1-3~exp18.0.1-48.0.1-58.0.2-18.0.2-1~bpo12+18.2.0-18.2.0-1~bpo12+18.2.0~beta1-1~exp18.2.0~beta2-1~exp18.2.0~beta3-1~exp18.2.0~rc1-1~exp18.2.0~rc2-1~exp18.2.0~rc3-1~exp18.2.1-18.2.1-1~bpo12+18.2.2-18.2.2-1~bpo12+18.4.0-18.4.0-1~bpo12+18.4.0-28.4.0-38.4.0-48.4.0~beta1-1~exp18.4.0~beta2-1~exp18.4.0~rc1-1~exp18.4.1-18.4.1-1~bpo13+18.4.1-28.6.0-18.6.0-1~bpo13+18.6.0~beta1-1~exp18.6.0~beta2-1~exp18.6.0~rc1-1~exp18.6.1-18.6.1-1~bpo13+18.6.2-18.6.2-1~bpo13+18.6.3-18.6.3-1~bpo13+18.6.4-18.6.4-1~bpo13+18.6.5-1 |
None known |
mapserverDebian:13 |
All versions, plus listed versions 8.4.0-48.4.0-4+deb13u18.4.0-4+deb13u28.4.1-18.4.1-1~bpo13+1 Show 18 moreShow less8.4.1-28.6.0-18.6.0-1~bpo13+18.6.0~beta1-1~exp18.6.0~beta2-1~exp18.6.0~rc1-1~exp18.6.1-18.6.1-1~bpo13+18.6.2-18.6.2-1~bpo13+18.6.3-18.6.3-1~bpo13+18.6.4-18.6.4-1~bpo13+18.6.5-18.6.5-1~bpo13+18.6.6-18.6.6-1~bpo13+1 |
None known |
mapserverDebian:14 |
before 8.6.3-1, plus listed versions 8.4.0-48.4.1-18.4.1-1~bpo13+18.4.1-28.6.0-1 Show 9 moreShow less8.6.0-1~bpo13+18.6.0~beta1-1~exp18.6.0~beta2-1~exp18.6.0~rc1-1~exp18.6.1-18.6.1-1~bpo13+18.6.2-18.6.2-1~bpo13+18.6.3-1~bpo13+1 |
8.6.3-1 |
mapserverUbuntu:16.04:LTS |
All versions, plus listed versions 7.0.0-4build17.0.0-5ubuntu17.0.0-77.0.0-87.0.0-8build1 Show 5 moreShow less7.0.0-97.0.0-9ubuntu17.0.0-9ubuntu27.0.0-9ubuntu37.0.0-9ubuntu3.1 |
None known |
mapserverUbuntu:18.04:LTS |
All versions, plus listed versions 7.0.6-2build17.0.7-17.0.7-1build17.0.7-1build2 |
None known |
mapserverUbuntu:20.04:LTS |
All versions, plus listed versions 7.4.1-1build17.4.1-1build37.4.2-17.4.2-1build17.4.3-17.4.3-1build27.4.3-27.4.3-2build1 |
None known |
mapserverUbuntu:22.04:LTS |
All versions, plus listed versions 7.6.3-1~exp1ubuntu17.6.4-27.6.4-2build2 |
None known |
mapserverUbuntu:24.04:LTS |
All versions, plus listed versions 8.0.1-2build18.0.1-2build28.0.1-2build38.0.1-2build58.0.1-4ubuntu18.0.1-4ubuntu2 |
None known |
mapserverUbuntu:25.10 |
All versions, plus listed versions 8.4.0-1build18.4.0-48.4.0-4build1 |
None known |
mapserverUbuntu:26.10 |
All versions, plus listed versions 8.6.0-1build18.6.4-18.6.5-18.6.5-1build1 |
None known |
mapserverUbuntu:26.04:LTS |
All versions, plus listed versions 8.4.0-4build18.4.1-18.4.1-1build18.4.1-28.4.1-2build18.6.0-18.6.0-1build1 |
None known |
History
| Recorded | Changed | Sources |
|---|---|---|
| facts | ||
| first indexed | CVE List, EUVD, NVD, OSV |
Dates are when Every CVE recorded each change. Upstream dates may differ.
In short
CVE-2026-45104 is a high vulnerability (CVSS 7.5) in Mapserver, published May 27, 2026. No source lists public exploit code. EPSS puts the chance of exploitation in the next 30 days at 0.32%, the 25th percentile. Fixed in mapserver 8.6.3-1.
References
github.com/MapServer/MapServer/security/advisories/GHSA-4h8g-378q-r75m
github.com/CVEProject/cvelistV5/tree/main/cves/2026/45xxx/CVE-2026-45104.json
nvd.nist.gov/vuln/detail/CVE-2026-45104
security-tracker.debian.org/tracker/CVE-2026-45104
ubuntu.com/security/CVE-2026-45104
cve.org/CVERecord?id=CVE-2026-45104
Left out here: 3 versions. The JSON record has them.