या आठवड्यात एका बनावट क्लायंटने माझ्या इनबॉक्समध्ये एक घातक GitHub रिपॉझिटरी पाठवली, आणि फक्त स्टार्टर स्क्रिप्ट रन केल्यामुळे माझे दोन दिवसांचे काम वाया गेले आणि माझ्या ब्राउझरमध्ये साठवलेले सर्व पासवर्ड्स उघड झाले.

त्या "क्लायंट"ने उच्च पगाराची सीनियर-इंजिनिअरची नोकरी पोस्ट केली होती, वेगाने मेसेज केले आणि एक व्यवस्थित दिसणारे रिपॉझिटरी (repo) पाठवले. त्यांची विनंती साधी होती: क्लोन करा, npm run dev रन करा आणि डेमो काम करतोय हे सिद्ध करण्यासाठी स्क्रीनशॉट पाठवा—कोणताही करार नाही, कोणतीही बॅकग्राउंड चेक नाही. जसा डेव्हलपमेंट सर्व्हर सुरू झाला, तसा कॉन्फिगरेशन फाईलमधील लपलेल्या कोडने कमांड-अँड-कंट्रोल (C2) सर्व्हरशी संपर्क साधला, दुसरा टप्पा (second-stage) पेलोड मिळवला आणि स्थानिक मशीनमधून क्रेडेंशियल्स (credentials) चोरण्यास सुरुवात केली.

हल्ला कसा झाला

तो घातक पेलोड postcss.config.js मध्ये होता, ही अशी फाईल आहे ज्याकडे बहुतेक डेव्हलपर्स फक्त वरवर नजर टाकतात कारण त्यात सहसा काही साधे CSS प्रोसेसिंग नियम असतात. या प्रकरणात, हल्लेखोराने एका वैध स्टेटमेंटच्या अगदी उजव्या बाजूला अस्पष्ट (obfuscated) JavaScript ची एक ओळ जोडली होती, जी इतर कोडमध्ये मिसळून जाण्यासाठी स्पेसने भरलेली होती. जेव्हा npm run dev कमांडने PostCSS पाइपलाइन कार्यान्वित केली, तेव्हा ती लपलेली ओळ कोणाच्याही लक्षात न येता रन झाली.

मालवेअरने वेगाने तीन पावले उचलली:

  • C2 संपर्क – त्याने हल्लेखोराच्या नियंत्रणाखालील सर्व्हरशी नेटवर्क कनेक्शन जोडले आणि बाधित होस्टची माहिती दिली.
  • दुसऱ्या टप्प्यातील डाउनलोड – त्याने अतिरिक्त कोड खेचला ज्यामध्ये डेटा चोरीचा (data-exfiltration) खरा लॉजिक होता.
  • ब्राउझर क्रेडेंशियल चोरी – macOS वर, त्याने सिस्टम कीचेनमध्ये साठवलेली Chrome Safe Storage की शोधली. जर वापरकर्त्याने कीचेन प्रॉम्प्टला परवानगी दिली, तर हल्लेखोराने Chrome मध्ये सेव्ह केलेले सर्व पासवर्ड्स चोरले.

तात्काळ चोरी करण्यापलीकडे, त्या पेलोडने स्वतःला VS Code, npm, Discord यांसारख्या अनेक सामान्य डेव्हलपर टूल्समध्ये लिहून घेतले—जेणेकरून भविष्यात जेव्हा कधी ही ॲप्लिकेशन्स सुरू होतील, तेव्हा तो घातक कोड पुन्हा सक्रिय होईल. केवळ रीबूट केल्याने संसर्ग दूर झाला नाही; पुढच्या वेळी npm install केल्यावर किंवा एडिटर उघडल्यावर तो बॅकडोअर पुन्हा सक्रिय झाला.

