The OpenNET Project / Index page

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

Уязвимости в проекте Pingora, позволяющие вклиниться в сторонние запросы

10.03.2026 19:30 (MSK)

Компания Cloudflare объявила об устранении трёх уязвимостей во фреймворке Pingora, двум из которых присвоен критический уровень опасности (9.3 из 10). Фреймворк Pingora написан на языке Rust и предназначен для разработки защищённых высокопроизводительных сетевых сервисов. Построенный при помощи Pingora прокси используется в сети доставки контента Cloudflare и обрабатывает более 40 млн запросов в секунду. Уязвимости устранены в выпуске Pingora 0.8.0.

Две наиболее опасные уязвимости допускают проведение атак класса "HTTP Request Smuggling", позволяющих обходить системы ограничения доступа и вклиниваться в содержимое запросов других пользователей, обрабатываемых в том же потоке между фронтэндом и бэкендом (например, для подстановки вредоносного JavaScript-кода в сеанс другого пользователя с сайтом). Проблемы выявлены участником программы Bug Bounty, предусматривающей выплату вознаграждения за обнаружение уязвимостей.

В схеме с обращением к бэкенду через обратный прокси запросы клиентов принимает дополнительный узел, который устанавливает длительно действующее TCP-соединение с бэкендом, осуществляющим непосредственную обработку запросов. Через данное общее соединение обычно передаются запросы разных пользователей, которые следуют по цепочке один за другим с разделением средствами протокола HTTP. Атаки класса HTTP Request Smuggling возникают из-за разной трактовки HTTP-заголовков и спецификаций протокола HTTP на фронтэндах и бэкендах, например, когда фронтэнд использует для определения размера запроса HTTP-заголовок "Content-Length", а бэкенд "Transfer-Encoding: chunked".

Первая уязвимость CVE-2026-2835 присутствует в коде разбора запросов HTTP/1.0 и вызвана некорректной обработкой заголовка "Transfer-Encoding" с несколькими значениями, а также использованием закрытия соединения как признака конца тела запроса (close-delimited). Pingora проверял только вариант "Transfer-Encoding: chunked" и игнорировал данный заголовок, если в нём указывалось несколько значений. В этой ситуации Pingora не учитывал размер в заголовке "Content-Length", а считал телом запроса все данные, полученные до закрытия соединения.

Через указание нескольких значений в заголовке "Transfer-Encoding" атакущий мог создать условия, при которых на бэкенд перенаправлялся запрос, фактический размер которого не соответствовал размеру chunked-цепочки, вычисленному на основе заголовка "Transfer-Encoding. Pingora перенаправлял все полученные данные как один запрос, а бэкенд, например, Node.js, вычислял запрос на основе "Transfer-Encoding: chunked" и оставшийся хвост обрабатывал как начало другого запроса.


   GET / HTTP/1.0
   Host: example.com
   Connection: keep-alive
   Transfer-Encoding: identity, chunked
   Content-Length: 29

   0

   GET /admin HTTP/1.1
   X:


Вторая уязвимость CVE-2026-2833 вызвана некорректной обработкой HTTP-заголовка "Upgrade" в запросах HTTP/1.1. При наличии в запросе заголовка "Upgrade" прокси сразу пробрасывал к бэкенду и остальные данные запроса, следующие за заголовком "Upgrade", не дожидаясь от бэкенда ответа с кодом 101 (Switching Protocols). Из-за этого синхронизация потока между прокси и бэкендом нарушалась и бэкенд воспринимал отправленные после заголовка "Upgrade" данные как отдельный запрос, и отправлял результат выполнения этого запроса в ответ на пришедший следом запрос другого пользователя.


   GET / HTTP/1.1
   Host: example.com
   Upgrade: foo


   GET /admin HTTP/1.1
   Host: example.com


Проблемы проявляются при использовании Pingora в форме обратного прокси (ingress proxy), транслирующего запросы пользователей к бэкендам с использованием протоколов HTTP/1.0 или HTTP/1.1. Применяемая в сети доставки контента Cloudflare конфигурация Pingora не позволяла эксплуатировать уязвимости, так как Pingora в CDN не используется в роли ingress-прокси, перенаправляет запросы только с использованием протокола HTTP/1.1, блокирует запросы с некорректными значениями Content-Length, перенаправляет только одно значение заголовка "Transfer-Encoding: chunked" и подставляет в запросы с заголовком "Upgrade:" дополнительный заголовок "Connection: close", не позволяющий передавать дополнительные запросы в том же соединении.

