رسم توضيحي تقني مجرد على خلفية كحلية داكنة: مكعب حزمة صغير بأسلوب المتجهات المسطحة في الوسط الأيسر، مع خط كهرماني رفيع يتقوّس نازلًا إلى تمثيل مضغوط لمحطة عمل مطوّر؛ وتتفرع مروحة من خيوط دقيقة بلون سماوي وأزرق فولاذي إلى اليمين من محطة العمل باتجاه عُقد دائرية صغيرة كثيرة على شبكة غير منتظمة، اثنتان منها تنحنيان عائدتين إلى الأعلى نحو مكعب الحزمة، وعقدة واحدة في أقصى اليمين تقع وحدها ومنفصلة. لا يظهر أي أشخاص أو شعارات أو نص. شعار OrcaRouter مركّب في الزاوية السفلية اليمنى.
AI Safety Incidents

تم تسميم SDK npm الخاص بـ Tensorlake لسرقة بيانات الاعتماد — ولمسح دليل المنزل الخاص بك إذا قمت بإلغاء الرمز المميز

الكاتب

Alistair Wren

تاريخ النشر

أحدث النماذج · 20عرض جميع النماذج →
المعايير: Artificial Analysis · يُحدَّث يوميًا
العودة إلى جميع المقالات

في 8 أكتوبر 2026، إصدار مسموم من tensorlake — حزمة تطوير البرمجيات npm لمنصة Tensorlake، التي تشغّل كوداً غير موثوق ومولّداً بواسطة LLM داخل بيئات اختبار معزولة — وصل إلى سجل npm. الإصدار 0.5.144 تم نشره في 01:12:07 UTC؛ يقول باحثو Socket إنهم أبلغوا عنه بعد حوالي إحدى عشرة دقيقة. لم يكن إصداراً مصرحاً به. تذكر Tensorlake أن المهاجم دفع الكود مباشرة إلى مستودع GitHub الخاص بالشركة ونشره من خلال سير عمل الإصدار الخاص بالمشروع، لذا حملت الحزمة إثبات منشأ npm صالح — شهادة موقعة توضح مكان بنائه، لمصدر كان قد تم تسميمه بالفعل. تقول الشركة إن الإصدار كان متاحاً لحوالي ساعة و40 دقيقة، من 01:12 إلى 02:54 UTC، قبل أن يزيله npm.

الحمولة لم تكن بحاجة إلى استيراد ولا إلى وكيل قيد التشغيل. preinstall خطاف في بيان الحزمة شغّل node lib/setup.mjs، وهو محمّل مموّه أسقط بيئة تشغيل Bun على الجهاز واستخدمها لتشغيل lib/Math_Symbol.js، وهو سارق لبيانات الاعتماد بحجم 856,501 بايت ودودة ذاتية الانتشار. أي شخص قام بتثبيت عادي لتلك النسخة الواحدة فقد نفّذها. ولأنها كانت الحزمة latest وسم، فإن تلك النسخة هي ما تم حلّ التثبيت الافتراضي إليه أثناء وجودها.

ما يجعل هذا السجل جديرًا بالحفظ ليس حجم الحمولة — فقد وُثّقت عائلة Shai-Hulud من قبل. بل قائمة الأهداف. إلى جانب رموز npm وGitHub، وبيانات اعتماد AWS، وأسرار Kubernetes وVault، ومفاتيح SSH، .env، وكلمات مرور المتصفح ومحافظ العملات المشفرة، جمعت هذه النسخة تحديدًا إعدادات أدوات تطوير الذكاء الاصطناعي وملفات MCP — تلك المرتبطة بـ Claude Code، وCursor، وKiro، وWindsurf، وZed، وفقًا لـ Socket. كما كتبت أيضًا .claude/settings.json و.vscode/tasks.json داخل المستودعات التي يمكنها الوصول إليها، لكي يعمل الكود مجددًا في المرة التالية التي يفتح فيها مطور ذلك المشروع في Claude Code أو VS Code. إنه هجوم على سلسلة التوريد يستهدف بشكل مباشر الأجهزة التي يبني الناس وكلاءهم عليها.

كيف تسرّب الإصدار من حساب أحد المشرفين؟

نشرت Socket وSafeDep وAikido كلٌّ منها تحليلها الخاص في 8 أكتوبر، وتتفق رواياتها بشأن الآلية. درجة الثقة في الأرشيف لهذا السجل هي A، وهو غير مُصنَّف كمتنازع عليه، ولا يوجد في المصادر ما يتعارض مع أيٍّ منها.

