2 पॉइंट द्वारा GN⁺ 3 시간 전 | 1 टिप्पणियां | WhatsApp पर शेयर करें
  • एक social engineering attack का मामला, जिसमें एक recruiter ने LinkedIn message के ज़रिए संपर्क किया, lead engineer hiring का बहाना बनाया, और एक public GitHub repository की review करने को कहा
  • review के लिए भेजे गए code में test suite के रूप में छिपा बैकडोर था, और "deprecated Node modules issue देख देने" का अनुरोध npm install चलवाने वाला चारा था
  • शक होने पर local machine की बजाय ephemeral VPS पर read-only agent के साथ code की जांच की गई, और संदिग्ध file कुछ ही सेकंड में पकड़ ली गई
  • repository commits और recruiter profile, दोनों में असल लोगों की पहचान का दुरुपयोग किया गया था; एक में वास्तविक developer, और दूसरे में arts journalist का रूप धरा गया था
  • यह एक व्यावहारिक defensive lesson देता है कि शक, security hygiene, और read-only agent का इस्तेमाल, code को सीधे पढ़ने से भी ज्यादा असरदार हो सकता है

संपर्क कैसे हुआ

  • पिछले हफ्ते एक छोटे crypto startup के recruiter से LinkedIn message मिला
    • कुछ दिनों में कई बार message का आदान-प्रदान हुआ, और उसने lead engineer की जरूरत वाले एक टूटा हुआ proof-of-concept के बारे में बताया
    • review के लिए एक public GitHub repository भेजी गई और कहा गया, "deprecated Node modules issue देख दीजिए"
  • किसी मौजूदा codebase की review का अनुरोध अपने-आप में असामान्य नहीं था, लेकिन कुछ अटपटा लगा, इसलिए अतिरिक्त सावधानी बरती गई

जांच का तरीका

  • clone करने और dependencies install करने के बजाय, Hetzner पर एक ephemeral VPS शुरू किया गया और वहीं repository clone की गई
  • Pi को read-only mode में सेट किया गया, जिसमें सिर्फ file reading tools चालू थे
    • इस्तेमाल किया गया command: pi --tools read,grep,find,ls
  • agent से codebase review करने और संदिग्ध चीजें दिखाने को कहा गया, तो वह लगभग तुरंत app/test/index.js पर रुक गया

बैकडोर की संरचना

  • repository की बनावट React frontend + Node backend जैसी थी
  • जाल लगभग 250 lines की app/test/index.js file में था, जिसे test suite का रूप दिया गया था
  • उसके भीतर URL को टुकड़ों में बांटकर जोड़कर छिपाया गया था
  • comment की गई test dummy lines के बीच payload छिपा था, जो server जो भी भेजे, उसे user machine पर execute कर देता था
    • payload line 225 पर था

trigger mechanism

  • file test run होने का इंतजार नहीं करती थी
    • app/index.js में const test = require('./test') चलाकर app/test/index.js को load और run किया जाता था
  • package.json में app/index.js को startup stage से जोड़ा गया था
  • सबसे अहम हिस्सा prepare script था, जिसे npm, npm install के बाद अपने-आप चलाता है
    • यानी सिर्फ dependencies install करने से ही बैकडोर चल जाता था
  • "deprecated Node modules issue देखिए" वाला निर्देश, असल में npm install चलवाने का चारा था
  • sandbox में payload चलाकर second-stage payload भी देखा जा सकता था, लेकिन server से मिले code को चलाने का सबूत ही काफी था, इसलिए वहीं रुक गए

पहली चुराई गई पहचान

  • commits एक वास्तविक full-stack developer के नाम और email से किए गए थे
    • उसके पास सामान्य LinkedIn profile, personal website, और लंबे समय से सक्रिय GitHub account था
  • codebase विरासत में मिलने का बहाना करके उस developer से संपर्क किया गया
    • उसने कहा कि उसने उस company में कभी काम नहीं किया, पहले भी GitHub पर उसकी पहचान का इस्तेमाल कर fake repositories बनाई गई थीं और वे हटाई जा चुकी हैं, और उसका इस repository से कोई संबंध नहीं है
    • उसने यह भी बताया कि वह खुद भी ऐसी repositories report कर रहा है
  • पूरी commit history के 39 commits ऐसे developer के नाम पर थे, जिसने इस repository को कभी छुआ तक नहीं था

