
LinkedIn iş təklifində gizlədilmiş arxa qapı: saxta rekruter necə tələ qurdu
İş elanı çərçivəsində GitHub reposuna baxması xahiş olunan tərtibatçı npm install zamanı işə düşən gizli arxa qapı aşkarladı. Repodaki commit-lər və «rekruterin» profili layihədə heç vaxt işləməmiş iki real şəxsə məxsus idi.
2026-cı ilin iyun ayının əvvəlində full-stack tərtibatçı Roman İmankulov LinkedIn-də kiçik bir kripto startapının «rekruterindən» mesaj aldı. Bir neçə günlük yazışmadan sonra həmin şəxs baş mühəndis axtardıqları yarımçıq prototipi təsvir etdi və baxması üçün açıq GitHub reposu göndərdi — xüsusilə «köhnəlmiş Node modulları problemi»nə baxmağı xahiş etdi. Mövcud kod bazasına baxmaq qeyri-adi deyil, amma nəsə şübhə doğurdu və tərtibatçı daha ehtiyatlı olmağa qərar verdi.
Reponu öz maşınında klonlayıb asılılıqları quraşdırmaq əvəzinə Hetzner-də müvəqqəti VPS qaldırdı, reponu oraya klonladı və Pi adlı AI agentini yalnız oxuma rejimində, sadəcə fayl oxuma alətləri aktiv şəkildə işə saldı: read, grep, find, ls.
Test faylının içindəki tələ
Agent demək olar ki, dərhal app/test/index.js faylında dayandı. Repo Node backend-i olan React frontend təəssüratı yaradırdı, tələ isə test dəsti kimi maskalanmış təxminən 250 sətirdən ibarət idi. İçəridə URL hissələrdən yığılırdı: «https» protokolu, «store» domeni, «rest-icon-handler» subdomeni, «/icons/» yolu və «77» tokeni.
225-ci sətirdə, şərhə çevrilmiş testlərin arasında, serverin geri göndərdiyi hər şeyi maşında icra edən kod gizlənmişdi. Fayl testlərin işləməsini gözləmirdi: app/index.js require('./test') çağırışını icra edirdi, package.json isə app/index.js-i prepare skripti vasitəsilə başlanğıca bağlayırdı. npm prepare skriptini npm install-dan sonra avtomatik işlədir; yəni sadəcə asılılıqları quraşdırmaq arxa qapını işə salırdı. «Köhnəlmiş modullar» barədə tapşırıq yem idi.
İki dəfə borc alınmış kimlik
Repodaki 39 commit-in hamısı real bir tərtibatçının adı və e-poçtu ilə yazılmışdı — adi LinkedIn profili, şəxsi saytı və GitHub-da uzun tarixçəsi olan full-stack mühəndis. İmankulov ona yazdı və öyrəndi ki, həmin şəxs bu şirkətdə heç vaxt işləməyib və repoya heç bir aidiyyəti yoxdur; o, əvvəllər də GitHub-da təqlidə məruz qalmış və buna görə bir reposu silinmişdi.
«Rekruterin» profili də borc alınmışdı: uzun mədəniyyət təcrübəsi olan, texniki heç nəyi bulunmayan tanınmış incəsənət jurnalistinə aid idi. İmankulov layihəni quraşdıra bilmədiyini deyəndə «jurnalist» bir anda npm və Node versiyaları üzrə mütəxəssisə çevrildi və onu npm install işlətməyə təkidlə sövq etdi.
Bundan çıxan nəticələr
İmankulov yazır ki, bu cür hücumlar barədə əvvəl də eşitmişdi, amma biri onun özünə gələndə yenə də hazırlıqsız yaxalandı; yorğun və ya tələsik bir gündə npm install işlətməsi asan idi. O, reponu GitHub-a, «rekruteri» isə LinkedIn-ə şikayət etdi. Hələlik heç nə dəyişməyib və kod hələ də əlçatandır.
İkinci nəticə texnikidir: kodu yalnız oxuma rejimində işləyən agentlə nəzərdən keçirmək əllə oxumaqdan daha məhsuldar oldu. Arxa qapı səliqəsiz başlanğıc kodu kimi maskalanmışdı, amma agent onu saniyələr içində gördü. Praktik qayda sadədir: tanımadığı repoları təcrid olunmuş mühitdə açın və kod oxunmadan heç nə quraşdırmayın.
SiTech — AI ilə gücləndirilmiş veb hazırlanması
Sürətli və müasir saytlar qurur, AI-ı real biznes proseslərinə gətiririk. Layihəniz və ya sualınız var? Kömək etməyə hazırıq.