TL; DR
የክምችት ስብስብ አምስት npm ፓኬጆችበሁለት የሂሳብ አያያዝ ላይ ታትሞ የወጣ ሲሆን postinstall ከአስተናጋጁ የደመና ምስክርነቶችን የሚያነብ እና ከሳጥኑ ውጪ የሚልክ መንጠቆ። ፓኬጆቹ የሙት-እና-ወንበዴ ስሞችን ይይዛሉ - coral-wraith, ecto-corsair-whisper-6f3b9, ecto-corsair-flag-x9m4, ecto-rust-read-f3a9c1, ecto-nightly-spirit - እና የሰበሰቡትን ማንኛውንም ነገር ወደ ሐሰት በተከታታይ ያደርጉታል ecto_module: ከማስተላለፋችን በፊት የYAML ማኒፌስት። ክላስተሩን እንደሚከተሉት እንከታተላለን። ኤክቶፕላዝም.
የክፍያ ጭነቱ የሚሄደው የተወሰነ አካባቢን ሲያገኝ ብቻ ነው፡ ስሙ ሀ የሆነ አስተናጋጅ ባለ 12-ቁምፊ ሄክስ ሕብረቁምፊ እና የስራ ማውጫ ስር /app/node_modules — ኮንቴይነር የተደረገበት ግንባታ ወይም የሲአይ ሰራተኛ ቅርፅ። ያ በር ሲያልፍ መንጠቆው ይጠይቃል የAWS ምሳሌ ሜታዳታ አገልግሎት (IMDSv2) ለ IAM ሚና ምስክርነቶች፣ ይዘረዝራል AWS ሚስጥሮች አስተዳዳሪ በሶስት ክልሎች፣ የአካባቢ ተለዋዋጮችን ይጥላል፣ ፋይሎችን ከዚህ በታች ያነባል /appእና የባንዲራ ሕብረቁምፊዎችን ለመያዝ ይቧጫል። ከዚያም ውጤቱን በሁለት መንገዶች ያወጣል፡- ቢኮን ወደ webhook.site ሰብሳቢ እና አንድ የማኒፌስት PUT ወደ ጥሬ-አይፒ የመጨረሻ ነጥብ፣ የlocalhost-first fallbacks ዝርዝር ያለው።
የኋለኞቹ የጥቅል መግለጫዎች "የቨርዳቺዮ የአቅርቦት ሰንሰለት ሙከራ የCTF ክፍያ ጭነት" የሚል ጽሑፍ አላቸው። ያንን የራስ መግለጫ እንደ የሚታይ እውነታ ሪፖርት እናደርጋለን። ባህሪው ራሱ - በቀጥታ ወደ ይፋዊ የአይፒ አድራሻ መውጣት፣ እውነተኛ የIMDS የምስክርነት ንባቦች፣ እውነተኛ የምስጢር አስተዳዳሪ ጥሪዎች - መለያው ምንም ይሁን ምን ምን እንደሆነ እና እነዚህ ስሪቶች ተንኮል አዘል ተብለው የተመደቡበት ምክንያት ነው።
በክላስተር ውስጥ አንድ ስም፣ coral-wraithበአንድ እትም አልቆመም። በጥቂት ሰዓታት ውስጥ በደርዘን የሚቆጠሩ ስሪቶችን በፍጥነት አሳትሟል - 1.0.0 ወደ ላይ መውጣት 6.0.0 — እና ቀደም ሲል ተመሳሳይ ስም ያለው አንድ አሮጌ ስሪት የተጨመረበት ጥቅም ላይ ውሏል 9999.0.x የስሪት ቁጥሮች፣ የ ክላሲክ ቅርፅ የጥገኝነት-ግራ መጋባት ሙከራበዚያ በኩል የክፍያ ጭነቱ በግልጽ የበሰለ ነው፡ ከአንድ-ምት አስተናጋጅ-የቁጥር ቢኮን ወደ ከታሰበው ኢላማ ውጭ ጸጥ እንዲል በሚያስችል የአካባቢ ፍተሻዎች የተጠቀለለ ሙሉ የAWS የምስክርነት ፒቮት።
| ጥቅሎች | 5 ስሞች፤ coral-wraith ብቻውን በደርዘን የሚቆጠሩ ስሪቶች ላይ እንደገና ታትሟል |
| ምህዳር | ጥዋት |
| ቬክተር ይጫኑ | postinstall የህይወት ዑደት ስክሪፕት |
| ዋና ኢላማ | የAWS IAM ሚና ምስክርነቶች + የምስጢር አስተዳዳሪ ሚስጥራዊ እሴቶች፣ የአካባቢ ተለዋዋጮች፣ /app ፋይሎች |
| ኤክስፊል | webhook.site ቢኮን + ጥሬ-አይፒ C2 PUT |
| የትሪገር በር | 12-ሄክስ አስተናጋጅ ስም + /app/node_modules cwd፣ እና ከዚያ አውድ ውጭ ያለውን የክፍያ ጫና የሚገታ የአካባቢ ፍተሻ |
| ከባድነት | ከፍ ያለ — የደመና ምስክርነት እና የሚተዳደር ሚስጥራዊ ይፋ ማድረግ ከ ኮንቴይነር የተደረገባቸው የግንባታ እና የሩጫ ጊዜ አካባቢዎች |
የአጥቃት አናቶሚ
በክላስተር ውስጥ ያለው እያንዳንዱ ጥቅል በተመሳሳይ መንገድ የተገነባ ነው፡ ባዶ የሆነ index.js (ሞዱል.ኤክስፖርቶች = {})፣ አንድ መስመር package.json ስክሪፕት - “postinstall”: “node postinstall.js” - እና በውስጡ ያለው ጭነት postinstall.js. ፓኬጁን መጫን መንጠቆውን ለማስኬድ በቂ ነው፤ ምንም አይነት ማስመጣት ወይም ጥሪ አያስፈልግም።
የታለመው በር። ማንኛውንም ነገር ከማድረግዎ በፊት፣ የኢኮ-ቤተሰብ የክፍያ ጫና አካባቢውን ይፈትሻል፡
function isAppWorker(): host = os.hostname() if host does NOT match /^[0-9a-f]{12}$/ -> exit if cwd does NOT contain "/app/node_modules" -> exit if cwd contains "/tmp/npm-safe" -> exit otherwise -> proceed የ12-ሄክስ አስተናጋጅ ስም ዶከር ለአንድ ኮንቴይነር የሚመድበው ነባሪ ቅርፅ ነው፣ እና /app/node_modules የተለመደው የኮንቴይነር መጫኛ መንገድ ነው። መንገዱ እንደ አሸዋ ሳጥን ማውጫ ማውጫ የሚመስል ከሆነ ሦስተኛው አንቀጽ ይቋረጣል። የተጣራው ውጤት የክፍያ ጭነቱ በገንቢ ላፕቶፕ ወይም በትንታኔ ሳንድቦክስ ላይ ተኝቶ የሚቆይ ሲሆን በኮንቴይነር በተሰራ የግንባታ ወይም የሩጫ ሰዓት ሰራተኛ ውስጥ ብቻ የሚነቃ መሆኑ ነው - ይህም የቀጥታ ደመና ምስክርነቶችን የመያዝ ዕድሉ ከፍተኛ ነው። በክላስተር ውስጥ የመጀመሪያው ጥቅል፣ ኮራል-ዊዝ, እንደዚህ አይነት በር የለውም እና (ቀላል) ስብስቡን ያለምንም ቅድመ ሁኔታ ያካሂዳል።
ስብስብበሩ ሲያልፍ መንጠቆው ይወጣና ይጣላል execFileSync(“/ ቢን/ሽ”፣ [“-c”፣ …]) እና በቅደም ተከተል አንድ ነጠላ የተዋሃደ ትዕዛዝ ያሄዳል፡
1. PUT /latest/api/token to 169.254.169.254 (IMDSv2 token request) 2. GET .../iam/security-credentials/ (IAM role name) 3. GET .../iam/security-credentials/<role> (temporary credentials) 4. dump env | sort (environment variables) 5. list /app (excl. node_modules) + cat first 15 (application files) 6. aws secretsmanager list-secrets (us-east-1, eu-west-1, eu-central-1) 7. scrape readable files for HTB{...} (capture-the-flag strings) ደረጃዎች 1–3 የመማሪያ መጽሐፍ IMDSv2 መልሶ ማግኛ ናቸው፡ የክፍለ ጊዜ ቶከን ይጠይቁ፣ ከዚያም እንደ X-aws-ec2-metadata-token የምሳሌውን የIAM ሚና እና የዚያ ሚና ጊዜያዊ የመዳረሻ ቁልፎችን ለመሳብ ራስጌ። ቀላልውን ያልተረጋገጠ IMDSv1 ከመጠቀም ይልቅ IMDSv2ን የመተግበር ምርጫ አግኝ ልብ ሊባል የሚገባው ነው — ይህ ማለት የክፍያ ጭነቱ በቶከን ላይ የተመሠረተ ሜታዳታ መዳረሻ እንዲያስፈልጋቸው በተዋቀሩ ሁኔታዎች ላይም ቢሆን ይሰራል ማለት ነው፣ ይህም በAWS የሚመከር ማጠንከሪያ ነው። በደረጃ 3 የተመለሱት ምስክርነቶች ለአጭር ጊዜ የሚቆዩ ናቸው የመዳረሻ ቁልፍአይዲ/ሚስጥራዊ መዳረሻ ቁልፍ/ማስመሰያ ሶስትዮሽ ቁጥሮች ወደ ምሳሌው ሚና ተዘርግተዋል፤ ያ ሚና ምንም ያህል ሊያደርግ ቢችልም፣ የእነዚያ ቁልፎች ባለቤት ለምስክር ወረቀቱ ዕድሜ ልክ ሊያደርገው ይችላል።
ደረጃዎች 4–6 መውሰዱን ያሰፋሉ። appro dump የግንባታ ወይም የሩጫ ጊዜ ሂደት የወረሰውን ማንኛውንም ነገር ይይዛል - በተግባር ይህ የመዝገብ ቶከኖች፣ የውሂብ ጎታ ግንኙነት ሕብረቁምፊዎች እና የኤፒአይ ቁልፎች በብዛት የሚኖሩበት ቦታ ነው። / መተግበሪያ የፋይል ዎክ እስከ አስራ አምስት የሚደርሱ የመተግበሪያ ፋይሎችን ከውጭ ያነባል መስቀለኛ_ሞዱሎችየገጽታ ውቅርን የሚችል፣ .env ፋይሎች፣ ወይም ምንጭ። ደረጃ 6 ጥሪዎች aws secretsmanager list-secrets በሦስት ክልሎች፤ በደረጃ 1-3 የተወሰዱት ማረጋገጫዎች እነዚያን ጥሪዎች የሚያረጋግጡት በትክክል ናቸው፣ ስለዚህ IMDS እና የምስጢር አስተዳዳሪ የቁጥጥር ሰንሰለት ወደ አንድ ነጠላ የኢክስቴንሽን፡ የኢምሴሽን ሚና → የሚተዳደር-ሚስጥራዊ ክምችት አንድ ላይ ይጣመራሉ። ደረጃ 7 የመቅረጽ-የ-ባንዲራ ፍሬም - ሲከሰት ኤችቲቢ{…} ባንዲራው በራሱ ተልኳል ከተገኘ፣ አለበለዚያ የተሰበሰበው ጥሬ ቡልቡ በአራት ክፍሎች ተከፍቶ ይላካል።
በክላስተሩ ውስጥ ያሉት የኋለኞቹ ስሪቶች ጭማሪውን የበለጠ ያራምዳሉ። በአንድ ክምችት ላይ ከማቆም ይልቅ፣ የIMDS ምላሽን ይተነትናሉ፣ ጊዜያዊ ቁልፎቹን እንደ ይልካሉ AWS_ACCESS_ቁልፍ_መታወቂያ / AWS_SECRET_ACCESS_ቁልፍ / AWS_SESSION_TOKEN የአካባቢ ተለዋዋጮች፣ ማንነትዎን በ ያረጋግጡ aws sts get-caller-identityእና ከዚያ የተመለሰውን እያንዳንዱን ሚስጥር ያዙሩ ዝርዝር-ምስጢሮች ጥሪ aws secretsmanager get-secret-value በእያንዳንዱ ላይ - ስማቸውን ብቻ ሳይሆን ሚስጥራዊ ይዘቶቹን ማግኘት። ተመሳሳይ ስሪቶች በሂደት የተተኩ ባንዲራ ቢነሪዎችን (/አንብብ ጠቁም እና ጓደኞች) እና አንድን ይሞክሩ የጭነት ሩጫ ከዚህ በታች የተገኘ ማንኛውንም የዝገት ፕሮጀክትን በመቃወም / መተግበሪያ, ከደመና ማረጋገጫዎች ባሻገር መከሩን የግንባታ አካባቢው የሚያጋልጠውን ማንኛውንም ነገር ማስፋት።
እነዚህ የኋለኞቹ ስሪቶችም እራሳቸውን የበለጠ ጠንከር ብለው ይቆማሉ። ከ12-ሄክስ-አስተናጋጅ ስም እና /app/node_modules ቼኮች፣ የክፍያ ጭነቱ ንቁውን የጥቅል-መዝገብ ውቅር እና የስራ-ማውጫ ዱካን ይመረምራል እና ከቀጥታ ኢላማ ይልቅ ትንታኔ ወይም የመስታወት አውድ ሲያመለክቱ በጸጥታ ይወጣል። የተጣመረው ውጤት በአብዛኛዎቹ የፍተሻ አካባቢዎች ውስጥ ምንም የሚታይ ነገር የማያደርግ የክፍያ ጭነት ሲሆን ሙሉ ስብስቡን በእውነተኛ ኮንቴይነር በተሰራ አስተናጋጅ ላይ ብቻ የሚያስኬድ ነው።
ፍልሰትየተሰበሰበው መረጃ አስተናጋጁን በሁለት ቻናሎች ላይ ይተዋል። በመጀመሪያ፣ ቢኮን POST ወደ ቋሚ webhook.site ሰብሳቢው፣ የአስተናጋጅ ስሙን፣ ቁጥራዊ UID፣ የስራ ማውጫ እና እስከ 120 ኪባ የሚደርስ የተሰበሰበ ውሂብ የያዘ። ሁለተኛ፣ መረጃው ወደ ሐሰተኛ የYAML “ሞዱል አንጸባራቂ” ይታጠፋል እና አስቀመጠ ወደ /api/ሞጁሎች/ በዒላማ አገልጋይ ላይ፦
ecto_module: name: "<flag-or-chunk-0>" version: "1.0.0" power_level: "<chunk-1>" ship_deck: "<chunk-2>" cargo_hold: "<chunk-3>" የአንጸባራቂው መስክ ስሞች (የኃይል_ደረጃ, የመርከብ_ዴክ, ጭነት_ይቆይ) ማስዋብ ናቸው — የተሰረቀው መረጃ በሕብረቁምፊ እሴቶች ውስጥ ይንሸራተታል፣ ለዚህም ነው የአውታረ መረብ መቆጣጠሪያ ግልጽ የሆነ የውሂብ ቆሻሻ ሳይሆን እንደ ቀላል የጥቅል-መዝገብ አንጸባራቂ ሰቀላ የሚያየው። የቢኮን ቻናል ተጨማሪ ነገሮችን ይይዛል፡ POST አካል ወደ webhook.site የአስተናጋጅ ስሙን፣ ቁጥራዊ UID፣ የስራ ማውጫውን እና እስከ 120 ኪባ የተሰበሰበውን ብሎብ ያካትታል፣ ስለዚህ አንድ የተሳካ ቢኮም እንኳን ሙሉውን ቅጂ ያቀርባል። webhook.site ነፃ የጥያቄ-ፍተሻ አገልግሎት ነው፤ እንደ ሰብሳቢ መጠቀም ማለት ኦፕሬተሩ ለዚያ ቻናል የራሱን መሠረተ ልማት ለመቀበል ፈጽሞ መቆም የለበትም ማለት ነው፣ እና የተመዘገቡት ጥያቄዎች በአገልግሎቱ መጣያ ውስጥ ይቆያሉ።
አንጸባራቂው አስቀመጠ በበርካታ የሚጀምር የውድቀት ዝርዝርን ያወጣል 127.0.0.1/localhost ወደቦች ከዚያም በ` ውስጥ ወደ ሶስት የህዝብ አድራሻዎች ይወድቃሉ154.57.164.0/24` ክልል፣ በ2xx ሁኔታ ምላሽ በሚሰጥ የመጀመሪያው የመጨረሻ ነጥብ ላይ ይቆማል። የlocalhost-first ቅደም ተከተል ከ"verdaccio testing" ራስን መግለጫ (በloopback ላይ ያለ የአካባቢ መዝገብ) ጋር የሚጣጣም ነው፣ ነገር ግን public-IP fallbacks ማለት loopback በማይሰማበት ጊዜ ሁሉ መረጃው አስተናጋጁን ይተዋል ማለት ነው - ይህም ማለት የደራሲው የራሱ የሙከራ መሳሪያ ባልሆነ በማንኛውም ማሽን ላይ።
የጊዜ መስመር
ክላስተሩ ከአንድ ጠብታ ይልቅ የጨመረ የችሎታ እድገትን ያሳያል። የምናዝዘው በግድግዳ ሰዓት ሳይሆን በተስተዋለው ባህሪ ነው፡
| መድረክ | ፓኬጆች / ስሪቶች | ጠባይ |
|---|---|---|
| ቀደም ብሎ ሩጫ | coral-wraith 9999.0.x | ከጥገኝነት-ግራ መጋባት ሙከራ ጋር የሚጣጣሙ የተጋነኑ የስሪት ቁጥሮች፤ የመጫኛ-ጊዜ ቆጠራ እና ኤክስፊል |
| ዘር | coral-wraith 1.0.0 | postinstall የ id/env/flag ፋይሎችን ይሰበስባል፤ ነጠላ PUT ወደ 154[.]57[.]164[.]71:30782, ምልክት ማድረጊያ ECT-472839 |
| ፈጣን ድግግሞሽ | coral-wraith 1.0.1 → 6.0.0 | በሰዓታት ውስጥ በደርዘን የሚቆጠሩ ልቀቶች፤ የክፍያ ጭነት ትርፍ ያስገኛል isAppWorker() በር፣ የIMDSv2 የምስክርነት መጎተቻ፣ ሙሉ get-secret-value ፒቮት፣ የመዝገብ ቤት/የመንገድ አካባቢ ፍተሻ፣ እና ባለሁለት ማጠቢያ ማርከሮች |
| ትይዩ ስሞች | ecto-corsair-whisper-6f3b9 1.0.14–1.0.18 | ተመሳሳይ የበር ጭነት; webhook.site ቢኮን እና ባለብዙ-መጨረሻ ነጥብ የውድቀት ዝርዝር |
| ተለዋጮች | ecto-rust-read-f3a9c1 1.0.1–1.0.2 | ተጨማሪ የመታጠቢያ ምልክቶችን ያክላል ECT-987654, ECT-654321, ECT-839201 |
| ተለዋጮች | ecto-corsair-flag-x9m4 1.0.0, ecto-nightly-spirit 1.1.0 | ተመሳሳይ የበር ክፍያ ጭነት፣ ተመሳሳይ C2 እና ቢኮን |
የክላስተሩ ዋና መለያ ባህሪ የህትመት ቅኝቱ ነው፡- አንድ ጥቅል እና አንድ ስሪት ሳይሆን፣ ተመሳሳይ ስም ደጋግሞ በተከታታይ እንደገና ይታተማል፣ እያንዳንዱም በመጨረሻው ላይ ትንሽ ልዩነት ይለቀቃል፣ በተመሳሳይ የክፍያ ጫና የያዙ ጥቂት የተለያዩ ስሞች ያሏቸው ወንድሞችና እህቶችም አሉ። ሹክሹክታ ቤተሰብ ኮዱ በሁለት የተዘጉ የጣት አሻራዎች የተከፈለ ነው - አንድ ስብስብ ሁለት ወሳኝ ግኝቶችን የሚያደናቅፍ፣ ሌላ ሶስት (ተጨማሪ የፋይል ንባብ ማጠቢያ) - ነገር ግን ሁለቱም ለተመሳሳይ የክፍያ ጫና ይወሰናሉ፤ ልዩነቱ የኮድ ተንሸራታች ነው፣ የባህሪ ሹካ አይደለም። የ ሹክሹክታ ከተተነተነው ክልል ባሻገር (በዚህ ጽሑፍ ወቅት ቢያንስ እስከ 1.0.25) በመዝገቡ ላይ በቀጥታ ታይተዋል፣ እና ኮራል-ዊዝ ስሙ በተመሳሳይ መስኮት ላይ የራሱን የስሪት መሰላል መውጣት ቀጠለ።
የስምምነት አመልካቾች
ከዚህ በታች ያሉት ሁሉም አመልካቾች ከዲስክ ላይ ካለው የጥቅል ምንጭ የተወሰዱ ናቸው። የአውታረ መረብ አመልካቾች ተበላሽተዋል።
አውታረ መረብ
| አመልካች | ሚና |
|---|---|
hxxp://154[.]57[.]164[.]71:30782 | C2 PUT ኢላማ (coral-wraith) |
hxxp://154[.]57[.]164[.]80:30543 | C2 PUT fallback (ecto-*) |
hxxp://154[.]57[.]164[.]82:31250 | C2 PUT fallback (ecto-*) |
hxxp://154[.]57[.]164[.]71:31289 | C2 PUT fallback (ecto-*) |
hxxps://webhook[.]site/602a4c72-7033-4e28-92ea-dc66e59206e5 | የቢከን ሰብሳቢ |
169[.]254[.]169[.]254/latest/... | የIMDSv2 ምስክርነት ንባብ (የዒላማ ጎን፣ የAWS ሜታዳታ) |
ባህሪ/ፋይል
| አመልካች | ሚና |
|---|---|
"postinstall": "node postinstall.js" | ቬክተር ይጫኑ |
ecto_module: YAML ከ ጋር power_level / ship_deck / cargo_hold ቁልፎች | የExfil አንጸባራቂ ንድፍ |
የመታጠቢያ ምልክት ማድረጊያዎች ECT-472839, ECT-987654, ECT-654321, ECT-839201 | የC2 የመንገድ ክፍል /api/modules/<marker> |
isAppWorker() በር: አስተናጋጅ /^[0-9a-f]{12}$/, cwd ይዟል /app/node_modules | የማግበር ሁኔታ |
aws secretsmanager list-secrets በላይ us-east-1, eu-west-1, eu-central-1 | የሚስጥር ቆጠራ |
HTB{...} የሬጅክስ ክራፕ | የሰንደቅ ዓላማውን መከር ይያዙ |
የፋይል ሃሾች (sha256፣ በትንታኔ ጊዜ የተቀረፀ)
| ፋይል | sha256 |
|---|---|
coral-wraith/postinstall.js | ce5ff035cfdfed1d0015446424b352c27b66bcb77e9fdb0a51e4245199146824 |
ecto-corsair-whisper-6f3b9 1.0.18/postinstall.js | b58432acba376aa6976f0490d9a1c04257ccdbc856d8390260c50322d63e31c3 |
ባለቤትነት እና የታየ ባህሪ
አምስቱ የጥቅል ስሞች በሁለት የnpm መለያ እጀታዎች ስር ታትመዋል፣ ነገር ግን እንደ አንድ ክላስተር ለመቁጠር የሚያስችል በቂ መሠረተ ልማት ይጋራሉ፡ ተመሳሳይ ecto_module አንጸባራቂ ንድፍ፣ ተመሳሳይ ECT-472839 ዋናው የመታጠቢያ ገንዳ ምልክት፣ ተመሳሳይ webhook.site የሰብሳቢ መታወቂያ እና የC2 የመጨረሻ ነጥቦች በተመሳሳይ 154.57.164.0/24` ብሎክ። የዘር ፓኬጁ (`ኮራል-ዊዝ, ቀላል እና ያልተዘጋ) እና የጌትድ ኢክቶ-ቤሚሉ ስለዚህ እንደ ገለልተኛ ጥረቶች ሳይሆን በአንድ የመሳሪያ ስብስብ ላይ እንደ ድግግሞሽ ይነበባሉ።
ፓኬጆቹ በኋለኞቹ ስሪቶች ውስጥ እራሳቸውን እንደሚከተለው ይገልጻሉ «ለቬርዳቺዮ የአቅርቦት ሰንሰለት ሙከራ የሲቲኤፍ የክፍያ ጭነት።» ያንን መለያ እንደ የሚታይ እውነታ አድርገን እናሳያለን እና እንደ ዓላማ ግኝት አድርገን አናስቀምጠውም። ኮዱ የሚያደርገው ነገር ግልጽ እና እንዴት እንደተሰየመ ምንም አይነት ልዩነት የለውም፡ ከኢንስታንስ ሜታዳታ አገልግሎት የIAM ሚና ምስክርነቶችን ያነባል፣ በሦስት AWS ክልሎች ውስጥ የሚተዳደሩ ምስጢሮችን ይዘረዝራል፣ እና ውጤቶቹን ወደ ይፋዊ አይፒ እና የሶስተኛ ወገን የድር መንጠቆ ሰብሳቢ ያስተላልፋል። በእውነት የሉፕባክ ብቻ የሙከራ ማሰሪያ የህዝብ-አይፒ ፎልባክ ዝርዝር፣ የIMDS የምስክርነት ንባቦች ወይም የክልል ሚስጥሮች አስተዳዳሪ ጥሪዎችን አያስፈልገውም። መውጫው እና የምስክርነት መድረሻው እውነተኛ ስለሆኑ፣ የተዘጉ ስሪቶች ተንኮል አዘል ተብለው ተመድበዋል።
የኮንቴይነር ብቻ በር በአሠራር ረገድ በጣም የሚታወቀው ባህሪ ነው። ሁለቱም የማምለጫ እርምጃ ነው - በላፕቶፕ ላይ እና በመተንተን የአሸዋ ሳጥኖች ውስጥ ዝም ማለት - እና የዒላማ እርምጃ ነው፣ እውነተኛ የIAM ሚና እና የቀጥታ ምስጢሮች በብዛት በሚገኙበት ቦታ ብቻ መተኮስ። እነዚህን ፓኬጆች በአጠቃላይ የአሸዋ ሳጥን ውስጥ የሚያስኬዱ ተንታኞች ምንም አያዩም፤ ባህሪው የሚገለጠው በዶከር አይነት የአስተናጋጅ ስም እና በኮንቴይነር ውስጥ ባለው የመጫኛ መንገድ ብቻ ነው።
ለተሟጋቾች ተጽእኖ፣ አዝማሚያዎች እና መመሪያ
እዚህ ላይ የሚታየው ተጋላጭነት በግንባታ እና በሂደት ጊዜ ኮንቴይነሮች ውስጥ የደመና ምስክርነት እና ሚስጥራዊ ይፋ ማድረግ ነው። ከIMDS የተወሰደ የIAM ሚና ማረጋገጫ ሚናው የያዘውን ማንኛውንም ፈቃድ ይይዛል፤ secretsmanager:ListSecrets (እና ማንኛውም ተከታይ ጌትሴክሬትቫልዩ) ያንን ወደተከማቹ የመተግበሪያ ምስጢሮች ያሰፋዋል። የአካባቢ ተለዋዋጭ ዱፕስ ብዙውን ጊዜ የመዝገብ ቶከኖችን፣ የውሂብ ጎታ ዩአርኤሎችን እና የኤፒአይ ቁልፎችን ይይዛሉ። በCI ወይም በኮንቴይነር አውድ - በሩ በትክክል የሚመርጠው - ከእነዚህ ፓኬጆች ውስጥ የአንዱን አንድ ጊዜ ብቻ መጫን ያንን ቁሳቁስ ለማውጣት በቂ ነው።
ኤክቶፕላዝም ከምናየው ንድፍ ጋር ይጣጣማል፡- ከአካባቢያዊ ፋይሎች ይልቅ ለደመና ሜታዳታ እና ለተቆጣጠሩ ምስጢሮች የሚደርሱ የመጫኛ ጊዜ ክፍያዎች፣ እና ከፍተኛ ዋጋ ባላቸው አካባቢዎች ብቻ እራሳቸውን የሚያጠቁ። ሁለት የመከላከያ ምልከታዎች ይከተላሉ።
- ቅርጹ ሊታወቅ የሚችል ነውየጥሪ ግራፉ ወደ ደመና ሚስጥሮች ኤፒአይ የሚደርስ የnpm/PyPI የመጫኛ መንጠቆ (የ aws ሚስጥር አስተዳዳሪ, የጂክላውድ ሚስጥሮች, የኤዝ ቁልፍ ቮልት) ወይም የIMDS አድራሻ እና የኔትወርክ መውጫ ሲንክ ጠባብ፣ ከፍተኛ ምልክት ያለው ንድፍ ነው - በሕጋዊ የህይወት ዑደት ስክሪፕት ውስጥ ፈጽሞ አይከሰትም። የማይንቀሳቀስ ፍሰት ትንተና በማንኛውም የተወሰነ ጎራ ወይም አይፒ ላይ ሳይመሰረት ሊጠቁመው ይችላል።
- የአካባቢ ማጠናከሪያነት ያደበዝዘዋል። IMDSv2ን በ1 የዝላይ ገደብ ማስፈጸም የኮንቴይነር ጭነቶች ወደ አብነት ሜታዳታ እንዳይደርሱ ይከላከላል፤ የIAM ሚናዎችን ወደ ዝቅተኛ መብት መዘርጋት የሚያፈስ ማንኛውንም የምስክርነት ፍንዳታ ራዲየስን ይገድባል፤ እና ጭነቶችን ከ ጋር ማስኬድ -አይመልከቱ-ስክሪፕቶች በCI ውስጥ የማያስፈልጉትን ፓኬጆች የመጫኛ መንጠቆውን ቬክተር ሙሉ በሙሉ ያስወግዳል።
ለተከላካዮች፣ ተግባራዊ ፍተሻዎች የሚከተሉት ናቸው፡- ከግንባታ/CI ኮንቴይነሮች ወደ ያልተፈቀዱ የህዝብ አይፒዎች በሚደረጉ የውጪ ግንኙነቶች ላይ ማስጠንቀቂያ መስጠት የሌሊት ጭነት፤ ከጥቅል የህይወት ዑደት ስክሪፕቶች የሚመነጨውን የIMDS መዳረሻ ይጠብቁ፤ እና ከደመና CLI ጋር የሚገናኝ ማንኛውንም የመጫኛ መንጠቆ ሌላ እስኪረጋገጥ ድረስ እንደ ተጠርጣሪ ይያዙት።
ለዚህ ክላስተር የተለዩ ሁለት ተጨማሪ ማስታወሻዎች። በመጀመሪያ፣ ማግበር ወደ ኮንቴይነር በተያዙ አካባቢዎች የተዘጋ ስለሆነ፣ በስራ ቦታ ላይ ሲመረመር እንቅስቃሴ-አልባ የሚመስል ፓኬጅ አሁንም በምርት ላይ ሊኖር ይችላል - ምርመራ ማድረግ የኮንቴይነር አስተናጋጅ ስም እና የመንገድ ሁኔታዎችን እንደገና ማባዛት ወይም "ጭኜዋለሁ እና ምንም አልተከሰተም" በሚለው ላይ ከመመካት ይልቅ ምንጩን በቀጥታ ማንበብ አለበት። ሁለተኛ፣ የህዝብ ጥያቄ-ፍተሻ አገልግሎትን እንደ ቢኮን ሰብሳቢ መጠቀም ማለት አንዳንድ የተጣሩ መረጃዎች ለአደጋ ምላሽ ሊገኙ ይችላሉ ማለት ነው፡ ከእነዚህ ፓኬጆች ውስጥ አንዱን በጥገኛ ዛፉ ውስጥ የሚያገኝ ድርጅት አንድ ስኬታማ ቢኮን ከክፍያ ጭነት ስብስብ አመክንዮ ምን እንደሚይዝ ሊያስብ ይችላል፣ እና ከተጎዳው የግንባታ ወይም የሩጫ ጊዜ አካባቢ ሊደረስባቸው የሚችሉ ማንኛውንም የIAM ሚና ምስክርነቶችን፣ የመዝገብ ቶከኖችን እና የሚተዳደሩ ምስጢሮችን ማዞር አለበት። የምስክርነት ሽክርክርየጥቅል ማስወገጃ ሳይሆን፣ አንድ ጭነት ከተጀመረ በኋላ የሚሰራው የአሠራር ማስተካከያ ነው።