दूसरी चुराई गई पहचान

  • recruiter profile एक वास्तविक arts journalist की थी, जिसकी background पूरी तरह culture field में थी और उसमें कोई technical तत्व नहीं था
  • जब जवाब दिया गया कि install नहीं हो रहा, तो वही गैर-तकनीकी journalist फौरन npm और Node version expert बन गया और npm install चलाने का दबाव बनाने लगा

यह किसी के साथ भी हो सकता है

  • ऐसे attacks के बारे में पहले सुना था और HN पर भी पढ़ा था, लेकिन जब खुद निशाना बने तो कुछ हद तक चूकते-चूकते बचे
    • पहले message से ही शक था, लेकिन अगर दिन थकाऊ होता या जल्दबाज़ी होती, तो शायद ज्यादा सोचे बिना npm install चला देते
  • repository review के अनुरोध वाले LinkedIn messages के साथ थोड़ी सतर्कता और security hygiene जरूरी है
  • read-only agent से code review कराना, code को सीधे पढ़ने से ज्यादा असरदार साबित हुआ
    • बैकडोर को भद्दे शुरुआती code जैसा दिखाया गया था, लेकिन agent ने उसे कुछ ही सेकंड में पकड़ लिया
  • repository को GitHub पर और recruiter को LinkedIn पर report किया गया, लेकिन अब तक कोई बदलाव नहीं; code अभी भी public है