Третья уязвимость CVE-2026-2836 (степень опасности 8.4 из 10) приводит к отравлению кэша (cache poisoning) из-за генерации ключа размещения данных в кэше (CacheKey) только на основе пути из URI, игнорируя содержимое заголовка "Host". Подобная недоработка приводит к формированию одинаковых ключей кэширования для одинаковых HTTP-путей к разным хостам. Уязвимость может использоваться для подмены содержимого кэша при использовании режима кэширования для нескольких хостов. В Pingora кэширование является экспериментальной функцией, не рекомендованной для рабочих внедрений.

  1. Главная ссылка к новости (https://blog.cloudflare.com/pi...)
  2. OpenNews: Выпуск Pingora 0.7, фреймворка для создания сетевых сервисов
  3. OpenNews: SMTP Smuggling - новая техника спуфинга почтовых сообщений
  4. OpenNews: Атака Continuation flood, приводящая к проблемам на серверах, использующих HTTP/2.0
  5. OpenNews: Атака на системы фронтэнд-бэкенд, позволяющая вклиниться в сторонние запросы
  6. OpenNews: Новая атака на системы фронтэнд-бэкенд, позволяющая вклиниться в запросы
Лицензия: CC BY 3.0
Короткая ссылка: https://opennet.ru/64957-pingora
Ключевые слова: pingora, http, smuggling
При перепечатке указание ссылки на opennet.ru обязательно


Обсуждение (119) Ajax | 1 уровень | Линейный | +/- | Раскрыть всё | RSS
  • 1.2, Диды (ok), 20:53, 10/03/2026 [ответить] [﹢﹢﹢] [ · · · ]  
  • +18 +/
    Ну ожидаемо.
    На brainfuck весьма сложно отслеживать логику приложения.
     
     
  • 2.19, Аноним (19), 21:39, 10/03/2026 [^] [^^] [^^^] [ответить]  
  • +3 +/
    > В Pingora кэширование является экспериментальной функцией, не рекомендованной для рабочих внедрений.

    Если так, почему её использовали?

     
     
  • 3.66, Аноним (-), 03:19, 11/03/2026 [^] [^^] [^^^] [ответить]  
  • –1 +/
    > Если так, почему её использовали?

    Потому что отправлять запросы на аппсервер - грузит аппсервер?

     
  • 2.28, Аноним (28), 22:21, 10/03/2026 [^] [^^] [^^^] [ответить]  
  • +3 +/
    > На brainfuck весьма сложно отслеживать логику приложения.

    А на каком легко? На Go?

     
     
  • 3.68, _ (??), 06:00, 11/03/2026 [^] [^^] [^^^] [ответить]  
  • +2 +/
    На том который знаешь!(С) йА :)
     
  • 2.79, Соль земли2 (?), 09:58, 11/03/2026 [^] [^^] [^^^] [ответить]  
  • +1 +/
    Ну ожидаемо, что Rust хейтят, никак не подтверждая свои слова.
     
     
  • 3.100, Аноним (19), 12:25, 11/03/2026 [^] [^^] [^^^] [ответить]  
  • –1 +/
    критический уровень опасности (9.3 из 10). Фреймворк Pingora написан на языке Rust
     
     
  • 4.107, Соль земли2 (?), 12:40, 11/03/2026 [^] [^^] [^^^] [ответить]  
  • +1 +/
    Это мог быть любой язык.
     
     
  • 5.119, Аноним (19), 15:15, 11/03/2026 [^] [^^] [^^^] [ответить]  
  • +4 +/
    мог быть любой, но оказался раст.
     
     
  • 6.125, Соль земли2 (?), 16:29, 11/03/2026 [^] [^^] [^^^] [ответить]  
  • +1 +/
    А завтра окажется другой язык. И чем хуже раст?
     
     
  • 7.128, dddd (?), 16:52, 11/03/2026 [^] [^^] [^^^] [ответить]  
  • –1 +/
    >И чем хуже раст?

    чем он тогда лучше и зачем вообще его использовать?
    просто ещё один язык с агрессивной рекламой.

     
     
  • 8.131, Соль земли2 (?), 17:20, 11/03/2026 [^] [^^] [^^^] [ответить]  
  • +1 +/
    Неизвестное или рекламируемое - не значит плохое Во всём разбираться надо, всё ... текст свёрнут, показать
     
  • 8.140, Аноним (140), 18:23, 11/03/2026 [^] [^^] [^^^] [ответить]  
  • +1 +/
    Если вам нужно объяснять зачем использовать Rust - он вам не нужен Это инструме... текст свёрнут, показать
     
  • 5.120, Аноним (19), 15:16, 11/03/2026 [^] [^^] [^^^] [ответить]  
  • +/
    > мог быть любой язык

    Но по факту оказался тот, который самый безопасный.

     
  • 4.115, llolik (ok), 14:44, 11/03/2026 [^] [^^] [^^^] [ответить]  
  • +2 +/
    > Фреймворк Pingora написан на языке Rust

    Который, внезапно, от алгоритмических ошибок не освобождает.

     
     
  • 5.121, Аноним (121), 15:57, 11/03/2026 [^] [^^] [^^^] [ответить]  
  • +1 +/
    ВАм мало алгоритмических ошибок, и вы хотите ещё и ошибки управления памятью?
     
     
  • 6.129, llolik (ok), 16:53, 11/03/2026 [^] [^^] [^^^] [ответить]  
  • +1 +/
    > ВАм мало алгоритмических ошибок, и вы хотите ещё и ошибки управления памятью?

    Ну, видимо, кто-то хочет. Я к тому, что язык и не обязывался избавить от всех на свете видов ошибок. От каких - написано в гарантиях.
    От алгоритмических даже искусственный идиот пока справляется так себе. Куда уж компилятору.

     

  • 1.3, Аноним (3), 20:53, 10/03/2026 [ответить] [﹢﹢﹢] [ · · · ]  
  • +9 +/
    РЕШЕТO!!1

    А если серьезно: спецификации содержат настолько большое количество нюансов, что нам ещё долго предстоит выгребать последствия, даже если языки будут супер-пупер безопасные.

     
     
  • 2.16, Аноним (16), 21:23, 10/03/2026 [^] [^^] [^^^] [ответить]  
  • –2 +/
    https://www.opennet.ru/opennews/art.shtml?num=64574
     
  • 2.34, Аноним (34), 22:52, 10/03/2026 [^] [^^] [^^^] [ответить]  
  • +2 +/
    никакой спеки там нет, костыль на костыле
     
  • 2.67, Аноним (67), 05:46, 11/03/2026 [^] [^^] [^^^] [ответить]  
  • –1 +/
    Раст даже не близко безопасный язык в отличии от верифицируемых. Театр безопасности.
     
     
  • 3.77, Жироватт (ok), 09:29, 11/03/2026 [^] [^^] [^^^] [ответить]  
  • +2 +/
    Зато они смогли продать цирк с первоклассным жупелом - "проблемами памяти".
     
     
  • 4.130, dddd (?), 16:57, 11/03/2026 [^] [^^] [^^^] [ответить]  
  • –2 +/
    именно, нахер этот раст, если проблемы с памятью это не единственная проблема, а ещё он предлагает на самом деле малоизученную логическую систему, та что про владение, обычная логика множеств такого не предполагает.
     
     
  • 5.138, Аноним (121), 18:17, 11/03/2026 [^] [^^] [^^^] [ответить]  
  • +1 +/
    >а ещё он предлагает на самом деле малоизученную логическую систему, та что про владение

    А как малоизученная система станет изученной, если её не использовать?

     

  • 1.8, Аноним (16), 21:08, 10/03/2026 [ответить] [﹢﹢﹢] [ · · · ]  
  • –2 +/
    >Уязвимости устранены в выпуске Pingora 0.8.0

    Реагируют, уже хорошо.
    Хотя сейчас везде так, ПО становится всё сложнее и сложнее.

     
     
  • 2.9, Аноним (16), 21:10, 10/03/2026 [^] [^^] [^^^] [ответить]  
  • +1 +/
    >Проблемы выявлены участником программы Bug Bounty, предусматривающей выплату вознаграждения за обнаружение уязвимостей.

    А это прям хорошо.

     
  • 2.12, Аноним (12), 21:17, 10/03/2026 [^] [^^] [^^^] [ответить]  
  • +3 +/
    > Хотя сейчас везде так, ПО становится всё сложнее и сложнее.

    Так и есть. Диды не зря завещали: "Keep it simple, stupid". Но теперь же надо всё переписать, да навернуть покруче.

     
     
  • 3.15, Аноним (16), 21:22, 10/03/2026 [^] [^^] [^^^] [ответить]  
  • +/
    И без переписывания за всем не уследишь:
    1) https://opennet.ru/62635-kernel
    2) https://opennet.ru/64574-bug
     
  • 3.33, Аноним (33), 22:41, 10/03/2026 [^] [^^] [^^^] [ответить]  
  • +6 +/
    > Диды не зря завещали: "Keep it simple, stupid".

    А делали Keep it simple-stupid.
    В первом же новом юниксе выcpaли дырень в 50 строках.

    Как говорится "не мешки ворочать".

     
  • 3.81, Аноним (121), 10:18, 11/03/2026 [^] [^^] [^^^] [ответить]  
  • –2 +/
    >Диды не зря завещали: "Keep it simple, stupid"

    Выкидывай компьютер и бери счёты, живи по заветам дидов.

     

  • 1.24, Аноним (24), 22:02, 10/03/2026 [ответить] [﹢﹢﹢] [ · · · ]  
  • +6 +/
    "haha, classic" (ц)
    Оказывается, если использовать язык программирования, с которым не надо тщательно обдумывать каждую строку, то можно знатно нафакапить.
     
     
  • 2.27, Аноним (28), 22:20, 10/03/2026 [^] [^^] [^^^] [ответить]  
  • +14 +/
    > Оказывается, если использовать язык программирования, с которым не надо тщательно обдумывать каждую строку, то можно знатно нафакапить.

    Обдумавания вроде "как не вылезти за пределы буфера", "как не сделать дабл-фри" и "как не уронить память" на каждую строку никак не спасут тебя от багов, о которых говорится в новости.

    Наоборот: в дополнение к проблемам ищ новости у тебя были бы те самые дабл-фри, вылазания за буфер и т.п.

     
     
  • 3.37, Аноним (37), 23:06, 10/03/2026 [^] [^^] [^^^] [ответить]  
  • –2 +/
    Мне кажется ты не разобрался.
     
     
  • 4.63, ferris (?), 02:44, 11/03/2026 [^] [^^] [^^^] [ответить]  
  • +5 +/
    Угу, тебе кажется
     
     
  • 5.157, Аноним (24), 23:30, 11/03/2026 [^] [^^] [^^^] [ответить]  
  • –1 +/
    ЧСХ - ему правильно кажется.
     
  • 3.104, Аноним (-), 12:32, 11/03/2026 Скрыто ботом-модератором     [к модератору]
  • +/
     
  • 2.29, Аноним (29), 22:25, 10/03/2026 [^] [^^] [^^^] [ответить]  
  • –1 +/
    Он берёт на себя некие гарантии по безопасной работе с памятью, что снижает потребность пограммиста заботиться именно об этом - о памяти. Какие из этого можно сделать выводы? На кону миллион долларов:

    A) Освобождаются силы, что позволяет больше уделять времени другим вещам (общее количество трудозатрат остаётся то же, но перераспределяется на другие проблемы)

    B) Программист перестаёт думать над каждой строчкой вообще, а не только о некоторых моментах с памятью

    Можно позвонить другу, если кажется, что ответ не очевиден. Или попросить помощи у других комментаторов, прямо из зала.

     
     
  • 3.42, Аноним83 (?), 23:31, 10/03/2026 [^] [^^] [^^^] [ответить]  
  • +2 +/
    а) теперь все силы уходят на борьбу с компилятором - чтобы это всё как то собралось за пару часов.
    б) ...и начинает думать о жизни: как с этим всем дальше жить :)
     
     
  • 4.56, Аноним (29), 00:16, 11/03/2026 [^] [^^] [^^^] [ответить]  
  • –5 +/
    Нет никакой борьбы с компилятором если ты научился писать на расте, что занимает... большой текст свёрнут, показать
     
     
  • 5.158, Аноним83 (?), 04:10, 12/03/2026 [^] [^^] [^^^] [ответить]  
  • +/
    Да я вижу как жалкий uv на 350 файлов компилируется минут по 5-10, тогда как quemu на 6500 компилится быстрее.
     
  • 3.57, Аноним (19), 00:19, 11/03/2026 [^] [^^] [^^^] [ответить]  
  • +2 +/
    > критический уровень опасности (9.3 из 10). Фреймворк Pingora написан на языке Rust

    "позволяет больше уделять времени другим вещам" - интересно, каким таким другим вещам программисты уделили время.

     
     
  • 4.72, Аноним (72), 08:09, 11/03/2026 [^] [^^] [^^^] [ответить]  
  • +3 +/
    Смузи же
     
  • 4.76, Аноним (-), 09:29, 11/03/2026 [^] [^^] [^^^] [ответить]  
  • +/
    > "позволяет больше уделять времени другим вещам" - интересно, каким таким другим вещам
    > программисты уделили время.

    Каким, каким. Уволят растаджуна заменив на нейрослоп - и вот - уделяй время чему хочешь. Но бесплатно, увы и ах.

     
  • 2.40, Аноним (40), 23:25, 10/03/2026 [^] [^^] [^^^] [ответить]  
  • +/
    Что характерно, если использовать язык программирования, где приходится обдумывать каждую строчку, то тоже можно знатно нафакапить.
     
  • 2.71, Аноним (72), 08:07, 11/03/2026 [^] [^^] [^^^] [ответить]  
  • +/
    расве растописы думают? я так понял что за них всё ИИ делает
     

  • 1.36, Аноним10084 и 1008465039 (?), 23:03, 10/03/2026 [ответить] [﹢﹢﹢] [ · · · ]  
  • +2 +/
    Противники божественного Rust'а сейчас побегут писать: "Ага, вот видите, Раст не спасает!1" Но на деле эта новость именно что подтверждает, что божественный Раст спасает! Уязвимость не переполнение буффера, а реальная логическая ошибка. Она и на Си завсегда могла быть, только прежде чем ее обнаружить, было бы куча ошибок памяти. А тут сразу логика - успех.
     
     
  • 2.41, Аноним83 (?), 23:28, 10/03/2026 [^] [^^] [^^^] [ответить]  
  • +1 +/
    Но ведь получилось что растовики облажались, теперь кого то из них жестоко покарают и отлучат!
    Нужно срочно придумать или ещё более защищённый язык где такое будет не возможно или какой ИИ с блокчейном приплести, только бы больше программист не было ни в чём виноват - это не выносимый уровень давления на психику!
     
     
  • 3.46, Аноним (46), 23:53, 10/03/2026 [^] [^^] [^^^] [ответить]  
  • +/
    > Но ведь получилось что растовики облажались, теперь кого то из них жестоко покарают и отлучат!

    Конечно.

    > Нужно срочно придумать или ещё более защищённый язык где такое будет

    Можешь начинать.
    Я буду первый кто захочет это попробовать.
    Но разве вы на такое способны?)

     
     
  • 4.159, Аноним83 (?), 04:12, 12/03/2026 [^] [^^] [^^^] [ответить]  
  • +/
    У меня то нет таких проблем с психикой, а для безопасности у меня совсем другие средства, не связанные с ЯП :)
     
  • 3.90, Аноним10084 и 1008465039 (?), 11:17, 11/03/2026 [^] [^^] [^^^] [ответить]  
  • –1 +/
    > Но ведь получилось что растовики облажались, теперь кого то из них жестоко покарают и отлучат!

    В том-то и дело, что нет! Вы, кажется, ничего из моего поста не поняли. Если бы была ошибка с памятью - да, о чем-то таком можно было бы говорить, но ошибка логическая, да и нашли относительно быстро - так что успех внедрения очевиден - ошибки ищутся быстрее и сразу по делу. От логических же ошибок защититься уже труднее, никто и не строил таких иллюзий

     
     
  • 4.160, Аноним83 (?), 04:14, 12/03/2026 [^] [^^] [^^^] [ответить]  
  • +/
    Да да, "вы нипанимаете, это другое!" (С)
     
  • 2.151, Аноним (151), 21:04, 11/03/2026 [^] [^^] [^^^] [ответить]  
  • +/
    Я тебе немного удивлю, но переполнение буфера тоже является следствием логической ошибки.
     

  • 1.38, Tron is Whistling (?), 23:19, 10/03/2026 [ответить] [﹢﹢﹢] [ · · · ]  
  • +1 +/
    Так и запишем: критический уровень опасности на языке Rust предназначен для разработки защищённых сетевых сервисов.
     
  • 1.39, Аноним (39), 23:19, 10/03/2026 [ответить] [﹢﹢﹢] [ · · · ]  
  • +1 +/
    Это только цветочки. Всё, что переписывается на Rust будет обложено бэкдорами и уязвимостями, которые потом задействует. А люди будут верить, что уязвимостей там нет, ибо Rust. Если надо, они её подтянут очередной версией какого-нибудь crate при сборке. Rust пропихивается теми, кто заинтересован через него распространять бэкдоры.
     
     
  • 2.45, 12yoexpert (ok), 23:48, 10/03/2026 [^] [^^] [^^^] [ответить]  
  • +1 +/
    и самое забавное, что для того, чтобы разобраться в проекте на С, тебе обычно достаточно молотка и отвёртки, вплоть до кишок компилятора, а для того, чтобы разобраться в конюшнях раста... ну, как минимум нужен тулчейн под несвободной лицензией, к нему такой же компилятор, пакетный менеджер и бутылка чего-нибудь крепкого, потому что синтаксис
     
     
  • 3.47, Аноним (28), 23:53, 10/03/2026 [^] [^^] [^^^] [ответить]  
  • +/
    > чтобы разобраться в проекте на С, тебе обычно достаточно молотка и отвёртки, вплоть до кишок компилятора

    Извини, что разрушаю твой розовый мирок, но твой компилятор С написан не на С, а не C++. Удачи тебе там разобраться с C++ при помощи "молотка и отвертки".

     
     
  • 4.91, localhostadmin (ok), 11:23, 11/03/2026 [^] [^^] [^^^] [ответить]  
  • +/
    Зависит от компилятора
     
     
  • 5.92, Аноним (121), 11:37, 11/03/2026 [^] [^^] [^^^] [ответить]  
  • +/
    Покажи мне не игрушечный компилятор на си.
     
     
  • 6.93, anonymous (??), 11:46, 11/03/2026 [^] [^^] [^^^] [ответить]  
  • +/
    GCC. Плюсы в него начали тянуть весьма недавно.
     
     
  • 7.94, Аноним (94), 11:53, 11/03/2026 [^] [^^] [^^^] [ответить]  
  • +/
    c 2008, т.е. почти 20 лет.
     
     
  • 8.103, Аноним (19), 12:29, 11/03/2026 [^] [^^] [^^^] [ответить]  
  • +1 +/
    Ну а расту - уже 20 лет с 2006 ... текст свёрнут, показать
     
  • 7.98, анон (?), 12:17, 11/03/2026 [^] [^^] [^^^] [ответить]  
  • +1 +/
    > GCC. Плюсы в него начали тянуть весьма недавно.

    https://gcc.gnu.org/git/?p=gcc.git;a=blob_plain;f=gcc/config/i386/athlon.md;hb
    [CODE]
    ;; Copyright (C) 2002-2026 Free Software Foundation, Inc.
    ;;
    ;; This file is part of GCC.
    ...
    (define_attr "athlon_decode" "direct,vector,double"
      (cond [(eq_attr "type" "call,imul,idiv,other,multi,fcmov,fpspc,str,pop,leave")
       (const_string "vector")
             (and (eq_attr "type" "push")
                  (match_operand 1 "memory_operand"))
       (const_string "vector")
             (and (eq_attr "type" "fmov")
          (and (eq_attr "memory" "load,store")
       (eq_attr "mode" "XF")))
       (const_string "vector")]
    (const_string "direct")))
    [/CODE]
    https://gcc.gnu.org/git/?p=gcc.git;a=blob_plain;f=gcc/match.pd;hb=HEAD
    [CODE]
    /* Match-and-simplify patterns for shared GENERIC and GIMPLE folding.
       This file is consumed by genmatch which produces gimple-match.cc
       and generic-match.cc from it.
    ...
    /* (X ^ Y) ^ (X ^ Z) -> Y ^ Z  */
    (simplify
    (bit_xor (convert1? (bit_xor:c @0 @1)) (convert2? (bit_xor:c @0 @2)))
    (if (tree_nop_conversion_p (type, TREE_TYPE (@1))
          && tree_nop_conversion_p (type, TREE_TYPE (@2)))
      (bit_xor (convert @1) (convert @2))))

    /* Convert abs (abs (X)) into abs (X).
       also absu (absu (X)) into absu (X).  */
    (simplify
    (abs (abs@1 @0))
    @1)
    [/CODE]
    Какой, однако, занятный диалект сишкчки!


     
  • 3.49, Аноним (46), 23:56, 10/03/2026 [^] [^^] [^^^] [ответить]  
  • –1 +/
    > и самое забавное, что для того, чтобы разобраться в проекте на С, тебе обычно достаточно молотка и отвёртки, вплоть до кишок компилятора,

    Напоминает описаныи жигулей или уаза)

    > а для того, чтобы разобраться в конюшнях раста... ну, как минимум нужен
    > тулчейн под несвободной лицензией,

    Несвободной? Даже Столлман и FSF признают пермиссивные лицензии - лицензией свободного программного обеспечения.
    Как раз недавно какая-то баба из FSF комментировала.

    Так что тут ты просто обделался.
    Впрочем это не удивительно.

    > к нему такой же компилятор, пакетный менеджер и бутылка чего-нибудь крепкого, потому что синтаксис

    Конечно, это же не на жаваскипте писать.


     
  • 3.53, Аноним (28), 23:59, 10/03/2026 [^] [^^] [^^^] [ответить]  
  • –1 +/
    > чтобы разобраться в конюшнях раста... ну, как минимум нужен тулчейн под несвободной лицензией

    С каких это пор Apache стал несвободной лицензией?

     
     
  • 4.70, Аноним (-), 07:15, 11/03/2026 [^] [^^] [^^^] [ответить]  
  • –1 +/
    > С каких это пор Apache стал несвободной лицензией?

    С таких как корпы его зажимать стали под пропреитарными респинами. Что элп с своим особым уличным Clang. Что вон те wannabe-rust-автомотивщики с пропертарным тулчейном.

    И тут оказывается что если вы поинженерить решили - отличный выбор между глюкавой хипстерской ср@нью "скачайте ночнушку" где никто ни за что не отвечает - и мерзкой проприетарной пакостью где корп отпаразитировал на том апаче и - вот вам дескать блобы. С особой, уличной лицензией. Конечно совсем не похожей на апача.

     
  • 3.83, Аноним (121), 10:23, 11/03/2026 [^] [^^] [^^^] [ответить]  
  • +/
    >и самое забавное, что для того, чтобы разобраться в проекте на С, тебе обычно достаточно молотка и отвёртки

    Разберись в UB с помощью молотка и отвёртки.

     
  • 2.50, Аноним (28), 23:58, 10/03/2026 [^] [^^] [^^^] [ответить]  
  • +/
    > А люди будут верить, что уязвимостей там нет, ибо Rust.

    Люди знают, что в сишном коде есть уязвимости (их поток уже более полувека не останавливается) - и все равно пользуются софтом, на нем написанном. Так с чего ты драму именно про Раст разводишь?

     
  • 2.55, Анончик давай выпьем чаю. Анончик выручай. (?), 00:02, 11/03/2026 [^] [^^] [^^^] [ответить]  
  • +/
    Я так и не понял, а как собрать rust компилятор из исходников. Он везде как бинарный пакет распространяется. Как Гентушники с этим справляются?
     
     
  • 3.61, Аноним (29), 00:37, 11/03/2026 [^] [^^] [^^^] [ответить]  
  • +/
    https://rustc-dev-guide.rust-lang.org/building/how-to-build-and-run.html

    Первый результат в поиске. Без регистрации и СМС.

     
  • 3.65, Аноним (-), 03:18, 11/03/2026 [^] [^^] [^^^] [ответить]  
  • +/
    > Я так и не понял, а как собрать rust компилятор из исходников. Он везде как
    > бинарный пакет распространяется. Как Гентушники с этим справляются?

    Хрееново справляются. Компилится долго - и что хуже всего - новый собирается только предыдущей версией. Так что если у вас есть вариант на 10 версий старше - вот и будете всю цепочку из 10 версий собирать. Прикупите пару датацентров заодно под такую развлекуху.

     
     
  • 4.80, Аноним (121), 10:17, 11/03/2026 [^] [^^] [^^^] [ответить]  
  • +1 +/
    >Хрееново справляются. Компилится долго

    Эти лицемеры забывают, с какой черепашьей скоростью собираются дырявочно-крестовые проекты. Из более менее популярных, мне известны только два языка с быстрой сборкой - голанг и окамл.
    >Так что если у вас есть вариант на 10 версий старше - вот и будете всю цепочку из 10 версий собирать.

    Опять лицемерные лгуны. Что gcc, что glibc тоже придётся собирать по цепочке. У вас всё равно никогда не получится с помощью условного gcc 2.0 собрать gcc 16.0.

     
     
  • 5.95, Аноним (94), 11:56, 11/03/2026 [^] [^^] [^^^] [ответить]  
  • +/
    > дырявочно-крестовые проекты

    Ой, какая биполярочка пошла ))) А ничего тот факт, что без одного дырявочно-крестового проекта бинарь на расте невозможно собрать от слова совсем? :)

     
     
  • 6.101, Аноним (121), 12:26, 11/03/2026 [^] [^^] [^^^] [ответить]  
  • +/
    А вы с темы не съезжайте. Крестово-дыряшечные проекты компилируются крайне медленно, и вы никак не можете с этим поспорить.
     
     
  • 7.116, Аноним (94), 14:51, 11/03/2026 [^] [^^] [^^^] [ответить]  
  • +/
    Я не съезжаю и не отрицаю, что медленно. Я акцентировал внимание на том, что ты назвал (завуалировано) LLVM дыряшечно-крестовым. Ну ок, весь софт им собранный получается дыряшечный, в том числе все что написано на расте
     
     
  • 8.139, Аноним (121), 18:22, 11/03/2026 [^] [^^] [^^^] [ответить]  
  • +/
    Для того, чтобы это утверждать, нужно доказать причнно-следственную связь А то ... текст свёрнут, показать
     
     
  • 9.148, Аноним (94), 20:22, 11/03/2026 [^] [^^] [^^^] [ответить]  
  • +/
    Падажи, минутку дак ведь это у вас все что написано на сишке - это дырявое ше... текст свёрнут, показать
     
     
  • 10.154, Аноним (121), 21:37, 11/03/2026 [^] [^^] [^^^] [ответить]  
  • +/
    Нет смысла говорить о каждом конкретном случае Большинство ненавистников раста ... текст свёрнут, показать
     
  • 5.96, Аноним (94), 11:59, 11/03/2026 [^] [^^] [^^^] [ответить]  
  • +/
    Да не лицермерный лгут тут ты - https://www.opennet.ru/opennews/art.shtml?num=61501
     
     
  • 6.99, Аноним (121), 12:23, 11/03/2026 [^] [^^] [^^^] [ответить]  
  • +/
    Спасибо, что подтверждаете мои слова.
    www.gnu.org/software/mes/
    >Using this bootstrappable-tcc and the Mes C library we can build an ancient version of the GNU tools triplet: glibc-2.2.5, binutils-2.20.1, gcc-2.95.3.

    Для сборки современного gcc вам внезапно понадобится компилятор крестов, сверх компилятора си, и крайне желательно - именно gcc, поскольку тем же llvm-ом может банально не собраться.

     
     
  • 7.106, Аноним (-), 12:37, 11/03/2026 [^] [^^] [^^^] [ответить]  
  • +/
    > Для сборки современного gcc вам внезапно понадобится компилятор крестов,

    И тем не менее - вон тот распоследний пафосный GCC на ура билдится - прям системным. Без кача ночнушек с васянсайтов, ребилдов цати тулчейнов с сорца и проч. Такая небольшая разница.

    Так что растовский тулчейн для лично меня - просто враждебная конструкция с максимально голимыми полисями девелопа.

     
     
  • 8.109, Аноним (121), 13:08, 11/03/2026 [^] [^^] [^^^] [ответить]  
  • +/
    В нормальных дистрибутивах у вас уже будет актуальная версия пакетов Откровенна... текст свёрнут, показать
     
     
  • 9.122, Аноним (-), 16:11, 11/03/2026 [^] [^^] [^^^] [ответить]  
  • –1 +/
    Если мне какая-то ср нь начинает диктовать какие дистро юзать и прочие скачайте ... большой текст свёрнут, показать
     
     
  • 10.127, Аноним (127), 16:43, 11/03/2026 [^] [^^] [^^^] [ответить]  
  • +1 +/
    Всем пох на твое мнение Ты просто тупоe убойище который заcpaл весь форум своим... текст свёрнут, показать
     
  • 10.142, Аноним (121), 18:36, 11/03/2026 [^] [^^] [^^^] [ответить]  
  • +1 +/
    Ситуация полностью симметричная Вы, аналогичным образом, диктуете разработчикам... большой текст свёрнут, показать
     
  • 5.105, Аноним (-), 12:36, 11/03/2026 [^] [^^] [^^^] [ответить]  
  • +/
    > Эти лицемеры забывают, с какой черепашьей скоростью собираются дырявочно-крестовые проекты.

    Я конечно понимаю что где-то кого-то линчуют. Но вот новую версию тулчейна GCC я могу отстроить себе - прямо системной версией компилера. С той конфигурацией которую я хотел, под те архитектуры что мне надо - и БЕЗ вон того ацкого кластерфака!

    И конечно это не идет ни в какое сравнение с ребилдом цати растовых тулчейнов по цепочке. А если еще и LLVM взять - без которого раст бесполезен чуть менее чем полностью, окажется что и крестовые проекты надо заодно компилять. Потому что без них - там только какие-то servo, cranelift и прочее - что даже забесплатно никто юзать не хочет.

     
     
  • 6.112, Аноним (121), 13:21, 11/03/2026 [^] [^^] [^^^] [ответить]  
  • +/
    >Но вот новую версию тулчейна GCC я могу отстроить себе - прямо системной версией компилера.

    А системная версия компилятора была изначально на ассемблере написана или сразу же в виде двоичного кода шла?
    >И конечно это не идет ни в какое сравнение с ребилдом цати растовых тулчейнов по цепочке.

    Вы опять лжёте. Возьмите ту же генту, без бинарного кеша, хотя-бы десятилетней давности, и соберите актуальную версию. Вам придётся собираеть не только gcc, но и кучу обвязки вроде python-а.
    >А если еще и LLVM взять - без которого раст бесполезен чуть менее чем полностью

    У вас есть абсолютно такой же clang.
    >окажется что и крестовые проекты надо заодно компилять

    Какая наглая ложь. Что gcc, что clang требуют сборки крестовых проектов.

     
     
  • 7.123, Аноним (123), 16:19, 11/03/2026 [^] [^^] [^^^] [ответить]  
  • +/
    Системная версия компилера - традиционно скомпилена сама собой Но на минималках... большой текст свёрнут, показать
     
     
  • 8.143, Аноним (121), 19:03, 11/03/2026 [^] [^^] [^^^] [ответить]  
  • +/
    Вы пошли по кругу Берите актуальны rust хоть из репов арча, в чём проблема Ну ... большой текст свёрнут, показать
     
     
  • 9.149, Аноним (94), 20:31, 11/03/2026 [^] [^^] [^^^] [ответить]  
  • +/
    я не user294, которому вы отвечали, но тут он прости господи, как же тошно и тя... текст свёрнут, показать
     
     
  • 10.150, Аноним (94), 20:37, 11/03/2026 [^] [^^] [^^^] [ответить]  
  • +/
    случайно отправил ему по факту нужны только gcc или любой другой C-компилято... текст свёрнут, показать
     
  • 10.155, Аноним (121), 22:17, 11/03/2026 [^] [^^] [^^^] [ответить]  
  • +/
    Допустим, в том, что питон не нужен, он прав Но проблема со сборкой промежуточн... текст свёрнут, показать
     
  • 3.69, User (??), 06:44, 11/03/2026 [^] [^^] [^^^] [ответить]  
  • +/
    Эээээ... А кого-то волнуют проблемы гентушников? O'rly?
    Ну, справляются как-то - им не привыкать: "ради этого всё и затевалось!"
     
  • 2.82, Аноним (121), 10:22, 11/03/2026 [^] [^^] [^^^] [ответить]  
  • +1 +/
    >А люди будут верить, что уязвимостей там нет

    Это только ыксперты местного уровня прочитали "безопасен по памяти" как "абсолютно безопасен".
    >кто заинтересован через него распространять бэкдоры.

    То ли дело дыряшечные проекты.

     
     
  • 3.124, Анним (?), 16:27, 11/03/2026 [^] [^^] [^^^] [ответить]  
  • +/
    >>кто заинтересован через него распространять бэкдоры.
    > То ли дело дыряшечные проекты.

    Это вы про сабжа так? Нормальные дырки, если у сайта админка есть - можно сайт перехватить от и до. БезопасТненько, чего уж.

     
  • 2.108, Аноним (108), 12:49, 11/03/2026 [^] [^^] [^^^] [ответить]  
  • –1 +/
    Представим на секунду что это не бред. Не знаю как кто, а я лично добровольно поставлю себе любые бэкдоры, и пожертвую любой безопасностью, чтобы писать на нормальном языке.
     
  • 2.113, Аноним (113), 13:23, 11/03/2026 [^] [^^] [^^^] [ответить]  
  • –1 +/
    Как ЦРУ начало рекомендовать Rust для безопасности, так сразу стало понятно почему все переписывают на него. Убогий синтаксис (на уровне C++23), количество и размер зависимостей которому позавидует JS, ну и вложенные наследования, с которыми программа уже не blazingly fast, но без которого компилятор будет ругаться.
     

     ....большая нить свёрнута, показать (42)

  • 1.73, Аноним (73), 08:23, 11/03/2026 [ответить] [﹢﹢﹢] [ · · · ]  
  • +/
    См. "HTTP/1.1 must die: the desync endgame".

    Там сам протокол достаточно плохо спроектирован, что написать обработку всех случаев достаточно сложно.

     
     
  • 2.74, Аноним (74), 08:56, 11/03/2026 [^] [^^] [^^^] [ответить]  
  • +/
    В HTTP/2.0 не лучше, только всё не очевидно и более запутанно. Потенциальных багов из-за бинарного протокола там может быть ещё больше.

    https://opennet.ru/63726-http2
    https://opennet.ru/60924-http2
    https://opennet.ru/59901-ddos

     
     
  • 3.78, Аноним (-), 09:33, 11/03/2026 [^] [^^] [^^^] [ответить]  
  • +/
    > В HTTP/2.0 не лучше, только всё не очевидно и более запутанно. Потенциальных
    > багов из-за бинарного протокола там может быть ещё больше.

    Как раз бинарный протокол сложнее парсить неоднозначно чем текстовый. В текстовом много что может пойти не так. И переводы строк, и регистры и их смесь, и всяие символы заковыристые. А суммарно фронт и бэк десинхрится и совершенно левый запрос васяна подшивается к чужому запросу, например, вообще админа сайта. И вот якобы-админ уже якобы-что-то там запросил. Хорошо быть админом. Особенно - чужого сайта, нахалвяу то.

    В бинарном протоколе - этих классов багов просто нет. Как категории.

     
     
  • 4.111, Аноним (111), 13:17, 11/03/2026 [^] [^^] [^^^] [ответить]  
  • –2 +/
    Плюс текстовых протоколов в том, что человек может их читать без специальных инструментов и нет проблем с пониманием. Меньше вероятность что-то критически пропустить при разработке и отладке.
    >И переводы строк, и регистры и их смесь, и всяие символы заковыристые.

    В бинарных протоколах есть \0 и целый букет проблем вокруг расчета отступов.

     
     
  • 5.114, Аноним (121), 13:27, 11/03/2026 [^] [^^] [^^^] [ответить]  
  • –1 +/
    >что человек может их читать без специальных инструментов

    Не может. Возьмите json одной строкой и попробуйте его прочитать.
    >и нет проблем с пониманием

    Есть. Про проблему Норвегии в yaml не слышали?

     
     
  • 6.136, Аноним (111), 17:55, 11/03/2026 [^] [^^] [^^^] [ответить]  
  • +/
    Раньше я копипастил жсон в одной строке и сидел, энтер жмакал до полной читаемости. Сейчас jq. JSON - это так, легкая обфускация.
     
  • 5.126, Аноним (-), 16:42, 11/03/2026 [^] [^^] [^^^] [ответить]  
  • +1 +/
    И где я это делать должен 1 Снифером мне пофиг что загребать Потом диссектор ... большой текст свёрнут, показать
     
  • 5.162, ptr (ok), 08:47, 12/03/2026 [^] [^^] [^^^] [ответить]  
  • +/
    > В бинарных протоколах есть \0

    Вы можете назвать хотя бы один такой применяемый сейчас бинарный протокол?
    Тогда как в текстовых протоколах указание длины в префиксе элемента проблематично. И поэтому там как раз повсеместно строка терминируется чем-то. От одного символа до группы символов.
    Код для обработки элементов неопределенной длины будет в любом случае сложнее и менее производительный, чем код для обработки элементов известной переменной длины.

     
  • 2.86, Аноним (111), 10:36, 11/03/2026 [^] [^^] [^^^] [ответить]  
  • +/
    >Там сам протокол достаточно плохо спроектирован

    По сравнению с QUIC - легко.

     
     
  • 3.87, Аноним (16), 11:10, 11/03/2026 [^] [^^] [^^^] [ответить]  
  • +/
    https://opennet.ru/55226-quic
     

  • 1.85, Аноним (111), 10:34, 11/03/2026 [ответить] [﹢﹢﹢] [ · · · ]  
  • +2 +/
    Переусложненные корпоративные системы всегда содержат критические проблемы. Никаких исключений.

    > В этой ситуации Pingora не учитывал размер в заголовке "Content-Length", а считал телом запроса все данные, полученные до закрытия соединения.

    Позор.

    >Pingora перенаправлял все полученные данные как один запрос, а бэкенд, например, Node.js, вычислял запрос на основе "Transfer-Encoding: chunked" и оставшийся хвост обрабатывал как начало другого запроса.

    Попривыкли, что можно аппсервер за nginx убрать и не париться. Ну вот отвыкайте теперь.

     
     
  • 2.118, Аноним (19), 15:14, 11/03/2026 [^] [^^] [^^^] [ответить]  
  • +1 +/
    Обычные растерманы. Язык же безопасный, зачем думать. Точнее, чем думать-то.
     

  • 1.117, Аноним (-), 15:06, 11/03/2026 [ответить] [﹢﹢﹢] [ · · · ]  
  • +1 +/
    Мне всегда было интересно, зачем в http понапихали такое количество этих Content-Encoding? Существующие в параллельном мире Content-Length и read-to-end я ещё могу понять, хотели как проще, но получилось так себе. Но зачем было плодить Content-Encoding'ов столько?
     
     
  • 2.135, Аноним (111), 17:53, 11/03/2026 [^] [^^] [^^^] [ответить]  
  • –1 +/
    Так удобно же очень. Опять же, если клиент или сервер часть не поддерживают, ничего страшного.

    >Content-Length и read-to-end я ещё могу понять

    А я не могу понять. Это ламоразм.

     

  • 1.132, нах. (?), 17:37, 11/03/2026 [ответить] [﹢﹢﹢] [ · · · ]  
  • +/
    эх, все хейтят раст, и безусловно за дело...

    но смотрите, какую мощную свинью норкоманы авторы с++ всем подложили:

    “Hash functions are only required to produce the same result for the same input within a single execution of a program; this allows salted hashes that prevent collision denial-of-service attacks.” — cppreference.com

    (и да - нашла мне эту прелессссть sonnet, в погоне за мерзким багом в когда-то популярном в определенных кругах софте)

    А, да - разумеется нет ни одной реально существующей реализации, где реально бы prevent collision attacks. Ноль их.
    Зато с same result отлично вышло - std::hash дает разный на разных компиляторах и даже на разных битностях одного и того же.

    Т.е. в стандартной библиотеке одобренно стандартом вычислять хэшфункции непредсказуемым образом. (причем никаких других "более стандартных" в ней, упс, нету)

     
     
  • 2.133, Аноним (72), 17:43, 11/03/2026 [^] [^^] [^^^] [ответить]  
  • +/
    а не надо просто пихать всё подряд в стандартную библиотеку
     
     
  • 3.134, нах. (?), 17:49, 11/03/2026 [^] [^^] [^^^] [ответить]  
  • +/

    Для современного языка не иметь в стандартной библиотеке типовых хэшей - немного странно.  Так и получаются лефтпады.

    Но вот запихать вместо них вычислялку хэша с непредсказуемым результатом - это надо было удумать.

    (и да, нашлись те кто использовал эту чушь для контроля целостности данных)

     
  • 2.156, Аноним (156), 22:57, 11/03/2026 [^] [^^] [^^^] [ответить]  
  • +/
    Это хэш-функция для внутреннего использования приложения. Эти хэши не предназначены для обработки/проверки другими средствами. Средства для работы с внешними хэшами являются законченным продуктом, который проверяется на многих платформах.
     
     
  • 3.161, нах. (?), 05:39, 12/03/2026 [^] [^^] [^^^] [ответить]  
  • +/
    > Это хэш-функция для внутреннего использования приложения. Эти хэши не предназначены

    ни для чего путного вообще.

    Так короче. Потому что никогда нельзя угадать, когда тебе понадобится зачем-то сохранить или передать кому-то внутреннее состояние чего-то - даже если изначально тебя устраивал одноразовый хэш.

    И вот какого дерьма надо было выкурить или употребить по вене чтобы такую опасную и никому ненужную глупость запихать в стандарт вместо создания нормальной библиотеки с нормальными хэшами? (самое смешное что у msvc - нормальный, например)

     
     
  • 4.167, Аноним (167), 00:10, 13/03/2026 [^] [^^] [^^^] [ответить]  
  • +/
    Вот есть необходимость в hash table для твоего кода, вот и используй. Передавать кому-то и кроссверсировать нельзя. Они действительны только внутри потока.
     

  • 1.153, Аноним (156), 21:25, 11/03/2026 [ответить] [﹢﹢﹢] [ · · · ]  
  • +/
    >а бэкенд, например, Node.js, вычислял запрос на основе "Transfer-Encoding: chunked"

    Этим разработчикам никто не указ. Они сами всем указ.

     

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



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

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