Зиянды пакеттер 5

Зиянды пакеттердің анатомиясы: трендтер қандай?

Алдыңғы эпизодта, Ашық бастапқы кодты зиянды пакеттер: мәселе, біз қауіп төндірушілердің неліктен соншалықты екенін талқыладық жаңа зиянды компоненттерді жариялауға немесе бар компоненттердің соңғы нұсқаларына зиянды бағдарламаларды енгізуге құлшыныспен қарайды: Ашық бастапқы инфрақұрылым кез келген адамға кез келген жерде уақытша тіркелгі жасауға мүмкіндік береді компонент тізілімінде (NPM, PyPI, Docker Hub немесе Visual Studio Marketplace сияқты) немесе бірлескен әзірлеу платформасында (GitHub сияқты). Нөлдік шығын және бағдарламалық жасақтама топтарының дәстүрлі түрде үшінші тарап компоненттеріне деген артық сенімін пайдаланудың көптеген мүмкіндіктері. 

Шабуылдаушылардың ашық бастапқы кодқа қолжетімді инфрақұрылымды пайдаланып зиянды бағдарламаны таратуы қаншалықты оңай және бағдарламалық жасақтаманы әзірлейтін ұйымдардың (барлығы үшін?) зиянды бағдарламаны жұқтырмауының (және басқалар үшін тарататын бағдарламалық жасақтамада зиянды бағдарламаны жеткізуінің) қаншалықты қиын екендігі арасындағы асимметрия өткен жылы зиянды пакеттердің ширек миллионға жуық межесіне жетуіне әкелді. 

Бұл соншалықты ауқымды мәселе, оны ешбір ұйым шеше алмайды, және қауымдастық сенім, әдепкі бойынша қауіпсіз және дизайн бойынша қауіпсіз қағидаттар және компоненттердің өмірлік цикліне қатысты ашық бастапқы код процесін қайта құру процесінде. Біз мұндай идеяларды келесі эпизодта қарастырамыз. Ашық бастапқы кодты зиянды пакеттерден қорғау: не жұмыс істейді (жұмыс істемейді).

Біз көбінесе сәйкес келетін бағдарламалық жасақтама компоненттері туралы айтып отырғанымызды ұмытпаңыз бағдарламалық пакеттер: бағдарламалық жасақтама манифестінде тәуелділік ретінде сілтеме жасалуы және пакет менеджері немесе құрастыру құралымен орнатылуы үшін қайта пайдалануға болатын компоненттер қапталған. Бұл жағдайды жалпыға қолжетімді ету үшін кеңейтуге болатынын ескеріңіз. контейнер кескіндері (контейнердің жұмыс уақыты және Kubernetes сияқты оркестрлік платформалар пайдаланады) және бағдарламалық құралдарға кеңейтімдер (құрылыс, автоматтандыру және орналастыру үшін). 

Мұнда біз мұны қалай талдаймыз зиянды компоненттерге негізделген шабуыл тактикасы өткен мысалдарға және зиянды бағдарламалар туралы ерте ескерту платформасында көргенімізге сәйкес жұмыс істейді (MEW). Біз зиянды компоненттерді әртүрлі өлшемдерде талдаймыз: 

(1) тарату үшін таңдалған тәсіл (жаңа немесе бар компонентте пайдаланылған тізілім және жарияланған компонент нұсқасын жұқтыру үшін қолданылатын әдіс), (2) зиянды бағдарлама қалай іске қосылады немесе іске қосылады, (3) зиянды мінез-құлық, яғни қандай зиянды әрекеттер байқалады және шабуылдаушының мотивациясы қандай, (4) шатастыру, байқалмау үшін жасырыну, бүйірлік қозғалыс, командалық және басқару (C2) хосттарымен байланыс және т.б. үшін қандай әдістер кең таралған; және (5) құрбандар компонентті орнатуы үшін жеткілікті танымалдық пен сенімге ие болу әдістері.

Таңдалған тарату механизмі

