Ошибка в 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” в именах доменов на последовательность “00” и возвращению некорректного результата при обработке запросов по маске. Например, если в DNS-зоне присутствовала запись “*.sub.test.local. 1 A 127.0.0.1″ запрос имени UVW.sub.test.local” приводил к выводу ответа, в котором возвращалось имя “uv/000.sub.test.local” вместо “uvw.sub.test.local”.

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

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

Release. Ссылка here.