Критическая уязвимость в 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 прямо сейчас.