Біз байқаймыз «фондық шу«Типосквоттингті пайдаланып, абайсыз әзірлеушілерге тәуелділігіне байланысты пакет атауында қате бар фишинг жасау үшін күрделі емес зиянды пакеттердің көптігі». Көптеген танымал пакеттер қателері бар ұқсас атаудағы пакеттердің ағынын алады, олар кейбір абайсыз әзірлеушілерге фишинг жасайды деп күтіледі. 

Олар уақытша тіркелгіні пайдаланады, typosquat пакеттерінің тобын жариялайды, тағы біреуін жасайды және тағы бір топты жариялайды... Біраз автоматтандыру мен тапқырлықты пайдаланып, олар біраз талғампаздыққа қол жеткізе алады, бірақ әдетте олар өте қарапайым. Біз оларды іштей «анковоздар«Тіркелгі деректерін ұрлау басты мақсат болып табылады, бірақ кейде біз тыңшылық бағдарламалардың бастапқы кодты немесе жеке басын анықтайтын ақпарат (PII), алмасу буферін басып алу және басқа да күмәнділіктерді жоятынын байқаймыз.»

Кенеттен біз күрделі зиянды компоненттерді, яғни «акулаларды» көреміз. Азшылық белгілі бір топтарға немесе ұйымдарға бағытталған, әдетте шартты түрде белсендірілетін криптоқұрылғылар немесе веб-скиммерлер, мүмкін, ...-да көрсетілген тәсілді қолдана отырып. оқиға ағыны оқиғасы шабуылдың пайдалы жүктемесін тек пакет мақсатты пакеттен сілтеме жасалған кезде ғана шешуге болады. 

Тарату механизмі тамаша және қазір классикалық мақалада талданды, «Backstabber's Knife жинағы: Ашық бастапқы кодты бағдарламалық жасақтама жеткізу тізбегіне шабуылдарға шолу«, бұл міндетті түрде оқу керек кітап. Сіз бұл жақсы кестені бұрын көрген боларсыз: 

зиянды пакеттер

Барлық жолдар зерттелді, соның ішінде жаңа және бар пакеттер; бастапқы кодқа, құрастыру жүйесіне немесе пакеттелген компоненттің өзіне әсер ету; ұрланған тіркелгі деректерін немесе әлеуметтік инженерияны пайдалану; тасталған тіркелгілер мен репозиторийлерді ұрлау немесе сақталғандарын уландыру. Кейбір шабуылдар атау алды (Типосквотинг, Тәуелділіктің шатасуы, Манифесттік шатасу, Репо-джекинг. т.б.) және басқа жерде талқыланған болатын. 

Таңдалған тізілімдер туралы не деуге болады?

NPM зиянды пакеттердің жалпы саны бойынша көшбасшылықты жалғастыруда, бірақ биылдан бастап PyPI-де күрт өсім байқалды. Python - деректер ғылымы және машиналық оқыту үшін танымал экожүйе. Шын мәнінде, зиянды бағдарламалардың тығыздығы қазір PyPI-де NPM-ге қарағанда жоғары. 

Зиянды бағдарлама қалай іске қосылады

Зиянды пакеттер орнату кезінде 10 жағдайдың тек 4-інде ғана іске қосылады (соңғы жылдары бұл көрсеткіш 10 жағдайдың 6-сына жақын болды). Қалғандары жұмыс уақытында зиянды әрекеттерді орындайды, 100 жағдайдың 1-і сынақтарды іске қосу кезінде іске қосылады. Қарсыластар көптеген жерлерде орнату сценарийлерінің бақылаусыз орындалуы өшірілгенін білетін сияқты.

Жаман адамдар не алады?