يتتبع تقرير SafeDep ثمانية إيداعات إلى المستودع main الفرع بين 01:20 و03:57 UTC في 7 أكتوبر، منسوبة إلى حساب مسؤول المستودع وتمت عبر واجهة GitHub على الويب. الإيداع الذي يستشهد به الأرشيف باعتباره أول إيداع مارق هو 41b38f0، مراجعة من أربعة ملفات من 03:44:48 UTC في 7 أكتوبر ورسالتها "Add files via upload" ويحمل توقيع GitHub verified signature — يوقّع GitHub الإيداعات التي تُجرى في محرره على الويب، لذا فإن "verified" يسجل واجهة التحرير، وليس الشخص. لم يلمس ذلك الإيداع أي ملفات سوى typescript/lib/Math_Symbol.js و typescript/lib/setup.mjs، وفقًا لواجهة GitHub API: الحمولة، ولا شيء آخر.

تقدّم SafeDep قراءة لسلوك المشغّل، وتصنّفها على أنها استنتاجها الخاص: التعديل الأول على خطاف preinstall كسر بنية JSON في الملف، وتلا ذلك إيداع إصلاح بعد تسع عشرة دقيقة، وهو ما تصفه بأنه يتوافق مع شخص يحرّر الملفات في متصفح بدلاً من مسار آلي مكتوب كسكربت. ولا يذكر أيّ مما نشرته Socket أو SafeDep أو Aikido أو StepSecurity أو Tensorlake الطريقة التي تم بها الاستيلاء على حساب المشرف.

لم يكن المهاجم بحاجة إلى رمز npm. وتفيد SafeDep بأن الحساب بدأ مشروع publish_npm.yaml سير العمل يدويًا في 8 أكتوبر عند 00:08 UTC؛ ويُظهر سجل البناء ملفات الحمولة داخل الحزمة المنشورة. استخدم الإصدار نشر npm الموثوق، والحزم الشقيقة tensorlake-native-* المنشورة من نفس التشغيل تحمل مصدر SLSA صالحًا — مصدر صالح فعليًا لبناء مصدر مسموم. صدر الإصدار بعد اثنتي عشرة دقيقة من بدء سير العمل.

يسجّل الأرشيف أن المستودع ظل مخترقًا لنحو 20 ساعة قبل أن يقع النشر — وهي الفجوة التي يوضّحها الجدول الزمني أدناه إيداعًا تلو الآخر — وهو ما يتوافق مع تصريح Tensorlake نفسه بأن المهاجم نشر «عبر سير عمل الإصدار الخاص بنا».

ما الذي فعلته الحمولة بمجرد تشغيلها

A screenshot of a card titled 'A credential stealer with an AI-tooling list', kicked 'tensorlake@0.5.144 · what the payload collected', subtitled 'Per Socket, SafeDep and Tensorlake's advisory — grouped by what each collector reached for'. Three columns of paired labels sit side by side. 'Publishing and source control' lists npm tokens from .npmrc, the token API and the OIDC exchange; GitHub tokens with a repository and workflow permission check; GitHub Actions secrets read from Runner.Worker memory; and cryptocurrency browser wallets across 14 extensions. 'AI agent tooling' lists ~/.claude.json for Claude Code settings; ~/.kiro/settings/mcp.json for Kiro MCP config; .cursor, Windsurf and Zed config and MCP files; and .claude/settings.json and .vscode/tasks.json written back into reachable repositories. 'Cloud, cluster and endpoint' lists AWS via STS, SSM Parameter Store and Secrets Manager; Kubernetes service-account tokens and kubeconfigs; HashiCorp Vault at 127.0.0.1:8200; SSH and GPG keys, .env files and Docker and CLI files; the Wallets row, wallet.dat, Exodus, Electrum and MetaMask; and saved passwords via a downloaded HackBrowserData binary. A footer reads 'Collector list per Socket's initial assessment, SafeDep's decoded payload analysis and the Tensorlake advisory (GHSA-8g63-53c9-65j2). Socket flags AI development tooling for Claude Code, Cursor, Kiro, Windsurf and Zed by name.'

