Примечание: эта публикация предназначена только для автономных (self-hosted) сред QNX, включая QNX Everywhere.
Хранилище сертификатов CA в образе находится в трех местах: системном хранилище CA, а также в curl и pip. Каждое из них необходимо проверить и исправить отдельно. Эта статья состоит из двух частей: Часть 1 показывает, как проверить, уязвим ли ваш образ, а Часть 2 — как это исправить.
Часть 1. Проверка образа на наличие уязвимости
Публичный сайт eMudhra «We Have A Problem» — https://emudhra.we-have-a-problem.com — позволяет проверить, уязвим ли ваш образ.
1.1 Проверка системного хранилища CA
Откройте браузер Epiphany в QNX Developer Desktop и перейдите по ссылке . Посмотрите на таблицу «Does your client still trust the compromised intermediates?». Если все строки зеленые, всё в порядке. Если хотя бы одна строка красная, ваша система все еще уязвима.
Вы также можете проверить версию APK-пакета ca-certificates-mozilla через терминал:
Версия ca-certificates-mozilla-3.131.1-r5 или более поздняя не содержит уязвимости. Все более ранние версии уязвимы.
1.2 Проверка curl
По умолчанию curl использует собственное хранилище CA вместо системного, поэтому его нужно проверять отдельно.
Используйте curl для подключения к каждому из этих URL. Если хотя бы одно подключение прошло успешно, curl все еще уязвим. Если все они завершились ошибкой сертификата, curl не уязвим.
Или запустите этот скрипт, который проверит все четыре адреса за вас:
1.3 Проверка pip
Как и curl, pip имеет собственное встроенное хранилище CA.
Самая простая проверка — запросить версию pip:
pip версии 26.2.2 или более поздней не уязвим.
Вы также можете проверить версии APK-пакетов:
Команда должна вернуть три пакета. Если все они имеют версию 26.2.2-r0 или более позднюю, pip не уязвим. Все более ранние версии уязвимы.
Наконец, вы можете попробовать загрузить пакет с помощью pip с одного из скомпрометированных URL, предоставленных сайтом eMudhra:
Загрузка pip завершится ошибкой независимо от того, уязвимы вы или нет. Чтобы определить наличие уязвимости, нужно проанализировать само сообщение об ошибке.
Уязвим: pip сообщает о невозможности распаковать загруженный файл.
Не уязвим: pip сообщает о невозможности установить защищенное соединение для загрузки файла.
Часть 2. Исправление образа
2.1 Исправление системного хранилища CA и pip
Одно обновление APK исправляет как системное хранилище CA, так и pip.
- Убедитесь, что ваше целевое устройство (target) имеет доступ к Интернету.
- Откройте терминал. Вы можете использовать начальное приветственное окно, QNX Developer Desktop или последовательную консоль.
- Обновите APK-пакеты:
Примечание: если браузер был запущен во время обновления, его следует перезапустить, чтобы изменения вступили в силу.
Чтобы подтвердить исправление, повторите проверки 1.1 и 1.3, описанные выше.
2.2 Исправление curl
Существует три способа исправить curl в зависимости от степени настройки вашей системы. Если подходят несколько способов, выберите вариант с наименьшим номером. Какой бы вариант вы ни выбрали, после выполнения повторите проверку 1.2, чтобы убедиться, что curl больше не уязвим.
Вариант 1: Удаление собственного хранилища CA в curl
Используйте этот вариант, если вы никогда не изменяли файл .curlrc в домашнем каталоге пользователя. Если вы не знаете, что такое файл .curlrc, этот вариант для вас.
Он удаляет устаревшее переопределение, заставляющее curl использовать собственное хранилище CA. После этого curl начинает использовать системное хранилище CA, которое поддерживается в актуальном состоянии через APK.
Вариант 2: Редактирование .curlrc, чтобы curl перестал использовать собственное хранилище CA
Используйте этот вариант, если вы хотите сохранить один или несколько файлов .curlrc в домашних каталогах пользователей.
Отредактируйте файл .curlrc в домашнем каталоге каждого пользователя и удалите следующую строку:
Если в домашнем каталоге нет файла .curlrc, пропустите его.
После того как вы отредактировали все файлы .curlrc, удалите файлы, которые curl больше не использует:
Вариант 3: Обновление собственного хранилища CA в curl
Используйте этот вариант, если хотите сохранить собственное хранилище CA в curl. Образ содержит скрипт, который заменяет его на безопасное. Вам нужно запустить его вручную:
Такой ответ означает, что обновление прошло успешно:
Автор статьи — Дарси Фиппс (Darcy Phipps), заслуженный разработчик программного обеспечения (Distinguished Software Developer) в QNX.







