Athari katika cdnj zilizoruhusu utekelezaji wa msimbo kwenye seva za Cloudflare

Athari kubwa imetambuliwa katika mtandao wa Cloudflare wa uwasilishaji wa maudhui wa cdnjs, ambao umeundwa ili kuharakisha uwasilishaji wa maktaba za JavaScript, kuruhusu utekelezwaji wa msimbo kiholela kwenye seva za CDN. Hatari ya tatizo inazidishwa na ukweli kwamba karibu 12.7% ya tovuti zote kwenye mtandao hutumia huduma kupakua maktaba ya JavaScript, na maelewano ya miundombinu hufanya iwezekanavyo kuchukua nafasi ya maktaba zinazotolewa na tovuti yoyote kati ya hizi.

Huduma ya cdnjs hupakua vifurushi kutoka kwa Git au hazina ya NPM, baada ya hapo inaruhusu tovuti yoyote kutumia mtandao wa uwasilishaji wa maudhui ya Cloudflare bila malipo ili kuharakisha upakiaji wa maktaba za JavaScript. Wakati wa kusoma nambari ya vifaa vya cdnjs iliyochapishwa kwenye GitHub, ilifunuliwa kuwa kufungua vifurushi vya NPM kwenye kumbukumbu za tgz, moduli ya kawaida ya kumbukumbu / lami katika lugha ya Go hutumiwa, ambayo hutoa orodha ya faili kama ilivyo, bila kurekebisha njia. . Katika kesi wakati hati inafungua yaliyomo kulingana na orodha iliyotolewa, uwepo katika kumbukumbu ya faili kama "../../../../../../../tmp/test" unaweza kusababisha kubatilisha faili kiholela katika mfumo, kadiri haki za ufikiaji zinavyoruhusu.

Ilipendekezwa kuwa mshambulizi anaweza kutuma maombi ya kuongeza maktaba yake kwenye cdnjs na kupakia kumbukumbu iliyoundwa mahususi iliyo na faili zilizo na vibambo "../" kwenye njia ya hazina ya NPM. Kwenye seva za cdnjs, operesheni ya "kusasisha kiotomatiki" hufanywa mara kwa mara, wakati ambapo kidhibiti hupakua matoleo mapya ya maktaba inayopendekezwa na kufunua yaliyomo. Kwa kutumia faili zilizo na njia za β€œ../”, mshambulizi anaweza kubatilisha faili kwa hati za huduma na kutekeleza msimbo wake kwenye seva ambayo upakiaji ulifanyika.

Katika kesi ya kupakua sasisho kutoka kwa Git, iligunduliwa kuwa kidhibiti cha kupakua sasisho haikuzingatia viungo vya ishara wakati wa kunakili faili kutoka kwa Git. Kipengele hiki kilifanya iwezekane kupanga usomaji wa faili zozote kutoka kwa seva kwa kuongeza viungo vya ishara kwa Git.

Iliamuliwa kuanza majaribio kwa onyesho la udukuzi wa cdnjs ili kupokea tuzo katika HackerOne kwa kupima dhana kuhusu usomaji wa faili. Kiungo cha mfano test.js kimeongezwa kwenye hazina ya Git ya maktaba ya JavaScript inayotolewa kupitia CDN, ikielekeza kwenye /proc/self/maps faili. Baada ya kuchapisha toleo jipya la maktaba, kidhibiti sasisho kilichakata hazina hii na kuchapisha faili maalum katika cdnjs (test.js iliundwa kama kiungo cha mfano na faili hii ilipoombwa, yaliyomo kwenye /proc/self/maps yalirejeshwa. )

Kubadilisha kiunga cha mfano kwa faili /proc/self/environ, mwandishi wa utafiti aligundua kuwa data iliyotolewa ilikuwa na maadili ya anuwai ya mazingira GITHUB_REPO_API_KEY na WORKERS_KV_API_TOKEN. Tofauti ya kwanza ilihifadhi ufunguo wa API kwa ufikiaji wa kuandika kwa hazina ya robocdnjs kwenye GitHub. Tofauti ya pili ilihifadhi tokeni kwenye hifadhi ya KV kwenye cdnjs. Kwa kutumia taarifa iliyopokelewa, mshambuliaji anaweza kufanya mabadiliko kwenye cdnjs na kuhatarisha kabisa miundombinu.

Chanzo: opennet.ru

Kuongeza maoni