Представлен (https://blog.ntpsec.org/2017/03/21/version-0-9-7.html) новый выпуск проекта NTPsec (https://www.ntpsec.org/), в рамках которого развивается форк эталонной реализации протокола NTPv4 (http://www.ntp.org/) (NTP Classic 4.3.34), сфокусированный на переработке кодовой базы с целью повышения безопасности. Исходные тексты NTPsec размещены (https://gitlab.com/NTPsec/ntpsec) в репозитории на GitLab. В развитии NTPsec участвуют (https://www.ntpsec.org/core-team.html) некоторые разработчики оригинального NTP Classic, инженеры из компаний Hewlett Packard и Akamai Technologies, а также участники проектов GPSD (http://www.catb.org/gpsd/) и RTEMS (https://www.rtems.org/). Одним из инициаторов создания проекта является Эрик Реймонд (Eric S. Raymond), один из основателей организации OSI (Open Source Initiative).
Проект полностью совместим с классическим пакетом NTP и использует те же алгоритмы. Олтичия (https://gitlab.com/NTPsec/ntpsec/blob/master/NEWS) NTPsec в основном касаются переработки внутренностей (https://www.ntpsec.org/accomplishments.html) с внедрением передовых техник предотвращения проведения атак. Среди особенностей проекта:
- Все функции работы с памятью и строками заменены на защищённые аналоги, не допускающие переполнения буфера.
- Поставляемые в комплекте экземпляры 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".
В результате проверки была выявлена серия новых уязвимостей, которые также устранены (http://support.ntp.org/bin/view/Main/SecurityNotice#Recent_V...) в свежем обновлении оригинального ntp-4.2.8p10 (http://ntp.org/). 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 продолжена (https://gitlab.com/NTPsec/ntpsec/blob/master/NEWS) чистка кода - при подготовке нового выпуска кодовая база сокращена приблизительно на 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, что может нарушить совместимость со скриптами, осуществляющими автоматический разбор вывода.
По мнению (https://lists.ntpsec.org/pipermail/devel/2017-March/003905.html) Эрика Реймонда, основная работа уже выполнена и состояние проекта NTPsec уже вполне готово для начала работы над первым стабильным релизом NTPsec 1.0, рекомендованным для промышленного внедрения. Перед рлизом усилия можно сосредоточить на оттачивании и тестировании имеющейся кодовой базы. Из планов отмечается подготовка пакетов для популярных дистрибутивов и их продвижение в репозитории. Из областей, в которых можно продолжить упрощение кодовой базы упоминается возможность сокращения кода, применяемого для обработки сетевых сокетов - предлагается удалить нестандартный код для перебора имеющихся сетевых интерфейсов и использовать прикрепление обработчика с использованием маски.
URL: https://blog.ntpsec.org/2017/03/21/version-0-9-7.html
Новость: http://www.opennet.me/opennews/art.shtml?num=46242
Жаль Ntimed (https://github.com/bsdphk/Ntimed) уже два года не обновляется, хорошая была задумка.
таки на Go или на Rust переписали?
СИ
Ну не на JS хотя бы
ЕМНИП, попытки были, Эрик опробовал оба языка и забраковал по разным причинам.
Эрик забраковал - "значит надо брать"
Кажется он наоборот на go успешно накидал irc-сервер за вечер, а вот на расте за неделю так и не смог, о чём радостно и сообщил его фоннатам, вызвав у них закономерный РЕЗУЛЬТАТ.
> таки на Go или на Rust переписали?http://benchmarksgame.alioth.debian.org/u64q/compare.php?lan...
Гопарям до растов почти как до китая в одной интересной и для кое-кого даже эротичной, позе.
Сколько сопл^W эмоций :)
Пойди плюсы порви эмоциональный ты наш :) А потом, если сможешь, посмотри на код там и тут ... и реши - а оно того стоило? Всё тот же ужоснах летящий на крыльях ночи. :)))))Ну и на го уже пишут, и всё больше и больше, и предложения по работе появляются ... С ржавчиной такого пока и близко нет.
Это было бы правдой, если бы rust уверенно побеждал не только в тестах на GC и либу регексов, а главное не кушал бы значительно больше памяти в ряде тестов. А так можно лишь сказать, что rust в среднем несколько быстрее Go.
OpenNTPD теперь не нужен?