1 टिप्पणियां

 
GN⁺ 3 시간 전
Hacker News की राय
  • एक छोटे crypto startup के recruiter ने एक public GitHub repository भेजी और कहा कि टूटी हुई proof-of-concept repository को review कर दें, साथ ही “deprecated Node modules issue” चेक करने को कहा — यह दरअसल npm install के लिए उकसाने वाली phishing थी
    prepare script npm install के बाद अपने-आप चलती थी, और server से आने वाला arbitrary code local machine पर चलाने वाला backdoor थी; LinkedIn पर इस तरह की phishing हो सकती है, यह चौंकाने वाली हद तक गंभीर लगता है

    • LinkedIn कंपनियों को यह सुविधा नहीं देता कि वे उन users को deny कर सकें जो दावा करते हैं कि वे $company में काम करते हैं, और अगर profile में लिखा हो तो वे official company page पर भी दिखते हैं
      हमारी कंपनी में भी ऐसे fake recruiters थे जो यही scam कर रहे थे, और वे काफ़ी believable fake profiles थे जिन पर LinkedIn Premium से जुड़ी posts भी थीं, लेकिन वे असली employee नहीं थे
      कितनी भी report करो, वे हटे नहीं; आखिरकार LinkedIn में काम करने वाले एक जानकार को दारू पिलाकर मामला सुलझाया, लेकिन हर startup के पास ऐसा connection नहीं होता
    • अगर कोई आपका दोस्त है, तो उसे NPM इस्तेमाल नहीं करने देना चाहिए
      जब लोग अब भी इसी तरह बार-बार फँस रहे हैं, तो समझ नहीं आता कि PNPM जैसे tools अपनाकर उस सबसे obvious और सबसे ज़्यादा abuse होने वाले hole को क्यों नहीं बंद किया जाता जहाँ code download करते वक्त arbitrary code execution हो जाता है
      जो tools code download करने की कोशिश करते ही arbitrary code चलाते हैं, उन्हें अब रुक जाना चाहिए
    • यह तरीका खासकर 2021~2022 के crypto/NFT boom के दौरान Upwork पर एक verified trick था, और किसी point पर crypto projects से निकलकर कई categories में फैल गया
      मुझे आख़िरी बार याद है कि download को Windows .scr screensaver file की तरह disguise किया गया था, और अब इसका LinkedIn तक आ जाना और भी बुरा चरण है
      platform को शायद यह “jobs growth” जैसा दिखता होगा, इसलिए वे ज़्यादा परवाह नहीं करेंगे; कुछ वैसा ही जैसे Google या Meta जैसे ad networks scam ads की बहुत परवाह नहीं करते
    • email निकालकर bullshitpowershellladendoucument.pdf.docx जैसी चीज़ भेजने वाली phishing तो देखी है, लेकिन सीधे LinkedIn DM से भेजना काफ़ी bold strategy है
    • हाल में बहुत interviews देते हुए मुझे कुछ साफ़-साफ़ scammers भी मिले; उम्मीद है कि यह इसलिए है क्योंकि ऐसे scams ज़्यादा आम हो गए हैं, न कि इसलिए कि मैं इतना बेवकूफ़ दिखता हूँ कि मुझे ठगा जा सके
  • यह तो साफ़ तौर पर crime लगता है, फिर भी समझ नहीं आता कि ऐसी चीज़ report करने और मदद पाने के लिए cybercrime का कोई मशहूर 911 जैसा channel क्यों नहीं है
    समाज को असली ख़तरे की रफ़्तार पकड़कर जल्दी support systems बनाने चाहिए, और organized crime के खिलाफ organized defense चाहिए

    • दुख की बात है कि malicious cybercriminals को “ऐसे देशों से crime करना जहाँ crime की परवाह नहीं की जाती” वाला एक अजीब-सा trick आता है
    • https://www.ic3.gov
      शायद जवाब न मिले, लेकिन अमेरिकी नागरिकों के लिए, और शायद किसी के लिए भी, जहाँ तक मैं जानता हूँ यह internet 911 के सबसे क़रीब है
    • असली समस्या यह है कि पूरी दुनिया में काम करने वाला कोई global 911 नहीं है
      दूसरी समस्या यह asymmetry है कि ऐसे scams बनाने में लगभग शून्य effort लगता है, लेकिन पकड़ने और prosecute करने में भारी मेहनत और astronomical cost लगती है
    • थोड़े cynical तरीके से कहें तो, लोग एक-दूसरे के साथ जो बुरी चीज़ें करते हैं उस पेड़ की यह काफ़ी ऊँची और छूने में मुश्किल डाल पर है
      यह Microsoft support बनकर बुज़ुर्गों को निशाना बनाने वाले scam calls जैसी category में है, और suspects को पकड़ना लगभग नामुमकिन है
      या तो वे tracks बहुत अच्छी तरह छिपाते हैं, या ज़्यादा आम तौर पर वे ऐसे देशों में रहते हैं जहाँ सरकार पश्चिमी लोगों को scam करने की परवाह नहीं करती, बल्कि कभी-कभी उसे tolerate भी करती है
    • FBI के पास भी IC3 है, लेकिन cybercrime response बहुत खराब है और practically बेकार है
      crime report करने पर भी शायद न मदद मिलेगी, न कोई आपसे संपर्क करेगा
  • यह अब एक सामान्य interview task के काफ़ी असहज रूप से क़रीब है
    कोई repository भेजे, कहे install टूटा हुआ है, ज़रा देख लो — यह situation बहुत natural लगती है, और कई developers अगर थके हों या job search में हों तो ज़्यादा सोचे बिना npm install चला सकते हैं

    • interview context में यह और भी बुरा है
      आप सुस्त नहीं दिखना चाहते, इसलिए शुरुआत में यह पूछने वाला step ही छोड़ देते हैं कि इसे चलाना भी चाहिए या नहीं
  • “repository GitHub पर report कर दी, recruiter को LinkedIn पर report कर दिया, लेकिन अभी तक कुछ नहीं बदला और code अब भी up है” — आह, Microsoft

    • मैंने LinkedIn पर CBC Canada News जैसा दिखने वाला ad देखा है
      वह एक fake video पर ले जाता था जिसमें Canada के प्रधानमंत्री सभी Canadians के लिए crypto investment plan announce कर रहे थे, और साथ में signup link भी था; report करने पर जवाब आया कि investigation में कोई policy violation नहीं मिला
    • अजीब नहीं है? Microsoft के पास LinkedIn, GitHub, NPM तीनों हैं
      तीनों में security या reliability issues हैं, और Microsoft जितना AI में गहराई से उतर रहा है, उतना लगता है कि चीज़ें बेहतर होने के बजाय और खराब हो रही हैं
      कंपनी के अंदर AI productivity, या जिसे कुछ लोग 10x productivity कहते हैं, वह आख़िर जा कहाँ रही है समझ नहीं आता
    • इसे DMCA violation के तौर पर report करना चाहिए था
      तब शायद तुरंत हट जाता
  • लगता है वही domain कई targets के खिलाफ इस्तेमाल हो रहा है
    3 महीने पहले की एक Reddit thread में भी ऐसा ही कुछ है: https://www.reddit.com/r/openclaw/comments/1rlet0h/someone_t...

  • समझ नहीं आता कि दुनिया के सारे operating systems अभी तक npm को block क्यों नहीं कर रहे
    लगता है ये लोग कभी नहीं सीखेंगे

    • इसका npm से ख़ास लेना-देना नहीं है
      ऐसे scams कई technologies के साथ हो सकते थे, यहाँ तक कि Makefile से भी काम चल जाता
  • काश Mac पर आखिरकार कोई ठीक-ठाक virtualization framework आ जाए
    1995 की तरह internet से बिना protection random scripts download करना अब काफ़ी थका देने वाला हो गया है
    किसी अजनबी से मिलकर उसकी चीज़ें अपने computer की गहराई तक डालते समय protective gear पहनना नहीं भूलना चाहिए

    • GitHub, AUR, NPM से random curl | bash scripts चलाना भी उतना ही बुरा है, लेकिन यहाँ के कई developers अब भी इस bad practice को लेकर संदिग्ध धारणाएँ रखते हैं
      पिछले कुछ हफ्तों में घूम रही कई छोटी Shai-Hulud-टाइप घटनाएँ दिखाती हैं कि यह कितना बुरा है
    • Mac पर पहले से एक काम की approach है
      IntelliJ में npm commands को Docker container के अंदर run करने के लिए configure किया जा सकता है
  • LinkedIn पर मिली job offers सब की सब बहुत suspicious लगीं
    जैसे platform के ज़रिए apply करो, या intro video record करो, या code platform के पीछे छिपे padding coding test पूरे करो

    • मेरा भाई बीमारी की वजह से लंबे समय तक बेरोज़गार था, फिर उसे LinkedIn पर एक काफ़ी believable “job offer” मिली
      उससे company laptop deposit के नाम पर cheque लिखने को कहा गया; ऊपर-ऊपर से भी यह बेतुका था, लेकिन वह लंबे समय से नौकरी ढूँढ रहा था, बहुत desperate था, और सच में खुश था कि आखिर नौकरी मिल गई
      लंबे समय से बेरोज़गार लोग कभी-कभी इतने desperate हो जाते हैं कि वे उन बड़े red flags को भी नज़रअंदाज़ कर देते हैं जिनमें पर्याप्त savings वाले या सिर्फ़ switch करने वाले employed लोग कभी नहीं फँसते
  • क्या आजकल ज़्यादातर NPM package authors इसी तरह hack नहीं हो रहे?
    लगता है axios maintainer भी LinkedIn के ज़रिए इसी approach का शिकार हुआ था

    • लगता है अपनी ही चाल में फँस गया
  • मैं LinkedIn सिर्फ़ job postings के लिए इस्तेमाल करता हूँ, लेकिन पिछले कुछ महीनों में वहाँ बेकार postings बहुत बढ़ गई हैं
    Ladders, Swooped जैसी और उनसे मिलती-जुलती कंपनियों की postings भरी पड़ी हैं, और अब लगता है LinkedIn को पूरी तरह छोड़ देने का समय आ गया है