Біз зиянды мінез-құлық санаттарын тізімдейміз, ең танымалдары алдымен. Әсері мүлдем басқаша болуы мүмкін екенін ескеріңіз: a сүрткіш қыңырлықпен жойқын әсер етеді, бірақ ол кең таралмаған және тек бірнеше жағдайда ғана байқалды, олар мақсатты киберсоғыс науқандарына немесе қатыгез хактивизмге қатысты. Келесі санаттар өте кең таралған:

  • InfoStealer / Тіркелгі деректерін төгу құралыЕң жиі кездесетін, күрделі емес шабуылдардың 90%-дан астамы қарапайым ұрлаушылар болып табылады, олар негізінен құпия сөздер, кіру токендері, API кілттері және жеке кілттер (SSH және сол сияқтылар үшін) сияқты тіркелгі деректерін іздейді. Оны жазу ең оңай (тазалағыштармен бірге?). Олар белгілі файлдарды/каталогтарды және басқа көздерді (мысалы, тізілім кілттерін) санайды, мазмұнын буып, сол деректерді C2 серверіне жібереді. Идея қарапайым: «Мен фишингтік тіркелгі деректері үшін ұрлағыш жариялаймын, сондықтан кейінірек бағытталған шабуылды бастау үшін тіркелгі деректерін пайдалана аламын». 

Байқалған C2 желісі әдетте Telegram арналары сияқты арзан және лас болып табылады нгрок тәрізді туннельдеу құралдары (көбінесе VPN шығыс IP мекенжайлары арқылы кері проксилер түрінде көрсетіледі). Жүздеген (!) мүмкіндіктер бар, олардың астында көптеген GitHub жобалары бар. құпия сөз ұрлау тақырыбыЗиянды пакеттер мен контейнер кескіндері үшін пернетақтаны бұзушылар сияқты мамандандырулар сирек кездеседі, бірақ пайдаланушының өзара әрекеттесуі күтілетін құрал кеңейтімдерінде жиі кездеседі.

  • Тасымалдағыш / ЖүктеушіТанымалдылығы бойынша екінші, әдетте көп сатылы шабуылдарда бірінші орында. Зиянды компоненттердің үштен бірінен көбінде дропперлер (егер зиянды пайдалы жүктеме пакетке кірсе) немесе жүктеушілер (пайдалы жүктеме шабуылдаушының басқаруындағы соңғы нүктеден жүктеледі) бар. Пайдалы жүктеме көбінесе белгілі екілік зиянды бағдарлама нұсқасы болып табылады және ол артқы есіктерді, тыңшылық бағдарламаларды, крипто дренаждарды және басқа да пайдалану жағдайларын орнату үшін іске қосылады және кейде сақталады. Жүктелген немесе орналастырылған пайдалы жүктеме екінші фазалық шабуылды бар зиянды бағдарламаның екілік файлдары қамтамасыз ететін барлық қуатпен бастайды. Күтпеген сайттарға қосылу кезінде анықталмау үшін екілік файлдар пакет ішінде таратылуы мүмкін, көбінесе кескіндер немесе зиянсыз файл түрлері ретінде жасырылады. 
  • Криптовалюта ұрлаушылары / кеншілеріҚаржылық тұрғыдан мотивацияланған қарсыластар сіздің бұлттық активтеріңізді криптомайнерлерді іске қосу үшін пайдалануға дайын (тіпті олардың бұлттық виртуалды машинада жұмыс істеп тұрғанын да анықтайды). Оларға бәрібір төмен пайда коэффициенті ұрланған бұлттық инфрақұрылым үшін жәбірленушіден алынатын әрбір 53 доллар үшін 1 доллар. Жәбірленушілер күтпеген шот алғанша бұл туралы білмеуі мүмкін. Бақытымызға орай, бұл болып тұрады және кетеді. Cryptojacking зиянды пакеттердегі науқандар кейде пайда болып, содан кейін жоғалып кетеді, әмиян пайдаланушылары үшін фишинг немесе ақырында әмиян провайдеріне бағытталған, мысалы Леджер шабуылы.   

Басқа әрекеттер, мысалы, орналастыру артқы есік кері қабықты ашу арқылы қашықтан кодты орындау бұрынғыға қарағанда сирек кездеседі. Мысалы, 123rf_үлескер_веб пакет (қазір тізілімнен алынып тасталды) ешқандай шатастырусыз ашылады, кері қабық көшіріліп, қойылады Кері қабықшалы шпаргалка:

