Представлен первый выпуск новой основной ветки nginx 1.27.0, в рамках которой будет продолжено развитие новых возможностей. Одновременно сформирован выпуск nginx 1.26.1, относящийся к параллельно поддерживаемой стабильной ветке, в которую вносятся только изменения, связанные с устранением серьёзных ошибок и уязвимостей. В следующем году на базе основной ветки 1.27.x будет сформирована стабильная ветка 1.28. Код проекта написан на языке Си и распространяется под лицензией BSD...Подробнее: https://www.opennet.dev/opennews/art.shtml?num=61269
Опять CVE для дев ветки? Дунин опять уйдёт из F5?
> Опять CVE для дев ветки?
> Дунин опять уйдёт из F5?Конечно!
Но только после того, как заберет патчи в свою Свободную™ версию
Тем временем реализация на Rust модуля quic под nginx от cloudflare давно работает в проде, и не имеет известных уязвимостей
> работает в проде
> не имеет известных уязвимостейЭто ещё не аргумент в пользу модных язычков.
> Это ещё не аргумент в пользу модных язычков.Конечно! Нужно использовать древнейший копролитный язык, и проект на нем, в котором точно есть известные уязвимости!
Их же можно будет искать и исправлять десятилетиями.
Заодно без работы не останутся)
>не имеет известных уязвимостейНу ничего, зато неизвестные на месте, учитывая количество unsafe блоков в ржавых проектах.
Ну найдите хоть одну :)Код на сишке — это 100% unsafe. Код на rust с одним unsafe на 1000 строк — 0.1% unsafe.
Тем временем клоунфларе с помощью ресурсов типа ценсис и днсдампстер обходится с вероятностью процентов 80.
> с вероятностью процентов 80Показывай, как рассчитывал. И заодно расскажи, как тебе эти погремушки помогают пробить фаерволл и mTLS.
Обожаю опеннетных кекспертов, от кого ещё узнаешь о чём пацаны за гаражами болтают?
Если злоумышленники знают ваш внешний адрес, на который ходит cloudflare, они могут легко залить вас трафиком, и никакой фаервол вам не поможет. И cloudflare сможет только показать, что конечный сервер недоступен.
> Если злоумышленники знают
> ЕслиА если не знают? Да и откуда им его узнать, если эндпоинт ником кроме CF не отвечает?
Исключительно ежедневная практика и статистика.
Судя по тому, что ты написал ты в принципе не понимаешь как WAF такого типа работает и что за ценсис с днсдампстером.
Так что теоретизируй на кафедре с другими всезнайками дальше.
> Исключительно ежедневная практика и статистика.Стало быть точно пацаны за гаражами рассказывали. Ни ценсис, ни днсдампер тебе никак не помогут найти бэкэнд за «WAF такого типа», при условии, что всё настроено по BCP. Я это на практике знаю, так как всех своих клиентов первым делом подключаю к публичному интернету через CF, специально чтобы школьники с ценсисом в логах не шумели. Но даже если я перечислю все подсети, тебе это всё равно никак не поможет. Трафик тупо заблэкхолится на границе AS наших аплинков.
ну всё просто. любая программа имеет уязвимости особенно новая.
если они не найдены то она просто никому не нужна
О, а можно ссылку на то как это завести.
> Тем временем реализация на Rust модуля quic под nginx от cloudflare давно
> работает в проде, и не имеет известных уязвимостейТак новостей про "просто работает" много не насочиняешь)
Разве что "вышла новая версия", да и в комментах будет уныло.А вот новость про типичную дырку "шел по буферу, считать не научился, вышел за пределы, все сломал" соберет кучу комментов.
А веселые обсуждения, это хорошо)
> налажена сборка в NetBSDНужность примерно такая же, как и у самого форка. Как нельзя лучше иллюстрирует мой тезис о том, что «без корпоративного вмешательства» программисты будут бесконечно оптимизировать тулчейн.
И чего? Есть в ТЗ поддержка нетбсд, программист взял тикет, закрыл. Причина тряски? Или ты не знаешь как работают команды людей?
> Есть в ТЗ поддержка нетбсд
> Или ты не знаешь как работают команды людей?Как команды работают я знаю очень хорошо, и потому с уверенностью могу сказать, что в ТЗ поддержки NetBSD нет и быть не может, потому что не существует валидного бизнес-кейса для поддержки маргинальных ОС.
А какое ваше дело, чем человек занимается в свое свободное время? Он вам что-то должен? Долговая расписка есть?
Так это всё-таки хобби-проект, как и предполагалось изначально. А чего тогда Дунин пыжился, мол, ещё неизвестно кто форк? Цену себе набивал?
почему бы не стандартизировать интерфейс для подобных протоколов и потом браузер сначала скачивает с сервера и кеширует код для протокола запускает его и дальше работает как задумано.
Стандартизация подразумевает множество реализации. А догорняк – реализации тех, кого надо и с кем надо договориться. Потом у них все возьмут и будут сверяться как с эталоном. И так много западных технологий работают.
уязвимости вызваны:
> обращением к уже освобождённой памяти (use-after-free),
> неверным выделением памяти под массив,
> разыменованием нулевого указателя
> отсутствием должной проверки размера помещаемых в буфер данных.Охохо! Классическое дыряшечное бинго!
Никогда такого не было, и вот опять!
Напиши уже себе уже аналог на rust и пользуйся им на какой-нибудь redox. Зачем тебе новость о программе на сях?
> Зачем тебе новость о программе на сях?Это не просто новость о программе на сях. Это новость об очередной порции классических сишных дырений.
Причем настолько классических, что для некоторых завели отдельные категории cve)))
Но ты почему-то начал приплетать раст. Почему?)> Напиши уже себе уже аналог на rust
Уже написан клаудфарей. И редокс тебе не нужен - оно прекрасно работает на линуксе.
Просто не весь народ о нем знает. Им нужно просто об этом рассказать.
А где это лучше делать как не в новости про то, что использование сишных программ может привести к "аварийному завершению рабочего процесса nginx" как минимум, и "потенциальной возможности выполнения кода атакующего" как максимум.
Видя непрекращающийся поток сишных уязвимостей и тотальную необучаемость сишников, люди чуть поумнеют и начнут стараться обходить сишный софт стороной при наличии аналогов. Разве это не прекрасно?))
Никто не видел твой клаудфлер. А вот на Go написаны настоящие современные веб сервера которые реально можно пощупать и даже код почитать.
> Никто не видел твой клаудфлер. А вот на Go написаны настоящие современные
> веб сервера которые реально можно пощупать и даже код почитать.Печально что гошники настолько недалекие, что не могут найти проект на гитхабе.
На, держи github.com/cloudflare/pingora
Можешь и пощупать, и код почитать!С другой стороны это не удивительно, сам один из создателей го писал, что язык создавался... ну, скажем так, не для выдающихся разработчиков))), а чтобы каждый тупенький мог на нем писать.
Самоутвердиться же своих достижений у него нет.
Фиксы как всегда шикарны))+ qb->last_chain = NULL;
Ну забыли занулить, бывает, дело то житейское)- elts = ngx_alloc(max * sizeof(void *), c->log);
+ elts = ngx_alloc((max + 1) * sizeof(void *), c->log);
Не умеем считать размер выделяемой памяти начиная с 1972 года...+ st->value.data = (u_char *) "";
Зачем инициализировать данные, если можно про это забыть. Дважды!+ if ((size_t) (end - p) < len)
Проверка входных данных - это особое тайное знание.
О котором большинство сишников даже не догадывается...Отдельное спасибо автору новости, который не поленился привести ссылки на их гит для каждой из уязвимостей.
Да, такое впечатление, что писано жопой. Или студентами.А сколько вою на болотах стоит на тему "скиллы всё решают, раст не нужен"!
Да он и не нужен, независимо от прочих факторов.
Только все нормальные веб серверы написаны на Go. Раст отстал в этом плане на миллион лет от нормальных языков.
Это модуль в стадии разработки. На сайте английским (да и русским) по белому написано, что для продакшена не готово.Ну, Сысоев с Дуниным, конечно, лучше писали и с первого раза, но они вообще среди лучших. Но и тут нормально, до релиза нашли и исправили, всё хорошо.
Сысоев и Дунин, возможно, хорошие кодеры, но время показало в очередной раз, что даже самые лучшие кодеры в лучшем случае посредственные программисты, и совсем никакие архитекторы. Подробности о плохом дизайне Nginx можно почитать да хоть у тех же CloudFlare, которые в отличие от местных анонимов с вэпээсочкой за два евро в месяц использовали Nginx в проде в хвост и в гриву.
Так надо было на С++ писать сразу. Raii и всё.
И как ты потом будешь мериться синтетикой которая будет показывать дико плохие результаты?
> + st->value.data = (u_char *) "";
> Зачем инициализировать данные, если можно про это забыть. Дважды!Ну, Вы вот тоже не смогли до 3-рёх посчитать...