يحدد تقييم Socket جمع البيانات من الملفات المحلية وبيئات CI ومصادر Kubernetes وVault، بالإضافة إلى تسريب البيانات والاستمرارية وتنفيذ شيفرة مورّدة عن بُعد. وقد أعادت SafeDep إنتاج الحمولة بعد فك الترميز: lib/setup.mjs يُنزّل Bun 1.3.13 من إصدار GitHub الرسمي ويستخدمه لتشغيل الدودة، وهو ينهي تنفيذه على مشغّلات CI — فالهدف جهاز مطوّر، وليس وكيل بناء. كما وجدت SafeDep أن الحمولة تحمل نسخة عادية من ذلك المُحمّل نفسه، وتزرعها في حزم ومستودعات أخرى.

تُشغّل الحمولة ثلاث طبقات تشويش، فكّتها SafeDep دون تنفيذ العيّنة: مصفوفة سلاسل خاصة بالمشوّش، وشفرة مخصّصة تستخدم الملح svksjrhjkcejg — مطابقة لتلك المُبلّغ عنها في اختراق keyv السابق — وAES-256-GCM على أحد عشر ملفًا مضمّنًا، بما في ذلك نصوص برمجية وخطافات ومفتاحان عامّان RSA. يحمل سطرها الأول وسم البناء WORMTAG='tensrlake'، مكتوبًا خطأً، وهكذا تميّز SafeDep بين هذا البناء وإعادة إصابة جارية.

بالإضافة إلى تكوين أدوات الذكاء الاصطناعي، فإن قائمة الجمع واسعة ومحددة: ~/.claude.json و ~/.kiro/settings/mcp.json لإعدادات الوكيل؛ مفاتيح SSH، وملفات CLI السحابية، .npmrc، .env، وملفات Docker وKubernetes، وسجل أوامر الصدفة؛ wallet.dat بالإضافة إلى بيانات Exodus وElectrum وLedger Live وملحقات محفظة المتصفح مثل MetaMask وPhantom؛ AWS STS، ومخزن معلمات SSM، وSecrets Manager؛ أسرار GitHub Actions المقروءة من Runner.Worker ذاكرة العملية؛ ورموز حسابات خدمة Kubernetes ورموز Vault. جلب ملفًا ثنائيًا لكل نظام أساسي من iseekaigogo[.]com/hbd/<platform> وشغّله بالوسيطات "dump -b all -c password -f json" — وهي وسيطات تتطابق مع أداة HackBrowserData، على الرغم من أن SafeDep تلاحظ أن الملف الثنائي نفسه لم يتم استرداده وتصنف التعريف على أنه استنتاج. وتضيف SafeDep أن الدودة تتوقف عن العمل عند الإعدادات المحلية الروسية.

A screenshot of a card titled 'Persistence, resolution, and the wipe trigger', kicked 'tensorlake@0.5.144 · staying power', subtitled 'The release was removed in under two hours; the implant it installed was built to outlive that.' Three columns sit side by side. 'Persistence: gh-token-monitor' lists a systemd user service on Linux, a LaunchAgent com.user.gh-token-monitor on macOS, a scheduled task with a PowerShell monitor on Windows, and files left behind in ~/.local/bin, ~/.config and %LOCALAPPDATA%. 'Endpoint resolution order' lists, in numbered order, the primary endpoint iseekaigogo[.]com:443/router; an Ethereum contract 0xb614155Fd88...1Df091B9; the public RPC endpoints that contract is read through, given as ~30 by Socket and 35 by SafeDep; signed GitHub commits found by the string thebeautifulmarchoftime; and public dead-drop repositories described as 'Shai-Hulud: Here We Go Again'. 'The dead-man switch' lists a poll of api.github.com/user every 60s, for 24 hours, firing on a 40x response to that token, with the effect rm -rf ~/ (advisory: home dir), armed only if the account has no orgs, and the order that matters: remove monitor, then revoke. A footer reads 'Per Socket's blog and SafeDep's analysis, with the C2 endpoint, the contract and the gh-token-monitor service confirmed in Tensorlake's advisory. Socket and SafeDep give different counts of the public RPC endpoints the contract is read through.'

الاستمرارية متعمدة. كتب Socket عن الحمولة: "هذا المزيج يوسّع الخطر إلى ما هو أبعد من مفتاح API مسروق واحد"، مضيفًا أن "الاستمرارية يمكن أن تحتفظ بوصول المهاجم بعد إزالة التبعية المتأثرة." يذكر SafeDep أن الدودة تُودِع ملفات خطاف Claude Code وVS Code باسم مؤلف git claude، وتزرع سير عمل "Run Copilot" يستخرج جميع أسرار المستودع ثم يحذف التشغيل والفرع. تنصح إرشادات Tensorlake المطورين الذين يفحصون سجلاتهم بالبحث عن فرع باسم dependabot/github_actions/format/setup-formatter والإيداعات المحررة تحت نفس الهوية.

