Just the rumour of a bug is enough to find an exploit these days 🔥 Горячее
Слух о баге в OCaml-библиотеке cohttp привёл к тому, что атаки начались ещё до публикации исправления. Автор обнаружил в логах своего веб-сервера попытки эксплуатации уязвимости path traversal всего через несколько минут после открытия публичного pull request с патчем. Используя собственный ИИ-агент (DeepSeek V4 Pro), он смог воспроизвести эксплойт локально за минуту, основываясь лишь на общем описании проблемы — что демонстрирует, насколько быстро современные агентные системы могут находить уязвимости по косвенным намёкам.
Традиционный процесс закрытого исправления и embargo перестал работать: агенты, получив лишь общее направление (например, описание CVE), способны самостоятельно исследовать код и создавать эксплойты. Исследования показывают, что GPT-4-агент эксплуатирует 87% уязвимостей по их описанию, а среднее время до эксплуатации теперь отрицательное — атаки начинаются до выхода патча. Это требует пересмотра практик безопасности в open source: нужны быстрые механизмы триажи, верификации и доверия, а также защитные системы, способные противостоять автоматизированным атакам в реальном времени.
Комментарии (107)
Тред подтверждает: волна фейковых и низкокачественных security-репортов стала повседневностью для open source, а LLM сократили цикл от слуха до эксплойта и массового сканирования до минут. Главный враг — не техника, а отсутствие воли фиксить баги и медленный релиз патчей против рисков supply-chain автообновлений. По опыту @nickcw (rclone): за 10 лет — ~20 репортов, за последний месяц — >40, ~75% содержат зерно проблемы, конфигурации для воспроизведения становятся экзотичнее. @thedonncha наблюдает волнообразное накопление: после исчерпания одного проекта атаки переключаются на следующий, качество падает, нагрузка — нет. @bri3d и @happyopossum: использование PoC из обрывков кода — не ново, но LLM демократизировали его, сжав цикл (чтение коммита → RE → сборка → сканирование) с дней/недель до минут/часов. @loeg и @avsm: memory-safe языки (включая OCaml) не спасают — LLM находят логические баги и corner-кейсы в C-биндингах, как в Mirage-crypto. @loeg утверждает, что такие языки снижают число эксплуатируемых багов, но @avsm и @aseipp настаивают: ключевая проблема — масштабируемость и скорость атак: от слуха до эксплойта теперь часы, и это легко масштабируется деньгами и compute. @stephbook и @talon8635: реальный bottleneck — rollout/deployment. Обновление стека за 10 минут — редкость, CI верифицирует бизнес-логику дольше, автообновления сами становятся вектором supply-chain атаки. Выбор между известной уязвимостью и слепым доверием к апдейтам — ловушка. @Saghm и @xbar обсуждают, может ли LLM «найти» эксплойт по ложному слуху; @petesergeant приводит пример sgnt.ai/p/terrible-mistake: агент генерирует критичный баг по ложной подсказке — false positives становятся индуктивным инструментом. Советы: @nickcw — держать security-фиксы в отдельных ветках, мёржить только в релиз-день, мириться с конфликтами. @rndhouse — построил инструмент для детекции «тихих» багфиксов через GPT-5.5-класс модели; обфускация изменений для обхода — ненадёжна, c-lightning временно раздавал закрытый бинарь. @ChrisMarshallNY и @skybrian: мейнтейнеры могут уйти в приватные репозитории ради сокращения окна эксплуатации — хотя публичность ранее игнорировалась с тезисом «LoL MaRkEtInG». @godelski и @dingdongditchme: менеджмент давит на скорость и отказывается чинить баги, которые Claude уже верифицировал в open PR; без воли — качество ПО не растёт, LLM только ускоряют и хорошее, и плохое. @janpeuker: когда средние и высокие баги станут дёшевы для фикса, lowkey-хакинг и privacy-аудиты станут prohibitively expensive для обычных граждан — баланс сил сместится. Остальные не оспаривают напрямую, но тон треда — про удешевление эксплойтов, а не защиты.
Why I love OCaml (2023) 🔥 Горячее 💬 Длинная дискуссия
Автор делится своим опытом работы с различными языками программирования, объясняя, почему OCaml стал его любимым языком. Он начал с Haskell, который оценил за функциональное программирование и статическую типизацию, но столкнулся с его сложностью и медленной компиляцией. Позже он попробовал Go, который понравился своей простотой, скоростью компиляции и хорошими инструментами, но разочаровал многословностью обработки ошибок и отсутствием функциональных возможностей. OCaml, по мнению автора, сочетает в себе лучшее из обоих миров: функциональные конструкции, статические гарантии, быструю компиляцию, простую семантику выполнения и отличную документацию. Особо отмечается, что OCaml компилируется в один статический бинарный файл, как Go, но при этом имеет более мощную систему типов и REPL. Автор считает, что создатели OCaml обладают хорошим вкусом, а язык представляет собой идеальный баланс между простотой и выразительностью.
Комментарии (267)
- OCaml не стал мейнстримом из-за синтаксиса, отсутствия нативных библиотек и слабой экосистемы, но его идеи (pattern-matching, type inference, algebraic data types) уже давно живут в Rust, Swift, TypeScript и даже Go.
- Фактически OCaml — это «нативный» вариант F#, но без .NET-экосистемы, а F# — это OCaml без его синтаксиса и с .NET вместо OCaml-стандартной библиотеки.
- Попытка ReasonML привнести более C-подобный синтаксис вместо ужасающего синтаксиса OCaml закончилась тем, что Facebook забросил проект, а вся индустрия JS-инструментов осталась без единого стандарта.
- Попытка Facebook-а внедрить Reason вместо TypeScript внутри Facebook показала, что даже если синтаксис и не является проблемой, то отсутствие единого стандарта для сборки и пакетов в JS-мире оставляет язык без шанса.
- Несмотря на то, что OCaml — это язык с 25-летней историей, он не имеет ни мультиплатформенной сборки, ни нормального менеджера пакетов, ни нормального REPL, что делает его неподготовленным к работе вне Unix-подобных систем.
We chose OCaml to write Stategraph
Разработчики Stategraph выбрали OCaml для управления состоянием Terraform, поскольку корректность здесь критически важна. Система хранит состояние как граф зависимостей в PostgreSQL с блокировкой на уровне ресурсов. OCaml позволяет улавливать целые категории ошибок на этапе компиляции, что невозможно в других языках. Сильная типизация данных предотвращает доступ к несуществующим полям, а неизменяемые структуры по умолчанию исключают условия гонки.
Типобезопасные SQL-записи предотвращают дрейф схемы до развертывания, а PPX автоматически генерирует корректную сериализацию JSON. Как отмечают разработчики: "Мы строим инфраструктуру, которая управляет инфраструктурой других людей. Повреждение состояния не может быть 'редким'. Оно должно быть невозможным". Компилятор OCaml обеспечивает безопасность на уровне типов, проверяя все переходы состояний и записи в базе данных, что значительно снижает количество ошибок по сравнению с традиционным подходом, основанным на тестировании.
Комментарии (105)
- Обсуждение показало, что выбор языка часто опирается на субъективные предпочтения и эстетику, а не только на технические аргументы.
- Участники подчеркнули, что такие факторы, как удобство найма разработчиков и удержание их мотивации, могут быть более важными, чем технические характеристики.
- Была поднята тема лицензий и открытого кода как факторов, которые могут влиять на выбор инструментов.
- Обсуждение также затронуло вопросы стоимости владения инструментом и его экосистемой, включая стоимость обучения и доступность кадров.
- Участники отметили, что хотя технические детали важны, они не всегда являются решающими при выборе стека, особенно если учитывать, что большинство современных языков предлагают сравнимые возможности.
Unexpected productivity boost of Rust 🔥 Горячее 💬 Длинная дискуссия
Rust повышает производительность разработки, несмотря на сложность.
Ключевые факторы:
- Жёсткий компилятор ловит ошибки до запуска, уменьшая время отладки.
- Модель владения устраняет гонки и утечки памяти, снижая количество багов.
- Инструменты: Cargo, Clippy, rustfmt и rust-analyzer ускоряют цикл «написание → проверка → запуск».
- Сообщество предлагает качественные крейты и быструю помощь.
- Производительность кода сравнима с C/C++, но без segfault и UB.
В итоге меньше времени тратится на отладку, больше — на новые функции.
Комментарии (433)
- Автор статьи рассказал, как Rust позволяет безболезненно рефакторить большие кодовые базы благодаря строгой типизации и проверкам компилятора.
- Многие участники согласились, что статическая типизация (Rust, Haskell, OCaml-подобные языки) повышает уверенность при изменениях, особенно в многолюдных проектах.
- Часть комментаторов считает сравнение с TypeScript «нечестным»: TS компилируется в JS и наследует его недостатки, а приведённый баг с
window.location.href— это особенность DOM, а не языка. - Некоторые отметили, что Rust тоже не идеален: async/синхронные блокировки, медленная компиляция и «множество способов сделать одно и то же» могут снижать удобство.
- Общий вывод: преимущество Rust в безопасности и рефакторинге особенно заметно на больших проектах, но язык требует времени на изучение и не всегда лучше «классических» статически типизированных альтернатив.