
integration examples for the CVE-2020-25860 fix
Этот репозиторий содержит примеры для упрощения интеграции обновления RAUC в существующие проекты. Вы можете подписаться на https://github.com/rauc/rauc-1.5-integration/issues/1, чтобы получать уведомления о важных обновлениях этого репозитория и об интеграции в вышестоящие сборочные системы.
Примеры получены из текущих вышестоящих версий, поэтому в зависимости от возраста существующего проекта может потребоваться некоторая корректировка.
Рекомендация, которая будет опубликована 21 декабря, доступна по адресу https://github.com/rauc/rauc-1.5-integration/blob/master/CVE-2020-25860.md. Этот репозиторий также будет сделан публичным в этот момент.
Если архив rauc-1.5.tar.xz ещё не доступен для загрузки, скопируйте архив из этого репозитория в свой DL_DIR (обычно определяется в вашем build/conf/local.conf).
Скопируйте обновлённый рецепт из oe_yocto/recipes-rauc-1.5/rauc/* в соответствующий слой проекта, заботясь о сохранении существующих настроек (таких как system.conf или ca.cert.pem).
Скопируйте oe_yocto/classes/verity_bundle.bbclass в каталог classes/ этого слоя (возможно, потребуется создать этот каталог). Этот класс является заменой bundle.bbclass из слоя meta-rauc, с добавленной поддержкой создания пакетов в формате verity. Другое название используется, чтобы избежать проблем с порядком поиска классов.
Если вы хотите собирать пакеты в формате verity, используйте inherit verity_bundle вместо inherit bundle в рецепте пакета и установите RAUC_BUNDLE_FORMAT = "verity" для выбора формата. Пример доступен как oe_yocto/recipes-rauc-1.5/bundles/core-bundle-minimal-verity.bb.
Если архив rauc-1.5.tar.xz ещё не доступен для загрузки, скопируйте архив из этого репозитория в свой каталог исходников PTXdist.
Скопируйте каталог ptxdist/rules/rauc.* в rules/ вашего BSP. Это приведёт к обновлённому бинарному файлу RAUC для целевой платформы и хоста.
Если вы используете правило пакета RAUC по умолчанию из PTXdist, скопируйте ptxdist/config/images/rauc.config в config/images/ вашего BSP. Включённый шаблон манифеста настраивает формат пакета plain, поэтому измените это по мере необходимости.
Если вы используете собственный пакет и хотите переключиться на формат verity, вам потребуется обновить манифест самостоятельно.
Если архив rauc-1.5.tar.xz ещё не доступен для загрузки, скопируйте архив из этого репозитория в свой каталог dl/rauc/.
Скопируйте buildroot/package/rauc/rauc.* в package/rauc/ вашего checkout Buildroot. Это приведёт к обновлённому бинарному файлу RAUC для целевой платформы и хоста.
Поскольку Buildroot не автоматизирует сборку пакетов обновления, если вы хотите использовать формат пакета verity, вам потребуется обновить манифест вручную.
RAUC v1.3 (выпущен 2020-04-23) прекратила поддержку версий OpenSSL ниже 1.1.1, так как они больше не поддерживались проектом OpenSSL:
Если ваша система всё ещё использует неподдерживаемую версию OpenSSL и обновление до 1.1.1 вместе с RAUC 1.5 невозможно, доступен патч обратного переноса (0001-backport-to-OpenSSL-1.0.2.patch). Обратите внимание, что этот патч не имеет такой же широты тестирования, как релиз 1.5.
В RAUC 1.5 используется ioctl LOOP_SET_BLOCK_SIZE для установки логического размера блока в 4096 для оптимизации производительности. Невозможность его установки не критична и отмечается только сообщением уровня отладки.
Но поскольку символ LOOP_SET_BLOCK_SIZE не существует в версиях ядра до 4.14, компиляция с этими старыми заголовками ядра завершится ошибкой. Для решения этой проблемы символ должен быть опционально определён в самом RAUC. Патч для этого (0001-src-mount.c-fix-build-with-kernel-4.14.patch) доступен (из https://github.com/rauc/rauc/pull/673).
Исправление также будет частью RAUC 1.5.1.