Уязвимость в Instagram позволяла злоумышленнику запускать произвольный код на чужом мобильном устройстве с помощью специально подготовленного изображения. Проблема таилась в разработках Mozilla.
Правильно подобранное изображение
Facebook устранил серьезнейшую уязвимость в Instagram, которая позволяла перехватывать контроль над аккаунтами пользователей. Для этого достаточно было послать потенциальной жертве специально подготовленное изображение с внедренным в него вредоносным кодом.
Уязвимость выявила компания Check Point Software. По данным специалистов, этот баг представляет собой вполне типичное переполнение буфера, при определенных условиях позволяющее запускать произвольный код на целевом устройстве.
В контексте Instagram это особенно опасно, поскольку, как правило, это приложение имеет доступ к широкому диапазону периферийных компонентов и служб, в том числе камере и микрофону, службам геолокации, списку контактов и, конечно, накопителю смартфона.
Чужой код
Источником проблемы является сторонний кодировщик Mozjpeg (Mozilla JPEG Encoder Project), интегрированный в Instagram ради ускорения сжатия и распаковки изображений формата JPEG, загружаемых онлайн. Кодировщик содержал ошибку, приводившую к целочисленному переполнению и переполнению буфера.
Баг в Instagram дал возможность перехватывать контроль над мобильным устройством с помощью картинки
Для эксплуатации проблемы злоумышленнику требуется отправить вредоносное изображение через WhatsApp, SMS, электронную почту или мессенджер и добиться, чтобы жертва сохранила эту картинку и запустила Instagram. Баг может быть использован и для того, чтобы вызывать сбой приложения.
«Сегодня огромная доля кода в коммерческом ПО приходится на опенсорсные разработки, — говорит Анастасия Мельникова, эксперт по информационной безопасности компании SEC Consult Services. — Их использование часто более чем оправданно экономически (зачем писать самостоятельно, если есть что-то готовое), однако качество может разниться. Соответственно, чтобы избежать проблем, сторонний код необходимо подвергать тщательному аудиту и до, и после интеграции с основной разработкой, тем более, что ошибки могут возникать и на этапе внедрения сторонних компонентов»
Эксперты Check Point еще зимой проинформировали Facebook о существующей проблеме, и разработчики Instagram присвоили ей индекс CVE-2020-1895. Патчи для 32- и 64-битных версий приложения под Android и iOS были опубликованы в феврале 2020 г., но раскрытие информации было задержано до сентября.