يعمل Spread باستخدام رموز مسروقة بدلًا من الاعتماد على ثغرة ثانية. وتقول Socket إن الدودة تُعدّد الحزم المرتبطة بهوية نشر الضحية، وتبني إثبات منشأ Sigstore، وتعيد نشر إصدارات مسمومة. وتضيف SafeDep تفصيلًا مفاده أنها داخل CI تضيف تبعية git وتوقّع مخرجاتها باستخدام Fulcio وRekor — لذا فإن إثبات المنشأ على الحزمة التي تنشرها بعد ذلك صالح تمامًا كما كان إثبات المنشأ على 0.5.144.

العشرون ساعة قبل النشر

الفجوة بين أول commit خبيث والإصدار هي الجزء من الجدول الزمني الذي يفسر كيف أصبحت حزمة مسمومة تحمل إثبات منشأ صالحًا. جميع الأوقات بتوقيت UTC؛ أوقات الـ commit مأخوذة من SafeDep وواجهة GitHub API، وأوقات النشر والإزالة والتنبيهات مأخوذة من Tensorlake.

A screenshot of a card titled 'Compromised source in the repo, then one manual publish', kicked 'tensorlake@0.5.144 · the ~20-hour window', subtitled 'All times UTC. Commit times per SafeDep's timeline and the GitHub API; publish and removal times per the Tensorlake advisory.' Three columns sit side by side. '7 October 2026 — source, main branch' lists 01:20 setup.mjs and Math_Symbol.js added; 01:24 the preinstall script added; 01:43 package.json JSON repaired; 02:13 to 03:44 four loader and payload revisions; 03:44 commit 41b38f0, the payload commit; 03:57 the version set to 0.5.144. '8 October 2026 — release and removal' lists 00:08 publish_npm.yaml started by hand; 01:12:07 version 0.5.144 published to npm; 01:22:02 issue #1014 opened by StepSecurity; 01:23:10 flagged by Socket, about eleven minutes in; 02:54 the version removed, after roughly 1h 40m live; 20:24 version 0.5.145 published next. '9 October 2026 — disclosure closed' lists advisory GHSA-8g63-53c9-65j2; pull request #1016, source reverted and 0.5.145 cut; issue #1014 closed as completed; 0.5.143 as the last version stated unaffected; and no usage seen, per Tensorlake's user-agent telemetry. A footer reads 'The ~20-hour gap between the first rogue commit and the publish is SafeDep's commit timeline, and matches the archive's own upstream record.'

اقرأ التسلسل كاملًا: وصلت ملفات الحمولة إلى الفرع الرئيسي للمستودع في 7 أكتوبر، وتم ضبط الإصدار على 0.5.144 في الساعة 03:57 من ذلك الصباح، ولم يُنشر أي شيء حتى بدأ أحد الحسابات سير عمل الإصدار يدويًا في الساعة 00:08 من اليوم التالي. وظل الكود المصدري المخترَق في الفرع لنحو عشرين ساعة قبل أن تبنيَه خطوط أنابيب المشروع نفسها. هذا كل ما في الهجوم على مسار الإصدار — لا تصديق مزوّر، ولا حزمة tar أُعيد نشرها. كانت بيانات المنشأ دقيقة بشأن بناء كودٍ ما كان ينبغي له أبدًا أن يوجد في الفرع.

مفتاح الرجل الميت

الجزء من هذا الحادث الذي لا سابقة له في اختراقات npm السابقة هو ما يحدث بعد أن يتفاعل الضحية على نحو صحيح. إذا كان رمز GitHub المسروق ينتمي إلى حساب لا يضم مؤسسات، وفقًا لما تذكره SafeDep، فإن الدودة تثبّت gh-token-monitor: خدمة تستعلم من api.github.com/user باستخدام ذلك الرمز المسروق كل 60 ثانية، لمدة 24 ساعة. عندما يعيد GitHub استجابة 40x — كما يفعل لحظة إبطال الرمز — تشغّل خدمة المراقبة معالجًا يوفره المهاجم وتحذف الدليل الرئيسي للمستخدم.

