programmatūra · 6 min · 26.07.2026

Fedora 45 sāk slēgt AF_ALG: kodola izstrādātāji šifrēšanas saskarni sauc par kļūdu

Fedora Linux 45 ierobežos piekļuvi AF_ALG, kodola šifrēšanas saskarnei, kas lietotāju programmām ļauj izmantot Linux kodolā iebūvētos šifrēšanas algoritmus. Priekšlikumu iesniedza Peter Robinson un Justin Forbes. 22. jūlijā tā statuss vēl bija «ierosināts», jo par to nav nobalsojusi Fedora inženierijas un vadības komiteja (FESCo).

Solis nāk pēc tam, kad kodola pusē AF_ALG pasludināja par novecojušu. Daļu no funkcijām izņēma jau 7.2 izlaiduma cikla sākumā. Fedora priekšlikums mērķi formulē tieši: labāk ierobežot saskarni agri un kontrolēti, nekā gaidīt brīdi, kad augšpusē to izmet pavisam.

Ko AF_ALG dara

AF_ALG ir socket saime. Programma atver socket ar AF_ALG tipu, izvēlas algoritmu pēc nosaukuma un sūta datus kodolam. Atpakaļ tā saņem šifrētu vai atšifrētu bloku, jaucējvērtību vai parakstu. Biežāk lietotie moduļi ir algif_skcipher simetriskai šifrēšanai un algif_aead autentificētai šifrēšanai.

Sākotnējā ideja bija divējāda. Programmas varētu piekļūt aparatūras šifrēšanas paātrinātājiem, ko kodols jau pārvalda. Un atslēgas varētu palikt kodola atmiņā, tāpēc programma pati atslēgas baitus neredzētu.

Kodolā saskarni ieslēdz konfigurācijas opcija CRYPTO_USER_API ar atsevišķām apakšopcijām katram moduļu tipam. Lielākā daļa izplatīšanas versiju to ieslēgusi pēc noklusējuma, tāpēc AF_ALG ir pieejams arī uz sistēmām, kur neviena programma to nekad nav izsaukusi. Šī klātbūtne bez lietotājiem ir galvenais arguments par uzbrukuma virsmu: katra kļūda algif_ modulī ir sasniedzama jebkuram vietējam procesam bez īpašām tiesībām.

Kodola izstrādātāju vērtējums

Eric Biggers sagatavoja ielāpu, kas AF_ALG dokumentācijā (Documentation/crypto/userspace-if.rst) ieraksta novecojuma brīdinājumu. Formulējums nav diplomātisks.

AF_ALG ir nedrošs un novecojis. Tas nonāca kodolā 2010. gadā. Lielākā daļa kodola izstrādātāju to tagad uzskata par kļūdu.

Ielāpa apraksts uzskaita 17 CVE ierakstus no 2011. līdz 2026. gadam. Biggers norāda, ka jaunas kļūdas turpina atrast gan syzbot, gan lielie valodas modeļi. Otrs arguments ir vienkāršāks: šifrēšanas algoritmi ir matemātikas aprēķini, ko lietotāju telpas bibliotēkas veic tikpat labi. Uzturēšanas darbs, viņa vērtējumā, ir nesamērīgs ar to nedaudzo programmu skaitu, kas saskarni patiešām lieto.

Divas AF_ALG daļas 7.2 ciklā pazuda. Pirmā ir zero-copy datu pārsūtīšana. Kodols tagad datus nokopē pats, lai izslēgtu TOCTOU tipa kļūdas, kur lietotāja process nomaina buferi laikā starp pārbaudi un lietošanu. Otrā ir darba nodošana aparatūras šifrēšanas paātrinātājiem. Praksē AF_ALG šim mērķim nebija sevišķi efektīvs. Reālu lietotāju bija maz.

Pilnīga izņemšana notiks pa daļām vairākos laidienos. Nākamos ierobežojumus gaida 7.3 versijā. Linux 7.2 stabilā versija plānota augusta beigās, otrais izlaiduma kandidāts jau ir publicēts.

Trīs pakotnes, kas to lieto

Fedora repozitorijā atrastas trīs pakotnes, kas AF_ALG izmanto:

  • iwd, Intel bezvadu tīklu dēmons. Augšpusē to vairs neuztur, tāpēc priekšlikums iesaka pāriet uz wpa_supplicant.
  • cryptsetup, kur saskarni lieto ierobežoti TrueCrypt un VeraCrypt sējumiem. Šeit ir atkāpšanās mehānismi.
  • libkcapi, ko izmanto dracut un kodola būvēšanas process.

Pirmajā posmā šīs pakotnes strādās kā līdz šim. Ierobežojums attiecas uz nezināmajiem lietotājiem: kodola ielāpi atļauj saskarni tikai zināmām programmām, tāpēc pārējie pieprasījumi kļūst redzami un tos var pārcelt pa vienam. Ja līdz Fedora 45 vispārējai pieejamībai kaut kas noiet greizi, saskarni var ieslēgt atpakaļ. Phoronix atzīmē, ka priekšlikums nav sistēmas mēroga izmaiņa, tāpēc laidienu tas neaizkavē.

Sarežģītākais gadījums ir libkcapi. To izmanto dracut, kas būvē sākuma RAM disku, tāpēc pāreja jāsakārto pirms brīža, kad kodols saskarni izmet pavisam. Fedora priekšlikums šai pakotnei pirmajā posmā nemaina neko.

Pārbaudīt, vai konkrētā mašīnā šo saskarni kāds izmanto, var ar lsmod | grep algif. Ja neviens algif_ modulis nav ielādēts, AF_ALG lietotāju uz sistēmas visdrīzāk nav.

Ko lietot vietā

Biggers ielāps norāda vienkāršu ceļu: šifrēšanu veic lietotāja telpā. OpenSSL, libgcrypt un Nettle jau izmanto tās pašas AES-NI, SHA un vektoru instrukcijas, ko izmanto kodols, tikai bez sistēmas izsaukuma katram datu blokam. Parasti tas ir arī ātrāk, jo pazūd konteksta pārslēgšana.

Diviem AF_ALG lietojumiem aizvietotāji ir šaurāki. Ja atslēga jāglabā ārpus procesa atmiņas, paliek keyctl, TPM vai PKCS#11 aparatūras marķieri. Ja jāizmanto konkrēts dzinis, kas pieejams tikai kodolā, tad palīdz atsevišķas kodola apakšsistēmas: kTLS tīkla šifrēšanai un dm-crypt disku šifrēšanai. Vispārīgas piekļuves visiem kodola algoritmiem no lietotāja telpas Linux pēc AF_ALG izņemšanas vairs nebūs.

Iebildums par atslēgu izolāciju

LKML sarakstē Kamran Khan atgādināja par otro sākotnējo mērķi, atmiņas izolāciju. Ar AF_ALG programma saņem tikai orākula piekļuvi atslēgai, proti, tā var pieprasīt šifrēšanas operāciju, bet pašus atslēgas baitus neredz. Khan jautāja, kas Linux lietotājiem paliek vietā, ja FreeBSD līdzīgu uzdevumu risina ar /dev/crypto.

Atbildes ielāpā nav. Kodola atslēgu glabātuve keyctl un TPM dod daļu no tā paša, tomēr ar mazāku algoritmu skaitu. Fedora priekšlikums šo jautājumu neskar. Tā uzdevums pirmajā posmā ir saskaitīt, kas AF_ALG vēl lieto.

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 programmatūrasaistītie