зиянды пакеттер 2
Зиянды пакет түрлері 2024 жылдың 24-30 маусымы аралығында байқалды.

Заңды және зиянды компоненттерден басқа, біз бірнеше теріс пайдалануды байқадық, соның ішінде:

Спам пакеттері

Мыңдаған шағын пакеттер бар, көбінесе NPM-де, зиянды бағдарламаларсыз, бірақ оңай табыс табуды, жылан майын, Viagra ұсыныстарына сілтемелерді және тағы басқаларды уәде етеді. Бірнеше пайдаланушы мұндай спамды жариялайды және тізілімнен көп өткізу қабілеттілігін алады. Индонезиядан келген тағы бір актер(лер) пайда табуға тырысты... шайРанкты теріс пайдалану ашық бастапқы кодты әзірлеушілерге өтемақы төлеуге арналған, GitHub репозиторийлерімен байланысты ондаған мың өзара байланысты NPM пакеттерін жасау арқылы. Бұл пайдалану шарттарын айқын бұзу болып табылады.

Қателерді бағалау және қауіпсіздікті зерттеу бойынша жалған ақпарат

 Пакет өзін қателерді жою бағдарламалары үшін қауіпсіздік кемшіліктерін анықтау немесе экожүйенің белгілі бір аспектілерін зерттеу сияқты жақсы мақсаттар үшін деректерді эксфильтрациялау ретінде сипаттаған кезде. Біз осы санаттағы мыңдаған пакеттерді көрдік, олар PortSwigger-ден Burp Collaborator мекенжайына сәйкестендіру деректерін алады, бірақ тым құпия емес. Біз көбінесе көшірмелерді байқадық. Тәуелділіктің шатасуы Алекс Бирсанның тұжырымдамасын дәлелдеу, мысалы Aurora-webmail-pro пакет (тізілімнен жойылған), ол алдын ала орнату скриптінде осы жағымсыз кодты іске қосады:

Сондай-ақ, «Бұл қарапайым тәуелділіктің шатасуы шабуылы тұжырымдамасының дәлелі«Жауапкершіліктен бас тарту сипаттамасы» бөлімінде пакет.jsonБұл зиянды ниет болмаса да, қызмет көрсету шарттарын айқын бұзу болып табылады. 

Жақсы жаңалық бар ма? Біз зиянды компоненттер арқылы жасалған ransomware шабуылдарын (әлі) көрген жоқпыз. Белгісіз себептермен киберқылмыскерлер дәстүрлі электрондық пошта фишингін, RDP негізіндегі және диск арқылы жүктеуді жеткізу механизмдерін қалайтын сияқты. 

Байқалған қосымша әдістер 

зиянды пакеттер 3

Табандылық, қорғаныстан жалтару, ақпарат жинау, командалық және басқарушы күштермен байланыс және эксфильтрация үшін көптеген әдістер қолданылды. 

Тұрақтылық Зиянды компоненттерде екінші сатылы екілік зиянды бағдарламадағы тұрақтылық мүмкіндіктерін пайдалану арқылы алынады, бірақ кейде мінез-құлық пакет кодында болады, ең көп таралғаны жоспарланған тапсырмалар мен Windows тізіліміндегі өзгерістер. 

Объектив кең таралған, бірақ күрделі емес. Көптеген typosquatting пакеттері («анковоздар?) мүлдем обфускацияны пайдаланбайды; көпшілігі тривиальды кодтауды (base64/hex кодтау немесе rot13 сияқты алмастыру шифрлары) пайдаланады немесе қолжетімді код обфускаторлары мен минификацияны пайдаланады, оларды дұрыс құралдармен оңай кері қайтаруға болады. Тек «акулалар» ғана кері инженериялау қиын нақты, күрделі обфускацияны жасайды.

Шабуылды жасыру шабуылды жасыруы мүмкін, бірақ неге ашық бастапқы код компонентіндегі кодты жасыру керек? Бір нәрсені көзден жасыру керек екеніне дәлел бар ма? Біз зияткерлік меншікті қорғау үшін жасыруды қолданатын зиянды емес пакеттердің көптеген мысалдарын таптық, бұл «ашық бастапқы кодқа» қайшы келеді. Жалғануды зиянды бағдарламаның дәлелі ретінде пайдалануға болады, бірақ ол нақты емес. Оны ашу да қиын. 

