TL; ड
को एक समूह पाँच एनपीएम प्याकेजहरू, दुई खाता ह्यान्डलहरूमा प्रकाशित, पठाइएको a postinstall हुक जसले होस्टबाट क्लाउड प्रमाणपत्रहरू पढ्छ र तिनीहरूलाई अफ-बक्स पठाउँछ। प्याकेजहरूमा भूत-र-समुद्री डाकू नामहरू छन् — coral-wraith, ecto-corsair-whisper-6f3b9, ecto-corsair-flag-x9m4, ecto-rust-read-f3a9c1, ecto-nightly-spirit — र उनीहरूले सङ्कलन गरेको सबै कुरालाई नक्कलीमा क्रमबद्ध गर्नुहोस् ecto_module: प्रसारण गर्नु अघि YAML म्यानिफेस्ट। हामी क्लस्टरलाई यसरी ट्र्याक गर्छौं एक्टोप्लाज्म.
पेलोड तब मात्र चल्छ जब यसले एक विशिष्ट वातावरण पत्ता लगाउँछ: एक होस्ट जसको नाम a हो १२-वर्णको हेक्स स्ट्रिङ र अन्तर्गत एक कार्य निर्देशिका /app/node_modules — कन्टेनराइज्ड बिल्ड वा CI कामदारको आकार। जब त्यो गेट जान्छ, हुकले प्रश्न गर्छ AWS उदाहरण मेटाडेटा सेवा (IMDSv2) IAM भूमिका प्रमाणहरूको लागि, गणना गर्दछ AWS गोप्य प्रबन्धक तीन क्षेत्रहरूमा, वातावरण चरहरू डम्प गर्दछ, अन्तर्गत फाइलहरू पढ्छ /app, र क्याप्चर-द-फ्ल्याग स्ट्रिङहरूको लागि स्क्र्यापहरू। त्यसपछि यसले परिणामलाई दुई तरिकाले बाहिर निकाल्छ: एउटा बिकनलाई webhook.site कलेक्टर र एक म्यानिफेस्ट PUT लाई कच्चा-आईपी अन्त्य बिन्दुमा, लोकलहोस्ट-फर्स्ट फलब्याकहरूको सूचीको साथ।
पछिल्ला प्याकेज विवरणहरूमा "verdaccio आपूर्ति-श्रृंखला परीक्षणको लागि CTF पेलोड" लेखिएको थियो। हामी त्यो आत्म-विवरणलाई अवलोकनयोग्य तथ्यको रूपमा रिपोर्ट गर्छौं। व्यवहार आफैं - सार्वजनिक IP मा प्रत्यक्ष निकासी, वास्तविक IMDS प्रमाण पत्र पढ्छ, वास्तविक गोप्य प्रबन्धक कल गर्दछ - लेबलको पर्वाह नगरी यो के हो, र यी संस्करणहरूलाई दुर्भावनापूर्ण वर्गीकृत गरिएको कारण यही हो।
समूहमा एउटा नाम, coral-wraith, एउटै रिलिजमा रोकिएन। यो केही घण्टामै दर्जनौं संस्करणहरू मार्फत द्रुत उत्तराधिकारमा पुन: प्रकाशित भयो — 1.0.0 चढ्दै 6.0.0 — र उही नामको पहिलेको रनमा फुलाइएको प्रयोग गरिएको थियो 9999.0.x संस्करण संख्याहरू, a को क्लासिक आकार निर्भरता-भ्रम प्रयास। त्यस मन्थन पार गर्दै, दृश्यात्मक रूपमा परिपक्व पेलोड: एक-शट होस्ट-एन्युमेरेसन बीकनबाट पूर्ण AWS क्रेडेन्सियल पिभोटमा वातावरण जाँचहरूले बेरिएको जसले यसलाई यसको लक्षित लक्ष्य बाहिर शान्त राख्छ।
| प्याकेजहरू | ५ नामहरू; coral-wraith दर्जनौं संस्करणहरूमा एक्लै पुन: प्रकाशित |
| पारिस्थितिकी तंत्र | npm |
| भेक्टर स्थापना गर्नुहोस् | postinstall जीवनचक्र स्क्रिप्ट |
| प्राथमिक लक्ष्य | AWS IAM भूमिका प्रमाणहरू + गोप्य प्रबन्धक गोप्य मानहरू, वातावरण चरहरू, /app फाइलहरू |
| एक्सफिल | webhook.site बिकन + कच्चा-आईपी C2 PUT |
| ट्रिगर गेट | १२-हेक्स होस्टनाम + /app/node_modules cwd, साथै त्यो सन्दर्भ बाहिर पेलोडलाई दबाउने वातावरण जाँच |
| गम्भीरता | उच्च — क्लाउड क्रेडेन्सियल र व्यवस्थित-गोप्य प्रकटीकरण बाट कन्टेनराइज्ड निर्माण र रनटाइम वातावरणहरू |
आक्रमण शरीर रचना
क्लस्टरमा भएका प्रत्येक प्याकेज उस्तै तरिकाले बनाइएको छ: लगभग खाली index.js (मोड्युल.निर्यात = {}), एक-लाइन package.json स्क्रिप्ट - “पोस्टइन्स्टल”: “नोड पोस्टइन्स्टल.जेएस” — र पेलोड पोस्टइन्स्टल.जेएसहुक चलाउन प्याकेज स्थापना गर्नु पर्याप्त छ; कुनै आयात वा कल आवश्यक पर्दैन।
लक्ष्यीकरण गेट। केहि गर्नु अघि, एक्टो-फेमिली पेलोडले यसको वरपरको अवस्था जाँच गर्छ:
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 १२-हेक्स होस्टनेम डकरले कन्टेनरमा तोक्ने पूर्वनिर्धारित आकार हो, र /एप/नोड_मोड्युलहरू यो एक परम्परागत इन-कन्टेनर स्थापना मार्ग हो। यदि मार्ग स्यान्डबक्स गरिएको निकासी निर्देशिका जस्तो देखिन्छ भने तेस्रो खण्डले बेल आउट गर्छ। यसको शुद्ध प्रभाव यो हो कि पेलोड विकासकर्ता ल्यापटप वा विश्लेषण स्यान्डबक्समा निष्क्रिय रहन्छ र केवल कन्टेनराइज्ड बिल्ड वा रनटाइम कार्यकर्ता भित्र सक्रिय हुन्छ - लाइभ क्लाउड प्रमाणहरू बोक्ने सम्भावना भएको वातावरण। क्लस्टरमा सबैभन्दा पुरानो प्याकेज, कोरल-रेथ, मा त्यस्तो कुनै गेट छैन र यसले यसको (सरल) संग्रह बिना शर्त चलाउँछ।
संग्रह। जब ढोकाबाट बाहिर निस्कन्छ, हुक बाहिर निस्कन्छ execFileSync(“/bin/sh”, [“-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) चरण १-३ पाठ्यपुस्तक IMDSv2 पुन: प्राप्ति हो: सत्र टोकन अनुरोध गर्नुहोस्, त्यसपछि यसलाई संलग्न गर्नुहोस् X-aws-ec2-मेटाडेटा-टोकन उदाहरणको IAM भूमिका र त्यो भूमिकाको अस्थायी पहुँच कुञ्जीहरू तान्न हेडर। सरल अप्रमाणित IMDSv1 को सट्टा IMDSv2 लागू गर्ने विकल्प प्राप्त ध्यान दिन लायक छ — यसको अर्थ टोकन-आधारित मेटाडेटा पहुँच आवश्यक पर्ने कन्फिगर गरिएका उदाहरणहरूमा पनि पेलोडले काम गर्छ, जुन AWS-सिफारिस गरिएको कडापन हो। चरण ३ द्वारा फिर्ता गरिएका प्रमाणहरू अल्पकालीन हुन्छन्। पहुँच कुञ्जी आइडी/गोप्य पहुँच कुञ्जी/टोकन उदाहरणको भूमिकामा तीन गुणा दायरा; त्यो भूमिकाले जे गर्न सक्छ, ती कुञ्जीहरूको धारकले प्रमाणपत्रको जीवनकालभरि गर्न सक्छ।
चरण ४-६ ले दृष्टिकोणलाई फराकिलो बनाउँछ। पठाउनुहोस् डम्पले निर्माण वा रनटाइम प्रक्रियाले वंशानुगत रूपमा प्राप्त गरेको कुनै पनि कुरालाई कैद गर्छ — व्यवहारमा यो त्यो ठाउँ हो जहाँ रजिस्ट्री टोकनहरू, डाटाबेस जडान स्ट्रिङहरू, र API कुञ्जीहरू प्रायः जीवित हुन्छन्। / एप फाइल वाकले बाहिर पन्ध्रवटा आवेदन फाइलहरू पढ्छ node_modules, जसले सतह कन्फिगरेसन गर्न सक्छ, एनएस फाइलहरू, वा स्रोत। चरण ६ कलहरू aws secretsmanager सूची-गोप्य तीन क्षेत्रहरूमा; चरण १-३ मा तानिएका प्रमाणहरू ती कलहरूलाई प्रमाणित गर्ने कुरा हुन्, त्यसैले IMDS पढ्ने र गोप्य प्रबन्धक गणना श्रृंखलालाई एकल एस्केलेसनमा सँगै राख्छन्: उदाहरण भूमिका → व्यवस्थित-गोप्य सूची। चरण ७ क्याप्चर-द-फ्ल्याग फ्रेमिङको लागि एक संकेत हो — जब एक एचटीबी{…} झण्डा भेटियो भने आफैं पठाइन्छ, अन्यथा सङ्कलन गरिएको काँचो ब्लबलाई चार टुक्रा पारेर पठाइन्छ।
क्लस्टरमा पछिल्ला संस्करणहरूले वृद्धिलाई अझ अगाडि बढाउँछन्। सूचीमा रोकिनुको सट्टा, तिनीहरूले IMDS प्रतिक्रियालाई पार्स गर्छन्, अस्थायी कुञ्जीहरूलाई यस रूपमा निर्यात गर्छन् AWS_पहुँच_KEY_आईडी / AWS_गोप्य_पहुँच_कुञ्जी / AWS_SESSION_TOKEN का थप वस्तुहरू वातावरण चरहरू, पहिचान पुष्टि गर्नुहोस् aws sts गेट-कलर-पहिचान, र त्यसपछि फिर्ता गरिएको प्रत्येक गोप्य कुरामाथि लुप गर्नुहोस् गोप्य कुराहरूको सूची कल गर्दै aws secretsmanager गोप्य मूल्य प्राप्त गर्नुहोस् प्रत्येकमा — गोप्य सामग्रीहरू पुन: प्राप्त गर्दै, केवल तिनीहरूको नाम मात्र होइन। उही संस्करणहरूले प्रक्रिया-प्रतिस्थापन झण्डा बाइनरीहरू पनि पढ्छन् (/फ्ल्याग पढ्नुहोस् र साथीहरू) र प्रयास गर्नुहोस् कार्गो रन अन्तर्गत फेला परेको कुनै पनि रस्ट परियोजना विरुद्ध / एप, क्लाउड प्रमाणहरूभन्दा बाहिरको फराकिलोपनलाई निर्माण वातावरणले जे पनि उजागर गर्छ।
यी पछिल्ला संस्करणहरूले आफूलाई अझ आक्रामक रूपमा गेट गर्छन्। १२-हेक्स-होस्टनेम र /एप/नोड_मोड्युलहरू जाँच गर्छ, पेलोडले सक्रिय प्याकेज-रजिस्ट्री कन्फिगरेसन र कार्य-निर्देशिका मार्गको निरीक्षण गर्छ र जब तिनीहरूले प्रत्यक्ष लक्ष्यको सट्टा विश्लेषण वा मिरर सन्दर्भलाई संकेत गर्छन् तब चुपचाप बाहिर निस्कन्छ। संयुक्त प्रभाव एक पेलोड हो जसले धेरैजसो निरीक्षण वातावरणमा अवलोकनयोग्य केही गर्दैन र यसको पूर्ण संग्रह मात्र चलाउँछ जहाँ यसले आफूलाई वास्तविक कन्टेनराइज्ड होस्टमा भएको न्याय गर्दछ।
निष्कासन। सङ्कलन गरिएको डेटाले होस्टलाई दुई च्यानलहरूमा छोड्छ। पहिलो, एउटा बिकन पोस्ट निश्चित स्थानमा वेबहुक.साइट कलेक्टर, होस्टनाम, संख्यात्मक UID, कार्य निर्देशिका, र १२० KB सम्म सङ्कलन गरिएको डेटा बोक्ने। दोस्रो, डेटालाई नक्कली YAML "मोड्युल म्यानिफेस्ट" मा फोल्ड गरिन्छ र राख्नु लाई /एपीआई/मोड्युलहरू/ लक्षित सर्भरमा:
ecto_module: name: "<flag-or-chunk-0>" version: "1.0.0" power_level: "<chunk-1>" ship_deck: "<chunk-2>" cargo_hold: "<chunk-3>" म्यानिफेस्ट फिल्ड नामहरू (पावर_लेभल, जहाज_डेक, कार्गो_होल्ड) सजावट हुन् — चोरी भएको डाटा स्ट्रिङ मानहरू भित्र घुम्छ, त्यसैले नेटवर्क मनिटरले स्पष्ट डाटा डम्पको सट्टा बेनाइन प्याकेज-रजिस्ट्री म्यानिफेस्ट अपलोड जस्तो देखिने कुरा देख्छ। बीकन च्यानलले थप बोक्छ: पोस्ट शरीरमा वेबहुक.साइट होस्टनाम, संख्यात्मक UID, काम गर्ने निर्देशिका, र सङ्कलन गरिएको ब्लबको १२० KB सम्म समावेश गर्दछ, त्यसैले एउटा सफल बिकनले पनि पूर्ण टेक प्रदान गर्दछ। वेबहुक.साइट यो एक नि:शुल्क अनुरोध-निरीक्षण सेवा हो; यसलाई सङ्कलकको रूपमा प्रयोग गर्नुको अर्थ अपरेटरले त्यो च्यानलको लागि आफ्नै पूर्वाधार प्राप्त गर्न कहिल्यै उभिनु पर्दैन, र रेकर्ड गरिएका अनुरोधहरू सेवाको डस्टबिनमा रहन्छन्।
प्रकट राख्नु धेरैबाट सुरु हुने फलब्याक सूचीमा हिँड्छ 127.0.0.1/लोकलहोस्ट पोर्टहरू र त्यसपछि ` मा तीन सार्वजनिक ठेगानाहरूमा पर्छन्१५४.५७.१६४.०/२४` दायरा, पहिलो अन्त्य बिन्दुमा रोकिन्छ जुन 2xx स्थितिको साथ जवाफ दिन्छ। लोकलहोस्ट-फर्स्ट अर्डरिंग "verdaccio testing" स्व-विवरण (लूपब्याकमा स्थानीय रजिस्ट्री) सँग मिल्दोजुल्दो छ, तर सार्वजनिक-आईपी फलब्याकहरूको अर्थ हो कि जब पनि लूपब्याक सुनिरहेको छैन - जुन भन्नुको अर्थ, कुनै पनि मेसिनमा जुन लेखकको आफ्नै परीक्षण रिग होइन।
समय रेखा
क्लस्टरले एक थोपा भन्दा पनि वृद्धिशील क्षमता वृद्धि देखाउँछ। हामी यसलाई अवलोकन गरिएको व्यवहारद्वारा क्रमबद्ध गर्छौं, प्रकाशन वाल-घडीद्वारा होइन:
| स्टेज | प्याकेजहरू / संस्करणहरू | व्यवहार |
|---|---|---|
| प्रारम्भिक दौड | coral-wraith 9999.0.x | निर्भरता-भ्रम प्रयाससँग मिल्दोजुल्दो संस्करण संख्याहरू; स्थापना-समय गणना र एक्सफिल |
| बीज | coral-wraith 1.0.0 | पोस्टइन्स्टलले आईडी/एनभी/फ्ल्याग फाइलहरू सङ्कलन गर्छ; एकल 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 र बिकन |
क्लस्टरको परिभाषित विशेषता यसको प्रकाशन ताल हो: एउटा प्याकेज र एउटा संस्करणको सट्टा, एउटै नाम द्रुत उत्तराधिकारमा बारम्बार पुन: प्रकाशित गरिन्छ, प्रत्येकले अन्तिममा सानो भिन्नता रिलीज गर्दछ, साथै एउटै पेलोड बोक्ने मुट्ठीभर फरक-फरक नाम भएका भाइबहिनीहरू पनि समावेश गर्दछ। भित्र लेकानेखुसीगर्छ कोड परिवारले दुई नजिकका औंठाछापहरूमा विभाजित गर्दछ - एउटा सेटले दुई महत्वपूर्ण पत्ता लगाउने ट्रिपिंग गर्दछ, अर्को तीन (अतिरिक्त फाइल-पढ्ने सिंक) - तर दुबै एउटै पेलोडमा समाधान गर्दछ; भिन्नता कोड बहाव हो, व्यवहारिक फोर्क होइन। को संस्करणहरू लेकानेखुसीगर्छ विश्लेषण गरिएको दायराभन्दा बाहिर (लेख्ने समयमा कम्तिमा १.०.२५ सम्म) रजिस्ट्रीमा प्रत्यक्ष अवलोकन गरिएको थियो, र कोरल-रेथ नामले उही झ्यालमाथि आफ्नै संस्करणको भर्याङ चढ्न जारी राख्यो।
सम्झौताका सूचकहरू
तलका सबै सूचकहरू डिस्कमा रहेको प्याकेज स्रोतबाट निकालिएका थिए। नेटवर्क सूचकहरू डिफ्याङ्ग गरिएका छन्।
नेटवर्क
| सूचक | भूमिका |
|---|---|
hxxp://154[.]57[.]164[.]71:30782 | C2 PUT लक्ष्य (coral-wraith) |
hxxp://154[.]57[.]164[.]80:30543 | C2 PUT फलब्याक (ecto-*) |
hxxp://154[.]57[.]164[.]82:31250 | C2 PUT फलब्याक (ecto-*) |
hxxp://154[.]57[.]164[.]71:31289 | C2 PUT फलब्याक (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 कुञ्जीहरू | एक्सफिल म्यानिफेस्ट स्कीमा |
सिङ्क मार्करहरू 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, विश्लेषणको समयमा कैद गरिएको)
| फाइल | shXXUMX |
|---|---|
coral-wraith/postinstall.js | ce5ff035cfdfed1d0015446424b352c27b66bcb77e9fdb0a51e4245199146824 |
ecto-corsair-whisper-6f3b9 1.0.18/postinstall.js | b58432acba376aa6976f0490d9a1c04257ccdbc856d8390260c50322d63e31c3 |
विशेषता र अवलोकन गरिएको व्यवहार
पाँच प्याकेज नामहरू दुई npm खाता ह्यान्डलहरू अन्तर्गत प्रकाशित गरिएका थिए, तर तिनीहरूले तिनीहरूलाई एउटै क्लस्टरको रूपमा व्यवहार गर्न पर्याप्त पूर्वाधार साझा गर्छन्: उस्तै इक्टो_मोड्युल म्यानिफेस्ट स्किमा, उस्तै हामीसँग अहिले स्टकमा ECT-472839 को 250 टुक्राहरू उपलब्ध छन्। प्राथमिक सिङ्क मार्कर, उस्तै वेबहुक.साइट सङ्कलक ID, र C2 अन्त्य बिन्दुहरू उहीमा १५४.५७.१६४.०/२४` ब्लक। बीउ प्याकेज (`कोरल-रेथ, सरल र अनगेटेड) र गेटेड एक्टो-परिवार यसरी स्वतन्त्र प्रयासहरूको सट्टा एउटै टुलकिटमा पुनरावृत्तिको रूपमा पढिन्छ।
प्याकेजहरूले पछिल्ला संस्करणहरूमा आफूलाई यसरी वर्णन गर्छन् "भर्डासियो आपूर्ति-श्रृंखला परीक्षणको लागि CTF पेलोड।" हामी त्यो लेबललाई अवलोकनयोग्य तथ्यको रूपमा प्रस्तुत गर्छौं र यसलाई उद्देश्यको बारेमा खोजको रूपमा पुन: प्रस्तुत गर्दैनौं। कोडले के गर्छ त्यो स्पष्ट छ र यसलाई कसरी लेबल गरिएको छ भन्ने कुराबाट स्वतन्त्र छ: यसले उदाहरण मेटाडेटा सेवाबाट IAM भूमिका प्रमाणहरू पढ्छ, तीन AWS क्षेत्रहरूमा व्यवस्थित गोप्यहरू गणना गर्दछ, र परिणामहरूलाई सार्वजनिक IP र तेस्रो-पक्ष वेबहुक सङ्कलकमा प्रसारण गर्दछ। साँच्चै लुपब्याक-मात्र परीक्षण हार्नेसलाई सार्वजनिक-IP फलब्याक सूची, IMDS प्रमाणहरू पढ्ने, वा क्रस-क्षेत्र गोप्य प्रबन्धक कलहरूको आवश्यकता पर्दैन। किनभने निकास र प्रमाणहरू वास्तविक छन्, गेट गरिएका संस्करणहरूलाई दुर्भावनापूर्ण वर्गीकृत गरिएको थियो।
कन्टेनर-मात्र गेट सबैभन्दा सञ्चालनत्मक रूपमा उल्लेखनीय विशेषता हो। यो दुबै एक चोरी मापन हो - ल्यापटप र विश्लेषण स्यान्डबक्सहरूमा मौन रहनु - र एक लक्ष्यीकरण मापन, केवल त्यहाँ फायरिङ गर्नु जहाँ वास्तविक IAM भूमिका र प्रत्यक्ष रहस्यहरू उपस्थित हुने सम्भावना बढी हुन्छ। सामान्य स्यान्डबक्समा यी प्याकेजहरू चलाउने विश्लेषकहरूले केही पनि अवलोकन गर्दैनन्; व्यवहार केवल डकर-शैली होस्टनाम र इन-कन्टेनर स्थापना मार्ग अन्तर्गत प्रकट हुन्छ।
रक्षकहरूको लागि प्रभाव, प्रवृत्ति र मार्गदर्शन
यहाँ एक्सपोजर भनेको निर्माण र रनटाइम कन्टेनर भित्र क्लाउड-प्रमाणपत्र र गोप्य प्रकटीकरण हो। IMDS बाट निकालिएको IAM भूमिका प्रमाणपत्रले भूमिकामा भएका सबै अनुमतिहरू बोक्छ; गोप्य प्रबन्धक: सूची गोप्य (र कुनै पनि फलो-अन गोप्यमान प्राप्त गर्नुहोस्) ले यसलाई भण्डारण गरिएको अनुप्रयोग गोप्यताहरूमा फराकिलो बनाउँछ। वातावरण-चर डम्पहरूले प्रायः रजिस्ट्री टोकनहरू, डाटाबेस URL हरू, र API कुञ्जीहरू बोक्छन्। CI वा कन्टेनर सन्दर्भमा - गेटले जेको लागि चयन गर्छ - यी प्याकेजहरू मध्ये एकको एकल ट्रान्जिटिभ स्थापना त्यो सामग्री चुहावट गर्न पर्याप्त छ।
एक्टोप्लाज्म हामीले देख्ने ढाँचामा फिट हुन्छ: स्थापना-समय पेलोडहरू जुन स्थानीय फाइलहरूको सट्टा क्लाउड मेटाडेटा र व्यवस्थित गोप्य कुराहरूमा पुग्छन्, र जसले उच्च-मूल्य वातावरणमा मात्र फायर गर्न गेट गर्छन्। दुई रक्षात्मक अवलोकनहरू पछ्याउँछन्।
- आकार पत्ता लगाउन सकिन्छ। एउटा npm/PyPI स्थापना हुक जसको कल ग्राफ क्लाउड सेक्रेट्स API दुवैमा पुग्छ (aws गोप्य प्रबन्धक, gcloud रहस्यहरू, एजेड किभल्ट) वा IMDS ठेगाना र नेटवर्क इग्रेस सिङ्क एक साँघुरो, उच्च-संकेत ढाँचा हो — यो लगभग कहिल्यै वैध जीवनचक्र स्क्रिप्टमा देखा पर्दैन। स्थिर प्रवाह विश्लेषण कुनै पनि विशिष्ट डोमेन वा IP मा निर्भर नगरी यसलाई फ्ल्याग गर्न सक्छ।
- वातावरणको कठोरताले यसलाई धमिलो बनाउँछ। १ को हप सीमाको साथ IMDSv2 लागू गर्नाले कन्टेनर कार्यभारहरूलाई उदाहरण मेटाडेटामा पुग्नबाट रोक्छ; IAM भूमिकाहरूलाई न्यूनतम विशेषाधिकारमा स्कोप गर्नाले चुहावट हुने कुनै पनि प्रमाणपत्रको ब्लास्ट रेडियसलाई सीमित गर्दछ; र स्थापनाहरू चलाउँदा -स्क्रिप्टहरूलाई बेवास्ता गर्नुहोस् CI मा आवश्यक नभएका प्याकेजहरूको लागि स्थापना-हुक भेक्टर पूर्ण रूपमा हटाउँछ।
डिफेन्डरहरूको लागि, व्यावहारिक जाँचहरू यस प्रकार छन्: बिल्ड/CI कन्टेनरहरूबाट गैर-अनुमोदित सार्वजनिक IP हरूमा आउटबाउन्ड जडानहरूमा सतर्कता npm स्थापना; प्याकेज लाइफसाइकल स्क्रिप्टहरूबाट उत्पन्न हुने IMDS पहुँचको लागि हेर्नुहोस्; र अन्यथा प्रमाणित नभएसम्म क्लाउड CLI मा जाने कुनै पनि स्थापना हुकलाई शंकास्पद मान्नुहोस्।
यस क्लस्टरको लागि विशेष दुई थप नोटहरू। पहिलो, सक्रियता कन्टेनराइज्ड वातावरणमा गेट गरिएको हुनाले, वर्कस्टेशनमा जाँच गर्दा निष्क्रिय देखिने प्याकेज अझै पनि उत्पादनमा प्रत्यक्ष हुन सक्छ - जाँच गर्दा कन्टेनर होस्टनाम र पथ अवस्थाहरू पुन: उत्पादन गर्न आवश्यक छ, वा "मैले यसलाई स्थापना गरें र केहि भएन" मा भर पर्नुको सट्टा स्रोत सिधै पढ्नु पर्छ। दोस्रो, बीकन कलेक्टरको रूपमा सार्वजनिक अनुरोध-निरीक्षण सेवाको प्रयोगको अर्थ घटना प्रतिक्रियाको लागि केही एक्सफिल्ट्रेटेड डेटा पुन: प्राप्ति योग्य हुन सक्छ: आफ्नो निर्भरता रूखमा यी प्याकेजहरू मध्ये एक फेला पार्ने संस्थाले पेलोडको सङ्कलन तर्कबाट सफल बीकनमा के समावेश हुन सक्छ भन्ने बारेमा तर्क गर्न सक्छ, र प्रभावित निर्माण वा रनटाइम वातावरणबाट पहुँचयोग्य कुनै पनि IAM भूमिका प्रमाणहरू, रजिस्ट्री टोकनहरू, र व्यवस्थित गोप्यहरू घुमाउनु पर्छ। प्रमाणपत्र परिक्रमण, प्याकेज हटाउने होइन, स्थापना चलेपछि अपरेटिवल उपचार हो।