يصف Socket المكوّن نفسه بأنه يستخدم مراقب PowerShell يستمر عبر ONLOGON مهمة مجدولة، وينفّذ معالجًا يوفّره المهاجم عبر Invoke-Expression، ويشير إلى أن الشيفرة تحمل السلسلة الحرفية "IfYouRevokeThisTokenItWillWipeTheComputerOfTheOwner"، التي شوهدت في موجات Shai-Hulud السابقة. وتسمّي SafeDep المعالج باسم rm -rf ~/. وصياغة Socket صريحة في أن هذا يُنفَّذ بغض النظر عن مكان حدوث الإبطال؛ فالمراقب محلي، والإبطال ليس كذلك. والمصادر الأربعة جميعها — Socket وSafeDep وStepSecurity وإرشاد Tensorlake نفسه — تعطي الترتيب ذاته للعمليات: أزل المراقب أولًا، ثم أبطِل.

ما هو ثابت، وما هو مستنتج فقط

يوثّق الأرشيف عدم وجود ضرر مؤكد لهذا المدخل، وتدعم المصادر ذلك بدلاً من مجرد عدم تناقضها معه.

• تذكر Tensorlake عدم وجود أي استخدام لهذا الإصدار. ويقول تقريرها الاستشاري إن الشركة تراقب استخدام SDK عبر ترويسات وكيل المستخدم ولم "ترصد أي استخدام لهذا الإصدار منذ إصداره". هذا تصريح من المورّد بشأن بيانات القياس الآلي الخاصة به، وليس عددًا مُدقّقًا.

• عدد التنزيلات ليس عدد الإصابات. يذكر Socket أن الحزمة لديها نحو 12,000 تنزيل أسبوعي، ويشير إلى أن هذا يصف الاستخدام الإجمالي للحزمة، وليس تنزيلات النسخة الخبيثة؛ وتستشهد SafeDep بنحو 106,000 تنزيل شهري على الحزمة نفسها. لا يُعد أي منهما دليلًا على أن 0.5.144 شُغّلت في أي مكان. تنسجم النافذة الزمنية للإصدار المُعلَّم لدى Socket ونافذة الساعتين لدى Tensorlake مع نسخة أُزيلت قبل أن تنتشر.

• ربما حدّت عيوب الحمولة نفسها من انتشارها. وجدت SafeDep عيبين: يحتاج مسار انتشار npm إلى ./dist/Math_Symbol.js على القرص ويتوقف بدونه، كما يبحث المحمّل المزروع عن ai_init.js بينما تكتب الدودة math_init.js. وتصنّف SafeDep هذه النتائج كقيود على الانتشار، ويتعامل المقال معها باعتبارها قراءة تحليل واحد للشيفرة، لا كضمان بأن شيئًا لم ينتشر.

• إثبات المنشأ حقيقي. هذه ليست دعوى محل نزاع: إذ تسجّل ميزة npm provenance المكان الذي بُنيت فيه الحزمة وسير العمل الذي بُنيت به، وفي هذه الحالة سجّلت الحقيقة — سير عمل الإصدار الخاص بالمشروع نفسه، وهو يبني مصدرًا مسمومًا. وتذكر نشرة Tensorlake ذلك صراحةً: "تحمل الحزمة إثبات منشأ npm صالحًا". ويضع Socket النقطة نفسها بوضوح عندما يشير إلى أن provenance "يخبر بمكان بناء الحزمة. لكنه لا يخبر بأن الشيفرة آمنة."

عدة تفاصيل متداولة هي ادعاءات تستند إلى تحليل واحد وينبغي قراءتها على هذا الأساس. أما الآلية المحددة التي حصل بها المهاجم على حساب المشرف فلم تنشرها أي من الجهات التي أصدرت تقاريرها ولا Tensorlake. ويظهر عنوان عقد Ethereum ودوره في تحديد نقطة النهاية في روايتي SafeDep وSocket — إذ تقول Socket إن الحمولة تحدد نقطة نهايتها عبر عقد Ethereum باستخدام نحو 30 نقطة نهاية RPC عامة مع بديل احتياطي على GitHub، بينما تضع SafeDep عدد نقاط RPC عند 35 وتفيد بأن العقد أعاد في 8 أكتوبر النطاق iseekaigogo.com — ويؤكد Tensorlake نقطة النهاية والعقد في تقريره التحذيري. يختلف العدد الدقيق لنقاط RPC بين التقريرين، أما التصميم فلا يختلف.

