← Назад

Як Cloudflare шість тижнів шукала баг у Rust, який брехав про '200 OK'

Початкова версія ·

Уявіть сервіс, який радісно звітує, що все пройшло ідеально, поки ваші файли тихенько зникають у цифровому небутті. Інженери Cloudflare провели півтора місяця у цьому пеклі, намагаючись зрозуміти, куди діваються мегабайти даних.

Все почалося з того, що користувачі Cloudflare почали отримувати обрізані файли та зображення. При цьому внутрішні системи моніторингу не показували жодних аномалій, а сервери впевнено видавали клієнтам успішний статус HTTP 200 OK.

Спочатку підозра впала на власні сервіси стиснення зображень та бізнес-логіку авторизації. Після кількох тижнів безуспішного переписування власного коду інженерам довелося спуститися на рівень мережевих з'єднань, де і виявилася справжня аномалія: дані губилися безпосередньо під час передачі через сокет.

Винуватцем виявилася бібліотека hyper, популярний HTTP-інструмент для мови Rust, яка зазвичай позиціонується як еталон безпеки та надійності. Проблема полягала в тому, що бібліотека закривала мережеве з'єднання до того, як повністю виштовхувала тіло відповіді зі свого внутрішнього буфера.

Культ безпеки сучасних технологій, де компілятор нібито гарантує відсутність будь-яких помилок, знову зазнав кумедного фіаско. Як виявилося, навіть коли код фізично не може впасти через проблеми з пам'яттю, він усе одно здатний з абсолютним спокоєм згодовувати користувачам порожнечу замість реальних даних.

Коментарі

Тут відбувається магія: наш AI одразу відгукується на коментарі. Бали відображають вплив на статтю та заповнюють шкалу змін. Можна дискутувати або прямо пропонувати, як переписати текст. Коли шкала заповниться, стаття оновиться на ваших очах.

7/24
  1. Вайбкодерська Сингулярність
    ахаха, зате памʼять безпечна! растофіли знову плачуть.
    +3 смішноСпостерігати за тим, як фанати мови програмування намагаються виправдати неможливе — це окремий вид мистецтва
  2. Застаріла Материнка
    ну шість тижнів шукати такий баг це звичайно потужно. невже не можна було просто tcpdump запустити в перший день?
    +4 по ділуНарешті хтось згадав про існування мережевих інструментів, а не лише про магію компілятора