Жалқау Қорғаныс бақылауларынан қарапайым әдістер қолданылады. Зиянды код көбінесе қорғалған көріңіз ... ұстап алыңыз кез келген ерекшеліктерді елемейтін блоктар, сондықтан журналдарда қалыптан тыс белсенділік көрсетілмейді. Белгілі бір ұйымға немесе ортаға бағытталған зиянды бағдарламаларды қоспағанда, ортаны тексеру (VM немесе контейнерде жұмыс істеу) сирек кездеседі.

Анықтаудан жалтарудың тағы бір әдісі - суреттер мен PDF файлдарында екілік файлдарды жасыру (стеганографияның бір түрі).

Ең көп таралған зиянды компоненттер ақпарат ұрлаушылары болғандықтан, деректерді жинау маңызды. Құпиялар (құпия сөздер, кіру токендері, API кілттері, криптографиялық кілттер) журнал файлдарында, орта айнымалыларында және тіпті буферде (банк трояндары мен крипто ұрлаушыларында көрінеді) үнемі сканерленеді. Бастапқы кодты эксфильтрациялау да кең таралған, себебі пакетті орнату көбінесе ішкі git репозиторийлері клондалуы мүмкін әзірлеу түйінінде орындалады. Біз пакеттердің git репозиторийлерін іздеуде каталогтарды санап жатқанын көрдік. .env, private.pem, settings.py, app.js немесе application.properties сияқты орындарды іздеу өте кең таралған.

Эксфильтрация - кеңінен қолданылатын тағы бір әрекет. Зиянды пакеттердің аз ғана бөлігі алынған деректердің тағайындалған орнын жасыруға тырысады. Telegram арналары және нгрок тәрізді туннельдер жиі қолданылады. Және көптеген әдетте эксфильтрация үшін қолданылатын ақ тізімге енгізілген домендер

Артықшылықты арттыру немесе бүйірлік қозғалыс сияқты басқа әдістер сирек қолданылды. 

Танымалдылық пен сенімге ие болу

Дайын өлтіруші зиянды нәрсесі бар техникалық алаяқтың: «Бұл ақымақтарды қалай сенімді етемін?» деп ойлап отырғанын елестетіп көріңізші. 

Бұл зиянды компонент үшін көптеген жұлдыздарды/шанышқыларды (танымалдығы үшін), сонымен қатар нұсқаларды/мәселелерді көрсету үшін жазбаны қалай жасау керектігін білдіреді. pull requests (белсенділік үшін). Идея - жалған танымалдылыққа (жұлдыздарға) және тәуелді адамдарға ие болу, сондай-ақ өзектілігі мен қолдауына сенімді көзқарас қалыптастыру. 

Тізілім GitHub жобасындағы мазмұн мен пакет мазмұнының сәйкес келетінін тексермейдіБұл бағдарламалық жасақтама жеткізу тізбегіндегі белгілі мәселе. Қоғамдық тізілімдер – оларға лақтырылғанның бәрін жұтып қоятын үлкен шұңқырлар. Сіз кез келген репозиторийді байланыстыра аласыз. 

зиянды пакеттер 4
2024 жылдың 24-30 маусымы аралығындағы аптада ықтимал зиянды бағдарламалар бойынша дәлелдемелерді тарату.

Егер зиянды пакет танымал пакетті қате жазса, бұл оңай: пакетті жасау және оны тізілімге жариялау үшін пайдаланылатын тәуелділіктер манифестіндегі бар GitHub репозиторийіне сілтеме жасаңыз. Жалған GitHub репозиторийіндегі жаңа пакеттер үшін сізге көбірек тапқырлық қажет болуы мүмкін, мүмкін жалған пакеттер жасау. жұлдыздарды бақылау/айрықшалау GitHub тіркелгілері скрипт арқылы.

