W Canonical LXD przed wersją 6.8 mechanizm importu kopii zapasowej weryfikuje ograniczenia projektu względem pliku backup/index.yaml, lecz instancję tworzy na podstawie odrębnego pliku backup/container/backup.yaml, który nigdy nie jest sprawdzany pod kątem tych ograniczeń. Uwierzytelniony atakujący z uprawnieniem do tworzenia instancji w ograniczonym projekcie może w ten sposób całkowicie przejąć kontrolę nad hostem.
▸ Pokaż oryginał (EN)
In Canonical LXD before 6.8, the backup import path validates project restrictions against backup/index.yaml in the supplied tar archive but creates the instance from backup/container/backup.yaml, a separate file in the same archive that is never checked against project restrictions. An authenticated remote attacker with instance-creation permission in a restricted project can craft a backup archive where backup.yaml carries restricted settings such as security.privileged=true or raw.lxc directives, bypassing all project restriction enforcement and allowing full host compromise.
Podczas importu archiwum tar zawierającego kopię zapasową LXD walidacja ograniczeń projektowych odbywa się wyłącznie na podstawie pliku backup/index.yaml. Plik backup/container/backup.yaml — faktycznie używany do odtworzenia instancji — nie jest nigdy weryfikowany. Atakujący może spreparować archiwum, w którym backup.yaml zawiera uprzywilejowane ustawienia, takie jak security.privileged=true lub dyrektywy raw.lxc, które normalnie byłyby zablokowane przez ograniczenia projektu. W rezultacie instancja zostaje utworzona z tymi niedozwolonymi ustawieniami, omijając wszelkie mechanizmy egzekwowania polityk projektowych.
Atakujący może uruchomić uprzywilejowaną instancję kontenera z dostępem do zasobów hosta, co prowadzi do pełnego przejęcia systemu hosta — naruszenia poufności, integralności i dostępności danych oraz infrastruktury.
Należy zaktualizować Canonical LXD do wersji 6.8 lub nowszej. Szczegóły patcha dostępne są w pull requeście oraz w security advisory producenta pod adresem https://github.com/canonical/lxd/security/advisories/GHSA-q96j-3fmm-7fv4
Canonical LXD w wersjach wcześniejszych niż 6.8
Podatność dotyczy scenariusza, w którym atakujący posiada już uprawnienie do tworzenia instancji w ograniczonym projekcie LXD — nie jest to atak bez uwierzytelnienia. Wektor CVSS wskazuje wymagany wysoki poziom uprawnień (PR:H), jednak efekt (S:C, C:H/I:H/A:H) oznacza pełny wpływ wykraczający poza zakres kontenera.
CVSS:3.1/AV:N/AC:L/PR:H/UI:N/S:C/C:H/I:H/A:HCanonical Lxd
APPCanonical4.12 – 5.0.65.21.0 – 5.21.46.0 – 6.7
Powiązane podatności
Canonical LXD — privilege escalation przez niekompletną listę blokad VM
Canonical LXD: privilege escalation do admina klastra przez brak walidacji pola Type
A privilege escalation vulnerability exists in LXD from 6.0 before 6.9, 5.21.0 before 5.21.5, and 5.0.0 before...
Broken Access Control in the devLXDInstancePatchHandler component of Canonical LXD allows an untrusted guest t...
Privilege Escalation in operations API in Canonical LXD <6.5 on multiple platforms allows attacker with read p...