આ અઠવાડિયે એક નકલી ક્લાયન્ટે મારા ઇનબોક્સમાં એક માલશિયસ GitHub રિપોઝિટરી મોકલી દીધી, અને માત્ર સ્ટાર્ટર સ્ક્રિપ્ટ ચલાવવાથી બે દિવસનું કામ ભૂંસાઈ ગયું અને મારા બ્રાઉઝરમાં સચવાયેલા તમામ પાસવર્ડ્સ ખુલ્લા પડી ગયા.

તે "ક્લાયન્ટે" ઉચ્ચ પગારવાળી સિનિયર-એન્જિનિયરની ભૂમિકા માટે પોસ્ટ મૂકી હતી, ઝડપથી મેસેજ કર્યો અને એક વ્યવસ્થિત દેખાતી રિપોઝિટરી મોકલી. વિનંતી સાવ સરળ હતી: ક્લોન કરો, npm run dev ચલાવો, અને ડેમો કામ કરે છે તે સાબિત કરવા માટે સ્ક્રીનશોટ મોકલો—કોઈ કરાર નહીં, કોઈ બેકગ્રાઉન્ડ ચેક નહીં. જે ક્ષણે ડેવ સર્વર શરૂ થયું, તે જ ક્ષણે એક કોન્ફિગરેશન ફાઇલમાં છુપાયેલા કોડ દ્વારા કમાન્ડ-એન્ડ-કંટ્રોલ (C2) સર્વર સાથે સંપર્ક કરવામાં આવ્યો, બીજા તબક્કાનું પેલોડ (payload) મેળવવામાં આવ્યું અને લોકલ મશીનમાંથી ક્રેડેન્શિયલ્સ (credentials) ચોરવાનું શરૂ કરી દીધું.

હુમલો કેવી રીતે થયો

આ માલશિયસ પેલોડ postcss.config.js માં હતો, જે એક એવી ફાઇલ છે જેના પર મોટાભાગના ડેવલપર્સ માત્ર નજર નાખે છે કારણ કે તેમાં સામાન્ય રીતે થોડા સાદા CSS પ્રોસેસિંગ નિયમો હોય છે. આ કિસ્સામાં, હુમલાખોરે એક કાયદેસરના સ્ટેટમેન્ટની બહુ જ જમણી બાજુએ ઓબ્ફસ્કેટેડ (obfuscated) JavaScript ની એક લાઇન ઉમેરી દીધી હતી, જે અન્ય લાઇન સાથે ભળી જાય તે રીતે સ્પેસ દ્વારા છુપાવવામાં આવી હતી. જ્યારે npm run dev કમાન્ડ દ્વારા PostCSS પાઇપલાઇન ચલાવવામાં આવી, ત્યારે આ છુપાયેલી લાઇન કોઈના ધ્યાનમાં આવ્યા વગર રન થઈ ગઈ.

માલવેરે ઝડપથી ત્રણ પગલાં લીધા:

  • C2 સંપર્ક – તેણે હુમલાખોરના નિયંત્રણ હેઠળના સર્વર સાથે નેટવર્ક કનેક્શન બનાવ્યું અને કમ્પ્રોમાઇઝ થયેલ હોસ્ટની જાણ કરી.
  • બીજા તબક્કાનું ડાઉનલોડ – તેણે વધારાનો કોડ ખેંચ્યો જેમાં વાસ્તવિક ડેટા-એક્સફિલ્ટરેશન (data-exfiltration) લોજિક હતું.
  • બ્રાઉઝર ક્રેડેન્શિયલ ચોરી – macOS પર તેણે સિસ્ટમ કીચેન (keychain) માં સચવાયેલી Chrome Safe Storage કી વિશે પૂછપરછ કરી. જો વપરાશકર્તાએ કીચેન પ્રોમ્પ્ટને મંજૂરી આપી, તો હુમલાખોરે Chrome માં સેવ કરેલા તમામ પાસવર્ડ્સ મેળવી લીધા.

તાત્કાલિક ચોરી સિવાય, આ પેલોડે પોતાને કેટલાક સામાન્ય ડેવલપર ટૂલ્સ—VS Code, npm, Discord—માં લખી દીધા, જેથી ભવિષ્યમાં જ્યારે પણ આ એપ્લિકેશન્સ લોન્ચ થાય, ત્યારે તે માલશિયસ કોડ ફરીથી સક્રિય થઈ જાય. માત્ર રીબૂટ કરવાથી ઇન્ફેક્શન દૂર થયું નહીં; પછીનું npm install અથવા એડિટર ખોલવાથી બેકડોર ફરીથી જીવંત થઈ ગયું.

