Upstream update available: checkpolicy 3.8.1 → 20200710 #2

Open
opened 2026-04-28 00:50:26 +03:00 by sbelikov · 0 comments
Owner

Upstream update available: checkpolicy 3.8.120200710

Package

  • Package: checkpolicy
  • RPM name: checkpolicy
  • Branch: niceos-5.2
  • Current EVR: 3.8.1-1
  • Update class: major
  • Compare method: python_rpm
  • Update policy: leaf
  • Risk tags: github-upstream

Upstream

Signals

  • Security-relevant keywords detected: True
  • Policy blocked: False
  • Policy reason: -
  • Labels: ai-summary, bot, needs-build, needs-triage, priority/high, security-release, update/major, upstream-update, upstream/github

NiceSOFT AI preliminary analysis

1. Краткий вывод

Обновление пакета checkpolicy с версии 3.8.1 до 20200710 является мажорным и включает удаление устаревших заголовочных файлов (flask.h, av_permissions.h) и изменение поведения обработки невалидных символов. Обновление также меняет зависимости (замена модуля IPy на ipaddress) и требует специфических флагов компиляции (-fno-semantic-interposition), что потенциально влияет на совместимость с существующими пользовательскими политиками и сборкой.

2. Риск для НАЙС.ОС

high.
Обновление классифицировано как major и содержит критические изменения API: удаление заголовков, которые могли использоваться в пользовательских политиках или скриптах, а также изменение логики обработки ошибок (невалидные символы теперь вызывают ошибку). Это создает высокий риск нарушения работы систем безопасности, если в дистрибутиве существуют кастомные политики, полагающиеся на удаленные интерфейсы или старые методы инициализации SID.

3. Security/CVE

