Выпуск NTPsec 0.9.7, защищённого форка NTPD
23 марта 2017 года
Представлен новый выпуск проекта NTPsec, в рамках которого развивается форк эталонной реализации протокола NTPv4 (NTP Classic 4.3.34), сфокусированный на переработке кодовой базы с целью повышения безопасности. Исходные тексты NTPsec размещены в репозитории на GitLab. В развитии NTPsec участвуют некоторые разработчики оригинального NTP Classic, инженеры из компаний Hewlett Packard и Akamai Technologies, а также участники проектов GPSD и RTEMS. Одним из инициаторов создания проекта является Эрик Реймонд (Eric S. Raymond), один из основателей организации OSI (Open Source Initiative).
Проект полностью совместим с классическим пакетом NTP и использует те же алгоритмы. Отличия NTPsec в основном касаются переработки внутренностей с внедрением передовых техник предотвращения проведения атак. Среди особенностей проекта:
- Все функции работы с памятью и строками заменены на защищённые аналоги, не допускающие переполнения буфера.
- Поставляемые в комплекте экземпляры libevent2 заменены на внешние зависимости.
- Удалены неиспользуемые компоненты библиотек ISC.
- Осуществлён переход к манипуляции наносекундными отрезками времени вместо микросекунд.
- Исправлены ошибки, выявленные при использовании статических анализаторов.
- C целью унификации их имён изменены названия утилит: sntp переименован в ntpdig, ntp-keygen в ntpkeygen, ntp-wait в ntpwait, update-leap в ntpleapfetch;
- Из состава исключён демон ntpsnmpd, который не соответствует RFC 5907;
- Удалены утилиты ntpdc, вместо которых следует использовать ntpq;
- Прекращена поддержка устаревших типов эталонных часов;
- Добавлена новая утилита ntpfrob, предоставляющая средства для диагностики и тонкой настройки локального хронометра.
- Вместо программы ntpdate предложена shell-обвязка над утилитой ntpdig.
- Вывод часов приведён в соответствие с форматом ISO8601.
В выпуске NTPsec 0.9.7 отражены результаты аудита кодовой базы, проведённого компанией Cure53.de на средства, предоставленные Mozilla Foundation в рамках инициативы "Secure Open Source". В результате проверки была выявлена серия новых уязвимостей, которые также устранены в свежем обновлении оригинального ntp-4.2.8p10. NTPsec затрагивают 4 из 9 выявленных уязвимостей, две из которых (CVE-2017-6463, CVE-2017-6464) могут использоваться для инициирования отказа в обслуживании, одна (CVE-2017-6458) может привести к переполнению буфера при выполнении ctl_put() и одна (CVE-2017-6451) связана с некорректным применением snprintf() в функции mx4200_send(). В оригинальном NTP дополнительно устранены: переполнение буфера (CVE-2017-6462) в DPTS Clock, повышение привилегий в коде User Library для Windows (CVE-2017-6455), переполнение стека при обработке параметров командной строки в инсталляторе для Windows (CVE-2017-6452), переполнение буфера в ntpq при выполнении операции reslist (CVE-2017-6460) и некорректное завершение структуры данных в инсталляторе для Windows (CVE-2017-6459).
Дополнительно в NTPsec 0.9.7 продолжена чистка кода - при подготовке нового выпуска кодовая база сокращена приблизительно на 60 тысяч строк, что примерно 26% от размера кодовой базы в момент форка. Ранее поставляемые в секции contrib программы cpu-temp-log, smartctl-temp-log, temper-temp-log и zone-temp-log теперь объединены в одну утилиту ntplogtemp, упрощающую ведение лога изменения показателей системных датчиков температуры. Драйвер эталонных часов SHM (Shared Memory Driver) теперь может работать на системах без часов реального времени (RTC, Real Time Clock).
В состав включён новый скрипт buildprep, выполняющий подготовительные работы для сборки исходных текстов NTPsec, такие как проверка, загрузка и установка необходимых зависимостей. Проведена работа по увеличению точности - увеличено число знаков в выводе различных утилит, например, driftfile теперь отображает 6 знаков после запятой, вместо 3, а в полях файлов со статистикой отображается 9 знаков после запятой, вместо 6. Похожее увеличение точности вывода также реализовано в ntpq и ntpmon, что может нарушить совместимость со скриптами, осуществляющими автоматический разбор вывода.
По мнению Эрика Реймонда, основная работа уже выполнена и состояние проекта NTPsec уже вполне готово для начала работы над первым стабильным релизом NTPsec 1.0, рекомендованным для промышленного внедрения. Перед релизом усилия можно сосредоточить на оттачивании и тестировании имеющейся кодовой базы. Из планов отмечается подготовка пакетов для популярных дистрибутивов и их продвижение в репозитории. Из областей, в которых можно продолжить упрощение кодовой базы упоминается возможность сокращения кода, применяемого для обработки сетевых сокетов - предлагается удалить нестандартный код для перебора имеющихся сетевых интерфейсов и использовать прикрепление обработчика с использованием маски.
Источники
править
Любой участник может оформить статью: добавить иллюстрации, викифицировать, заполнить шаблоны и добавить категории.
Любой редактор может снять этот шаблон после оформления и проверки.
Комментарии
Если вы хотите сообщить о проблеме в статье (например, фактическая ошибка и т. д.), пожалуйста, используйте обычную страницу обсуждения.
Комментарии на этой странице могут не соответствовать политике нейтральной точки зрения, однако, пожалуйста, придерживайтесь темы и попытайтесь избежать брани, оскорбительных или подстрекательных комментариев. Попробуйте написать такие комментарии, которые заставят задуматься, будут проницательными или спорными. Цивилизованная дискуссия и вежливый спор делают страницу комментариев дружелюбным местом. Пожалуйста, подумайте об этом.
Несколько советов по оформлению реплик:
- Новые темы начинайте, пожалуйста, снизу.
- Используйте символ звёздочки «*» в начале строки для начала новой темы. Далее пишите свой текст.
- Для ответа в начале строки укажите на одну звёздочку больше, чем в предыдущей реплике.
- Пожалуйста, подписывайте все свои сообщения, используя четыре тильды (~~~~). При предварительном просмотре и сохранении они будут автоматически заменены на ваше имя и дату.
Обращаем ваше внимание, что комментарии не предназначены для размещения ссылок на внешние ресурсы не по теме статьи, которые могут быть удалены или скрыты любым участником. Тем не менее, на странице комментариев вы можете сообщить о статьях в СМИ, которые ссылаются на эту заметку, а также о её обсуждении на сторонних ресурсах.