Incus — системный контейнер и менеджер виртуальных машин. До версии 7.1.0 `(*backend).createDependentVolumesFromBackup` в `internal/server/storage/backend.go` содержал кластер разыгрывания незащищенных указателей в подполях `VolumeSnapshots[i]`, `Volume` и `Pool` каждой записи зависимого тома. Аутентифицированный пользователь с разрешением `can_create_instances` в любом проекте может привести к сбою демона `incusd`, загрузив архив резервной копии экземпляра, блок `dependent_volumes[*]` которого содержит нулевой указатель моментального снимка (или пропускает `volume:`/`pool:`).
Это вариант пакетного исправления от 2026-05-04 `d768f81c0a1d985f35ae56219519822b080bf5e3` («Правильно проверять зависимые тома при импорте»). Этот коммит добавил `if disk == nil` в начало внешнего цикла, но не защитил четыре поля подуказателей, которые тело цикла разыменовывает. Версия 7.1.0 содержит обновленный патч.
Показать оригинальное описание (EN)
Incus is a system container and virtual machine manager. Prior to version 7.1.0, `(*backend).createDependentVolumesFromBackup` in `internal/server/storage/backend.go` contains a cluster of unguarded pointer derefs on every dependent-volume entry's `VolumeSnapshots[i]`, `Volume`, and `Pool` sub-fields. An authenticated user with `can_create_instances` permission on any project can crash the `incusd` daemon by uploading an instance backup tarball whose `dependent_volumes[*]` block contains a nil snapshot pointer (or omits `volume:` / `pool:`). This is a sibling-field variant of the 2026-05-04 batch fix `d768f81c0a1d985f35ae56219519822b080bf5e3` ("Properly check dependent volumes on import"). That commit added `if disk == nil` at the top of the outer loop, but did not guard the four sub-pointer fields the loop body dereferences naked. Version 7.1.0 contains an updated patch.
Характеристики атаки
Последствия
Строка CVSS v4.0