24.09.2021

Ошибка в BIND 9.16.17, приводящая к неверной обработке символа W в DNS-запросах

Опубликованы корректирующие обновления стабильной ветки DNS-сервера BIND 9.16.18 и находящейся в разработке экспериментальной ветки 9.17.15, в которых устранена серьёзная ошибка, появившаяся в выпусках BIND 9.16.17 и 9.17.14, опубликованных на прошлой неделе (на следующий день после данных релизов разработчики предупредили о наличии проблемы и рекомендовали не устанавливать версии 9.16.17 и 9.17.14).

В версиях 9.16.17 и 9.17.14 в таблицах сопоставления символов в нижнем и верхнем регистре (maptoupper и maptolower) был пропущен символ «w», что привело к замене символов «W» и «w» в именах доменов на последовательность «\000» и возвращению некорректного результата при обработке запросов по маске. Например, если в DNS-зоне присутствовала запись «*.sub.test.local. 1 A 127.0.0.1″ запрос имени UVW.sub.test.local» приводил к выводу ответа, в котором возвращалось имя «uv/000.sub.test.local» вместо «uvw.sub.test.local».

Кроме того, отмечались проблемы с заменой символа «w» на «\000» при динамическом обновлении зоны, в случае, если регистр символа «w» в запросе отличался от регистра в DNS-зоне. Например, если при наличии в зоне записи «WW.example» отправлялось обновление для «foo.ww.example.», оно обрабатывалось как «foo.\000\000.example.». Проблемы с заменой символов также могли возникнуть при выполнении операций передачи зон с первичного на вторичный DNS-сервер.

Публикация обновления 9.16.18 была задержана в связи с выявлением ещё двух ошибок, которые остались не устранёнными в версиях 9.16.18 и 9.17.15. Ошибки приводят в возникновению взаимной блокировки во время инициализации и проявляются в конфигурациях, в которых в dnssec-policy используются одинаковые зоны, присутствующие в разных представлениях (view). Пользователям с подобными настройками рекомендуется откатиться до версии BIND 9.16.16.

Источник.