Është planifikuar të transferohet mekanizmi i izolimit të pengut në Linux

kohët e fundit autori i bibliotekës standarde Cosmopolitan C dhe platforma Redbean e shpallur përmes a njoftoi, zbatimin e mekanizmit të izolimit pledge() për Linux.

Ishte i zhvilluar fillimisht nga projekti OpenBSD y ju lejon të ndaloni në mënyrë selektive se aplikacionet hyjnë në thirrjet e papërdorura të sistemit (për aplikacionin është formuar një lloj liste e bardhë e thirrjeve të sistemit dhe thirrjet e tjera janë të ndaluara). Ndryshe nga mekanizmat e kontrollit të aksesit syscall të disponueshëm në Linux, si p.sh. seccomp, mekanizmi i pengut është projektuar që nga themeli për të qenë sa më miqësor për përdoruesit.

Nisma e dështuar për të izoluar aplikacionet në mjedisin bazë OpenBSD duke përdorur mekanizmin systrace tregoi se izolimi në nivelin e thirrjeve individuale të sistemit është shumë i ndërlikuar dhe kërkon kohë.

Si alternativë u propozua pengu, i cili lejohet të krijojë rregulla izolimi pa hyrë në detaje dhe duke manipuluar klasat e përgatitura të aksesit.

Për shembull, klasat e ofruara janë stdio (hyrje/dalje), rpath (skedarët vetëm për lexim), wpath (shkruani skedarë), cpath (krijoni skedarë), tmppath (punoni me skedarë të përkohshëm), inet (rrjeti i prizave), unix (priza unix ), dns (rezolucion DNS), getpw (qasja për lexim në bazën e të dhënave të përdoruesit), ioctl (thirrja ioctl), proc (kontrolli i procesit), exec (proceset e fillimit) dhe id (kontrolli i lejeve).

Rregullat për të punuar me thirrjet e sistemit janë të specifikuara në formën e shënimeve që përfshijnë një listë të klasave të lejuara të thirrjeve të sistemit dhe një grup shtigash skedarësh ku lejohet qasja. Pas përpilimit dhe ekzekutimit të aplikacionit të modifikuar, kerneli merr përsipër punën e monitorimit të pajtueshmërisë me rregullat e specifikuara.

Më vete, po zhvillohet zbatimi i premtimit për FreeBSD, i cili dallohet nga aftësia për të izoluar aplikacionet pa bërë ndryshime në kodin e tyre, ndërsa në OpenBSD thirrja e premtimit synon integrimin e ngushtë me mjedisin bazë dhe shtimin e shënimeve në kod. të secilit.

Pengu është si fruti i ndaluar që të gjithë e lakmojmë kur shefi thotë se duhet të përdorim gjëra të tilla si Linux. Pse ka rëndësi kjo? Kjo është për shkak se pledge() në fakt e bën sigurinë të kuptueshme. Linux nuk ka pasur kurrë një shtresë sigurie që njerëzit e thjeshtë mund ta kuptojnë.

Zhvilluesit e portit të premtimit të Linux morën një sugjerim nga FreeBSD dhe në vend që të bënin ndryshime të kodit, ata përgatitën një mjet shtesë nga pledge.com që ju lejon të aplikoni kufizime pa ndryshuar kodin e aplikacionit. Për shembull, për të ekzekutuar programin curl me akses vetëm në klasat e thirrjeve të sistemit stdio, rpath, inet dhe threadstdio, thjesht ekzekutoni "./pledge.com -p 'stdio rpath inet thread' curl http://example.com » .

Shërbimi funksionon në të gjitha shpërndarjet Linux që nga RHEL6 dhe nuk kërkon qasje në rrënjë. Për më tepër, bazuar në bibliotekën kozmopolitane, ofrohet një API për menaxhimin e kufizimeve në kodin e programeve të gjuhës C, i cili lejon, ndër të tjera, krijimin e enklavave për të kufizuar në mënyrë selektive aksesin në lidhje me funksione të caktuara të aplikacionit.

Ka pasur disa zhvillues në të kaluarën që e kanë provuar këtë. Nuk do të përmend emra, sepse shumica e këtyre projekteve nuk u përfunduan kurrë. Kur bëhet fjalë për SECOMP, mësimet në internet shpjegojnë vetëm se si të listohen thirrjet e sistemit në listën e bardhë, kështu që shumica e njerëzve humbasin interesin përpara se të kuptojnë se si të filtrojnë argumentet. Projektet që ecën përpara gjithashtu kishin mbikëqyrje si lejimi i ndryshimeve të setuid/setgid/sticky bits. Prandaj, asnjë nga alternativat aktuale nuk duhet të përdoret. Mendoj se kjo përpjekje na afron shumë më afër se kurrë më parë për të pasur pledge().

Zbatimi nuk kërkon ndryshime kernel: kufizimet e shërbimeve përkthehen në rregullat SECCOMP BPF dhe përpunohen duke përdorur mekanizmin e izolimit të thirrjeve të sistemit të Linux-it. Për shembull, thirrja e premtimit ("stdio rpath", 0) do të konvertohet në një filtër BPF

Së fundi, nëse jeni të interesuar të dini më shumë për të, mund të konsultoheni me detajet Në lidhjen vijuese.


Lini komentin tuaj

Adresa juaj e emailit nuk do të publikohet. Fusha e kërkuar janë shënuar me *

*

*

  1. Përgjegjës për të dhënat: Miguel Ángel Gatón
  2. Qëllimi i të dhënave: Kontrolloni SPAM, menaxhimin e komenteve.
  3. Legjitimimi: Pëlqimi juaj
  4. Komunikimi i të dhënave: Të dhënat nuk do t'u komunikohen palëve të treta përveç me detyrim ligjor.
  5. Ruajtja e të dhënave: Baza e të dhënave e organizuar nga Occentus Networks (BE)
  6. Të drejtat: Në çdo kohë mund të kufizoni, rikuperoni dhe fshini informacionin tuaj.