Libsystemd sÔltuvuste vÀhendamise algatus

Systemd haldusmanagerite arendajate seas kĂ€ib arutelu libsystemd teeki sĂ”ltuvuste vĂ€hendamise ĂŒle, mis seondub mitte ainult systemd komponentidega, vaid ka paljude vĂ€liste rakendustega. NĂ€iteks Fedora keskonnas kasutab ĂŒle 150 paketi libsystemd sĂ”ltuvusi. Arutelu algataja usub, et muude kolmandate osapoolte teekide, mida systemd arendajad ei kontrolli, lisamine libsystemd-sse suurendab oluliselt rĂŒndepinda juhul, kui kolmandate osapoolte teegid on kompromiteeritud, nagu juhtus liblzma teegiga.

Lisaks liblzma ja glibc laaditakse libsystemd ka raamatukogud libzstd, liblz4 ja libgcrypt, mille turvalisuse tagamine on kriitilise tÀhtsusega. Libsystemd pakub juurdepÀÀsu 12 pÔhilisele API-le (sd-bus, sd-daemon, sd-device, sd-event, sd-hwdb, sd-id128, sd-journal, sd-login, sd-netlink, sd-network, sd-path ja sd-resolve) ning tekib olukord, kus rakendus, nÀiteks, mis kasutab libsystemd ainult funktsiooni sd_notify vÀljakutsumiseks systemd oleku muutusest teavitamiseks vÔi sd_journal andmete logisse kirjutamiseks, seondub kÔigi teiste raamatukogude ja API töötlejatega. Lahenduseks on soovitatud jagada libsystemd mitmeks eraldi raamatukoguks, mis vastutavad eraldi API-de eest, vÔimaldades laadida kolmandate osapoolte sÔltuvusi ainult seal, kus need on vajalikud.

systemd arendajad ei pea jagamist mĂ”istlikuks, kuna libsystemd-s olevad töötlejad on omavahel seotud. Jagamine nĂ”uaks tohutut tööd ja tooks kaasa kas efektiivsuse kadumise vĂ”i koodi dubleerimise vajaduse. Libsystemd mĂ€lu kasutuse vĂ€hendamiseks on hiljuti vastu vĂ”etud muudatus, mis rakendab liblzma, libzstd ja liblz4 teekide dĂŒnaamilist laadimist dlopen() abil, olukordades, kus nende funktsioone tĂ”eliselt vajatakse. Sarnane muudatus rakendatakse jĂ€rgmisest versioonist ka libgcrypt-i jaoks.

Seda otsust on kritiseeritud, kuna selge ja silmatorkava sidumise asemel toimub nĂŒĂŒd kolmandate osapoolte teekide laadimine ebaselgelt, mis muudab diagnostika keerulisemaks, kuna libsystemd API-kutsed ei ole enam ilmselgelt seotud vĂ€listest teekidest pĂ€rinevate funktsioonidega. Üleminek dlopen() abil laadimisele ei muuda arhitektuuri, vaid varjab vaid vĂ€list komponente hooldajate ja kasutajate eest.

Leonard Pottering avaldas kategoorilist vastuseisu ideele jagada libsystemd mitmeks teegiks, kuna see samm keerukaks oluliselt koodi jagamise systemd-s ning nĂ”uab kĂ”igi sisemiste nende töötlejate muutmist avalikeks vĂ”i nende eraldi staatiliselt iga teegi sisse kompileerimist. Esimesel juhul tekivad probleemid API ja nimede ruumide stabiilsuse sĂ€ilitamisega, teisel juhul – suureneva suuruse tĂ”ttu koodi dubleerimise tĂ”ttu.

JĂ€rgmise vĂ€ljaande jaoks rakendatud vĂ€liste teekide laadimine ainult vajaduse korral on Leonardiga kokku leppinud kui optimaalne strateegia. Probleemi, mis seisneb dĂŒnaamiliselt laetud teekide andmete hankimise keerukuses, pakutakse lahendada, lisades ELF-failidesse tĂ€iendavaid vĂ€lju teabe kohta selliste dĂŒnaamiliste sĂ”ltuvuste kohta, mida saab töödelda tĂ”rkeotsijate poolt ja mis kuvatakse utiliidi readelf vĂ€ljundis.

Mis osas libsystemd suure hulga rakenduste sidumisest, soovitas Lennart rakenduste arendajatel mitte proovida laadida libsystemd vaid ĂŒhe funktsiooni nimel, vaid rakendada protokolli töötlejat rakenduse tasandil. NĂ€iteks sd_notify() funktsionaalsuse rakendamine on piisavalt triviaalne ja vĂ”ib mahtuda paarisse koodireale UNIX-soketite (AF_UNIX) kasutamisel. Selline eraldiseisev sd_notify rakendus on alates 2017. aastast saadaval OpenSSH jaoks ning on hiljuti lisatud OpenSSH 9.8 portatiivse haru koosseisu, mille vĂ€ljaandmine on planeeritud suve keskpaiku.

Allikas: opennet.ru

Osta usaldusvÀÀrne veebihosting DDoS kaitsega, VPS VDS serverid đŸ”„ Osta usaldusvÀÀrne veebihosting DDoS kaitsega, VPS VDS serverid | ProHoster