Bitcoin Core розкрила три вразливості 28 жовтня і випустила виправлення у версіях 29.5, 30.4, 31.2 та 32.1, включаючи недолік, який дозволяє зловмисному піру зупинити ноди Windows, macOS і BSD.
Програмне забезпечення Bitcoin Core дозволяє операторам самостійно перевіряти блокчейн Bitcoin і включає гаманець. Проект класифікує дві вразливості, пов’язані з зростанням використання пам’яті, як середньої важливості, а третю, пов’язану зі збереженими даними блокчейну, — як низької важливості. У трьох попередженнях не зазначено, чи спостерігалися випадки експлуатації.
Для операторів на гілках 29.x, 30.x і 31.x виправлені точкові випуски — 29.5, 30.4 і 31.2 відповідно. Версія 32.1 є найновішим випуском. Операторам, які використовують попередні точкові випуски цих гілок, слід оновитися.
Вразливість, що призводить до аварійного завершення роботи у не-Linux дозволяє підключеному зловмиснику надсилати спеціально позначену мережеву трафік, відому як TCP-термінові дані, щоб обійти обмеження на кількість вхідних даних, які нода чергає для обробки. Черга може зростати без обмежень, поки нода не вичерпає пам’ять. Linux не піддається цій конкретній вразливості, оскільки використовує інший механізм для моніторингу мережевих з’єднань.
Друга помилка зростання пам’яті дозволяє зловмисному піру імітувати використання старого протоколу, який не має сучасних повідомлень ping, уникнувши таймауту, який зазвичай від’єднує його. Завдяки затримці читання пір може змусити ноду продовжувати чергувати оголошення. Використання пам’яті може зростати до 2 МБ на годину на кожен вхідний пір або 5 МБ на годину на кожен вихідний пір. Ноди, налаштовані на передачу лише блоків, страждають значно менше.
Ризик окремого зберігання залишається
Третя вразливість стосується файлів «undo», які зберігають інформацію, необхідну для відміни блоків під час переорганізації блокчейну. Майнер може змусити ці файли перевищити ліміти розміру, що призведе до пошкодження даних або вимкнення вразливих нод. Bitcoin Core вважає експлуатацію непрактичною: на 64-бітних системах для підготовки потрібно здобыти кілька тисяч спеціально створених блоків, а також виконати додаткові точні умови для атаки, заснованої на переорганізації.
Виправлення усувають цей недолік на 64-бітних системах, включаючи Windows, але 32-бітні системи та ноди, які зберігають блоки на файловій системі FAT32, залишаються вразливими. Якщо дані для відкоту вже пошкоджені, перезапуск недостатній; відновлення вимагає перебудови індексу блокчейну за допомогою виправленої версії.
Рекомендації відносять виявлення всіх трьох проблем до автоматизованого сканування штучним інтелектом проекту Loupe від Spiral, при цьому Грегорі Сандерс підтвердив результати та повідомив про них у Bitcoin Core. Проект класифікував усі три як «легко виявляні». Його політика розкриття інформації передбачає публікацію виправлень у всіх підтримуваних гілках та попередження без звичайного періоду нерозголошення для цієї категорії.
Щоб оновити, операторам слід повністю вимкнути Bitcoin Core перед встановленням або заміною програмного забезпечення, згідно з інструкціями випуску. У цих зауваженнях також зазначено, що версії 29.x і старші досягли кінця життєвого циклу і більше не отримуватимуть оновлень.


