Хакер #305. Многошаговые SQL-инъекции
Исследователи из компании Check Point рассказали о критических уязвимостях, которые им удалось обнаружить на крупнейшем в мире NFT-маркетплейсе OpenSea. Чтобы похитить чужую криптовалюту, злоумышленнику нужно было просто вынудить пользователя кликнуть на вредоносное NFT-изображение.
OpenSea — это крупнейшая торговая площадка, где можно продавать и покупать NFT (невзаимозаменяемые токены) и другие активы. Объем ее транзакций только в августе 2021 года составил 3,4 миллиарда долларов США.
Эксперты Check Point решили провести исследование OpenSea, заметив в сети множество сообщений о бесплатных NFT, которые якобы раздавали пользователям. Вскоре исследователям удалось связаться с жертвой мошенников, которая сообщила, что ее криптовалютный кошелек был взломан, а незадолго до этого она взаимодействовала с одним из таких бесплатных airdrop’ов.
Дело в том, что для учетной записи OpenSea требуется сторонний криптовалютный кошелек из списка поддерживаемых платформой. Одно из наиболее популярных решений — MetaMask, который и выбрали исследователи. Связь с кошельком устанавливается практически при любом действии: даже если просто полайкать какой-то NFT, это запускает запрос входа в кошелек.
Стоит объяснить, что на OpenSea любой может продавать цифровое искусство в виде файлов размером до 40 Мб с любым из следующих расширений: JPG, PNG, GIF, SVG, MP4, WEBM, MP3, WAV, OGG, GLB, GLTF. Зная об этом, эксперты Check Point загрузили на OpenSea изображение SVG, содержащее вредоносный код JavaScript. При нажатии на него, чтобы открыть в новой вкладке, обнаружилось, что файл выполняется в поддомене storage.opensea.io. Тогда исследователи добавили iFrame к изображению для загрузки HTML-кода, который будет внедрять запрос window.ethereum, необходимый для установления связи с Ethereum-кошельком жертвы.
В итоге, разбираясь в проблеме, специалисты сумели выявить критические уязвимости в OpenSea, доказав, что вредоносные NFT могут быть использованы для взлома чужих учетных записей и кражи криптовалюты. Оказалось, что для успешной эксплуатации уязвимостей маркетплейса требовалось выполнить следующие простые шаги.
- Хакер создает и дарит жертве вредоносный NFT.
- Жертва просматривает вредоносный NFTи видит всплывающее окно, где у нее запрашивают подключение к криптовалютному кошельку (такие всплывающие окна часто встречаются на платформе при различных других действиях);
- Жертва кликает на кнопку подключения к своему кошельку, чтобы выполнить действие с подаренным NFT, и в итоге предоставляет доступ к кошельку злоумышленнику;
- Чтобы похитить средства, хакер выводит еще одно всплывающее окно, которое также связано со storage-доменом OpenSea. Если пользователь вовремя не заметит в этом всплывающем окне примечание о транзакции и кликнет по нему, злоумышленник сможет похитить криптовалюту. Увы, такие запросы часто появляются как «системное уведомление», и пользователи, скорее всего, одобрят транзакцию, даже не прочитав сообщение.
Исследователи сообщили разработчикам OpenSea о проблемах 26 сентября 2021 года. Менее чем через час проблема была устранена, и эксперты подтверждают, что все векторы атак в настоящее время закрыты.