inisyativ rediksyon depandans libsystemd

Pami devlopè yo nan manadjè sistèm systemd la, gen yon diskisyon sou diminye depandans bibliyotèk libsystemd la, ki lyen pa sèlman ak konpozan systemd, men tou ak anpil aplikasyon ekstèn. Pou egzanp, nan Fedora, plis pase 150 pakè itilize libsystemd nan depandans yo. Inisyatè diskisyon an kwè ke ajoute bibliyotèk twazyèm pati adisyonèl nan libsystemd ki pa kontwole pa devlopè systemd ogmante siyifikativman sifas atak la nan evènman an nan bibliyotèk twazyèm pati yo te konpwomèt, jan sa te rive ak bibliyotèk la liblzma.

Anplis de liblzma ak glibc, libsystemd tou chaje libzstd, liblz4 ak libgcrypt, sekirite ki vin kritik. libsystemd bay aksè a 12 API debaz (sd-bus, sd-daemon, sd-device, sd-event, sd-hwdb, sd-id128, sd-journal, sd-login, sd-netlink, sd-network, sd - chemen ak sd-resolve) ak yon sitiyasyon rive kote yon aplikasyon, pou egzanp, lè l sèvi avèk libsystemd sèlman pou yo rele fonksyon sd_notify pou enfòme systemd sou yon chanjman eta oswa sd_journal pou ekri done nan boutèy la, lyen ak tout lòt bibliyotèk ak Manadjè API. Kòm yon fason pou sòti, li pwopoze pou divize libsystemd nan plizyè bibliyotèk separe ki responsab pou API separe, ki pral pèmèt depandans twazyèm pati yo dwe chaje sèlman kote yo bezwen.

Devlopè systemd yo konsidere separasyon an pa apwopriye, paske moun kap okipe yo nan libsystemd yo konekte. Divize ta mande anpil travay epi sa ta lakòz swa pèt efikasite oswa bezwen pou kopi kòd. Pou diminye anprint memwa, libsystemd dènyèman chanje pou chaje dinamik bibliyotèk liblzma, libzstd, ak liblz4 lè l sèvi avèk yon apèl dlopen() nan sitiyasyon kote fonksyon yo aktyèlman nesesè. Yon chanjman menm jan an pral aplike pou libgcrypt apati pwochen lage a.

Desizyon sa a te vin tounen objè a nan kritik, depi olye pou yo lyezon eksplisit ak aparan, chajman nan bibliyotèk twazyèm pati yo pral kounye a dwe fè implicitement, ki pral konplike dyagnostik, depi koneksyon an nan apèl libsystemd API ak apèl nan fonksyon ki soti nan bibliyotèk ekstèn se pa. evidan. Chanjman nan chaje lè l sèvi avèk dlopen() tèt li pa chanje achitekti a, men sèlman kache eleman ekstèn nan men moun k ap antreteni yo ak itilizatè yo.

Lenart Pottering te eksprime yon gwo dezakò sou lide divize libsystemd nan plizyè bibliyotèk, paske yon mouvman konsa ta siyifikativman konplike pataje kòd nan systemd epi li ta mande pou fè tout moun kap okipe entèn yo piblik oswa separeman konpile yo nan chak bibliyotèk. Nan premye ka a, pral gen pwoblèm kenbe estabilite nan API a ak namespaces, ak nan dezyèm lan, li pral ogmante nan gwosè akòz repetisyon kòd.

Aplike pou pwochen lage a, chaje bibliyotèk ekstèn sèlman lè sa nesesè yo konnen pa Lenart kòm estrateji ki pi bon. Yo pwopoze pou rezoud pwoblèm nan ogmante konpleksite nan jwenn done sou bibliyotèk chaje dinamik lè yo ajoute jaden anplis nan fichye ELF ak enfòmasyon sou depandans dinamik sa yo, ki ka trete pa debogaj epi yo montre nan pwodiksyon an nan sèvis piblik readelf la.

Konsènan konekte yon gwo kantite aplikasyon ak libsystemd, Lenart rekòmande ke devlopè aplikasyon yo pa eseye chaje libsystemd pou dedomajman pou yon sèl fonksyon, men aplike yon okipe pwotokòl nan nivo aplikasyon an. Pou egzanp, aplikasyon an nan fonksyonalite sd_notify () se byen trivial epi yo ka fè nan kèk liy nan kòd lè w ap itilize sipò UNIX (AF_UNIX). Yon aplikasyon separe menm jan an nan sd_notify te disponib pou OpenSSH depi 2017 epi li te fèk adopte nan branch pòtab nan OpenSSH 9.8, liberasyon an pwograme pou mitan-ete.

Sous: opennet.ru

Achte hosting serye pou sit ki gen pwoteksyon DDoS, sèvè VPS VDS 🔥 Achte yon hébergement sit entènèt serye ak pwoteksyon DDoS, sèvè VPS VDS | ProHoster