በ Cloudflare አገልጋዮች ላይ ኮድ ማስፈጸሚያ የፈቀደው በ cdnjs ውስጥ ያለው ተጋላጭነት

የጃቫ ስክሪፕት ቤተ-መጻሕፍትን ለማፋጠን በተዘጋጀው በCloudflare's cdnjs የይዘት ማቅረቢያ አውታረመረብ ውስጥ ወሳኝ ተጋላጭነት ተለይቷል፣ ይህም የዘፈቀደ ኮድ በሲዲኤን አገልጋዮች ላይ እንዲፈፀም ያስችላል። በበይነ መረብ ላይ ከሚገኙት ድረ-ገጾች ውስጥ 12.7% ያህሉ አገልግሎቱን የሚጠቀሙት ጃቫስክሪፕት ቤተ-መጻሕፍትን ለማውረድ በመሆኑ የችግሩን አደጋ አባብሶታል፣ እና የመሠረተ ልማት አውታሮች መደራደር ከእነዚህ ድረ-ገጾች የቀረቡትን ቤተ-መጻሕፍት ለመተካት ያስችላል።

የ cdnjs አገልግሎት ጥቅሎችን ከ Git ወይም ከኤንፒኤም ማከማቻ ያወርዳል፣ከዚያም ማንኛውም ጣቢያ የጃቫስክሪፕት ቤተ-መጻሕፍትን መጫን ለማፋጠን የ Cloudflare ይዘት ማቅረቢያ አውታረ መረብን በነጻ እንዲጠቀም ያስችለዋል። በ GitHub ላይ የታተመውን የ cdnjs አካላት ኮድ ሲያጠና በ tgz ማህደሮች ውስጥ የ NPM ፓኬጆችን ለመክፈት በ Go ቋንቋ ውስጥ መደበኛ ማህደር/ታር ሞጁል ጥቅም ላይ ይውላል ፣ ይህም የፋይሎችን ዝርዝር እንደ ሁኔታው ​​ያዘጋጃል ፣ ይህም መንገዶቹን መደበኛ ሳያደርጉ ነው። . በተሰጠው ዝርዝር ላይ በመመስረት ስክሪፕቱ ይዘቱን በሚፈታበት ጊዜ እንደ ".././../../.././. የመዳረሻ መብቶች እስከሚፈቅዱ ድረስ በስርዓቱ ውስጥ የዘፈቀደ ፋይሎችን እንደገና ለመፃፍ ይመራሉ ።

አጥቂው ቤተ መጻሕፍቱን ወደ ሲዲኤንጅስ ለመጨመር እና ወደ NPM ማከማቻው በሚወስደው መንገድ ላይ "../" ቁምፊዎችን የያዘ ልዩ የተነደፈ መዝገብ ቤት ለመስቀል እንዲችል ተጠቆመ። በcdnjs ሰርቨሮች ላይ የ"autoupdate" ክዋኔ በየጊዜው ይከናወናል፣ በዚህ ጊዜ ተቆጣጣሪው የታሰበውን ቤተ-መጽሐፍት አዲስ ስሪቶች አውርዶ ይዘቱን ይከፍታል። "../" ዱካዎች ያላቸውን ፋይሎች በመጠቀም አጥቂ ፋይሎችን በአገልግሎት ስክሪፕት በመፃፍ ኮዳቸውን ማውረዱ በተከናወነበት አገልጋይ ላይ ማስፈጸሚያ ይችላል።

ዝመናዎችን ከጊት ማውረድን በተመለከተ፣ ዝማኔዎቹን የሚያወርድ ተቆጣጣሪው ፋይሎችን ከጊት ሲገለብጥ ምሳሌያዊ አገናኞችን እንዳላገናዘበ ታወቀ። ይህ ባህሪ ወደ Git ምሳሌያዊ አገናኞችን በማከል ከአገልጋዩ የሚመጡ ፋይሎችን ንባብ ለማደራጀት አስችሏል።

የፋይል ንባብን በተመለከተ ያለውን መላምት በመሞከር በ HackerOne ሽልማት ለማግኘት cdnjsን በጠለፋ ማሳየት ሙከራዎችን ለመጀመር ተወስኗል። ምሳሌያዊ አገናኝ test.js በCDN በኩል ወደሚቀርበው የጃቫስክሪፕት ቤተ-መጽሐፍት Git ማከማቻ ታክሏል፣ ወደ /proc/self/maps ፋይል። አዲስ የላይብረሪውን ስሪት ካተመ በኋላ የዝማኔ ተቆጣጣሪው ይህንን ማከማቻ ሰርቶ የተገለጸውን ፋይል በcdnjs አሳትሟል (test.js እንደ ምሳሌያዊ አገናኝ ነው የተፈጠረው እና ይህ ፋይል ሲጠየቅ የ/proc/self/maps ይዘቶች ተመልሰዋል) ).

ከፋይል /ፕሮክ/ራስ/ አካባቢ ጋር ተምሳሌታዊ አገናኝን በመተካት ፣የጥናቱ ደራሲ የተሰጠው መረጃ የአካባቢ ተለዋዋጮች GITHUB_REPO_API_KEY እና WORKERS_KV_API_TOKEN እሴቶችን እንደያዘ አስተውሏል። የመጀመሪያው ተለዋዋጭ በ GitHub ላይ ወደ robocdnjs ማከማቻ ለመፃፍ የኤፒአይ ቁልፉን አከማችቷል። ሁለተኛው ተለዋዋጭ ማስመሰያውን ወደ KV ማከማቻ በcdnjs ውስጥ አከማችቷል። የተቀበለውን መረጃ በመጠቀም አጥቂው በ cdnjs ላይ ለውጦችን ሊያደርግ እና መሠረተ ልማትን ሙሉ በሙሉ ሊያበላሽ ይችላል።

ምንጭ: opennet.ru

አስተያየት ያክሉ