Description
DevilutionX 1.4.0 through 1.5.5 contains a heap buffer overflow vulnerability in the bundled libmpq libmpq__archive_dup routine when opening crafted MPQ archives. Attackers can supply an MPQ archive whose block table count exceeds its hash table count, causing memcpy to overflow the heap during startup and crash the game.
Affected products
| Vendor | Product | Affected | Fixed |
|---|---|---|---|
| diasurgical | DevilutionX | 1.4.0 – ≤ 1.5.5 | — |
References
- https://github.com/diasurgical/DevilutionX/issues/8758 issue-tracking
- https://github.com/diasurgical/DevilutionX/pull/8482 patch issue-tracking
- https://github.com/diasurgical/libmpq/blob/b78d66c6fee6a501cc9b95d8556a129c68841b05/libmpq/mpq.c#L505 technical-description
- https://github.com/diasurgical/DevilutionX/blob/7223eeac9e8274fbf665b4de86fda26d3b22c52f/3rdParty/libmpq/CMakeLists.txt technical-description
- https://hackmd.io/@haindpwn/devilutionx-libmpq-hash-block-table-oob technical-description
- VulnCheck Advisory: DevilutionX 1.4.0 through 1.5.5 Heap Buffer Overflow via libmpq__archive_dup third-party-advisory