Beth mae Llygrydd JavaScript yn ei Wneud?
Mae JavaScript Obfuscator wedi'i gynllunio i gymryd cod glân, y gall pobl ei ddarllen a'i drawsnewid yn rhywbeth prin yn ddarllenadwy, gan ei gwneud hi'n anoddach ei ddeall neu ei wrthdroi. Mae'r offer hyn yn ailenwi newidynnau a swyddogaethau, yn tynnu bylchau gwyn, yn fflatio strwythurau cod, ac yn defnyddio technegau fel rhannu llinynnau, amgodio hecsadegol, neu fflatio llif rheoli. Er mai'r nod yn aml yw amddiffyn eiddo deallusol neu leihau maint ffeil, mae'r cymhlethdod sy'n deillio o hyn hefyd yn darparu gorchudd delfrydol ar gyfer meddalwedd faleisus JavaScript. Dyna pam mae llawer o dimau diogelwch yn troi at offer dad-obfuscator JavaScript i ddadansoddi cod wedi'i drawsnewid a datgelu ymddygiad cudd.
Er enghraifft, rhywbeth mor syml â:
function greet(name) { return `Hello, ${name}`; } Might become: function _0x1a2b(_0x3c4d){return'Hello, '+_0x3c4d;} I ddatblygwyr sy'n cludo rhesymeg ochr y cleient (meddyliwch am SaaS sy'n seiliedig ar borwr), mae drysu JavaScript yn rhan o'r gadwyn offer. Ond mae'r un trawsnewidiad hwn yn ei wneud yn orchudd perffaith ar gyfer meddalwedd faleisus JavaScript.
Sut Mae Ymosodwyr yn Camddefnyddio Drysu i Guddio Meddalwedd Maleisus JavaScript
Mae ymosodwyr yn camddefnyddio offer drysu JavaScript i guddio meddalwedd faleisus wedi'i chwistrellu i lyfrgelloedd ffynhonnell agored, pecynnau npm, neu'n uniongyrchol i sgriptiau porwr. Patrwm cyffredin yw cuddio llwythi y tu mewn i swyddogaethau wedi'u cymylu sy'n sbarduno yn ystod amser rhedeg o dan amodau penodol.
Ystyriwch becyn npm sydd wedi'i gyfaddawdu. Ar yr olwg gyntaf, mae popeth yn edrych yn gyfreithlon. Ond mae golwg ddyfnach yn datgelu JavaScript wedi'i gymysgu sy'n cyfeirio at linynnau wedi'u hamgodio, URLau o bell, neu ddeinamig gwerthuso() galwadau:
(function(_0xa1b2c){var _0xd3e4=['/(function(_0xa1b2c){var _0xd3e4=['\x2fapi/(function(_0xa1b2c){var _0xd3e4=['\x2fapi\x2fsteal','...']; ...eval(atob(_0xd3e4[0]));})(this); Nid cywasgu yw hwn. Cudd-ddywediad ydyw. Mae meddalwedd faleisus JavaScript yn cuddio yma, yn aros i allfudo tocynnau, chwistrellu ffurflenni gwe-rwydo, neu gynyddu caniatâd y tu mewn i apiau.
Risgiau Go Iawn mewn AppSec a'r Gadwyn Gyflenwi
Meddalwedd fodern pipelineMae s wedi'u hadeiladu ar god trydydd parti. Nid dim ond twll diogelwch yw meddalwedd faleisus JavaScript sydd wedi'i fewnosod trwy sgriptiau wedi'u drysu; mae'n doriad yn y gadwyn gyflenwi. Unwaith y bydd meddalwedd faleisus wedi'i drysu yn glanio mewn llyfrgell a rennir, mae'n lledaenu:
- I mewn i CI yn adeiladu trwy pecyn.json
- I mewn i fwndeli blaen trwy Webpack/Rollup
- I gynhyrchu trwy CDNs neu chwistrelliadau sgript
Er enghraifft, dangosodd y digwyddiad ffrwd-event sut y defnyddiodd ymosodwyr drysu i blannu llwythi mewn pecynnau a ddefnyddir yn helaeth. Anaml y bydd datblygwyr yn archwilio cod sydd wedi'i drysu'n ddwfn, gan ei wneud yn fan cuddio perffaith.
Nid yw'r risg yn ddamcaniaethol. Mae eisoes yn eich cod os nad yw eich dibyniaethau wedi'u sganio.
Canfod Cod Cymysgedig gydag Offerynnau Dad-gymysgedd JavaScript
I ddal bygythiadau cudd, mae timau'n defnyddio offer dad-ddrysu JavaScript. Mae'r rhain yn dadansoddi patrymau cod wedi'u drysu, yn datgodio llinynnau, ac yn datgelu baneri coch fel deinamig gwerthuso(), dolenni cymylu, a chymhlethdod diangen.
Nid yw dad-ddryswyr defnyddiol yn ailfformatio cod yn unig; maent yn nodi:
- Defnyddio swyddogaeth, gwerthuso, a setTimeout gyda llwythi tâl wedi'u hamgodio
- Dilyniannau hir o linynnau Base64 neu hecsadegol
- Gwastadu llif rheoli neu chwistrellu cod marw
Mae offer awtomataidd fel dadansoddwyr statig neu ddadansoddwyr AST yn helpu i ganfod y patrymau hyn. Nhw yw'r llinell amddiffyn gyntaf wrth adolygu dibyniaethau neu ddilysu diweddariadau pecynnau.
Enghraifft: integreiddio sganio dad-ddrysu mewn gwiriadau cyn-uno er mwyn osgoi uno bygythiadau cudd.
Integreiddio Canfod i mewn CI/CD Pipelines
Nid yw canfod yn dasg ar ôl defnyddio. Dylai sganio drysu fod yn rhan o'r CI/CD pipeline. Defnyddio Camau Gweithredu GitHub, GitLab CI, neu Jenkins i sbarduno sganiau ar bob gwthiad neu gyfuniad.
Nodweddiadol pipeline llif:
jobs: security-check: steps: - uses: actions/checkout@v2 - name: Scan for Obfuscation run: node scripts/deobfuscate-scan.jsGyda gorfodi polisi, gallwch rwystro adeiladwaith sy'n cynnwys cod dryslyd peryglus. Cyfunwch hyn â SCA offer i groesgyfeirio llofnodion meddalwedd faleisus hysbys mewn pecynnau npm.
Peidiwch ag aros am syrpreisys amser rhedeg. Gwnewch yn siŵr ei fod yn wrthodiad amser adeiladu.
Cost Gudd Drysu: Ymladd Meddalwedd Maleisus JavaScript gyda Dad-ddryswyr
Mae gan offer drysu JavaScript ddefnyddiau cyfreithlon. Ond mae ymosodwyr yn dibynnu arnynt i guddio meddalwedd faleisus JavaScript ac i fanteisio ar ymddiriedaeth yn yr ecosystem ffynhonnell agored. Nid yn yr hyn rydych chi'n ei ysgrifennu yn unig y mae'r risg wirioneddol yn AppSec, ond yr hyn rydych chi'n ei fewnforio. Drwy fewnosod sganiau dad-ddweud JavaScript a dadansoddiad statig i mewn CI/CD pipelines, gall timau datblygu ganfod bygythiadau'n gynnar. Trin cod wedi'i gymysgu mewn dibyniaethau gyda amheuaeth, yn enwedig pan fydd yn annisgwyl.
Offer fel Xygeni wedi'u hadeiladu i helpu timau DevSecOps i gael gwelededd i risgiau drysu a chadwyn gyflenwi ar draws ecosystemau JavaScript. Defnyddiwch nhw i wella eich pipeline a chanfod beth sy'n cuddio yn eich cod cyn iddo gyrraedd cynhyrchiad.
Xygeni yn mynd y tu hwnt i sganio sylfaenol trwy ddadansoddi patrymau drysu JavaScript, nodi meddalwedd faleisus JavaScript posibl, ac olrhain ymddygiadau peryglus mewn pecynnau ar draws eich cadwyn gyflenwi meddalwedd. Mae'n integreiddio'n ddi-dor i mewn CI/CD pipelines, gan alluogi llywodraethu awtomataidd dros ansawdd a diogelwch cod.
Byddwch yn baranoaidd. Sganiwch bopeth. A chofiwch: os yw'n edrych fel nonsens, mae'n debyg ei fod yn haeddu ail olwg.






