drošība · 6 min · 14.10.2026

Nix un Lix aizver divas kļūdas, kas kopā dod root: labojumi iznāk piecos Nix un trijos Lix zaros

Nix un Lix projekti 13. oktobrī publicēja kopīgu drošības brīdinājumu par divām kļūdām, kuras ķēdē ļauj parastam lietotājam iegūt root tiesības uz vairāklietotāju serveriem. Viena kļūda ir vesela skaitļa pārpilde, kas rodas, kad Nix izvērtē neuzticamu izteiksmi. Otra ļauj neprivileģētam lietotājam iznīcināt un aizstāt leģitīmu store ceļu, pirms dēmons pārbauda tā saturu.

Labojumi jau ir pieejami. Nix tos saņēma piecos uzturētajos zaros: 2.35.3, 2.34.9, 2.31.6, 2.30.6 un 2.28.8. Lix tos izdeva versijās 2.94.3 un 2.95.4, bet versija 2.96.0 kļūdas vairs neskar. Guix projektu problēma neietekmē. Brīdinājums kopā uzskaita piecas GitHub drošības atsauces. CVSS vērtējumus tas nenorāda, tāpēc nopietnību lasītājam jāspriež pēc apraksta.

Kāpēc kļūdas sasniedz root

Nix un Lix glabā visas pakotnes vienā koplietotā direktorijā /nix/store. Vairāklietotāju iestatījumā būvēšanu veic nevis katrs lietotājs pats, bet privileģēts dēmons, kas darbojas kā root. Lietotāji ar būvēšanu sazinās caur ligzdu. Dēmons pēc tam raksta rezultātus store direktorijā, ko pārējā sistēma uzskata par uzticamu. Tieši šis modelis padara abas kļūdas nopietnas: ja uzbrucējs var ietekmēt to, ko dēmons raksta vai izpilda, viņš iegūst root tiesības uz visu mašīnu.

Noklusējuma daudzlietotāju instalācija izveido 32 būvēšanas lietotājus grupā nixbld, kas dēmonam ļauj būvēt izolēti. Brīdinājums precizē, ka skarti ir serveri, kuros neuzticami lietotāji var sasniegt dēmonu vai iesniegt izteiksmes izvērtēšanai. Viena izstrādātāja darbstacija, kur pats lietotājs jau ir administrators, no šīm kļūdām iegūst maz. Tur root tiesības jau ir pašam lietotājam, tāpēc eskalācija neko jaunu nedod. Problēma attiecas uz koplietotām būvēšanas mašīnām, nepārtrauktās integrācijas serveriem un līdzīgām vidēm, kur vienu dēmonu izmanto vairāki cilvēki.

Kā pārpilde kļūst par ierakstu ārpus buferim

Pirmā kļūda slēpjas sarakstu veidošanā. Kad interpretators aprēķina saraksta izmēru, neparakstīta vesela skaitļa pārpilde noved pie heap ieraksta ārpus atvēlētā apgabala. Brīdinājums norāda uz funkciju builtins.genList, kas ģenerē sarakstu ar noteiktu elementu skaitu. Uzbrukums sākas ar neuzticamas Nix izteiksmes izvērtēšanu, piemēram, ar komandu nix eval vai ar būvējumu, ko iesniedz cits lietotājs. GitHub to izseko ar identifikatoru GHSA-25vp-6h23-hj3g.

Reālā ietekme atkarīga no kompilatora optimizācijām. Tāpēc ne katrā būvējumā pārpilde pārvēršas par izmantojamu kļūdu, taču uz to paļauties nevar.

Repair operācija aizstāj ceļu pirms pārbaudes

Otrā kļūda ir bīstamāka vairāklietotāju iestatījumos. Neprivileģēts lietotājs var palaist repair operāciju, kas iznīcina un aizstāj esošu store ceļu, pirms dēmons pārbauda jaunā satura jaucējsummu. Parasti dēmons pārbaudi veic pēc jaucējsummas, kas sasaista store ceļa nosaukumu ar tā saturu. Repair operācija šo kārtību apgriež otrādi. Tā rezultātā uzbrucējs ieliek store vietā savu saturu, ko pārējā sistēma turpina uzskatīt par uzticamu. GitHub šo izseko ar GHSA-jwvx-xq5j-gc56.

Nix pusē problēmu pastiprina atsevišķa autorizācijas kļūda. macOS un FreeBSD konfigurācijās bez smilškastes dēmons nenoraidīja savienojumus no būvēšanas lietotājiem (GHSA-92×5-h528-wrmw). Kad dēmons darbojas kā root, jebkurš lietotājs no saraksta allowed-users var izpildīt kodu kā root. LWN apraksta, kā abas galvenās kļūdas savienojas vienā ķēdē.

Brīdinājums uzsver, ka skartas ir visas sistēmas, kuras būvē neuzticamus derivātus. Atsevišķi katra kļūda ir mazāk bīstama nekā abas kopā.

macOS smilškaste un instalatora kļūda

macOS lietotājiem ar ieslēgtu smilškasti ir vēl viena problēma. Kad smilškastes profils pārsniedz noteiktu izmēru pie trūkstoša izvēles ceļa, Nix ģenerē nekvalificētu allow formu, kas atstāj būvējumu bez ierobežojumiem (GHSA-m4vq-qf6v-82pj). Noklusējumā macOS smilškaste ir izslēgta, tāpēc kļūda skar tikai tos, kas to apzināti ieslēguši ar iestatījumu sandbox = true vai sandbox = relaxed.

Atsevišķa Nix instalatora kļūda dažkārt atstāja store saturu tā lietotāja īpašumā, kas palaida instalāciju, nevis root (GHSA-hf6w-2rg9-v84g). Tā skar svaigas daudzlietotāju instalācijas ar karodziņu --daemon, bet NixOS to neietekmē. Agrākās ģenerācijas dzēšana un store sakopšana parasti novērš risku.

Ko darīt tagad

Vienkāršākais ceļš Nix lietotājiem ir komanda nix upgrade-nix, kas norāda uz izlaboto versiju attiecīgajā zarā. Lix 2.94.x lietotāji var izmantot to pašu komandu. Lix 2.95.x gadījumā izstrādātāji iesaka atsevišķu upgrade skriptu no git.lix.systems, jo parastā nix upgrade-nix vispirms atinstalē veco versiju un pēc tam neizdodas ar ziņojumu Connection reset by peer, kad dēmons jau ir aizvērts.

Lix komanda norāda, ka ar Nix izstrādātājiem sazinās kopš pirmā ziņojuma. Lix izlaidums notika divos soļos. Šis nav pirmais šāgada Nix drošības brīdinājums: maijā projekti izlaboja bufera pārpildes dēmonā, no kurām vienai (CVE-2026-44028) piešķīra CVSS vērtējumu 7,5. Neatbalstītie Nix zari 2.29, 2.32 un 2.33 jaunos labojumus nesaņems, tāpēc tie jāuzskata par ievainojamiem.

Avoti

komentārisaruna

Komentāri

Šim rakstam vēl nav komentāru. Esi pirmais, kurš dalās ar savu viedokli.

Pievieno komentāru

Tavs e-pasts netiks publicēts. Obligātie lauki atzīmēti.

vēl no drošībasaistītie