Егер сіздің бумаңыздың мазмұны репозиторийге ұқсас болса, бірнеше жақсы жасалған өзгертулерді енгізіңіз... Сіз зиянды бағдарламаңызды бар репозиторийге сілтеме жасайтын танымал бумаға ұқсас жаңа бумаға енгізіп, қателерді күте аласыз. Егер біреу tarball бумасының мазмұнын GitHub репозиторийіндегі мазмұнмен салыстыруға батылы барса, зиянды бағдарлама енгізу нүктелеріндегі айырмашылықтарды оңай байқамай қалуы мүмкін. Біз бұл тәсілді бұрын бірнеше рет көргенбіз. 

Компоненттің шығу тегі, пакеттің қалай жасалғаны, қандай көздерден және кім жасағаны туралы бұрмаланбайтын мәлімдеме жасау механизмі құпталады. Бірақ бұл басқа әңгіме. 

Component X зиянды бағдарлама ма?

Зиянды пакеттердің (кең көлемді) дерекқоры бар ма? Жоқ. Ашық бастапқы кодты осалдықтарға CVE идентификаторы тағайындалған, бірақ тек бірнеше зиянды пакеттерге (әсіресе жаңалықтарда жарияланатындарға) ғана беріледі. Зиянды пакеттерге арналған CWE... CWE-506 (енгізілген зиянды код). 

Әдеттегі зиянды бағдарламалар құралдары (VirusTotal, MalwareBazaar, SOREL-20M…) зиянды компоненттерге арналған арнайы ережелерді қарастырмайды. Бұл құптарлық болар еді!

Талдау үшін зерттеу үлгілерінің дерекқорлары мен деректер жиынтықтары бар (біз олардың бірнешеуін пайдаланамыз), бірақ жазбалар зиянды пакет белгілі болған кезде ғана жаңартылады, бұл көбінесе тым кеш болады. Егер сізді қызықтырса, OpenSSF Зиянды пакеттер жақсы бастама екен.

Келесі жазбада біз берілген пакеттің зиянды екенін қалай білуге ​​болатынын талқылаймыз. Спойлер: иә, тізілім белгілі зиянды компонентті жоймас бұрын, экспозиция терезесінің басында зиянды компоненттерді тексерудің жолдары бар.

Қосымша оқу

Келесі эпизодта «Ашық бастапқы кодты зиянды пакеттерден қорғау: не жұмыс істейді (жұмыс істемейді)« ашық бастапқы кодты қауіпсіздік үшін не істеу керек және не істемеу керек екенін талқылаймыз. Қауіпсіздік саласында хабардар мамандардың көпшілігі бұл қауіпті қалай жеңу керектігі туралы түйсігі бар, бірақ қате түсініктер де көп. 

Біз бұл идеялардың неліктен қате екенін және мұндай қате түсініктердің осы шабуыл механизмінің танымалдылығына және ұйымдар бастан кешіріп жатқан үлкен тәуекелге қалай ықпал ететінін қарастырамыз. Содан кейін біз не жұмыс істейтінін және қандай күш пен ресурстар жұмсалатынын қарастырамыз. 

Сонымен қатар, біз зиянды пакеттердің ниеті, енгізу механизмі және шабуыл әдістері тұрғысынан эволюциясы туралы жазба жариялаймыз.

Бізбен бірге қалыңыз!

Әдебиеттер тізімі

Ашық бастапқы кодты зиянды пакеттер: мәселе

OSS зиянды пакеттерінен қорғау: не жұмыс істейді (жұмыс істемейді)

sca-құралдары-бағдарламалық жасақтама-композиция-талдау-құралдары
Бағдарламалық жасақтама тәуекелдеріне басымдық беріңіз, оларды жойыңыз және қауіпсіз етіңіз
Тегін аккаунтыңызды алыңыз.
Несие картасы қажет емес.

Бағдарламалық жасақтаманы әзірлеу және жеткізуді қауіпсіз етіңіз

Xygeni өнім жиынтығымен бірге