Inisyatibo sa pagkunhod sa dependency sa libsystemd

Taliwala sa mga nag-develop sa systemd system manager, adunay usa ka diskusyon bahin sa pagkunhod sa mga dependency sa libsystemd library, nga nag-link dili lamang sa mga sangkap sa systemd, apan usab sa daghang mga eksternal nga aplikasyon. Pananglitan, sa Fedora, labaw pa sa 150 nga mga pakete ang naggamit sa libsystemd sa ilang mga dependency. Ang initiator sa diskusyon nagtuo nga ang pagdugang sa dugang nga ikatulo nga partido nga mga librarya sa libsystemd nga dili kontrolado sa systemd developers makadugang sa pag-atake sa ibabaw sa panghitabo sa ikatulo nga-partido librarya nga makompromiso, sama sa nahitabo sa liblzma librarya.

Dugang pa sa liblzma ug glibc, ang libsystemd nagkarga usab sa libzstd, liblz4 ug libgcrypt, ang seguridad niini nahimong kritikal. Ang libsystemd naghatag og access sa 12 ka batakang mga API (sd-bus, sd-daemon, sd-device, sd-event, sd-hwdb, sd-id128, sd-journal, sd-login, sd-netlink, sd-network, sd - path ug sd-resolve) ug usa ka sitwasyon ang mitungha diin ang usa ka aplikasyon, pananglitan, gamit ang libsystemd alang lamang sa pagtawag sa sd_notify function aron sa pagpahibalo sa systemd mahitungod sa usa ka pagbag-o sa estado o sd_journal sa pagsulat sa datos sa log, mga link sa tanan nga uban nga mga librarya ug Mga tigdumala sa API. Isip usa ka paagi sa paggawas, gisugyot nga bahinon ang libsystemd sa daghang lahi nga mga librarya nga responsable sa lainlaing mga API, nga magtugot sa mga dependency sa ikatulo nga partido nga makarga kung diin sila kinahanglan.

Giisip sa mga nag-develop sa systemd ang panagbulag nga dili angay, tungod kay ang mga tigdumala nga naa sa libsystemd managsama. Ang pagbahin manginahanglan ug daghang trabaho ug moresulta sa pagkawala sa kahusayan o sa panginahanglan sa pagdoble sa code. Aron makunhuran ang footprint sa memorya, bag-o lang gibag-o ang libsystemd aron dinamikong i-load ang liblzma, libzstd, ug liblz4 nga mga librarya gamit ang dlopen() nga tawag sa mga sitwasyon diin gikinahanglan ang ilang mga function. Ang susama nga pagbag-o ipatuman alang sa libgcrypt sugod sa sunod nga pagpagawas.

Kini nga desisyon nahimong tumong sa pagsaway, tungod kay imbes nga tin-aw ug mamatikdan nga pag-link, ang pagkarga sa mga librarya sa ikatulo nga partido mahimo na karon nga hingpit nga buhaton, nga makapakomplikado sa mga diagnostic, tungod kay ang koneksyon sa libsystemd API nga mga tawag nga adunay mga tawag sa mga function gikan sa mga eksternal nga librarya dili. klaro. Ang switch sa loading gamit ang dlopen() mismo wala mag-usab sa arkitektura, apan nagtago lamang sa mga eksternal nga sangkap gikan sa mga tigmentinar ug tiggamit.

Si Lenart Pottering kusganong wala mouyon sa ideya sa pagbahin sa libsystemd ngadto sa daghang mga librarya, tungod kay ang maong lakang makapakomplikado pag-ayo sa pagpaambit sa code sa systemd ug magkinahanglan nga himoong publiko ang tanang internal nga mga handler o gilain nga statically compile kini ngadto sa matag librarya. Sa una nga kaso, adunay mga problema sa pagpadayon sa kalig-on sa API ug mga namespace, ug sa ikaduha, kini modaghan sa gidak-on tungod sa pagdoble sa code.

Gipatuman alang sa sunod nga pagpagawas, ang pagkarga sa gawas nga mga librarya lamang kung gikinahanglan ang gitan-aw ni Lenart isip labing maayo nga estratehiya. Gisugyot nga sulbaron ang problema sa pagdugang sa pagkakomplikado sa pagkuha sa datos bahin sa dinamikong gikarga nga mga librarya pinaagi sa pagdugang sa dugang nga mga natad sa mga file sa ELF nga adunay kasayuran bahin sa ingon nga dinamikong mga dependency, nga mahimong maproseso sa mga debugger ug ipakita sa output sa readelf utility.

Mahitungod sa pag-link sa daghang mga aplikasyon sa libsystemd, girekomenda ni Lenart nga ang mga nag-develop sa aplikasyon dili mosulay sa pagkarga sa libsystemd alang sa usa ka function, apan ipatuman ang usa ka tigdumala sa protocol sa lebel sa aplikasyon. Pananglitan, ang pag-implementar sa sd_notify() functionality gamay ra ug mahimo sa pipila ka linya sa code kung gamiton ang UNIX sockets (AF_UNIX). Ang susama nga bulag nga pagpatuman sa sd_notify anaa na alang sa OpenSSH sukad sa 2017 ug bag-o lang gisagop ngadto sa madaladala nga sanga sa OpenSSH 9.8, ang pagpagawas niini gikatakda sa tunga-tunga sa ting-init.

Source: opennet.ru

Pagpalit kasaligan nga pag-host alang sa mga site nga adunay proteksyon sa DDoS, mga server sa VPS VDS 🔥 Pagpalit og kasaligang website hosting nga adunay proteksyon sa DDoS, VPS VDS servers | ProHoster