Electrum закрив критичну вразливість; хакери викрали біткоїни

Гаманець Electrum випустив версію 4.8.3, яка закриває критичну вразливість біткоїн-гаманця. Розробники підтвердили, що шкідливі сервери вже використовували її для підміни платежів користувачів, і зафіксували щонайменше один випадок крадіжки коштів. Про це повідомляє CoinDesk. Суть атаки — підміна непідтверджених вихідних транзакцій. Шкідливий сервер перехоплює надісланий платіж, блокує його трансляцію в мережу Bitcoin і повертає гаманцю альтернативну транзакцію з адресою отримувача, підконтрольною атакувальнику. Підпис у підміненій транзакції недійсний, але вразливі версії Electrum не перевіряють підписи, перш ніж показати її в історії. Пастка спрацьовує, коли користувач підвищує комісію через Replace-by-Fee (RBF) — механізм Bitcoin, що дозволяє замінити непідтверджену транзакцію іншою, з вищою комісією. Погодивши нову комісію, жертва підписує валідну транзакцію на користь зловмисника. Electrum — легкий біткоїн-гаманець: він підключається до зовнішніх серверів, щоб отримувати історію транзакцій, транслювати платежі та збирати інші дані мережі. На відміну від повного вузла Bitcoin, він не обробляє самостійно всі операції в блокчейні. За документацією, підтверджені транзакції перевіряються через спрощену перевірку платежів (SPV), а щодо непідтверджених гаманець історично довіряв своєму основному серверу. Саме на цій розбіжності й будувалася атака. Розробники розкрили два приватні повідомлення про реальні інциденти. 11 жовтня користувач dannydeezy заявив, що транзакція в історії Electrum не збігалася з початково надісланим платежем. 18 жовтня інший користувач, RajuK12, втратив кошти під час спроби підвищити комісію й звернувся до розробників. В обох випадках адреси отримувачів контролювали атакувальники, а їхні останні чотири символи збігалися з адресою справжнього отримувача. У другому випадку підроблена транзакція мала нульову комісію — розробники припускають, що її надіслали спеціально, аби спонукати жертву ініціювати підвищення комісії. Перший інцидент стосувався гаманця з мультипідписом 2-з-3 і двома пристроями Trezor: легітимна транзакція мала 31 вхід і один вихід, усі 62 підписи були дійсними для оригінального платежу й недійсними для підміненого. Підроблена транзакція переказала майже всі біткоїни на схожу адресу, повернувши гаманцю лише невелику частину. Початкова транзакція залишилася валідною, але так і не потрапила в публічну мережу Bitcoin. Electrum визнає: частина серверів справді здійснює цю атаку. Кількість задіяних серверів, суму викраденого та наявність інших постраждалих розробники не розкривають. Виправлення увійшло до версії 4.8.3 23 жовтня, а бінарні файли стали доступні 24 жовтня. Комітом 90fe308 розробник додав перевірку підписів для непідтверджених транзакцій, входи яких контролює гаманець користувача. Тепер Electrum перевіряє підписи, перш ніж додати такі транзакції до локальної історії, тож підроблені вихідні платежі не відображатимуться як легітимні. Повним вузлом Bitcoin гаманець від цього не стає: вхідні непідтверджені транзакції новою перевіркою не охоплено, а для підтверджених платежів діє попередній порядок верифікації. Користувачам версій до 4.8.3 радять оновитися з офіційного сайту Electrum. Тим, хто не може зробити це негайно, рекомендують перед підписанням звіряти повну адресу отримувача й суму, зокрема в транзакціях із заміною комісії. Підключення лише до довірених серверів, включно з власним, від цієї конкретної атаки захищає. Історія Electrum показує, що ризики зовнішніх серверів виникають не вперше. У грудні 2018 року, за даними crypto.news, шкідливі сервери показували користувачам підроблені повідомлення про оновлення програмного забезпечення; тоді оцінювали втрати майже в $1 млн. У 2019 році чергова хвиля атак через фальшиві оновлення гаманця та атаки на відмову в обслуговуванні спрямовувала користувачів на скомпрометоване програмне забезпечення. Ті кампанії покладалися на оманливі завантаження, а нововиправлена вразливість працювала всередині цілком легітимного гаманця — через маніпуляцію даними про непідтверджені транзакції. Публікація 2020 року з інтерв'ю про сервери Electrum описувала компроміси легких гаманців, зокрема залежність від зовнішньої інфраструктури для історії транзакцій. Документація Electrum зазначає: клієнт зазвичай підключається приблизно до десяти серверів, але обирає один основний для отримання історії гаманця й трансляції транзакцій. Цьому основному серверу, як зазначено, довіряють щодо непідтверджених транзакцій.