Description
DevilutionX 1.4.0 through 1.5.5 contains an out-of-bounds read vulnerability in the bundled libmpq libmpq__file_number_from_hash function that allows attackers to read heap memory via unchecked block_table_index values. Attackers can place a crafted .mpq archive in the game's data path, such as a mod, to trigger reads past mpq_map 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#L740 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 Out-of-Bounds Read via libmpq Hash Table Lookup third-party-advisory