રેડ ફ્લેગ્સ (Red flags) જે અવારનવાર ધ્યાન બહાર રહી જાય છે

  • કોઈપણ કરાર પર સહી કર્યા પહેલા કોડ રન કરવાની વિનંતી. કાયદેસરની હાયરિંગ પ્રક્રિયામાં સામાન્ય રીતે કોઈપણ પ્રોપ્રાઇટરી (proprietary) કામ શેર કરતા પહેલા ઔપચારિક કરાર કરવામાં આવે છે.
  • “પ્રોજેક્ટ બ્રીફ” તરીકે ઓળખાતી કોમ્પ્રેસ્ડ ફાઇલો. Zip અથવા RAR આર્કાઇવ્સમાં એક્ઝિક્યુટેબલ સ્ક્રિપ્ટ્સ અથવા માલશિયસ બાઈનરી છુપાયેલી હોઈ શકે છે.
  • “પ્લેટફોર્મ ફિલ્ટર્સને બાયપાસ કરવા” માટે પર્સનલ ઇમેઇલ એડ્રેસની માંગણી. આ યુક્તિ વાતચીતને સુરક્ષિત પ્લેટફોર્મ પરથી દૂર લઈ જવા માટે કરવામાં આવે છે, જ્યાંથી દુરુપયોગની જાણ કરી શકાય.
  • જોબ ડિસ્ક્રિપ્શન જેમાં ઉમેદવારને ક્રિપ્ટો વોલેટમાં ફંડ ભરવા અથવા ટેસ્ટ ટોકન્સ ખરીદવા માટે કહેવામાં આવે. આવા આદેશો સાચા ડેવલપમેન્ટ કામ માટે અસામાન્ય છે.

સુરક્ષિત રહેવા માટેના વ્યવહારુ પગલાં

  1. તપાસ કર્યા વગર ક્યારેય અજાણ્યાનો કોડ એક્ઝિક્યુટ ન કરો. રિપોઝિટરીને રીડ-ઓન્લી વ્યુમાં ખોલો (દા.ત., GitHub પર raw file વ્યુ દ્વારા) અને દરેક સ્ક્રિપ્ટ, ખાસ કરીને કોન્ફિગરેશન ફાઇલો અને package.json ના scripts એન્ટ્રીઝ તપાસો.
  2. તમામ એટેચમેન્ટ્સને પ્લેન ટેક્સ્ટ તરીકે ગણો. જો zip ફાઇલ મોકલવામાં આવે, તો તેને સેન્ડબોક્સ એન્વાયરમેન્ટમાં એક્સટ્રેક્ટ કરો અને કંઈપણ ખોલતા પહેલા તેની સામગ્રી તપાસો.
  3. બ્રાઉઝર સ્ટોરેજને બદલે ડેડિકેટેડ પાસવર્ડ મેનેજરનો ઉપયોગ કરો. જો બ્રાઉઝરની કીચેન કમ્પ્રોમાઇઝ થાય તો પણ, મેનેજરનું વોલ્ટ અલગ રહે છે.
  4. નેટવર્ક એક્સેસ વગરના આઇસોલેટેડ વર્ચ્યુઅલ મશીન અથવા કન્ટેનરમાં અવિશ્વાસપાત્ર કોડ ચલાવો. આ હુમલાખોરને C2 સર્વર સુધી પહોંચતા અટકાવે છે.
  5. તમામ એકાઉન્ટ્સ પર ટુ-ફેક્ટર ઓથેન્ટિકેશન (2FA) સક્ષમ કરો. જો પાસવર્ડ ચોરાઈ જાય, તો બીજો ફેક્ટર અનધિકૃત લોગિનને અટકાવે છે.
  6. ડેવલપર ટૂલ્સને અપ-ટુ-ડેટ રાખો અને જ્યાં ઉપલબ્ધ હોય ત્યાં ઓટોમેટિક ઇન્ટિગ્રિટી ચેક્સ સક્ષમ કરો. કેટલાક એડિટર્સ હવે કોર ફાઇલોમાં અણધાર્યા ફેરફાર થાય ત્યારે ચેતવણી આપે છે.

જો તમને શંકા હોય કે તમે માલશિયસ કોડ ચલાવ્યો છે, તો માની લો કે સિસ્ટમ કમ્પ્રોમાઇઝ થઈ ગઈ છે. જરૂરી ડેટાનો બેકઅપ લો, ડ્રાઇવ સાફ કરો અને ઓપરેટિંગ સિસ્ટમ ફરીથી ઇન્સ્ટોલ કરો. માત્ર રીબૂટ કરવાથી એવા પર્સિસ્ટન્સ મિકેનિઝમ (persistence mechanism) ને દૂર કરી શકાશે નહીં જે સામાન્ય એપ્સમાં ફાઇલોને ફરીથી લખે છે.

ટૂંકમાં: છુપાયેલી JavaScript ની એક લાઇન સામાન્ય ડેમોને સંપૂર્ણ ક્રેડેન્શિયલ ચોરીના ઓપરેશનમાં બદલી શકે છે. જ્યાં સુધી તમે તેને વેરિફાય ન કરો ત્યાં સુધી દરેક રિપોઝિટરીને અવિશ્વાસપાત્ર માનો, અને આઇસોલેશનને તમારા વર્કફ્લોનો ડિફોલ્ટ ભાગ બનાવો. ક્ષણભરની ઉતાવળની કિંમત ફાઇલને ફરીથી તપાસવામાં ખર્ચાતા પ્રયત્નો કરતા ઘણી વધારે છે.