Zehfbûna di cdnjs de ku destûr dide darvekirina kodê li ser serverên Cloudflare

Di tora radestkirina naverokê ya cdnjs ya Cloudflare de, ku ji bo bilezkirina radestkirina pirtûkxaneyên JavaScript-ê hatî sêwirandin, qelsiyek krîtîk hate nas kirin, ku destûrê dide darvekirina koda keyfî li ser serverên CDN. Xetereya pirsgirêkê ji ber vê yekê zêde dibe ku ji sedî 12.7% ji hemî malperên li ser Înternetê karûbarê dakêşana pirtûkxaneyên JavaScript-ê bikar tînin, û lihevhatina binesaziyê dihêle ku pirtûkxaneyên ku ji hêla yek ji van malperan ve têne peyda kirin veguherînin.

Karûbarê cdnjs pakêtan ji Git an depoyek NPM dadixe, piştî wê destûrê dide her malperek ku tora radestkirina naverokê ya Cloudflare belaş bikar bîne da ku barkirina pirtûkxaneyên JavaScript bilez bike. Dema ku koda hêmanên cdnjs-ê yên ku li ser GitHub hatine weşandin, dixwînin, diyar bû ku ji bo vekirina pakêtên NPM-ê di arşîvên tgz de, modula arşîv/tar standard bi zimanê Go-yê tê bikar anîn, ku navnîşek pelan wekî ku ye, bêyî normalîzekirina riyan çêdike. . Di rewşa ku skrîpt naverokê li ser bingeha navnîşa diyarkirî vedike, hebûna di arşîva pelên mîna "../../../../../../../tmp/test" dikare rê li ber nivîsandina pelên keyfî di pergalê de, bi qasî ku mafên gihîştinê destûrê dide.

Pêşniyar kirin ku êrîşkarek dikare serlêdan bike da ku pirtûkxaneya xwe li cdnj-ê zêde bike û arşîvek taybetî hatî sêwirandin ku pelên bi tîpên "../" tê de di rêça depoya NPM-ê de tê de heye bar bike. Li ser pêşkêşkerên cdnjs, operasyonek "xweserî" bi periyodîk tê kirin, di dema ku hilber guhertoyên nû yên pirtûkxaneya pêşniyarkirî dadixe û naverokê vedike. Bi karanîna pelên bi rêyên "../" re, êrîşkar dikare pelan bi skrîptên karûbarê binivîsîne û koda wan li ser servera ku vekêşana li ser hatî kirin bicîh bike.

Di mijara dakêşana nûvekirinên ji Git-ê de, hate kifş kirin ku hilgirê ku nûvekirinan dakêşand dema ku pelên ji Git-ê kopî dike, girêdanên sembolîk hesab nekiriye. Vê taybetmendiyê hişt ku meriv xwendina her pelan ji serverê bi zêdekirina girêdanên sembolîk li Git organîze bike.

Biryar hat dayîn ku bi ceribandina hîpoteza di derbarê xwendina pelê de, bi xwenîşandanek cdnj-yên hackkirinê dest bi ceribandinan bikin da ku xelatek li HackerOne bistînin. Test.js girêdanek sembolîk li depoya Git-ê ya pirtûkxaneya JavaScript-ê ya ku bi CDN-ê ve hatî serve kirin hate zêdekirin, ku pelê /proc/self/maps destnîşan dike. Piştî weşandina guhertoyek nû ya pirtûkxaneyê, kargêrê nûvekirinê vê depoyê pêvajo kir û pelê diyarkirî di cdnjs de weşand (test.js wekî girêdanek sembolîk hate afirandin û dema ku ev pel hate xwestin, naveroka /proc/self/nexşeyan hate vegerandin. ).

Veguheztina girêdanek sembolîk bi pelê /proc/self/nviron re, nivîskarê lêkolînê pê hesiya ku daneyên hatî dayîn nirxên guhêrbarên jîngehê GITHUB_REPO_API_KEY û WORKERS_KV_API_TOKEN hene. Guherbara yekem mifteya API-ê ji bo gihîştina nivîsandina depoya robocdnjs li ser GitHub hilanî. Guherbara duyemîn nîşana hilanîna KV-ê di cdnjs de hilanî. Bi karanîna agahdariya wergirtî, êrîşkar dikaribû guhertinan li cdnjs bike û binesaziyê bi tevahî tawîz bike.

Source: opennet.ru

Add a comment