டிஎல்; DR
செப்டம்பர் 14, 2025 அன்று, ஆராய்ச்சியாளர்கள் அடையாளம் கண்டனர் ஷாய் ஹுலுட்உள்ளே மறைந்திருக்கும், தன்னைத்தானே பெருக்கிக்கொள்ளும் ஒரு புழு npm தொகுப்புகள்ஒரு வழக்கமான சார்புநிலைப் புதுப்பித்தலை ஒரு முழு அளவிலானதாக மாற்றுதல் விநியோக சங்கிலி தாக்குதல்முதலில் காணப்பட்டது @ctrl/சிறிய நிறம் டேனியல் டோஸ் சாண்டோஸ் பெரேராவின் தொகுப்பு மூலம், ஷாய்-ஹுலுட் இரகசியங்களைச் சேகரித்து, அவற்றை கிட்ஹப் ரெப்போக்கள் மற்றும் பணிப்பாய்வுகள் வழியாக வெளியேற்றி, திருடப்பட்ட சான்றுகளைப் பயன்படுத்தி ரெஜிஸ்ட்ரி முழுவதும் தன்னை மீண்டும் வெளியிடுகிறது. சில நாட்களுக்குள், பாதிக்கப்பட்ட தொகுப்புகளின் எண்ணிக்கை டஜன் கணக்கிலிருந்து நூற்றுக்கணக்காக உயர்ந்தது, இது பின்வருவனவற்றை உறுதிப்படுத்துகிறது: ஷைஹுலுட் இது வெறும் மற்றொரு ட்ரோஜன் மட்டுமல்ல, npm சூழல் அமைப்பு முழுவதும் தானாகவே பரவுவதற்காக வடிவமைக்கப்பட்ட ஒரு வார்ம் ஆகும்.
தாக்கம்: பொது npm தொகுப்புகளை நிறுவும் எந்தவொரு டெவலப்பரும் அல்லது CI ரன்னரும் ஆபத்தில் உள்ளனர்.
உடனடி நடவடிக்கைகள்: அறியப்பட்ட பதிப்புகளைத் தடுக்கவும், லாக்ஃபைல்-மட்டும் நிறுவல்களுக்கு மாறவும், npm மற்றும் GitHub டோக்கன்களை சுழற்சி முறையில் பயன்படுத்தவும், பணிப்பாய்வுகளைத் தணிக்கை செய்யவும், மற்றும் பாதுகாப்பு மீறல் குறிகாட்டிகளை (IoCs) கண்காணிக்கவும்.
என்ன நடந்தது?
தி npm தொகுப்புகளில் ஷாய்-ஹுலுட் விநியோகச் சங்கிலித் தாக்குதல் சமீபத்திய நினைவில் மிகவும் சீர்குலைக்கும் சம்பவங்களில் இதுவும் ஒன்றாகும். தனித்த ட்ரோஜன்களைப் போலல்லாமல், இந்த வார்ம் பலவற்றுடன் கலக்கிறது. அடையாளத் திருட்டு, தானியங்கி தரவு வெளியேற்றம் மற்றும் சுய-நகலெடுத்தல்அதன் விளைவாக, நோய்த்தொற்று ஏற்படும் காலம் வாரங்களிலிருந்து சில மணிநேரங்களாகச் சுருங்கியது.
டெவ்ஆப்ஸ் குழுக்களுக்கு இதிலிருந்து கிடைக்கும் பாடம் தெளிவானது: ஒவ்வொரு நிறுவலாலும் குறியீட்டை இயக்க முடியும் என்றால், ஒவ்வொரு சார்புநிலைப் புதுப்பிப்பும் ஒரு சாத்தியமான பாதுகாப்பு மீறலுக்கான புள்ளியாகும்.
சாத்தியமான ஆரம்ப திசையன் மற்றும் இலக்கு நற்சான்றிதழ்கள்
ஆரம்ப பகுப்பாய்வு தாக்குதல் இதிலிருந்து தொடங்கியிருக்கலாம் என்பதைக் குறிக்கிறது. திருடப்பட்ட சான்றுகள்உதாரணமாக, npm-ஐப் போலியாகக் காட்டும் ஃபிஷிங் பிரச்சாரங்கள். login அல்லது MFA அறிவிப்புகள் டெவலப்பர் டோக்கன்களைக் கைப்பற்றியிருக்கலாம். தாக்குதல் நடத்தியவர்கள் அந்த முதல் காலடியைப் பெற்றவுடன், அந்த வார்ம் npm பேக்கேஜ்களில் தன்னை உட்பொதித்துக்கொண்டு, மேலும் பல இரகசியங்களைத் திருடி பரவியது:
- npm உள்ளமைவு கோப்புகள் போன்ற
.npmrcபெரும்பாலும் வெளியீட்டு டோக்கன்களைக் கொண்டிருக்கும். - சுற்றுச்சூழல் மாறிகள் மற்றும் GitHub PATகள் மற்றும் உள்ளமைவுகள் CI/CD இரகசியங்கள்.
- கிளவுட் மெட்டாடேட்டா எண்ட்பாயிண்ட்கள் (AWS, GCP, Azure) பக்கவாட்டு நகர்வுக்கான குறுகிய கால அங்கீகாரச் சான்றுகளை வழங்குகின்றன.
எனவே, நற்சான்றிதழ் திருட்டு ஒரு தொடக்கப் புள்ளியாக அமைந்தது. செல்லுபடியாகும் npm டோக்கன்கள் மற்றும் GitHub சீக்ரெட்களைக் கொண்டு, ஷாய்-ஹுலுட் கூடுதல் மனித முயற்சியின்றி பல பேக்கேஜ்கள் மற்றும் ரெபாசிட்டரிகளில் தன்னைத்தானே நகலெடுத்துக் கொள்ள முடிந்தது.
ஷாய்-ஹுலுட் விநியோகச் சங்கிலித் தாக்குதலின் நிர்வாக ரீதியான தாக்கம்
ஷாய்-ஹுலுட் இன்றும் செயலில் உள்ளது. இந்த வார்ம் பாதிப்பின் கால அளவை வேகப்படுத்துகிறது. ஒரு ட்ரோஜன் மூலம் வாரக்கணக்கில் நடந்த ஒரு செயல், இப்போது சில மணிநேரங்களிலேயே நடந்துவிடுகிறது. இதன் விளைவாக, பரவல் வேகமாக உள்ளது மற்றும் கட்டுப்படுத்துவது கடினமாகிறது. இது பின்வருமாறு முன்னேறுகிறது:
- npm publish டோக்கன்கள் மற்றும் GitHub இரகசியங்களைத் திருடுதல்.
- மற்ற npm தொகுப்புகளிலும் தன்னை மீண்டும் வெளியிடுகிறது.
- நிலைத்தன்மைக்காக தீங்கிழைக்கும் GitHub Actions பணிப்பாய்வுகளைச் சேர்த்தல்.
யார் பாதிக்கப்படுகிறார்கள்:
பொது npm தொகுப்புகளை நிறுவும் எந்தக் குழுவும் ஆபத்துக்கு உள்ளாகிறது. மேலும், தற்காலிகமாகச் சேமிக்கப்பட்ட npm அல்லது GitHub டோக்கன்களைக் கொண்ட டெவலப்பர்கள் அதிக ஆபத்தை எதிர்கொள்கின்றனர். பரந்த அளவிலான இரகசியங்களைப் பயன்படுத்தும் CI ரன்னர்களும் பாதிப்புக்கு உள்ளாகலாம்.
வணிக ஆபத்து
வணிக ரீதியான தாக்கம் விரைவாக அதிகரிக்கிறது. திருடப்பட்ட டோக்கன்கள் கணக்கு அபகரிப்பு, பேக்கேஜ் அபகரிப்பு மற்றும் கிளவுட் தவறான பயன்பாடு போன்றவற்றுக்கு வழிவகுக்கலாம். மேலும், GitHub பணிப்பாய்வுகளில் நிலைத்தன்மை இருப்பதால், அவற்றைச் சுத்தம் செய்வது கடினமாகிறது. எனவேஅணிகள் ஷாய்-ஹுலுட் சம்பவத்தை முடிவடைந்த ஒன்றாகக் கருதாமல், அது தொடர்ந்து நடைபெற்று வரும் ஒரு நிகழ்வு எனக் கருத வேண்டும்.
npm தொகுப்புகளில் ஷாய்-ஹுலுட் விநியோகச் சங்கிலித் தாக்குதல் எவ்வாறு செயல்படுகிறது
தாக்குபவரின் நோக்கங்களும் உந்துதலும்
இந்த பிரச்சாரம் மூன்று விஷயங்களை மேம்படுத்துகிறது:
- முதல் நோக்கம் என்னவென்றால் பெருமளவில் நற்சான்றிதழ்களைத் திருடுங்கள் டெவலப்பர் மடிக்கணினிகள் மற்றும் CI ரன்னர்களில் இருந்து. இதில் npm பப்ளிஷ் டோக்கன்கள், GitHub டோக்கன்கள் மற்றும் கிளவுட் நற்சான்றிதழ்கள் அடங்கும். உண்மையில், ட்ரஃபிள்ஹாக்கை இயக்குவது மற்றும் கிளவுட் மெட்டாடேட்டா எண்ட்பாயிண்ட்டுகளை வினவுவது போன்ற முறையான இரகசியச் சேகரிப்பை பல பகுப்பாய்வுகள் உறுதிப்படுத்துகின்றன.
- இரண்டாவது நோக்கம் என்னவென்றால் தானாகவே பரப்பவும் பாதிக்கப்பட்ட பராமரிப்பாளர்களின் பதிப்புரிமைகளைத் தவறாகப் பயன்படுத்துவதன் மூலம். இதன் விளைவாக, கூடுதல் மனித முயற்சி இல்லாமலேயே மற்ற தொகுப்புகளின் புதிய, பாதிக்கப்பட்ட பதிப்புகள் தோன்றுவதால், ஒரு பிடிப்பு விரைவாகப் பலவாக விரிவடைகிறது.
- மூன்றாவது நோக்கம் என்னவென்றால் நிலைத்தன்மையுடன் மற்றும் நம்பகத்தன்மையுடன் வெளியேற்றுதல் GitHub உள்கட்டமைப்பு வழியாக, தாக்குதல் நடத்துபவர்கள் இரட்டை பேஸ்64 உடன் “Shai-Hulud” என்ற பெயரில் ஒரு பொது ரெப்போவை உருவாக்குகிறார்கள். தரவு.jsonமேலும், கூடுதலாக அவர்கள் தொடராக்கும் ஒரு பணிப்பாய்வு முறையை உருவாக்குகிறார்கள். ${{ toJSON(secrets) }} மேலும் அதை ஒரு ஸ்டேடிக் வெப்ஹூக்கிற்கு அனுப்புகிறது.
இதன் மூலம் கிடைக்கக்கூடிய பலன்களில், பதிவகங்கள் மற்றும் மூலக் குறியீட்டிற்கான நீண்ட கால அணுகல், கிளவுட் கணக்குகளுக்கு விரைவான பக்கவாட்டு நகர்வு, மற்றும் விநியோகச் சங்கிலியை மேலும் வலுப்படுத்தும் வாய்ப்பு ஆகியவை அடங்கும். பொது அறிக்கைகள், தனியார் களஞ்சியங்கள் ஒரு குறிப்பிட்ட கால இடைவெளியில் பொதுவானவையாக மாற்றப்பட்டதைக் காட்டுகின்றன. "-குடியேற்றம்" தரவு வெளிப்பாட்டையும் வேகத்தையும் அதிகரிக்கும் பின்னொட்டு.
ஷாய்-ஹுலுட் பேலோடின் உள்ளே: bundle.js (பண்டில்.ஜே.எஸ்) npm தொகுப்புகளில்
ஷாய்-ஹுலுட் கப்பல்கள் ஒரு பெரிய, வெப் பேக் உடன் தொகுக்கப்பட்ட மற்றும் பெருமளவில் சுருக்கப்பட்ட ஜாவாஸ்கிரிப்ட் கோப்பு (bundle.js (பண்டில்.ஜே.எஸ்)(சுமார் 3–3.7 MB) ஒரு இடத்திலிருந்து செயல்படுத்தப்படுகிறது நிறுவிய பின் கொக்கி போடு தொகுப்பு.ஜேசன்இதன் விளைவாக, ஒவ்வொரு நிறுவலும் பேலோடைத் தானாகவே தூண்டுகிறது. இந்த வடிவமைப்பு அடையாளங்காட்டிகளை மறைத்து, கட்டுப்பாட்டு ஓட்டத்தைச் சுருக்கி, அனைத்து தர்க்கங்களையும் நிறுவலின் போது செயல்படுத்தப்படும் ஒரே ஒரு ஆர்டிஃபேக்டில் செலுத்துகிறது. வெப் பேக் தொகுத்தல், வழக்கத்திற்கு மாறான கோப்பு அளவு மற்றும் நிறுவல் நேரச் செயலாக்கம் ஆகியவற்றை ஆய்வாளர்கள் தொடர்ந்து உறுதிப்படுத்துகின்றனர்.
மாதிரிகளில் நீங்கள் காணக்கூடிய தெளிவின்மை மற்றும் பகுப்பாய்வு எதிர்ப்புப் பண்புகள்:
- சுருக்கப்பட்ட தொகுதி வரைபடம் எண் சார்ந்த தொகுதி அடையாளங்காட்டிகள், சுருக்கமான கருத்துரைகள் மற்றும் தட்டையான கட்டுப்பாட்டு ஓட்டத்துடன். மேலும், இந்த அமைப்பு, கையேடு மதிப்பாய்வை மிகவும் கடினமாக்குகிறது.
- சரம் மறைத்தல் பேஸ்64 லேயர்கள் மற்றும் கன்ஸ்ட்ரக்ஷன் ஹெல்பர்கள் வழியாக. உதாரணமாக, தரவு கசிவு நடைமுறைகளைச் சுற்றி, மீண்டும் மீண்டும் நிகழும் பேஸ்64 குறியாக்கமும் குறியீட்டு நீக்கமும் பொதுவாக நிகழ்கின்றன.
- டைனமிக் டிஸ்பேட்ச் மூலம் பரிணாமம்பாணி வடிவங்கள் மற்றும் உருவாக்கப்பட்ட செயல்பாட்டு உடல்கள், எனவே நிரல் இயங்கும் நேரத்தில் அதன் நடத்தையை மாற்ற உதவுகிறது.
- OS வடிகட்டுதல் குறிப்பாக CI ரன்னர்கள் மற்றும் டெவலப்பர் லேப்டாப்களில் லினக்ஸ் மற்றும் மேக்ஓஎஸ் இயக்கத்திற்கு முன்னுரிமை அளித்தல்.
செயல்பாட்டு ரீதியாகப் பார்த்தால், இந்தத் தொகுப்பு பாகங்களாகப் பிரிக்கக்கூடியது. இயக்க முறைமை கண்டறிதல், கோப்பு முறைமை மற்றும் கிட் சீக்ரெட் ஸ்கேன்கள், கிளவுட் SDK அணுகல், கிட்ஹப் API செயல்பாடுகள், மற்றும் பராமரிப்பாளருக்குச் சொந்தமான பிற தொகுப்புகளைத் திருத்தும் ஒரு பரவல் இயந்திரம் ஆகியவற்றுக்கான தொகுதிக்கூறுகளை விளக்கங்கள் விவரிக்கின்றன. உண்மையில், ஸ்டெப் செக்யூரிட்டி மற்றும் ரிவர்சிங் லேப்ஸ் ஆகிய இரண்டும், தீங்கிழைக்கும் ஹூக்கைக் கொண்டு தொகுப்புகளைத் தானாகவே புதுப்பிக்கும் ஒரு செயல்பாட்டை முன்னிலைப்படுத்துகின்றன.
ஷாய்-ஹுலுடில் நிறுவல் நேரச் செயலாக்கம்: npm தொகுப்புகள் வார்மை எவ்வாறு தூண்டுகின்றன
தாக்குதல் தொடங்கும் போது போஸ்ட்இன்ஸ்டால் ரன்ஸ் நோட் bundle.js (பண்டில்.ஜே.எஸ்). இந்தக் கட்டத்தில், ஸ்கிரிப்ட் நினைவகத்தில் செயல்படும் நிலையைத் துவக்கி, அதனைப் பிரித்து வைப்பதன் மூலம், வார்மின் முழுமையான செயல்பாட்டிற்கான களத்தை அமைக்கிறது.
கண்டுபிடிப்பு மற்றும் அறுவடை
- இந்த பேலோட், process.env கோப்பை வெளியிடுவதோடு, அதிக என்ட்ரோபி கொண்ட இரகசியங்கள் மற்றும் டோக்கன் முன்னொட்டுகளுக்காக உள்ளூர் கோப்புகளை ஸ்கேன் செய்கிறது. மேலும், இது TruffleHog-ஐ இயக்குவதன் மூலம் அதன் செயல்பாட்டு எல்லையை விரிவுபடுத்துகிறது.
- இது குறுகிய கால நற்சான்றிதழ்களைச் சேகரிப்பதற்காக கிளவுட் மெட்டாடேட்டா எண்ட்பாயிண்ட்களை வினவுகிறது. உதாரணமாக, அழைப்புகள்
169.254.169.254AWS இல் அல்லதுmetadata.google.internalGCP-இல் ஏற்படும் பிழைகள் பெரும்பாலும் பாதிக்கப்பட்ட ஹோஸ்ட்களில் தோன்றும். - இதன் விளைவாக, கண்டறியப்படும் எந்தவொரு சான்றும், புதிய npm தொகுப்புகளை வெளியிட அல்லது GitHub பணிப்பாய்வுகளை முன்னெடுத்துச் செல்ல உடனடியாகப் பயன்படுத்தக்கூடியதாக மாறும்.
வெளியேற்றம்
- அந்தப் புழு, என்ற பெயரில் ஒரு புதிய GitHub ரெப்போவை உருவாக்குகிறது. ஷாய் ஹுலுட் மற்றும் இரட்டை பேஸ்64-குறியிடப்பட்ட ஒன்றை எழுதுகிறது
data.jsonஇயங்குதள விவரங்கள், சூழல் தரவுகள் மற்றும் இரகசியங்களுடன். காணக்கூடியவாறு, பாதுகாவலர்கள் எங்கே தேட வேண்டும் என்று அறிந்திருந்தால், இந்த இரைச்சலான நடத்தையை எளிதில் கண்டறிந்துவிடலாம். - மேலும் இது, பெரும்பாலும் பெயரிடப்பட்ட ஒரு கிளையில், ஒரு GitHub Actions பணிப்பாய்வையும் நிறுவுகிறது. ஷாய்-ஹுலுத், அது தொடராக்குகிறது
${{ toJSON(secrets) }}மேலும், அந்தத் தரவை ஒரு நிலையான வெப்ஹூக்கிற்கு அனுப்புகிறது. அதுமட்டுமின்றி, யாராவது ஒருவர் இதை முனைப்புடன் நீக்கும் வரை இந்தச் செயல்முறை தொடர்கிறது.
இனப்பெருக்கம்
- கண்டறியப்பட்ட எந்தவொரு npm டோக்கனையும் கொண்டு, அந்த பேலோட், பாதிக்கப்பட்ட பராமரிப்பாளருக்குச் சொந்தமான அனைத்து தொகுப்புகளையும் பட்டியலிடுகிறது. பின்னர், அது ஒவ்வொரு டார்பாலையும் பெற்று, அதில் bundle.js மற்றும் ஒரு postinstall பதிவைச் செருகி, அந்தத் தொகுப்பை மீண்டும் வெளியிடுகிறது.
- இதன் விளைவாக, சில மணி நேரங்களிலேயே டஜன் கணக்கான பாதிக்கப்பட்ட தொகுப்புகள் தோன்றி, சூழல் மண்டலம் முழுவதும் பாதிப்பின் வீச்சை பன்மடங்கு பெருக்கக்கூடும்.
விடாமுயற்சி மற்றும் வெளிப்பாடு
அந்தப் புழு, தீங்கிழைக்கும் பணிப்பாய்வுகளை உயிர்ப்புடன் வைத்திருப்பதோடு, பல சந்தர்ப்பங்களில், ஒரு குறிப்பிட்ட வழிமுறையின் மூலம் தனிப்பட்ட களஞ்சியங்களைப் பொதுவானதாக மாற்றிவிடுகிறது. "-குடியேற்றம்" பின்னொட்டு. மொத்தத்தில், இது தாக்குபவர் தனது நிலையைத் தக்கவைத்துக் கொள்ளவும், தரவுக் கசிவை அதிகரிக்கவும் உதவுகிறது.
சாவி கண்டறிதல் குறிப்பு
இந்த அசாதாரண பயன்பாடு ${{ toJSON(secrets) }} செயல்பாட்டு பணிப்பாய்வுகளில் இது அரிதானது. எனவே, வேட்டையின் போது குழுக்கள் இதை ஒரு உயர்-அடையாளக் குறியீடாகக் கருத வேண்டும்.
நீங்கள் தேட வேண்டிய சுத்திகரிக்கப்பட்ட பணிப்பாய்வு முறை
இந்த அசாதாரண பயன்பாடு க்கு JSON(இரகசியங்கள்) இந்தச் சம்பவத்தில் 'செயல்பாடுகளில்' என்பது ஒரு உயர்-அடையாளக் குறியீடாகும்.
உயர் மட்ட பரவல் போலிக்குறியீடு (பாதுகாப்பான, விளக்கமான)
பகுப்பாய்வாளர்கள் இந்த சுழற்சியை பெரிய அளவில் கவனித்தனர், இது பாதிக்கப்பட்ட தொகுப்புகளின் எண்ணிக்கை டஜன் கணக்கிலிருந்து நூற்றுக்கணக்கானதாக விரைவாக அதிகரித்ததை விளக்குகிறது.
ஒரு தொகுப்புச் சூழலமைப்பில் இது ஏன் ஒரு புழுவாக இருக்கிறது
வார்ம் என்பது ஒவ்வொரு கட்டத்திலும் கைமுறை இயக்க நடவடிக்கைகள் தேவைப்படாமல், தானாகவே பரவும் ஒரு தீம்பொருள் ஆகும். இயக்க முறைமைகளில், வார்ம்கள் பொதுவாக ஒரு கணினியிலிருந்து மற்றொரு கணினிக்கு நகர்வதற்கு வலையமைப்புப் பாதுகாப்புக் குறைபாடுகளைப் பயன்படுத்திக் கொள்கின்றன. இதற்கு மாறாக, ஷாய்-ஹுலுட் npm ரெஜிஸ்ட்ரிக்குள் இயங்குகிறது. அதன் திறமையான பாதை இதன் வழியாகச் செல்கிறது. சான்று மறுபயன்பாடு.
இந்த வார்ம் திருடப்பட்ட npm பப்ளிஷ் டோக்கன்களைப் பயன்படுத்திக் கொள்கிறது. செல்லுபடியாகும் சான்றுகளைப் பெற்றவுடன், அது அதே பராமரிப்பாளருக்குச் சொந்தமான மற்ற பேக்கேஜ்களின் கீழ் பாதிக்கப்பட்ட பதிப்புகளை மீண்டும் வெளியிடுகிறது. அதைத் தொடர்ந்து, அந்த பேக்கேஜ்கள் சந்தேகப்படாத டெவலப்பர்கள் அல்லது CI ரன்னர்களால் நிறுவப்படுகின்றன, மேலும் இந்தச் சுழற்சி மீண்டும் மீண்டும் தொடர்கிறது.
இந்தக் காரணத்திற்காக, பாதுகாப்பு ஆய்வாளர்கள் உட்பட இருண்ட வாசிப்புஷாய்-ஹுலுத்தை ஒரு வகையாக வகைப்படுத்தவும் தன்னைத்தானே பெருக்கிக்கொள்ளும் புழு இது ஒரு சாதாரண ட்ரோஜன் அல்லது டைப்போஸ்க்வாட்டிங் சம்பவத்தை விட வேறுபட்டது. இந்த வேறுபாடு முக்கியமானது: ஒரு ட்ரோஜன் பொதுவாக ஒரு ஹோஸ்ட்டை மட்டுமே பாதிக்கும், ஆனால் ஒரு வார்ம் அதன் தாக்கத்தை ஒரு முழு சூழலமைப்பு முழுவதும் தானாகவே பெருக்கிவிடும்.
"இது எப்படி வேலை செய்கிறது" என்பதற்கான சுருக்கக் குறிப்பு
ஷாய்-ஹுலுடின் வாழ்க்கைச் சுழற்சியைச் சுருக்கமாகக் கூற, இதோ ஒரு கருத்து.cisஅதன் முக்கிய படிநிலைகளின் விவரம்:
- ஒரு தொகுப்புடன் நிறுவிய பின் நிறுவப்பட்டுள்ளது, மற்றும்
bundle.jsசெயல்படுத்துகிறது. - பேலோட் சூழல் மாறிகளை வெளியேற்றி, கோப்புகள் மற்றும் கிட் வரலாற்றை ஸ்கேன் செய்து, இயக்குகிறது. ட்ரஃபிள்ஹாக்மேலும், கிளவுட் மெட்டாடேட்டா சேவைகளை வினவுகிறது. இதன் விளைவாக, கண்டறியப்பட்ட எந்தவொரு இரகசியமும் உடனடியாகப் பயனுள்ளதாகிவிடுகிறது.
- தரவு கசிவு இரண்டு வழிகளில் நிகழ்கிறது: முதலாவதாக, பெயரிடப்பட்ட ஒரு பொது ரெப்போவை உருவாக்குவதன் மூலம். ஷாய் ஹுலுட் இரட்டை பேஸ்64-குறியிடப்பட்ட உடன்
data.jsonஇரண்டாவதாக, பதிவிடும் ஒரு GitHub Actions பணிப்பாய்வை நிறுவுவதன் மூலம்${{ toJSON(secrets) }}ஒரு வெப்ஹூக்கிற்கு. - திருடப்பட்ட ஏதேனும் ஒரு npm டோக்கனைப் பயன்படுத்தி, அந்தப் புழு, பாதிக்கப்பட்ட பராமரிப்பாளருக்குச் சொந்தமான மற்ற அனைத்து தொகுப்புகளையும் அதே தீங்கிழைக்கும் ஹூக்குடன் மீண்டும் வெளியிடுகிறது. இவ்வாறு, அந்தத் தொற்று வேகமாகப் பெருகுகிறது.
- இறுதியாக, தாக்குதல் நடத்துபவர் மேலும் பல இரகசியங்களையும், பரப்புவதற்கு இன்னும் பல பொதிகளையும் வைத்திருக்கிறார், மேலும் நிலைபேறு GitHub கணக்குகள் மற்றும் களஞ்சியங்களுக்குள்.
இந்த வகையான தாக்குதலை நடைமுறையில் தவிர்ப்பது எப்படி
ஷாய்-ஹுலுட் ஒரு எச்சரிக்கை மணி. டோக்கன்களைத் திருடி, தன்னைத்தானே மீண்டும் வெளியிடும் ஒரு புழு, எதிர்கால அபாயம் அல்ல; அது தற்போதே செயல்பாட்டில் உள்ளது. npm தொகுப்புகள் சுற்றுச்சூழல் அமைப்பு இன்று. இந்த வகையான விநியோக சங்கிலி தாக்குதல்அணிகளுக்கு நிரல்படுத்தக்கூடிய, தானியங்குபடுத்தக்கூடிய மற்றும் நேரடியாகச் செயல்படுத்தக்கூடிய கட்டுப்பாடுகள் தேவைப்படுகின்றன. CI/CD pipelines. இவை நீங்கள் ஏற்கனவே செயல்படுத்தக்கூடிய அதே பாதுகாப்பு முறைகள்தான். சைஜெனி.
தீய கலைப்பொருட்களை வாசலிலேயே தடுத்து நிறுத்துங்கள்.
npm தொகுப்புகள் மற்றும் டார்பால்கள் டெவலப்பர்களையோ அல்லது CI பணிகளையோ சென்றடைவதற்கு முன்பு நீங்கள் அவற்றை ஸ்கேன் செய்ய வேண்டும். அளவுக்கதிகமானது bundle.js கோப்புகள், சந்தேகத்திற்குரிய நிறுவிய பின் hooksமேலும், தெளிவின்மை குறிகாட்டிகள் அனைத்தும் ஆரம்பகால எச்சரிக்கை அறிகுறிகளாகச் செயல்படுகின்றன. அதுமட்டுமின்றி, இடைநிறுத்தக் காலங்களை அமல்படுத்துவதும், நிலைப்படுத்தப்பட்ட பதிப்புகளை உருவாக்குவதும்... pipelineபுதிய, சரிபார்க்கப்படாத வெளியீடுகள் தானாகவே பயன்படுத்தப்படுவதைத் தடுக்கிறது.
ஹார்டன் CI/CD இயல்பாக
Guardrails in CI/CD இவை இன்றியமையாதவை. புதிய ஸ்கிரிப்டுகள் அல்லது பைனரிகளை அறிமுகப்படுத்தும் இணைப்புகள் அல்லது நிறுவல்களை அவை நிராகரிக்கின்றன. அதே நேரத்தில், இரகசியங்களை வரிசைப்படுத்தும் அல்லது வெளிப்புறப் பதிவுகளை முயற்சிக்கும் பணிப்பாய்வுகளையும் அவை தடுக்கின்றன. குழுக்கள் லாக்ஃபைல்-மட்டுமேயான நிறுவல்களையும் கட்டாயமாக்க வேண்டும்.npm ci) முழுவதும் pipelineஅதனால் சார்புத் தொகுப்புகள் மீண்டும் உருவாக்கக்கூடியதாகவும் பாதுகாப்பானதாகவும் இருக்கின்றன.
டோக்கன் வெடிப்பு ஆரத்தைக் குறைக்கவும்
இரகசியங்கள் தோல்விக்கான ஒற்றைப் புள்ளிகளாக மாறிவிடக் கூடாது. குறியீடு, உள்ளமைவுகள் மற்றும் பிறவற்றைத் தொடர்ந்து சரிபார்க்கவும். pipeline இதற்கான வெளியீடு வெளிப்படுத்தப்பட்ட சான்றுகள்டோக்கன்கள் குறுகிய வரையறைக்குள் இருக்க வேண்டும், குறுகிய ஆயுட்காலம் கொண்டிருக்க வேண்டும், மேலும் பாதிப்பு கண்டறியப்படும்போது தானாகவே மாற்றப்பட வேண்டும். ஒரு விதியாக, சந்தேகத்திற்கிடமான போஸ்ட்இன்ஸ்டால் செயல்பாட்டைச் செய்த ஹோஸ்டில் பயன்படுத்தப்படும் எந்தவொரு டோக்கனையும் பாதிப்புக்குள்ளானதாகக் கருத வேண்டும்.
புழுவின் நடத்தையை ஆரம்பத்திலேயே கவனிக்கவும்
ஒழுங்கின்மை கண்டறிதல் இது முக்கியமானது. உதாரணமாக, npm publish நிகழ்வுகளில் ஏற்படும் திடீர் அதிகரிப்புகள், காரணமின்றி தோன்றும் புதிய பணிப்பாய்வுகள், அல்லது விசித்திரமான குறியாக்கம் செய்யப்பட்ட கோப்புகளால் நிரப்பப்பட்ட புதிய பொது ரெப்போக்கள் போன்றவை அனைத்தும் வார்ம் செயல்பாட்டைக் குறிக்கலாம். எனவே, குழுக்கள் விரைவாக எச்சரிக்கைகளை எழுப்பி, இந்த எச்சரிக்கை அறிகுறிகளைக் காட்டும் பராமரிப்பாளர்கள் அல்லது இயக்குபவர்களைத் தனிமைப்படுத்த வேண்டும்.
கட்டமைப்புகளைச் சிதைக்காமல் விரைவாகச் சரிசெய்யவும்
வேகமும் பாதுகாப்பும் ஒன்றிணைந்து செல்ல வேண்டும். தானியங்கி pull requests பாதிக்கப்பட்ட npm தொகுப்புகளை, சரிபார்க்கப்பட்ட பதிப்புகளைக் கொண்டு மாற்ற முடியும். மேலும், அணுகல்தன்மை மற்றும் சுரண்டல் தன்மை பகுப்பாய்வு, மேம்படுத்தல்கள் குறைந்தபட்சமாகவும் நிலையானதாகவும் இருப்பதை உறுதி செய்கிறது. இறுதியாக, பாதிப்பு உறுதிசெய்யப்பட்டவுடன், தூய்மையான படங்களிலிருந்து பாதிக்கப்பட்ட CI ரன்னர்களை மீண்டும் உருவாக்குவதன் மூலம், தாக்குதல் மேலும் பரவாமல் தடுக்கப்படுகிறது.
சமரசக் குறிகாட்டிகள் (IoCs)
ஷாய்-ஹுலுடைப் பகுப்பாய்வு செய்யும்போது, அணிகள் இரண்டையும் கவனிக்க வேண்டும். நிலையான IoCகள் கோப்புகளில் மற்றும் நடத்தை சார்ந்த IoCகள் in pipelineஒன்றாக இணைந்து, இந்த சமிக்ஞைகள் நோய்த்தொற்றுகளை முன்கூட்டியே கண்டறியவும், புழு மேலும் பரவுவதற்கு முன்பே அதற்கு பதிலளிக்கவும் உதவுகின்றன.
நிலையான IoCகள்
பின்வரும் SHA-256 டைஜெஸ்ட்கள் கவனிக்கப்பட்டவற்றுடன் பொருந்துகின்றன. bundle.js மாதிரி:
- 46faab8ab153fae6e80e7cca38eab363075bb524edd79e42269217a083628f09
- 81d2a004a1bca6ef87a1caf7d0e0b355ad1764238e40ff6d1b1cb77ad4f595c3
- dc67467a39b70d1cd4c1f7f7a459b35058163592f4a9e8fb4dffcbba98ef210c
மேலும், மீண்டும் மீண்டும் நிகழும் இந்த வடிவங்களைக் கவனியுங்கள்:
- A
bundle.jsதொகுப்பின் மூலத்தில். "postinstall": "node bundle.js"உள்ளேpackage.json.- பெயரிடப்பட்ட களஞ்சியங்கள் ஷாய் ஹுலுட்.
- GitHub பணிப்பாய்வுகள் உள்ளடக்கிய
${{ toJSON(secrets) }}.
நடத்தை சார்ந்த IoCகள்
கோப்பு அடையாளங்களைத் தாண்டி, புழுவின் செயல்பாடு அதன் நடத்தை மூலமாகவும் வெளிப்படுகிறது. எடுத்துக்காட்டாக:
- ஒரு பராமரிப்பாளரிடமிருந்து திடீரென npm publish நிகழ்வுகள் வெளிவருதல்.
- வெளிப்புற முனையங்களுக்குத் தரவை அனுப்பும் புதிய பணிப்பாய்வுகள்.
- CI ரன்னர்களிடமிருந்து தூண்டப்பட்ட வெளிச்செல்லும் POST கோரிக்கைகள்.
- குறியாக்கம் செய்யப்பட்ட பிளாப்களுடன் சமீபத்தில் உருவாக்கப்பட்ட பொது ரெப்போக்கள்.
விரைவான வேட்டைகள்
முடிவுரை: ஷாய்-ஹுலுத் நூலிலிருந்து கிடைத்த பாடங்கள்
தி ஷாய்-ஹுலுட் விநியோகச் சங்கிலி தாக்குதல் npm தொகுப்புகளில் உள்ள ஒரு நிகழ்வு, இன்றைய மென்பொருள் விநியோகச் சங்கிலி எவ்வளவு பலவீனமாகிவிட்டது என்பதைக் காட்டுகிறது. இந்த வார்ம் தீங்கிழைக்கும் குறியீட்டைச் சேர்ப்பதோடு நின்றுவிடவில்லை. அது டோக்கன்களைத் திருடி, தரவுகளை வெளியே அனுப்பி, பின்னர் தானாகவே மீண்டும் வெளியிட்டது. இதன் காரணமாக, இந்தத் தாக்குதல் வாரங்களுக்குப் பதிலாக சில மணிநேரங்களிலேயே பரவியது.
டெவலப்பர்கள் மற்றும் டெவ்ஆப்ஸ் குழுக்களுக்குக் கிடைக்கும் பாடங்கள் தெளிவானவை:
- ஒவ்வொரு நிறுவலும் குறியீட்டை இயக்குகிறது. ஒரு சாதாரண npm தொகுப்பு கூட, நிறுவிய பின் ஏற்படும் ஒரு புழுவை மறைத்துவிடும்.
- ஒவ்வொரு டோக்கனும் அதிக மதிப்பைக் கொண்டுள்ளது. ஒருமுறை திருடப்பட்டால், அது தீம்பொருளை மேலும் பரப்புவதற்குப் பயன்படுத்தப்படலாம்.
- ஒவ்வொரு pipeline சரிபார்ப்புகள் தேவை. இல்லாமல் guardrails சார்புநிலைகள், பணிப்பாய்வுகள் மற்றும் இரகசியங்களைப் பொறுத்தவரை, ஒரு சிறு சமரசம்கூட உற்பத்திச் சூழலை விரைவாகப் பாதிக்கக்கூடும்.
எனவே, ஷாய்-ஹுலுட் போன்ற தாக்குதல்களைத் தடுப்பதற்கு, தானியங்கு மற்றும் எளிதில் செயல்படுத்தக்கூடிய கட்டுப்பாடுகள் தேவைப்படுகின்றன. குழுக்கள், நிறுவுவதற்கு முன்பு npm தொகுப்புகளை ஸ்கேன் செய்ய வேண்டும், லாக்ஃபைல் பில்டுகளைப் பயன்படுத்த வேண்டும், விசித்திரமான பப்ளிஷிங் செயல்பாடுகளைக் கண்டறிய வேண்டும், மற்றும் டோக்கன்களைக் குறுகிய காலத்திற்கு மட்டுமே நீடிக்கச் செய்ய வேண்டும். இந்த நடவடிக்கைகள் இனி விருப்பத் தேர்வுக்குரியவை அல்ல. மாறாக, நவீன சூழலில் மீள்திறனுக்கான அடித்தளமாக அவை விளங்குகின்றன. pipelines.
சைஜெனியில், ஷாய்-ஹுலுட் விநியோகச் சங்கிலித் தாக்குதலை முழு திறந்த மூல சூழலமைப்புக்குமான ஒரு எச்சரிக்கையாக நாங்கள் காண்கிறோம். குறியீடு, npm தொகுப்புகள் மற்றும் பலவும் உருவாகும் இடத்திலேயே, விநியோகச் சங்கிலிப் பாதுகாப்பை நேரடியாக மேம்பாட்டுச் செயல்முறைக்குள் கொண்டு வருவதே, நீடித்த முன்னேற்றத்திற்கான வழியாகும். pipelineஇணைக்கிறது.
ஷாய்-ஹுலுட் தாக்குதலில் பாதிப்புக்குள்ளானதாக அறிவிக்கப்பட்ட npm தொகுப்புகள் மற்றும் பதிப்புகளின் முழுமையான பட்டியல் கீழே கொடுக்கப்பட்டுள்ளது. உங்கள் லாக்ஃபைல்கள், ரெஜிஸ்ட்ரிகள் மற்றும் CI-ஐ சரிபார்க்க இதைப் பயன்படுத்தவும். pipelineவெளிப்பாட்டிற்கான s.
பாதிக்கப்பட்ட தொகுப்புகளின் பட்டியல்
📦 சமரசம் செய்யப்பட்ட npm தொகுப்புகளின் முன்னோட்டம்
| தொகுப்பு பெயர் | பதிப்பு | தேதி வெளியிடு |
|---|---|---|
| json-rules-engine-simplified | 0.2.1 | 2025-09-14T17:58:51.203Z |
| விமானி | 0.8.8 | 2025-09-14T18:35:07.600Z |
| எம்சிபி-அறிவு-வரைபடம் | 1.2.1 | 2025-09-14T18:35:09.494Z |
| விமானத் தலைவர் | 0.3.1 | 2025-09-14T18:35:09.521Z |
| ஜம்ப்கேட் | 0.0.2 | 2025-09-14T18:35:09.651Z |
| டிவிஐ-சிஎல்ஐ | 0.1.5 | 2025-09-14T18:35:10.996Z |
| @thangved/callback-window | 1.1.4 | 2025-09-14T20:31:38.479Z |
| @tnf-dev/api | 1.0.8 | 2025-09-14T20:31:39.547Z |
| @tnf-dev/js | 1.0.8 | 2025-09-14T20:31:41.251Z |
| @tnf-dev/mui | 1.0.8 | 2025-09-14T20:31:41.259Z |
| @tnf-dev/core | 1.0.8 | 2025-09-14T20:31:42.728Z |
| @teselagen/react-table | 6.10.20 | 2025-09-14T20:37:08.597Z |
| @hestjs/demo | 0.1.2 | 2025-09-14T20:45:52.348Z |
| @nexe/eslint-config | 0.1.1 | 2025-09-14T20:45:53.625Z |
| @hestjs/eslint-config | 0.1.2 | 2025-09-14T20:45:55.044Z |
| @nexe/config-manager | 0.1.1 | 2025-09-14T20:45:55.066Z |
| @nexe/logger | 0.1.3 | 2025-09-14T20:45:55.170Z |
| @hestjs/logger | 0.1.6 | 2025-09-14T20:45:55.197Z |
| @hestjs/validation | 0.1.6 | 2025-09-14T20:45:55.595Z |
| @hestjs/core | 0.2.1 | 2025-09-14T20:45:55.888Z |
➡️ சமரசம் செய்யப்பட்ட தொகுப்புகளின் முழுப் பட்டியலைக் காண்க
| தொகுப்பு பெயர் | பதிப்பு | தேதி வெளியிடு |
|---|---|---|
| json-rules-engine-simplified | 0.2.1 | 2025-09-14T17:58:51.203Z |
| விமானி | 0.8.8 | 2025-09-14T18:35:07.600Z |
| எம்சிபி-அறிவு-வரைபடம் | 1.2.1 | 2025-09-14T18:35:09.494Z |
| விமானத் தலைவர் | 0.3.1 | 2025-09-14T18:35:09.521Z |
| ஜம்ப்கேட் | 0.0.2 | 2025-09-14T18:35:09.651Z |
| டிவிஐ-சிஎல்ஐ | 0.1.5 | 2025-09-14T18:35:10.996Z |
| @thangved/callback-window | 1.1.4 | 2025-09-14T20:31:38.479Z |
| @tnf-dev/api | 1.0.8 | 2025-09-14T20:31:39.547Z |
| @tnf-dev/js | 1.0.8 | 2025-09-14T20:31:41.251Z |
| @tnf-dev/mui | 1.0.8 | 2025-09-14T20:31:41.259Z |
| @tnf-dev/core | 1.0.8 | 2025-09-14T20:31:42.728Z |
| @teselagen/react-table | 6.10.20 | 2025-09-14T20:37:08.597Z |
| @hestjs/demo | 0.1.2 | 2025-09-14T20:45:52.348Z |
| @nexe/eslint-config | 0.1.1 | 2025-09-14T20:45:53.625Z |
| @hestjs/eslint-config | 0.1.2 | 2025-09-14T20:45:55.044Z |
| @nexe/config-manager | 0.1.1 | 2025-09-14T20:45:55.066Z |
| @nexe/logger | 0.1.3 | 2025-09-14T20:45:55.170Z |
| @hestjs/logger | 0.1.6 | 2025-09-14T20:45:55.197Z |
| @hestjs/validation | 0.1.6 | 2025-09-14T20:45:55.595Z |
| @hestjs/core | 0.2.1 | 2025-09-14T20:45:55.888Z |
| @hestjs/cqrs | 0.1.6 | 2025-09-14T20:45:55.966Z |
| @hestjs/scalar | 0.1.7 | 2025-09-14T20:45:56.386Z |
| ng2-file-upload | 7.0.3 | 2025-09-15T02:44:29.555Z |
| மின்தேக்கி-அறிவிப்பு கையாளி | 0.0.2 | 2025-09-15T04:54:48.431Z |
| மின்தேக்கி-செருகுநிரல்-வோனேஜ் | 1.0.2 | 2025-09-15T04:54:48.501Z |
| மின்தேக்கி-செருகுநிரல்-சுகாதாரச் செயலி | 0.0.2 | 2025-09-15T04:54:48.704Z |
| மின்தேக்கி ஆண்ட்ராய்டு அனுமதிகள் | 0.0.4 | 2025-09-15T04:54:48.753Z |
| voip-callkit | 1.0.2 | 2025-09-15T04:54:49.223Z |
| மின்தேக்கி-செருகுநிரல்-i ஆரோக்கியம் | 1.1.8 | 2025-09-15T04:55:08.113Z |
| @art-ws/common | 2.0.22 | 2025-09-15T05:21:15.411Z |
| @art-ws/config-eslint | 2.0.4 | 2025-09-15T05:21:17.199Z |
| ngx-ws | 1.1.5 | 2025-09-15T05:21:17.514Z |
| @art-ws/slf | 2.0.15 | 2025-09-15T05:21:17.524Z |
| @art-ws/http-server | 2.0.21 | 2025-09-15T05:21:17.745Z |
| pm2-gelf-json | 1.0.4 | 2025-09-15T05:21:18.413Z |
| @art-ws/di | 2.0.28 | 2025-09-15T05:21:18.488Z |
| @art-ws/di-node | 2.0.13 | 2025-09-15T05:21:18.849Z |
| @art-ws/config-ts | 2.0.7 | 2025-09-15T05:21:19.408Z |
| @art-ws/db-context | 2.0.21 | 2025-09-15T05:21:19.814Z |
| @art-ws/openapi | 0.1.9 | 2025-09-15T05:21:19.969Z |
| @art-ws/web-app | 1.0.3 | 2025-09-15T05:21:20.383Z |
| @art-ws/ssl-info | 1.0.9 | 2025-09-15T05:21:20.927Z |




