Што робіць JavaScript-абфускатар?
JavaScript-абфускатар прызначаны для пераўтварэння чыстага, чытэльнага кода ў ледзь чытэльны, што ўскладняе яго разуменне або зваротны інжынірынг. Гэтыя інструменты перайменуюць зменныя і функцыі, выдаляюць прабелы, згладжваюць структуры кода і ўжываюць такія метады, як падзел радкоў, шаснаццатковае кадаванне або згладжванне патоку кіравання. Хоць мэтай часта з'яўляецца абарона інтэлектуальнай уласнасці або памяншэнне памеру файла, атрыманая складанасць таксама забяспечвае ідэальнае прыкрыццё для шкоднасных праграм JavaScript. Вось чаму многія каманды бяспекі звяртаюцца да інструментаў дэабфускатара JavaScript для аналізу пераўтворанага кода і выяўлення схаванай паводзін.
Напрыклад, нешта такое простае, як:
Для распрацоўшчыкаў, якія ўкараняюць кліенцкую логіку (напрыклад, SaaS на базе браўзера), абфускатар JavaScript з'яўляецца часткай інструментарыя. Але гэта ж пераўтварэнне робіць яго ідэальнай маскіроўкай для шкоднаснага ПЗ на JavaScript.
Як зламыснікі злоўжываюць абфускацыяй, каб схаваць шкоднаснае праграмнае забеспячэнне JavaScript
Зламыснікі выкарыстоўваюць інструменты абфускатара JavaScript для маскіроўкі шкоднаснае праграмнае забеспячэнне, уведзенае ў бібліятэкі з адкрытым зыходным кодам, Пакеты npm, або непасрэдна ў скрыпты браўзера. Распаўсюджанай схемай з'яўляецца ўтойванне карысных нагрузак унутры заблытаных функцый, якія запускаюцца падчас выканання пры пэўных умовах.
Уявіце сабе ўзламаны npm-пакет. На першы погляд усё выглядае законна. Але больш глыбокі погляд выяўляе заблытаны JavaScript, які спасылаецца на закадаваныя радкі, аддаленыя URL-адрасы або дынамічныя ацэнка() званкі:
Гэта не сцісканне. Гэта прыкрыццё. Тут хаваецца шкоднаснае праграмнае забеспячэнне JavaScript, якое чакае, каб выкрасці токены, уставіць фішынгавыя формы або павысіць дазволы ўнутры праграм.
Рэальныя рызыкі ў AppSec і ланцужку паставак
Сучаснае праграмнае забеспячэнне pipelineпабудаваныя на староннім кодзе. Шкоднаснае праграмнае забеспячэнне JavaScript, убудаванае праз заблытаныя скрыпты, — гэта не проста дзірка ў бяспецы; гэта парушэнне ланцужка паставак. Пасля таго, як заблытанае шкоднаснае праграмнае забеспячэнне трапляе ў агульную бібліятэку, яно распаўсюджваецца:
- У зборкі CI праз package.json
- У фронтэнд-бэнд-пакеты праз Webpack/Rollup
- У прадукцыйную вытворчасць праз CDN або ін'екцыі скрыптоў
Напрыклад, інцыдэнт з патокам падзей паказаў, як зламыснікі выкарыстоўвалі абфускацыю для ўстаўкі карысных нагрузак у шырока выкарыстоўваныя пакеты. Распрацоўшчыкі рэдка правяраюць глыбока заблытаны код, што робіць яго ідэальным месцам для сховішча.
Рызыка не тэарэтычная. Яна ўжо ёсць у вашым кодзе, калі вашы залежнасці не скануюцца.
Выяўленне заблытанага кода з дапамогай інструментаў дэабфускатара JavaScript
Каб выявіць схаваныя пагрозы, каманды выкарыстоўваюць інструменты дэабфускатара JavaScript. Яны аналізуюць шаблоны заблытанага кода, дэкадуюць радкі і выяўляюць такія сігналы трывогі, як дынамічныя ацэнка(), заблытаныя цыклы і непатрэбная складанасць.
Карысныя дэабфускатары не проста перафарматуюць код; яны пазначаюць:
- Выкарыстанне функцыя, эвал, і усталяваць час чакання з закадаванымі карыснымі нагрузкамі
- Доўгія паслядоўнасці радкоў Base64 або шаснаццатковых радкоў
- Згладжванне патоку кіравання або ўвядзенне мёртвага кода
Аўтаматызаваныя інструменты, такія як статычныя аналізатары або парсеры AST, дапамагаюць выявіць гэтыя заканамернасці. Яны з'яўляюцца першай лініяй абароны пры праверцы залежнасцей або праверцы абнаўленняў пакетаў.
Прыклад: інтэграваць дэабфускацыйнае сканаванне ў праверкі перад аб'яднаннем, каб пазбегнуць аб'яднання схаваных пагроз.
Інтэграцыя выяўлення ў CI/CD Pipelines
Выяўленне не з'яўляецца задачай пасля разгортвання. Сканіраванне на абфускацыю павінна быць часткай CI/CD pipeline. Выкарыстанне Дзеянні GitHub, GitLab CIабо Джэнкінс запускаць сканаванне пры кожнай публікацыі або зліцці.
Тыповы pipeline паток:
З дапамогай прымянення палітык вы можаце блакаваць зборкі, якія ўтрымліваюць рызыкоўны заблытаны код. Спалучайце гэта з SCA інструменты для перакрыжаванага параўнання вядомых сігнатур шкоднасных праграм у пакетах npm.
Не чакайце нечаканых сюрпрызаў падчас выканання. Зрабіце гэта адмовай падчас зборкі.
Схаваная цана абфускацыі: барацьба са шкоднасным праграмным забеспячэннем JavaScript з дапамогай дэабфускатараў
Інструменты абфускатара JavaScript маюць законнае прымяненне. Але зламыснікі выкарыстоўваюць іх, каб схаваць шкоднаснае праграмнае забеспячэнне JavaScript і злоўжываць даверам да экасістэмы адкрытага зыходнага кода. Сапраўдная рызыка ў AppSec заключаецца не толькі ў тым, што вы пішаце, але і ў тым, што вы імпартуеце. Убудоўваючы сканаванне дэабфускатара JavaScript і статычны аналіз у CI/CD pipelineКаманды распрацоўшчыкаў могуць выявіць пагрозы на ранняй стадыі. Ставіцеся да заблытанага кода ў залежнасцях з падазрэннем, асабліва калі ён нечаканы.
Інструменты, як Ксігені створаны, каб дапамагчы камандам DevSecOps атрымаць уяўленне аб абфускацыі і рызыках ланцужкоў паставак у экасістэмах JavaScript. Выкарыстоўвайце іх для паляпшэння вашых pipeline і выявіць, што хаваецца ў вашым кодзе, перш чым ён трапіць у прадукцыйную версію.
Ксігені выходзіць за рамкі базавага сканавання, аналізуючы шаблоны заблытвання JavaScript, выяўляючы патэнцыйнае шкоднаснае праграмнае забеспячэнне JavaScript і адсочваючы рызыкоўныя паводзіны ў пакетах па ўсім ланцужку паставак праграмнага забеспячэння. Ён лёгка інтэгруецца ў CI/CD pipelineс, што дазваляе аўтаматызаванае кіраванне якасцю і бяспекай кода.
Заставайцеся параноікамі. Сканіруйце ўсё. І памятайце: калі гэта выглядае як абракадабразычлівасць, на гэта, верагодна, варта зірнуць яшчэ раз.





