Kumusta sa tanan. Mobalik na ta sa trabaho ug daghan pang mga kulbahinam nga paglusad ang giplano alang sa Enero. Lakip sa ubang mga butang, among gipahibalo ang pagpalista alang sa bag-ong grupo sa among gihigugma nga kurso. Isip pagpaabot sa paglusad, naandan na namong ipaambit ang usa ka hubad sa mapuslanong materyal.

Ang mga permiso sa file nagtanyag usa ka luwas nga alternatibo sa mga executable sa SUID, apan kini mahimong medyo makalibog sa sinugdanan.
Kitang tanan nasayod nga ang mga binary file mao ang Maayo na lang, kon ang imong aplikasyon nagkinahanglan og limitado nga mga pribilehiyo, adunay mas episyente nga paagi nga gitawag og .
Makadaginot ko nimo og panahon kon dili nimo gusto nga basahon ang artikulo sa ibabaw sa detalyado: Sa panguna, ang mga permiso sa file nagtugot sa mga proseso nga modagan isip root, ug busa adunay katungod sa pagbuhat sa mga butang, nga magpabilin ang pipila ka mga kapabilidad nga limitado. , kon ilang tangtangon ang mga pribilehiyo ug modagan isip usa ka walay pribilehiyo nga tiggamit. Kini nagpasabot nga kon ang usa ka tig-atake makahimo sa pagkompromiso sa usa ka proseso gamit ang buffer overflow o uban pang exploit, dili sila makakuha og bisan unsa lapas sa minimum nga mga pribilehiyo nga gikinahanglan sa proseso.
Maayo ang mga permiso para sa mga serbisyo, nga kasagaran kanunay modagan isip root, apan kumusta man ang mga command-line utilities? Maayo na lang kay gisuportahan usab kini, basta naa kay na-install nga saktong mga utilities. Pananglitan, kon naggamit ka og Ubuntu, kinahanglan nimo ang package. libcap2-binKinahanglan usab nga magpadagan ka og dili-karaang kernel (sugod sa bersyon 2.6.24).
Kini nga mga gimbuhaton nagtugot kanimo sa pag-associate sa mga permiso sa mga executable file nga susama sa pag-set sa SUID bit, apan alang lamang sa usa ka piho nga hugpong sa mga permiso. Ang utility setcap gigamit sa pagdugang ug pagtangtang sa mga permiso gikan sa usa ka file.
Ang unang lakang mao ang pagpili sa mga permiso nga imong gikinahanglan. Para niini nga artikulo, akong hunahunaon nga adunay himan sa pagdayagnos sa network nga gitawag og tracewalk, nga kinahanglan nga magamit sa Kasagaran kini nagkinahanglan nga ang app ipadagan isip root, apan kung tan-awon permiso ra diay ang gikinahanglan CAP_NET_RAW.
Kon naa ka sa direktoryo diin nahimutang ang binary tracewalk, mahimo nimong idugang kini nga permiso sama sa mosunod:
sudo setcap cap_net_raw=eip tracewalk Ayaw una gamita ang hulapi sa pagkakaron =eip Para sa mga permiso, akong hisgutan kana sa pipila ka segundo. Timan-i nga ang ngalan sa permiso naa sa gagmay nga mga letra. Karon mahimo nimong susihon kung na-configure ba nimo ang mga permiso sa husto gamit ang:
setcap -v cap_new_raw=eip tracewalkO mahimo nimong ilista ang tanan nga mga permiso nga gitakda alang sa usa ka gihatag nga executable:
getcap tracewalk
Alang sa pakisayran, mahimo usab nimo nga tangtangon ang tanan nga mga permiso gikan sa usa ka executable file gamit ang:
setcap -r tracewalkNiini nga punto, kinahanglan nga makahimo ka sa pagpadagan sa executable isip usa ka unprivileged user, ug kinahanglan nga makahimo kini sa pagdumala sa raw sockets, apan walay bisan unsang ubang mga pribilehiyo nga naa sa root user.
Busa unsa may buot ipasabot niining katingad-an nga hulapi? =eip? Nagkinahanglan kini og gamay nga pagsabot sa kinaiya sa mga permiso. Ang matag proseso adunay tulo ka hugpong sa mga permiso: epektibo, mapanunod, ug gitugotan:
- Epektibo Ang mga permiso mao kadtong nagtino kung unsa gyud ang mahimo sa usa ka proseso. Pananglitan, dili kini maka-atubang sa hilaw nga mga socket kung
CAP_NET_RAWwala sa epektibong set. - Gitugotan Ang mga permiso mao kadtong gitugotan nga maangkon sa usa ka proseso kung kini mangayo niini gamit ang angay nga tawag. Dili kini motugot sa proseso sa pagbuhat sa bisan unsa gawas kung kini espesipikong gisulat aron mangayo sa gitakdang permiso. Gitugotan niini ang mga proseso nga masulat aron makadugang labi ka hinungdanon nga mga permiso sa epektibo nga set lamang alang sa panahon nga kini aktuwal nga gikinahanglan.
- Mapanunod Ang mga permiso mao kadtong mahimong mapanunod sa set sa mga permiso sa gipasanay nga proseso sa anak. Atol sa operasyon
fork()oclone()Ang proseso sa bata kanunay gihatagan og kopya sa mga permiso sa proseso sa ginikanan, tungod kay sa maong punto kini nagpadagan gihapon sa parehas nga executable. Ang mapanunod nga set gigamit kungexec()(o katumbas) gitawag aron ilisan ang usa ka executable file og lain. Niini nga punto, ang reachable set sa proseso gitabonan sa inheritable set aron makuha ang reachable set nga gamiton para sa bag-ong proseso.
Busa, ang gamit setcap Nagtugot kanato sa pagdugang og mga permiso para niining tulo ka set nga independente para sa usa ka gihatag nga executable file. Timan-i nga ang bili sa grupo gihubad nga medyo lahi para sa mga permiso sa file:
- Magamit Ang mga permiso sa file mao kadtong kanunay nga magamit sa usa ka executable file, bisan kung ang ginikanan nga proseso nga nagtawag niini wala niini. Kini kaniadto gitawag nga "enforced" nga mga permiso.
- Napanunod Ang mga permiso sa file naghubit ug dugang nga maskara nga magamit usab sa pagtangtang sa mga permiso gikan sa set sa proseso sa pagtawag. Kini gipadapat dugang sa mapanunod nga set sa proseso sa pagtawag, busa ang usa ka permiso mapanunod lamang kung kini anaa sa duha ka set.
- Epektibo Ang mga permiso sa file sa tinuod usa lang ka single bit, dili usa ka set, ug kon set, kini nagpasabot nga ang tibuok nga available nga set gikopya usab ngadto sa effective set sa bag-ong proseso. Mahimo kining gamiton sa pagdugang og mga permiso sa mga proseso nga wala espesipikong gisulat aron magkinahanglan niini. Tungod kay kini usa lang ka bit, kon imong i-set kini alang sa bisan unsang permiso, kinahanglan kini i-set alang sa tanang permiso. Mahimo nimo kining isipon nga usa ka legacy bit, tungod kay gigamit kini aron tugotan ang mga permiso nga gamiton sa mga aplikasyon nga wala mosuporta niini.
Sa pagtino sa mga permiso pinaagi sa setcap tulo ka letra e, i и p may kalabutan sa episyente, mapanunod ug ma-access mga set matag usa. Busa, ang naunang espesipikasyon:
sudo setcap cap_net_raw=eip tracewalk … nagpakita nga ang resolusyon CAP_NET_RAW kinahanglan idugang sa accessible ug inheritable sets, ug ang effective bit kinahanglan usab nga itakda. Kini mopuli sa bisan unsang naunang gitakda nga mga permiso sa file. Aron magtakda og daghang mga permiso sa usa ka higayon, gamita ang lista nga gibulag sa koma:
sudo setcap cap_net_admin,cap_net_raw=eip tracewalknaghisgot niining tanan sa mas detalyado, apan hinaut nga kini nga post nakapasabot og gamay sa mga butang. Adunay pipila na lang ka mga pasidaan ug mga pasidaan nga nahabilin nga hisgutan.
Una, ang mga kapabilidad sa file dili mogana sa mga symlink—kinahanglan nimo kining i-apply sa binary mismo (nga mao, ang symlink target).
Ikaduha, dili kini mogana sa mga interpreted script. Pananglitan, kon duna kay Python script nga gusto nimong hatagan og mga permiso, kinahanglan nimo kining i-assign sa Python interpreter mismo. Kini klaro nga usa ka posibleng isyu sa seguridad, tungod kay ang tanang script nga gi-execute gamit ang maong interpreter adunay gitakdang permiso, bisan tuod mas maayo gihapon kini kaysa sa pag-set niini sa SUID. Ang labing komon nga workaround daw mao ang pagsulat og lahi nga executable sa C o susama nga makahimo sa gikinahanglan nga mga operasyon ug pagtawag niini gikan sa script. Kini susama sa pamaagi nga gigamit sa Wireshark, nga naggamit og binary file. /usr/bin/dumpcap aron paghimo sa mga pribilehiyo nga operasyon:
$ getcap /usr/bin/dumpcap
/usr/bin/dumpcap = cap_net_admin,cap_net_raw+eip Ikatulo, ang mga permiso sa file dili ma-disable kung mogamit ka og environment variable LD_LIBRARY_PATH alang sa klaro nga mga hinungdan sa seguridad(1)Parehas usab kini sa LD_PRELOAD, sa akong nahibaloan.
1. Tungod kay ang usa ka tig-atake klaro nga makapuli sa usa sa mga standard nga librarya ug mogamit LD_LIBRARY_PATH, aron pugson ang librarya niini nga tawagon imbes sa system, ug sa ingon adunay kaugalingon nga arbitrary code nga ipatuman nga adunay parehas nga mga pribilehiyo sama sa nanawag nga aplikasyon.
Mao ra na sa pagkakaron. Mahimo kang makahibalo og dugang mahitungod sa programa sa kurso sa
Source: www.habr.com