अनेकदा दुर्लक्षित राहणारे धोक्याचे संकेत (Red flags)

  • कोणताही करार करण्यापूर्वी कोड रन करण्याची विनंती करणे. कायदेशीर भरती प्रक्रियेत सहसा कोणताही मालकीचा (proprietary) डेटा शेअर करण्यापूर्वी औपचारिक करार केला जातो.
  • "प्रोजेक्ट ब्रीफ" म्हणून सादर केलेल्या कॉम्प्रेस्ड फाईल्स. Zip किंवा RAR आर्काइव्हमध्ये एक्झिक्युटेबल स्क्रिप्ट्स किंवा घातक बायनरीज लपवल्या जाऊ शकतात.
  • "प्लॅटफॉर्म फिल्टर्स बायपास करण्यासाठी" वैयक्तिक ईमेल पत्त्यांची मागणी करणे. ही युक्ती संभाषण सुरक्षित प्लॅटफॉर्मवरून बाहेर नेण्यासाठी वापरली जाते, जिथे गैरवर्तनाबद्दल तक्रार करता येते.
  • उमेदवाराला क्रिप्टो वॉलेटमध्ये पैसे भरण्यास किंवा टेस्ट टोकन्स खरेदी करण्यास सांगणारे जॉब डिस्क्रिप्शन. अशा मागण्या खऱ्या डेव्हलपमेंट कामासाठी असामान्य आहेत.

सुरक्षित राहण्यासाठी व्यावहारिक पावले

  1. तपासणी केल्याशिवाय अनोळखी व्यक्तीचा कोड कधीही रन करू नका. रिपॉझिटरी 'रीड-ओन्ली' व्ह्यूमध्ये उघडा (उदा. GitHub वरील raw file view द्वारे) आणि प्रत्येक स्क्रिप्ट, विशेषतः कॉन्फिगरेशन फाईल्स आणि package.json मधील scripts एन्ट्रीज तपासा.
  2. सर्व अटॅचमेंट्सना साध्या टेक्स्टप्रमाणे समजा. जर झिप फाईल पाठवली असेल, तर ती सँडबॉक्स वातावरणात (sandboxed environment) एक्सट्रॅक्ट करा आणि काहीही उघडण्यापूर्वी त्यातील मजकूर तपासा.
  3. ब्राउझर स्टोरेजऐवजी समर्पित पासवर्ड मॅनेजर वापरा. जरी ब्राउझरची कीचेन धोक्यात आली तरी, मॅनेजरचा व्हॉल्ट (vault) सुरक्षित आणि वेगळा राहतो.
  4. अविश्वसनीय कोड नेटवर्क ॲक्सेस नसलेल्या आयसोलेटेड व्हर्च्युअल मशीन किंवा कंटेनरमध्ये रन करा. यामुळे हल्लेखोराला C2 सर्व्हरशी संपर्क साधण्यापासून रोखता येते.
  5. सर्व खात्यांवर टू-फॅक्टर ऑथेंटिकेशन (2FA) सक्षम करा. जर पासवर्ड चोरीला गेला, तर दुसरा घटक अनधिकृत लॉगिन रोखतो.
  6. डेव्हलपर टूल्स अपडेट ठेवा आणि जिथे शक्य असेल तिथे ऑटोमॅटिक इंटिग्रिटी चेक सक्षम करा. काही एडिटर्स आता मूळ फाईल्समध्ये अनपेक्षित बदल झाल्यास इशारा देतात.

जर तुम्हाला शंका असेल की तुम्ही एखादा घातक कोड रन केला आहे, तर तुमचे सिस्टम हॅक झाले आहे असे समजा. महत्त्वाचा डेटा बॅकअप घ्या, ड्राइव्ह पूर्णपणे पुसून टाका (wipe) आणि ऑपरेटिंग सिस्टम पुन्हा इंस्टॉल करा. केवळ रीबूट केल्याने अशा 'परसिस्टन्स मेकॅनिझम'चा (persistence mechanism) नायनाट होणार नाही, जे सामान्य ॲप्समधील फाईल्स पुन्हा लिहितात.

थोडक्यात सांगायचे तर: JavaScript ची एक लपलेली ओळ एका साध्या डेमोचे रूपांतर मोठ्या प्रमाणावरील क्रेडेंशियल चोरीच्या कार्यात करू शकते. जोपर्यंत तुम्ही पडताळणी करत नाही तोपर्यंत प्रत्येक रिपॉझिटरीवर विश्वास ठेवू नका आणि 'आयसोलेशन' (isolation) हा तुमच्या कामाचा अविभाज्य भाग बनवा. घाईघाईत होणाऱ्या चुकीची किंमत, फाईल पुन्हा एकदा तपासण्यासाठी लागणाऱ्या प्रयत्नांपेक्षा कितीतरी जास्त असते.