The OpenNET Project / Index page

[ новости /+++ | форум | теги | ]

Выпуск NTPsec 0.9.7, защищённого форка NTPD

23.03.2017 11:24

Представлен новый выпуск проекта 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, рекомендованным для промышленного внедрения. Перед релизом усилия можно сосредоточить на оттачивании и тестировании имеющейся кодовой базы. Из планов отмечается подготовка пакетов для популярных дистрибутивов и их продвижение в репозитории. Из областей, в которых можно продолжить упрощение кодовой базы упоминается возможность сокращения кода, применяемого для обработки сетевых сокетов - предлагается удалить нестандартный код для перебора имеющихся сетевых интерфейсов и использовать прикрепление обработчика с использованием маски.

  1. Главная ссылка к новости (https://blog.ntpsec.org/2017/0...)
  2. OpenNews: В рамках проекта NTPsec создан защищённый форк NTPD
  3. OpenNews: Рассматривается возможность перевода NTPsec на язык Rust или Go
  4. OpenNews: Представлен NTP-сервер Ntimed, который будет развиваться параллельно с NTPD
  5. OpenNews: Проект OpenBSD выпустил NTP-сервер OpenNTPD 6.0
  6. OpenNews: Выпуск ntpd 4.2.8p9 с устранением уязвимостей
Лицензия: CC BY 3.0
Короткая ссылка: https://opennet.ru/46242-ntpsec
Ключевые слова: ntpsec
При перепечатке указание ссылки на opennet.ru обязательно


Обсуждение (12) Ajax | 1 уровень | Линейный | +/- | Раскрыть всё | RSS
  • 1.1, Аноним (-), 11:54, 23/03/2017 [ответить] [﹢﹢﹢] [ · · · ]  
  • –1 +/
    Жаль Ntimed (https://github.com/bsdphk/Ntimed) уже два года не обновляется, хорошая была задумка.
     
  • 1.7, Аноним (-), 16:32, 23/03/2017 [ответить] [﹢﹢﹢] [ · · · ]  
  • +/
    таки на Go или на Rust переписали?
     
     
  • 2.8, Аноним (-), 17:22, 23/03/2017 [^] [^^] [^^^] [ответить]  
  • +1 +/
    СИ
     
     
  • 3.9, Аноним (-), 19:08, 23/03/2017 [^] [^^] [^^^] [ответить]  
  • –3 +/
    Ну не на JS хотя бы
     
  • 2.11, angra (ok), 21:01, 23/03/2017 [^] [^^] [^^^] [ответить]  
  • +/
    ЕМНИП, попытки были, Эрик опробовал оба языка и забраковал по разным причинам.
     
     
  • 3.12, Led (ok), 21:17, 23/03/2017 [^] [^^] [^^^] [ответить]  
  • –2 +/
    Эрик забраковал - "значит надо брать"
     
  • 3.17, Аноним (-), 11:10, 24/03/2017 [^] [^^] [^^^] [ответить]  
  • +/
    Кажется он наоборот на go успешно накидал irc-сервер за вечер, а вот на расте за неделю так и не смог, о чём радостно и сообщил его фоннатам, вызвав у них закономерный РЕЗУЛЬТАТ.
     
  • 2.13, другой Аноним (?), 22:53, 23/03/2017 [^] [^^] [^^^] [ответить]  
  • +1 +/
    > таки на Go или на Rust переписали?

    http://benchmarksgame.alioth.debian.org/u64q/compare.php?lang=rust&lang2=go
    Гопарям до растов почти как до китая в одной интересной и для кое-кого даже эротичной, позе.


     
     
  • 3.14, _ (??), 23:17, 23/03/2017 [^] [^^] [^^^] [ответить]  
  • +/
    Сколько сопл^W эмоций :)
    Пойди плюсы порви эмоциональный ты наш :) А потом, если сможешь, посмотри на код там и тут ... и реши - а оно того стоило?  Всё тот же ужоснах летящий на крыльях ночи. :)))))

    Ну и на го уже пишут, и всё больше и больше, и предложения по работе появляются ... С ржавчиной такого пока и близко нет.

     
  • 3.18, angra (ok), 12:29, 24/03/2017 [^] [^^] [^^^] [ответить]  
  • +/
    Это было бы правдой, если бы rust уверенно побеждал не только в тестах на GC и либу регексов, а главное не кушал бы значительно больше памяти в ряде тестов. А так можно лишь сказать, что rust в среднем несколько быстрее Go.
     

  • 1.10, Римус (?), 20:55, 23/03/2017 [ответить] [﹢﹢﹢] [ · · · ]  
  • –2 +/
    OpenNTPD теперь не нужен?
     

     Добавить комментарий
    Имя:
    E-Mail:
    Текст:



    Партнёры:
    PostgresPro
    Inferno Solutions
    Hosting by Hoster.ru
    Хостинг:

    Закладки на сайте
    Проследить за страницей
    Created 1996-2024 by Maxim Chirkov
    Добавить, Поддержать, Вебмастеру