პროგრამირებაში არსებობს გაუწერელი წესი: კოდის რეპოზიტორის კლონირება და მისი რედაქტორში გახსნა უსაფრთხოა, სანამ თავად არ გაუშვებთ რაიმე სკრიპტს. თუმცა, SafeDep-ის უახლესი კვლევა ადასტურებს, რომ ეს აღარ არის სიმართლე. ჰაკერებმა აღმოაჩინეს ახალი გზა, რათა მავნე კოდი გაუშვან დეველოპერის კომპიუტერზე მანამ, სანამ ის კოდის პირველ სტრიქონსაც კი გადახედავს.

როგორ მუშაობს თავდასხმის მექანიზმი?

თავდასხმის მთავარი ინსტრუმენტი არ არის მავნე დამოკიდებულება (dependency) ან ფარული ინსტალაციის სკრიპტი. ეს არის ერთი შეხედვით ჩვეულებრივი კონფიგურაციის ფაილი, რომელიც უკვე დევს რეპოზიტორში. ისეთი ინსტრუმენტები, როგორიცაა VS Code, Cursor, Claude Code, Gemini CLI, npm და Composer, ამ ფაილებს ავტომატურად კითხულობენ და ასრულებენ.

მავნე კოდის გამშვები მექანიზმი ხშირად იმალება ფაილებში, რომლებიც დეველოპერებს თითქმის არასდროს შემოუწამიათ. მაგალითად, Miasma-ს ჭიის კამპანიის დროს, თავდამსხმელებმა გამოიყენეს 4.3 მეგაბაიტიანი სკრიპტი, რომელიც დაშიფრულია და შესრულებისას იპარავს წვდომის გასაღებებს AWS-დან, Azure-დან, Kubernetes-იდან და GitHub-დან.

პოპულარული ინსტრუმენტების მოწყვლადობა

  • Claude Code და Gemini CLI: იყენებენ SessionStart ჰუკებს, რომლებიც ბრძანებას ასრულებენ სესიის გახსნისთანავე.
  • Cursor: იყენებს პროექტის წესებს (.mdc ფაილები), რომლებიც აიძულებს AI ასისტენტს, შეასრულოს მავნე სკრიპტი, როგორც დაყენების ნაწილი.
  • VS Code: იყენებს tasks.json-ს, რომელიც ავტომატურად რთავს დავალებებს საქაღალდის გახსნისას.
  • npm და Composer: იყენებენ სასიცოცხლო ციკლის ჰუკებს, როგორიცაა post-install-cmd, რაც ინსტალაციის პროცესშივე ააქტიურებს საფრთხეს.

როგორ დავიცვათ თავი?

უსაფრთხოების ექსპერტები გვირჩევენ, რომ კონფიგურაციის ფაილებს ისეთივე სიფრთხილით მოვეპყროთ, როგორც თავად პროგრამულ კოდს. დეველოპერებმა უნდა შეამოწმონ diff-ები ისეთი ფაილებისთვის, როგორიცაა .vscode/, .cursor/, package.json ან Gemfile.

თუ ეჭვი გაქვთ, რომ თქვენი სამუშაო გარემო კომპრომეტირებულია, დაუყოვნებლივ გადაატრიალეთ (rotate) ყველა წვდომის გასაღები და ტოკენი. ასევე, რეკომენდებულია უცნობი რეპოზიტორების გახსნამდე მათი შინაარსის გრეპით (grep) შემოწმება, რათა დადგინდეს, არის თუ არა მათში ავტომატური გაშვების ბრძანებები.