ʻO ka nāwaliwali i nā cdnjs i ʻae i ka hoʻokō code ma nā kikowaena Cloudflare

Ua ʻike ʻia kahi koʻikoʻi koʻikoʻi ma Cloudflare's cdnjs content delivery network, i hoʻolālā ʻia e wikiwiki i ka lawe ʻana i nā waihona JavaScript, e ʻae ana i ka hoʻokō ʻana i nā code arbitrary ma nā kikowaena CDN. Hoʻonui ʻia ka pilikia o ka pilikia ma ka ʻoiaʻiʻo ma kahi o 12.7% o nā pūnaewele a pau ma ka Pūnaewele e hoʻohana i ka lawelawe e hoʻoiho i nā hale waihona puke JavaScript, a ʻo ka ʻae ʻana i ka ʻōnaehana hiki ke hoʻololi i nā hale waihona puke i hāʻawi ʻia e kekahi o kēia mau pūnaewele.

Hoʻoiho ka lawelawe cdnjs i nā pūʻolo mai Git a i ʻole kahi waihona NPM, a laila e ʻae i kekahi pūnaewele e hoʻohana i ka ʻoihana hoʻolaha ʻike Cloudflare no ka manuahi e wikiwiki i ka hoʻouka ʻana i nā waihona JavaScript. I ke aʻo ʻana i ke code o nā ʻāpana cdnjs i paʻi ʻia ma GitHub, ua hōʻike ʻia ʻo ka wehe ʻana i nā pūʻolo NPM i nā waihona tgz, hoʻohana ʻia ka module archive/tar ma ka ʻōlelo Go, e hana ana i kahi papa inoa o nā faila e like me ia, me ka ʻole o ka hoʻoponopono ʻana i nā ala. . I ka wā e wehe ai ka ʻatikala i nā mea e pili ana i ka papa inoa i hāʻawi ʻia, hiki ke hele i ka waihona o nā faila e like me "../../../../../../../tmp/test" ke alakaʻi i ka overwriting arbitrary files in system, as far as access rights allow.

Ua manaʻo ʻia e hiki i ka mea hoʻouka ke noi e hoʻohui i kāna waihona i nā cdnjs a hoʻouka i kahi waihona i hoʻolālā kūikawā ʻia me nā faila me nā huaʻōlelo "../" ma ke ala i ka waihona NPM. Ma nā kikowaena cdnjs, hana ʻia kahi hana "autoupdate", i ka manawa e hoʻoiho ai ka mea lawelawe i nā mana hou o ka waihona i manaʻo ʻia a wehe i nā ʻike. Ke hoʻohana nei i nā faila me nā ala "../", hiki i ka mea hoʻouka ke kākau i nā faila me nā palapala lawelawe a hoʻokō i kā lākou code ma ke kikowaena kahi i hana ʻia ai ka wehe ʻana.

I ka hihia o ka hoʻoiho ʻana i nā mea hou mai Git, ua ʻike ʻia ʻaʻole i noʻonoʻo ka mea nāna e hoʻoiho i nā mea hou i nā loulou hōʻailona ke kope ʻana i nā faila mai Git. ʻO kēia hiʻohiʻona i hiki ke hoʻonohonoho i ka heluhelu ʻana i nā faila mai ka kikowaena ma ka hoʻohui ʻana i nā loulou hōʻailona iā Git.

Ua hoʻoholo ʻia e hoʻomaka i nā hoʻokolohua me ka hōʻike ʻana i ka hacking cdnjs e loaʻa i kahi makana ma HackerOne ma o ka hoʻāʻo ʻana i ke kuhiakau e pili ana i ka heluhelu faila. Ua hoʻohui ʻia kahi loulou hōʻailona test.js i ka waihona Git o ka waihona JavaScript i lawelawe ʻia ma CDN, e kuhikuhi ana i ka faila /proc/self/maps. Ma hope o ka paʻi ʻana i kahi mana hou o ka waihona, ua hoʻoponopono ka mea hoʻoponopono hou i kēia waihona a hoʻopuka i ka faila i ʻōlelo ʻia ma cdnjs (ua hana ʻia ʻo test.js ma ke ʻano he loulou hōʻailona a i ka wā i noi ʻia ai kēia faila, ua hoʻihoʻi ʻia nā mea o /proc/self/maps. ).

Ke hoʻololi nei i kahi loulou hōʻailona i ka faile /proc/self/environ, ua ʻike ka mea kākau o ka noiʻi i ka ʻikepili i hāʻawi ʻia i nā waiwai o nā ʻano hoʻololi kaiapuni GITHUB_REPO_API_KEY a me WORKERS_KV_API_TOKEN. Ua mālama ka mea hoʻololi mua i ke kī API no ke kākau ʻana i ka waihona robocdnjs ma GitHub. Ua mālama ka lua i ka hōʻailona i ka waihona KV ma cdnjs. Ke hoʻohana nei i ka ʻike i loaʻa, hiki i ka mea hoʻouka ke hoʻololi i nā cdnjs a hoʻololi loa i ka ʻōnaehana.

Source: opennet.ru

Pākuʻi i ka manaʻo hoʻopuka