ثمة ثغرة واحدة في السجل العام تستحق أن تُذكر بوضوح. لا يُفيد أيٌّ من المصادر التي روجعت لهذا المقال بوجود إصابة مؤكدة في المراحل اللاحقة — أي حزمة أو مستودع آخر سمّمته الدودة باستخدام بيانات اعتماد مسروقة من هذا المستودع. كود الانتشار موجود وقد اطّلعت عليه SafeDep؛ أما ما إذا كان قد أسفر عن ضحية ثانية فأمر غير معروف.

ما الذي تغيّر بعد ذلك؟

كانت الاستجابة أسرع وأكثر تنسيقًا من الحادث.

• لقد اختفت النسخة. كانت متاحة من 01:12 إلى 02:54 UTC في 8 أكتوبر، وفقًا لـ Tensorlake؛ ويذكر SafeDep أن npm أزالها. عند الاستعلام مباشرةً من سجل npm في 10 أكتوبر لهذا المقال، 0.5.144 لم يعد يظهر بين الإصدارات المنشورة للحزمة، ووسم أحدث إصدار للحزمة هو 0.5.148. ويوجّه تنبيه Tensorlake المطورين إلى 0.5.143 باعتباره آخر إصدار غير متأثر.

• تم نشر التنبيه مع إصلاح. يوضح إرشاد Tensorlake رقم GHSA-8g63-53c9-65j2 أن حزم tensorlake على PyPI و crates.io وواجهة سطر الأوامر tensorlake لم تتأثر — فقط حزمة npm هي التي تأثرت — وأن الإصدارات 0.5.143 وما قبلها غير متأثرة. ويذكر SafeDep أن المشرفين استرجعوا المصدر في طلب السحب #1016 وأصدروا 0.5.145.

• سلسلة الإفصاح مكتملة بشكل غير معتاد. فتح الباحث في StepSecurity، أشيش كورمي، تذكرة GitHub #1014 في 01:22:02 UTC في 8 أكتوبر — بعد نحو عشر دقائق من النشر — مشيرًا إلى مقالة StepSecurity الخاصة عمّا تسميه دودة «hostage token». وعلّق أوليفر سميث من Aikido بأن الحمولة أُدخلت في الالتزام 41b38f0 وحددها كبرمجية Shai-Hulud جديدة لسرقة المعلومات. المشرف ديفيد لورينزو — هوية المشرف المدرجة على حزمة npm باسم calavera — ردّ في 9 أكتوبر مؤكدًا التنبيه الأمني وأغلق التذكرة كمكتملة في اليوم نفسه. عنوان التذكرة نفسه يتتبع الأدلة: بدأ كتقرير «قد يكون ضارًا» وأُعيدت تسميته، بحلول وقت إغلاقه، ليصف الحمولة بأنها ضارة دون تحفظ.

• الحملة التي ينتمي إليها هذا أكبر من هذه الحزمة. تضع Socket وSafeDep وAikido جميعًا إصدار Tensorlake ضمن موجة ChainDrop / Mini Shai-Hulud التي وُثّقت لأول مرة في أوائل أغسطس 2026، والتي شمل ضحاياها على npm keyv، cacheable والحزم ذات الصلة. يقول إشعار Tensorlake الأمر نفسه، مستشهدًا بـ Socket وSafeDep وAikido.

تتمثل إرشادات Socket لأي شخص ثبّت هذه النسخة في أنه ينبغي التعامل مع المضيف باعتباره مخترقًا: افحص ملفات القفل وملفات المانيفست وسجلات البناء بحثًا عن تلك النسخة؛ وأزل gh-token-monitor الخدمة قبل إبطال أي رمز؛ ثم بدّل بيانات الاعتماد من جهاز نظيف. وتضيف نشرة Tensorlake الترتيب نفسه وتقترح فحص سجلات الحزم والمستودعات التي قد تكتب فيها الرموز المكشوفة بحثًا عن إصدارات غير متوقعة. ويوصي تقرير Aikido بضبط ignore-scripts=true في .npmrc لحظر خطافات التثبيت، والتعامل مع أي جهاز نُفِّذ فيه الخطاف باعتباره مخترقًا بالكامل.

هذا سجل واحد، أبلغ عنه آخرون ويُستشهَد به هنا بالعزو إليهم. أما حوادث الوكلاء الموثّقة الأخرى، ولكل منها مصادرها ودرجة خطورتها ودرجة ثقتها وعلامة كونها متنازعًا عليها، فتقع في أرشيف حوادث الذكاء الاصطناعي — بحيث يمكن قراءة اختراق سلسلة التوريد الموجّه إلى أدوات الوكلاء إلى جانب بقية ما حدث فعلاً.