
Paketë npm me qëllim të keq synon zhvilluesit e Twilio përmes një hetimi të rremë
ReversingLabs zbuloi një paketë npm që shtirej si një hetim sigurie i Twilio, por mund të vidhte variabla mjedisi, përfshirë kredencialet e llogarisë Twilio.
Një paketë npm me qëllim të keq e quajtur tw-pkgprobe-7731 është gjetur duke u shtirur si një mjet sigurie për zhvilluesit që integrojnë Twilio në aplikacionet e tyre, ndërsa në heshtje përpiqej të mblidhte të dhëna të ndjeshme nga makinat e tyre. Paketa u publikua në regjistrin npm, depoja qendrore online për paketat e kodit JavaScript, nga një llogari e quajtur twdepprobe7731 në mesin e gushtit 2026. Studiuesja e ReversingLabs, Lucija Valentić, përshkroi gjetjet në një raport, duke vënë në dukje se 11 versione u publikuan brenda rreth 45 minutash në të njëjtën ditë, dhe llogaria që i publikoi ato nuk ekziston më në kohën e raportit.
Versioni i parë përpiqej të dukej si një hetim i autorizuar i kërkimit të sigurisë. Komentet brenda paketës e përshkruanin atë si një hetim të autorizuar të kërkimit të bug-bounty për programin Twilio HackerOne, duke pretenduar se funksionon vetëm brenda sandbox-it të paketuesit serverless të Twilio dhe mbledh kontekstin lokal të procesit dhe hostit, duke e shkruar pranë vetes pa asnjë veprim shkatërrues. Kur ekzekutohej, paketa së pari kontrollonte nëse po funksiononte brenda një mjedisi zhvilluesi Twilio. Nëse ky kontroll dështonte, ajo dilte menjëherë. Nëse kontrolli kalonte, ajo mblidhte variabla mjedisi, të cilat janë pjesë të vogla informacioni që programet përdorin si detajet e llogarisë, së bashku me detaje të sistemit si ruajtja e montuar, dosjet e përkohshme dhe cilësime të ndryshme konfigurimi. Gjithçka që mblidhte dërgohej më pas në një destinacion të jashtëm përmes një webhook, që do të thotë se programi i dërgonte të dhënat automatikisht në një URL të kontrolluar nga sulmuesi.
Versionet e mëvonshme, të numëruara 1.0.1, 1.0.2 dhe 1.0.3, ndryshuan fokusin te zhvilluesit që përdorin API-t e Twilio. Këto versione kërkonin dosje të lidhura me SID-e specifike të llogarive Twilio, identifikuesit e vargut që etiketojnë çdo llogari Twilio. Kodi shmangte çdo veprim nëse gjente një dosje me një emër specifik SID. Nëse gjendeshin dosje të synuara që përputheshin, paketa skanonte paketat e instaluara npm dhe dosjen node_modules, ku projektet JavaScript mbajnë varësitë e tyre, dhe injektonte një paketë të personalizuar proof-of-concept duke krijuar skedarë të rinj package.json dhe index.js brenda saj. Me fjalë të tjera, ajo përpiqej të mbillte kod shtesë në projektin e një zhvilluesi kur plotësoheshin kushtet e duhura.
Versioni 1.0.4 shkoi më tej. ReversingLabs zbuloi se ky version shtoi aftësinë për të vjedhur dy variabla specifike mjedisi: process.env.ACCOUNT_SID dhe process.env.AUTH_TOKEN. Këto janë vlerat që identifikojnë një llogari Twilio dhe vërtetojnë se një kërkesë është e autorizuar. Nëse një sulmues i merr të dyja, ata potencialisht mund të kontrollojnë llogarinë Twilio të viktimës mjaftueshëm për të autorizuar faturimin dhe për të nisur komunikime. Raporti shpjegon se versionet e paketës nuk ndiqnin udhëzimet e publikuara të Twilio për gjuetinë e bug-eve në HackerOne, dhe studiuesja tha se këto paketa shkelin qartë udhëzimet bazë të kërkimit të sigurisë që Twilio vendosi, gjë që sugjeron se paketat kishin qëllim të keq.
Tre versionet e fundit, të numëruara 1.0.8, 1.1.0 dhe 1.1.1, bënë një hap të papritur prapa. Ato u kthyen në sjelljen bazë të hetimit të parë në versionin e parë dhe hoqën funksionet me qëllim të keq të shtuara në versionet e mëparshme. Dy versionet e fundit gjithashtu kryen mbledhje inteligjence me burime të hapura, ose OSINT, duke kontaktuar disa emra hostesh të lidhura me Twilio: support-api.us1.twilio[.]com, kafka-ui.au1.twilio[.]com dhe litellm.ai-services.corp.twilio[.]com. Ato madje u përpoqën të merrnin metadata e Amazon Web Services nga adresa speciale 169.254.169[.]254/latest/meta-data/, e cila mund të ekspozojë informacione rreth serverit cloud. Për shkak se paketa ndryshoi drejtim kaq shpesh, studiuesit thonë se nuk është e qartë se cili ishte qëllimi përfundimtar dhe nëse u publikua si pjesë e një programi bug bounty.
Pavarësisht përpjekjes për të përzier kod të dëmshëm dhe të padëmshëm, autori nuk bëri asnjë përpjekje reale për të fshehur pjesët me qëllim të keq. Nuk kishte obfuscation, që do të thotë se kodi nuk ishte i ngatërruar për ta bërë të vështirë për t'u kuptuar, dhe nuk kishte typosquatting, që do të thotë se krijuesi nuk përdori një emër shumë të ngjashëm me një paketë të besuar për të mashtruar zhvilluesit. Llogaria publikuese e npm gjithashtu nuk bëri asnjë përpjekje për t'u dukur si një publikues legjitim. ReversingLabs vuri në dukje se kjo është e ndryshme nga fushatat e mëparshme dhe sugjeron se një aktor kërcënimi më pak i sofistikuar ishte përgjegjës për përpjekjen që synonte zhvilluesit e Twilio. Për këdo që ndërton ose drejton softuer që varet nga paketat npm, ky rast është një kujtesë se një përshkrim i besueshëm dhe një koment me pamje profesionale brenda kodit nuk mjaftojnë për të krijuar besim.
Pronarët e faqeve dhe ekipet e IT-së duhet ta trajtojnë zgjedhjen e paketave si një vendim sigurie, jo thjesht si një lehtësi. Kontrollimi i llogarisë së publikuesit, moshës së saj dhe historisë së publikimeve përpara instalimit mund të kapë hetime të rreme përpara se ato të ekzekutohen. Lexuesit që menaxhojnë faqet e tyre të internetit gjithashtu mund të zvogëlojnë një pjesë të këtij rreziku duke zgjedhur një ofrues hostimi si AEU Hosting që merret me përditësimet e sigurisë dhe monitorimin për mjediset e menaxhuara WordPress, në mënyrë që një varësi me qëllim të keq të ketë më pak hapësirë për t'u përhapur.
Si të Mbroheni
- Nëse faqja juaj e internetit ose aplikacioni përdor paketa kodi nga npm, mbani një listë të shkruar të çdo pakete dhe përditësojini ato vetëm nga burimi zyrtar pasi të keni kontrolluar me kujdes emrin e paketës dhe publikuesin.
- Përpara se të instaloni ndonjë paketë të re, kërkoni llogarinë e publikuesit; nëse llogaria është krejt e re, nuk ka histori ose nuk ekziston më, ndaloni dhe zgjidhni një paketë tjetër ose kërkoni ndihmë nga një zhvillues.
- Mos vendosni fjalëkalime të vërteta ose kode të fshehta llogarie në variabla mjedisi që një mjet zhvillimi mund t'i lexojë; përdorni leje të përkohshme dhe të kufizuara dhe zëvendësojini ato menjëherë nëse dyshoni se diçka u instalua nga nj
- Nëse përdorni Twilio për mesazhe ose telefonata, kontrolloni llogarinë tuaj për shpenzime ose mesazhe të papritura dhe aktivizoni alarmet e faturimit në mënyrë që të zbuloni shpejt nëse dikush përdor kredenciale të vjedhura.
- Shtoni një kontrollues automatik paketash në procesin tuaj të zhvillimit, në mënyrë që çdo paketë e re ose e papritur të sinjalizohet përpara se kodi i saj të ekzekutohet, dhe trajtoni çdo ndryshim të papritur në skedarët e paketave të proj
Termat e Shpjeguar
- npm package Një koleksion kodi i publikuar në regjistrin npm që zhvilluesit mund t'i shtojnë një projekti JavaScript për ta bërë atë të funksionojë ose për të fituar një veçori.
- environment variables Pjesë të vogla informacioni të ruajtura në një kompjuter ose server që programet përdorin, si fjalëkalime, identifikues llogarie ose cilësime.
- Twilio account SID Një varg karakteresh që identifikon në mënyrë unike një llogari Twilio, i ngjashëm me një numër llogarie.
- exfiltration Akti i dërgimit të fshehtë të të dhënave të vjedhura në një vend të jashtëm të kontrolluar nga një sulmues.
- webhook Një mënyrë për një program që të dërgojë automatikisht të dhëna në një shërbim tjetër online ose URL kur ndodh diçka.
- node_modules Dosja ku npm ruan të gjitha paketat shtesë nga të cilat varet një projekt JavaScript.
- OSINT Inteligjencë me burime të hapura, informacione të mbledhura nga burime të disponueshme publikisht si faqet e internetit dhe mjetet online.
- obfuscation Praktika e ngatërrimit të kodit për ta bërë të vështirë për t'u kuptuar, shpesh e përdorur për të fshehur sjellje me qëllim të keq.