Soosaarayaasha Google ayaa soo jeediyay inay u horumariyaan libyadooda LLVM

Mid ka mid ah horumariyeyaasha Google kor loo qaaday ku jira liiska LLVM ee ku saabsan horumarinta maktabadda C ee halbeegyada badan leh (Libc) taasoo qayb ka ah mashruuca LLVM. Sababo dhowr ah awgood, Google kuma qanacsana libc-ga hadda jira (glibc, musl) shirkaduna waxay ku socotaa sidii ay u horumarin lahayd hirgelin cusub, kaas oo la soo jeediyay in la horumariyo iyada oo qayb ka ah LLVM.

Horumarka LLVM ayaa dhawaanahan loo isticmaalay sidii aasaaska loo dhisi lahaa qalabka isku xidhka Google. Fikradda ugu weyn ayaa ah in haddii Google uu mar hore bilaabay inuu horumariyo libckiisa, markaa sababta aan isla markiiba u horumarinayn nidaamkeeda qayb ka mid ah LLVM, oo horey u siisa maktabadeeda caadiga ah ee C++ (Libc++), laakiin aan lahayn maktabad caadi ah oo la mid ah C. ( libc).

Horumarinta ayaa loo qorsheeyay in lagu fuliyo marxalado, si tartiib tartiib ah u kordhinaya shaqeynta. Xulashooyinka ugu horreeya waxaa la soo jeediyay in loo qaabeeyo sida lakabka u dhexeeya codsiga iyo nidaamka Libc, kuwaas oo sifooyinka aan weli la hirgelin laga amaahan doono. Ka dib marka la gaaro heer gaar ah oo shaqeyn ah, Libc-da cusub waxaa loo isticmaali karaa bedel buuxa ee nidaamka Libc. Waxaan qorsheyneynaa inaan ku bilowno taageerada dhismaha x86-64, Linux, iyo isku xirka joogtada ah (loading dynamic, linking, and architectures dheeraad ah ayaa la hirgelin doonaa si labaad).

Mashruucu wuxuu weli ku jiraa marxaladda hore ee horumarinta, laakiin yoolalka aasaasiga ah ayaa horay loo qeexay:

  • Hababka iyo horumarka si waafaqsan falsafada keenista maktabad granular ah halkii ay ka mid kali kali ah;
  • Taageerada isku xirka joogtada ah ee hababka pie (Fulin-madax-bannaan ee booska) iyo PIE la'aan. Bixinta CRT (C runtime) iyo xamuulka PIE ee hawl-fulinta si toos ah ugu xidhan;
  • Taageerada inta badan shaqooyinka maktabadda caadiga ah ee C, oo leh POSIX ku darida iyo qaar ka mid ah kordhinta nidaamka-gaar ah ee looga baahan yahay codsiyada jira;
  • Ka digtoonow kordhinta gaarka ah ee iibiyaha oo ku dar kaliya marka loo baahdo. Marka laga hadlayo taageerada muddo-kordhinta qolo saddexaad, waxa la soo jeediyay in la isticmaalo habka mashaariicda Clang iyo libc++;
  • Isticmaalka hababka ugu wanaagsan ee horumarinta iyadoo la adeegsanayo qalabka LLVM, sida isticmaalka nadiifiyaha iyo tijaabinta fuzz ee bilowga hore.

Mid ka mid ah horumarinta LLVM ee firfircoon tilmaamayWay caddahay in ay macno samaynayso in la soo raro libka iyada oo qayb ka ah qalabka LLVM, laakiin sida caadiga ah, marka baahidaas oo kale soo baxdo, waxay isticmaalaan maktabadda musl, taas oo si fiican u qoran, taageertaa naqshado kala duwan, oo bixiya hawlaha lagama maarmaanka ah, oo ay ku jiraan taageerada firfircoonida. isku xirka. Waxa laga yaabaa inay sabab u noqoto in musl la geliyo LLVM oo loo horumariyo sidii fargeeto la mid ah mashruuca ugu weyn.

Fikradaada sidoo kale muujiyay Qoraaga mashruuca Musl, oo isku dayay inuu ku doodo sababta soo jeedinta Google iyo ka mid noqoshada Libc ee qaybinta LLVM ay yihiin fikrado aad u xun:

  • Horumarinta iyo ilaalinta Libc sax ah, la jaan qaadi kara, iyo tayada sare waa hawl aad u adag. Dhibaatadu kuma jirto tirada koodka, laakiin waa in la hubiyo hab-dhaqanka saxda ah iyo dhibaatooyinka hirgelinta is-dhexgalka, iyada oo la tixgelinayo lakabka weyn ee codsiyada waligood lagu qoray C/C++, iyo sidoo kale codsiyada luqadaha kale, kuwaas oo wakhtigooda la isticmaalo. by Libc Habka madaxa-u-socodka ah iyada oo aan la tixgalineynin nuances waxay kaliya u horseedi doontaa xaqiiqda ah in barnaamijyo badan oo jira aysan awoodi doonin inay la shaqeeyaan Libc, laakiin markaa mashruucan ma noqon doono mid xiiso u leh macaamiisha.
  • Horumarinta shirkadu waxay dumin kartaa Libc, laakiin waxay u riixdaa isticmaalka baahsan, taasoo keentay baahida loo qabo in lagu daro hacks si loo hubiyo ku habboonaanta codsiyada. Horumarka hoos yimaada mashruuca isha furan ee shirkadu wuxuu bustaha u jiidi doonaa baahida iyo xalalka shirkadda, taasoo wax u dhimaysa danaha bulshada. Tusaale ahaan, haddii aad ku aqoonsato dhibaato uu keeno bug barnaamij kale, kobaca la kantaroolo way sahlan tahay in la hubiyo in Libc uu la jaanqaadi karo cayayaankan intii la hagaajin lahaa cayayaanka laftiisa. Apple waxay u isticmaashaa fargeeto libka BSD ujeeddooyinkan, Google-na waxay ku isticmaashaa fargeeto musl ah Fuchsia. Waayo-aragnimada horumariyaha musl-ku waa in uu inta badan la xidhiidhay qareenno si ay u caddeeyaan arrimaha shatiga, laakiin waligiis lama xidhiidhin si loo caddeeyo tafaasiisha farsamada ka hor inta aanu isbeddel aan faa'iido lahayn oo carqaladayn ah ku samayn laamihiisa.
  • Maqnaanshaha monoculture ee horumarinta libciga iyo diiradda saaraya heerarka la isku raacsan yahay ee aan ahayn kantaroolka shakhsi ahaaneed, taas oo dhiirigelisa horumarinta codsiyada si ay u isticmaalaan heerarka halkii ay ku xidhnaan lahaayeen hirgelinta gaarka ah. Taasi waa sababta qoraaga musl uu uga soo horjeedo in lagu daro maktabadiisa LLVM, iyo sidoo kale ka soo horjeeda horumarinta libyada gudaha LLVM, maadaama kiiskan dabeecadda madax-bannaanida ee libka uu lumay oo hirgelin gaar ah uu noqdo xalka heerka koowaad LLVM, iyo dhammaan kuwa kale waxay noqdaan xal heerka labaad ah.

Source: opennet.ru

Add a comment