
Проблема в radareorg radare2 с v.0.9.7 по v.5.8.6, исправленная в v.5.8.8, позволяет локальному злоумышленнику вызвать отказ в обслуживании через функцию grub_sfs_read_extent.
Sherlock Fang, Vlad Tronciu, Ayam Babu
Проблема в radareorg radare2 версий с v.0.9.7 по v.5.8.6, исправленная в v.5.8.8, позволяет локальному злоумышленнику вызвать отказ в обслуживании через функцию grub_sfs_read_extent.
Создание полезной нагрузки, чтобы заставить “treeblock = grub_malloc(data->blocksize);” указывать на NULL в памяти, так что когда значение “treeblock” присваивается “tree = (struct grub_sfs_btree *) treeblock;”, “treeblock” также указывает на NULL. Степень эксплуатации зависит от конкретного контекста, но такая уязвимость разыменования нулевого указателя приведет к отказу в обслуживании программы, что повлияет на общую производительность программы.
Внутри функции grub_sfs_read_extent существует уязвимость безопасности из-за отсутствия проверки состояния tree_block. Последующий код использует tree_block без проверки того, что он указывает на допустимое выделение памяти. Это приведет к разыменованию нулевого указателя, когда tree присваивается значение treeblock, приведенное к struct grub_sfs_btree*, а затем используется в вызове grub_disk_read. Разыменование нулевого указателя является неопределенным поведением в C и обычно приводит к ошибке сегментации или нарушению доступа, вызывая сбой программы.
Мы исправили уязвимость, добавив проверку состояния выделения памяти grub_malloc, как показано ниже.
https://cwe.mitre.org/data/definitions/476.html
https://github.com/radareorg/radare2/issues/22586
https://github.com/radareorg/radare2/commit/8419d7d0cbe61c687dcb8a35de0acccb2ee4c220