Уязвимость в Musl, эксплуатируемая при перекодировании текста в кодировке EUC-KR

В стандартной Си-библиотеки Musl выявлена уязвимость (CVE-2024-2961), приводящая к переполнению буфера при преобразовании специально оформленного текста из кодировки EUC-KR в UTF-8 при помощи функции iconv(). Уязвимость проявляется начиная с версии musl 0.9.13 и будет исправлена в готовящемся к публикации выпуске 1.2.6 (до публикации обновления следует использовать патч).

Уязвимость может использоваться для совершения атак на приложения, собранные с библиотекой Musl и выполняющие перекодирование текста, получаемого из внешних источников. Эксплуатация уязвимости возможна при вызове в приложении функции iconv_open() c указанием исходной кодировки EUC-KR и целевой кодировки UTF-8. В качестве примера потенциально уязвимых приложений упоминаются программы, перекодирующие XML, HTML и почтовые сообщения на основании кодировки, указанной в заголовке с MIME-типом (например, “text/plain; charset=EUC-KR”).

Уязвимость вызвана комбинацией из двух ошибок. Первая ошибка связана с отсутствием должной проверки некорректных многобайтовых последовательностей в декодировщике EUC-KR. Вторая ошибка присутствует в кодировщике UTF-8, который не был рассчитан на то, что декодировщик входных данных может вернуть недопустимые скалярные значения Unicodе. В итоге, обработка последовательностей вида “xc8x41” приводит к записи значений в область за границей выделенного буфера.

Release. Ссылка here.