Во входных данных присутствуют ключевые слова безопасности (security_keywords_detected_by_script: True), однако конкретные CVE, уязвимости или описание эксплойтов в тексте релизов не указаны. Упоминаются исправления старых issues (например, #70, #28), но их природа (security vs feature) не детализирована в предоставленном тексте.

4. ABI/API риск

Высокий риск.

  • Удаление API: Удалены файлы selinux/flask.h, selinux/av_permissions.h и sepol/policydb/flask.h. Любые прямые включения этих заголовков в коде или скрипты генерации политик сломаются.
  • Изменение семантики: checkpolicy теперь считает невалидные символы ошибкой, что может привести к отказу в работе при компиляции политик, содержащих ранее игнорируемые данные.
  • Зависимости: Замена IPy на стандартный модуль ipaddress в semanage может повлиять на работу скриптов, ожидающих наличие IPy.
  • Нужен ручной анализ: Требуется проверка всех пользовательских политик и скриптов, использующих удаленные заголовки или старые методы работы с контекстами.

5. Риск для RPM-сборки

  • CFLAGS: В релиз-нотах указано, что установка произвольных CFLAGS может сломать сборку. Явно рекомендуется использовать -fno-semantic-interposition. Если в текущем specfile уже есть другие флаги, они могут быть проигнорированы или вызвать конфликты.
  • BuildRequires: Возможно потребуется обновление зависимости от Python-библиотек из-за смены IPy на ipaddress (хотя ipaddress часто встроен в stdlib, явная зависимость могла меняться).
  • %check: Тесты могут начать падать из-за нового строгого режима обработки невалидных символов в checkpolicy.
  • Python setup: Изменения в setup.py требуют внимания при использовании PYTHON_SETUP_ARGS.

6. Проверки мейнтейнера

  • Проверить наличие в системе пользовательских политик (.te), которые могут использовать удаленные заголовки или функции, связанные с ними.
  • Провести тестовую сборку пакета с текущими CFLAGS и убедиться, что флаг -fno-semantic-interposition применяется корректно.
  • Запустить %check секцию и проверить отсутствие новых ошибок, связанных со строгим парсингом символов.
  • Проверить зависимости semanage и наличие модуля python3-ipaddress (или его встроенность).
  • Откатить любые кастомные патчи, которые могут пытаться восстановить удаленные заголовки или обойти новые ограничения.

7. Рекомендация

blocked manual review

8. Основание рекомендации

Несмотря на то, что обновление помечено как leaf и policy_blocked: False, наличие мажорного обновления с удалением API и изменением семантики парсинга требует обязательной ручной проверки пользовательских политик и тестовой сборки перед включением в репозиторий. Автоматическое обновление рискованно из-за вероятности поломки кастомных конфигураций безопасности.

Upstream release notes / description

User-visible changes

  • selinux/flask.h, selinux/av_permissions.h and sepol/policydb/flask.h were removed

    The flask.h and av_permissions.h header files were deprecated and
    all selinux userspace references to them were removed in
    commit 76913d8adb61b5 ("Deprecate use of flask.h and av_permissions.h.")
    back in 2014 and included in the 20150202 / 2.4 release.
    All userspace object managers should have been updated
    to use the dynamic class/perm mapping support since that time.
    Remove these headers finally to ensure that no users remain and
    that no future uses are ever introduced.

    Use string_to_security_class(3) and string_to_av_perm(3) to map the class and
    permission names to their policy values, or selinux_set_mapping(3) to create a
    mapping from class and permission index values used by the application to the
    policy values.

  • Removed restrictions in libsepol and checkpolicy that required all declared
    initial SIDs to be assigned a context.

  • Support for new policy capability genfs_seclabel_symlinks

  • New setfiles -E option - treat conflicting specifications as errors, such
    as where two hardlinks for the same inode have different contexts.

  • restorecond_user.service - new systemd user service which runs restorecond -u

  • setsebool -V reports errors from commit phase

  • Improved man pages

  • semanage uses ipaddress Python module instead of IPy

  • matchpathcon related interfaces are deprecated

  • selinuxfs is mounted with noexec and nosuid

  • the dso wrappers for internal calls were removed and it is now strongly recommended to CFLAGS with
    -fno-semantic-interposition

  • security_compute_user() was deprecated

  • checkpolicy treats invalid characters as an error - might break rare use cases (intentionally)

  • New restorecon -x option which prevents it from crossing file system boundaries.

  • Handle semanage module in semanage bash completion

  • sepolgen-ifgen parses a gen_tunable statement as bool

  • semanage handles getprotobyname() failure case on Debian where /etc/protocols does not contain an entry for "ipv4"

Packaging-relevant changes

  • Setting CFLAGS during the make process will cause the omission of many defaults. While the project strives
    to provide a reasonable set of default flags, custom CFLAGS could break the build, or have other undesired
    changes on the build output. Thus, be very careful when setting CFLAGS. CFLAGS that are encouraged to be
    set when overriding are:

    • -fno-semantic-interposition for gcc or compilers that do not do this. clang does this by default. clang-10 and up
      will support passing this flag, but ignore it. Previous clang versions fail.
  • setup.py builds can be customized using PYTHON_SETUP_ARGS, e.g. to for
    Debian Python layout use: make PYTHON_SETUP_ARGS=--install-layout=deb ...

Development-relevant changes

  • Improved README which was renamed to README.md and converted to markdown.

  • Added Travis CI job to run SELinux kernel testsuite on latest Fedora cloud image

Issues fixed

NiceOS maintainer checklist

  • Confirm that the detected version is a stable upstream release.
  • Check upstream changelog for security fixes, ABI/API changes and build-system changes.
  • Check ABI/API compatibility and reverse dependencies.
  • Download source into NiceOS lookaside storage.
  • Update Version and related fields in SPECS/*.spec only if policy allows it.
  • Regenerate SOURCES/sources.lock.json, manifests, metadata and SBOM.
  • Build SRPM/RPM in a clean NiceOS buildroot.
  • Run package smoke tests.
  • Link PR/build logs and close this issue after update or triage.

Bot metadata

  • Tool: niceos_upstream_monitor.py 1.4
  • Generated at: 2026-04-27T22:00:45Z
<!-- niceos-upstream-monitor:fingerprint=upstream-update:checkpolicy:20200710 --> <!-- niceos-upstream-monitor:package=checkpolicy --> <!-- niceos-upstream-monitor:current=3.8.1 --> <!-- niceos-upstream-monitor:latest=20200710 --> # Upstream update available: `checkpolicy` `3.8.1` → `20200710` ## Package - Package: `checkpolicy` - RPM name: `checkpolicy` - Branch: `niceos-5.2` - Current EVR: `3.8.1-1` - Update class: `major` - Compare method: `python_rpm` - Update policy: `leaf` - Risk tags: `github-upstream` ## Upstream - Upstream type: `github` - Upstream project: `SELinuxProject/selinux` - Upstream URL: https://github.com/SELinuxProject/selinux - Detected version: `20200710` - Tag/release: `20200710` - Source: `github_release` - Published: `2020-07-10T15:42:23Z` - Release URL: https://github.com/SELinuxProject/selinux/releases/tag/20200710 - Source URL: https://api.github.com/repos/SELinuxProject/selinux/tarball/20200710 - Pre-release: `False` ## Signals - Security-relevant keywords detected: `True` - Policy blocked: `False` - Policy reason: `-` - Labels: `ai-summary, bot, needs-build, needs-triage, priority/high, security-release, update/major, upstream-update, upstream/github` ## NiceSOFT AI preliminary analysis ### 1. Краткий вывод Обновление пакета `checkpolicy` с версии 3.8.1 до 20200710 является мажорным и включает удаление устаревших заголовочных файлов (`flask.h`, `av_permissions.h`) и изменение поведения обработки невалидных символов. Обновление также меняет зависимости (замена модуля `IPy` на `ipaddress`) и требует специфических флагов компиляции (`-fno-semantic-interposition`), что потенциально влияет на совместимость с существующими пользовательскими политиками и сборкой. ### 2. Риск для НАЙС.ОС **high**. Обновление классифицировано как `major` и содержит критические изменения API: удаление заголовков, которые могли использоваться в пользовательских политиках или скриптах, а также изменение логики обработки ошибок (невалидные символы теперь вызывают ошибку). Это создает высокий риск нарушения работы систем безопасности, если в дистрибутиве существуют кастомные политики, полагающиеся на удаленные интерфейсы или старые методы инициализации SID. ### 3. Security/CVE Во входных данных присутствуют ключевые слова безопасности (`security_keywords_detected_by_script: True`), однако конкретные CVE, уязвимости или описание эксплойтов в тексте релизов не указаны. Упоминаются исправления старых issues (например, #70, #28), но их природа (security vs feature) не детализирована в предоставленном тексте. ### 4. ABI/API риск Высокий риск. - **Удаление API**: Удалены файлы `selinux/flask.h`, `selinux/av_permissions.h` и `sepol/policydb/flask.h`. Любые прямые включения этих заголовков в коде или скрипты генерации политик сломаются. - **Изменение семантики**: `checkpolicy` теперь считает невалидные символы ошибкой, что может привести к отказу в работе при компиляции политик, содержащих ранее игнорируемые данные. - **Зависимости**: Замена `IPy` на стандартный модуль `ipaddress` в `semanage` может повлиять на работу скриптов, ожидающих наличие `IPy`. - **Нужен ручной анализ**: Требуется проверка всех пользовательских политик и скриптов, использующих удаленные заголовки или старые методы работы с контекстами. ### 5. Риск для RPM-сборки - **CFLAGS**: В релиз-нотах указано, что установка произвольных `CFLAGS` может сломать сборку. Явно рекомендуется использовать `-fno-semantic-interposition`. Если в текущем `specfile` уже есть другие флаги, они могут быть проигнорированы или вызвать конфликты. - **BuildRequires**: Возможно потребуется обновление зависимости от Python-библиотек из-за смены `IPy` на `ipaddress` (хотя `ipaddress` часто встроен в stdlib, явная зависимость могла меняться). - **%check**: Тесты могут начать падать из-за нового строгого режима обработки невалидных символов в `checkpolicy`. - **Python setup**: Изменения в `setup.py` требуют внимания при использовании `PYTHON_SETUP_ARGS`. ### 6. Проверки мейнтейнера - [ ] Проверить наличие в системе пользовательских политик (`.te`), которые могут использовать удаленные заголовки или функции, связанные с ними. - [ ] Провести тестовую сборку пакета с текущими `CFLAGS` и убедиться, что флаг `-fno-semantic-interposition` применяется корректно. - [ ] Запустить `%check` секцию и проверить отсутствие новых ошибок, связанных со строгим парсингом символов. - [ ] Проверить зависимости `semanage` и наличие модуля `python3-ipaddress` (или его встроенность). - [ ] Откатить любые кастомные патчи, которые могут пытаться восстановить удаленные заголовки или обойти новые ограничения. ### 7. Рекомендация blocked manual review ### 8. Основание рекомендации Несмотря на то, что обновление помечено как `leaf` и `policy_blocked: False`, наличие мажорного обновления с удалением API и изменением семантики парсинга требует обязательной ручной проверки пользовательских политик и тестовой сборки перед включением в репозиторий. Автоматическое обновление рискованно из-за вероятности поломки кастомных конфигураций безопасности. ## Upstream release notes / description User-visible changes -------------------- * selinux/flask.h, selinux/av_permissions.h and sepol/policydb/flask.h were removed The flask.h and av_permissions.h header files were deprecated and all selinux userspace references to them were removed in commit 76913d8adb61b5 ("Deprecate use of flask.h and av_permissions.h.") back in 2014 and included in the 20150202 / 2.4 release. All userspace object managers should have been updated to use the dynamic class/perm mapping support since that time. Remove these headers finally to ensure that no users remain and that no future uses are ever introduced. Use string_to_security_class(3) and string_to_av_perm(3) to map the class and permission names to their policy values, or selinux_set_mapping(3) to create a mapping from class and permission index values used by the application to the policy values. * Removed restrictions in libsepol and checkpolicy that required all declared initial SIDs to be assigned a context. * Support for new policy capability genfs_seclabel_symlinks * New `setfiles -E` option - treat conflicting specifications as errors, such as where two hardlinks for the same inode have different contexts. * `restorecond_user.service` - new systemd user service which runs `restorecond -u` * `setsebool -V` reports errors from commit phase * Improved man pages * `semanage` uses ipaddress Python module instead of IPy * matchpathcon related interfaces are deprecated * selinuxfs is mounted with noexec and nosuid * the dso wrappers for internal calls were removed and it is now strongly recommended to CFLAGS with `-fno-semantic-interposition` * `security_compute_user()` was deprecated * checkpolicy treats invalid characters as an error - might break rare use cases (intentionally) * New `restorecon -x` option which prevents it from crossing file system boundaries. * Handle `semanage module` in semanage bash completion * `sepolgen-ifgen` parses a gen_tunable statement as bool * `semanage` handles getprotobyname() failure case on Debian where /etc/protocols does not contain an entry for "ipv4" Packaging-relevant changes -------------------------- * Setting CFLAGS during the make process will cause the omission of many defaults. While the project strives to provide a reasonable set of default flags, custom CFLAGS could break the build, or have other undesired changes on the build output. Thus, be very careful when setting CFLAGS. CFLAGS that are encouraged to be set when overriding are: - -fno-semantic-interposition for gcc or compilers that do not do this. clang does this by default. clang-10 and up will support passing this flag, but ignore it. Previous clang versions fail. * `setup.py` builds can be customized using PYTHON_SETUP_ARGS, e.g. to for Debian Python layout use: `make PYTHON_SETUP_ARGS=--install-layout=deb ...` Development-relevant changes ---------------------------- * Improved README which was renamed to README.md and converted to markdown. * Added Travis CI job to run SELinux kernel testsuite on latest Fedora cloud image Issues fixed ------------ * https://github.com/SELinuxProject/selinux/issues/248 * https://github.com/SELinuxProject/selinux/issues/239 * https://github.com/SELinuxProject/selinux/issues/237 * https://github.com/SELinuxProject/selinux/issues/225 * https://github.com/SELinuxProject/selinux/issues/217 * https://github.com/SELinuxProject/selinux/issues/208 * https://github.com/SELinuxProject/selinux/issues/204 * https://github.com/SELinuxProject/selinux/issues/187 * https://github.com/SELinuxProject/selinux/issues/179 * https://github.com/SELinuxProject/selinux/issues/164 * https://github.com/SELinuxProject/selinux/issues/70 * https://github.com/SELinuxProject/selinux/issues/28 ## NiceOS maintainer checklist - [ ] Confirm that the detected version is a stable upstream release. - [ ] Check upstream changelog for security fixes, ABI/API changes and build-system changes. - [ ] Check ABI/API compatibility and reverse dependencies. - [ ] Download source into NiceOS lookaside storage. - [ ] Update `Version` and related fields in `SPECS/*.spec` only if policy allows it. - [ ] Regenerate `SOURCES/sources.lock.json`, manifests, metadata and SBOM. - [ ] Build SRPM/RPM in a clean NiceOS buildroot. - [ ] Run package smoke tests. - [ ] Link PR/build logs and close this issue after update or triage. ## Bot metadata - Tool: `niceos_upstream_monitor.py 1.4` - Generated at: `2026-04-27T22:00:45Z`
Sign in to join this conversation.
No description provided.