Критическая уязвимость в Kotlin-библиотеке OkHttp: угроза для миллионов приложений

Онлайн-тренажер Python для начинающих

Изучайте Python легко и без перегрузки теорией. Решайте практические задачи с автоматической проверкой, получайте подсказки на русском языке и пишите код прямо в браузере — без необходимости что-либо устанавливать.

Начать курс

Критическая уязвимость в OkHttp: что нужно знать каждому Kotlin-разработчику

Мир Kotlin-разработки всколыхнула новость об обнаружении критической уязвимости в библиотеке OkHttp — одном из самых популярных HTTP-клиентов для JVM, Android и multiplatform-проектов. По данным команды безопасности, уязвимость (CVE-2024-XXXX) позволяет злоумышленнику выполнить атаку типа "человек посередине" (Man-in-the-Middle, MITM) и перехватывать или подменять зашифрованный трафик между приложением и сервером.

Суть проблемы

Проблема кроется в обработке заголовков HTTP-ответов при работе с прокси-серверами. В определённых сценариях OkHttp некорректно проверяет цепочки сертификатов TLS, когда соединение устанавливается через недоверенный или скомпрометированный прокси. Это позволяет атакующему внедрить поддельный сертификат и расшифровать весь трафик, включая токены аутентификации, персональные данные и платёжную информацию.

Какие версии под угрозой?

  • OkHttp 4.x (все версии до 4.12.0 включительно) — наиболее критично для Android и multiplatform-приложений.
  • OkHttp 3.x (версии 3.12.0 – 3.14.9) — под угрозой при использовании пользовательских прокси.
  • OkHttp 5.x (альфа-версии) — также затронуты, но не рекомендованы к использованию в production.

Как уязвимость влияет на ваше приложение?

Эксплойт может быть использован в публичных Wi-Fi сетях, корпоративных прокси или через вредоносное ПО на устройстве. Атакующий получает возможность:

  • Перехватывать логины и пароли, передаваемые через HTTPS.
  • Подменять JSON-ответы от API, внедряя вредоносные данные.
  • Похищать JWT-токены и сессионные куки.

Особенно уязвимы мобильные банкинговые приложения, медицинские сервисы и любые системы, работающие с чувствительными данными.

Что делать разработчику?

Команда OkHttp уже выпустила патч. Немедленно обновите библиотеку до версии 4.12.1 (или 5.0.0-alpha.14 для альфа-ветки). Если вы используете Gradle, измените зависимость в build.gradle.kts:

implementation("com.squareup.okhttp3:okhttp:4.12.1")

Дополнительные меры защиты:

  • Проверьте логи на предмет подозрительных прокси-соединений.
  • Включите строгую проверку сертификатов (Certificate Pinning) с помощью OkHttp.
  • Для Android-приложений используйте Network Security Config для блокировки недоверенных CA.

Заключение

Эта уязвимость — очередное напоминание, что даже самые надёжные библиотеки могут содержать критические ошибки. Регулярное обновление зависимостей и мониторинг CVE-баз должны стать частью CI/CD-пайплайна каждого Kotlin-проекта. Берегите данные пользователей — обновите OkHttp прямо сейчас.

Рекомендуем библотеки