JavaScript obfuskators — JavaScript obfuskators — JavaScript ļaunprogrammatūra

Kāpēc uzbrucēji ļaunprātīgi izmanto JavaScript obfuscator rīkus (un kā tos atklāt)

Ko dara JavaScript obfuscators?

JavaScript obfuskators ir izstrādāts, lai tīru, cilvēkam lasāmu kodu pārveidotu par kaut ko tikko salasāmu, apgrūtinot tā izpratni vai reverso inženieriju. Šie rīki pārdēvē mainīgos un funkcijas, noņem atstarpes, saplacina koda struktūras un izmanto tādas metodes kā virkņu sadalīšana, heksadecimālā kodēšana vai vadības plūsmas saplacināšana. Lai gan mērķis bieži vien ir aizsargāt intelektuālo īpašumu vai samazināt faila lielumu, iegūtā sarežģītība nodrošina arī ideālu aizsegu JavaScript ļaunprogrammatūrai. Tāpēc daudzas drošības komandas izmanto JavaScript deobfuskācijas rīkus, lai analizētu pārveidoto kodu un atklātu slēptu uzvedību.

Piemēram, kaut kas tik vienkāršs kā:

function greet(name) { return `Hello, ${name}`; } Might become: function _0x1a2b(_0x3c4d){return'Hello, '+_0x3c4d;} 

Izstrādātājiem, kas nodrošina klienta puses loģiku (piemēram, pārlūkprogrammā balstītu SaaS), JavaScript obfuskators ir daļa no rīku ķēdes. Taču šī pati transformācija padara to par perfektu JavaScript ļaunprogrammatūras aizsegšanas rīku.

Kā uzbrucēji ļaunprātīgi izmanto obfuscāciju, lai paslēptu JavaScript ļaunprogrammatūru

Uzbrucēji ļaunprātīgi izmanto JavaScript apmulsināšanas rīkus, lai maskētos ļaunprogrammatūra, kas ievadīta atvērtā pirmkoda bibliotēkās, npm pakotnes, vai tieši pārlūkprogrammas skriptos. Bieži sastopama shēma ir vērtuma slēpšana apmulsinātās funkcijās, kas tiek aktivizētas izpildlaikā noteiktos apstākļos.

Apsveriet kompromitētu npm pakotni. No pirmā acu uzmetiena viss izskatās likumīgi. Taču, rūpīgāk ieskatoties, atklājas apmulsināta JavaScript atsauce uz kodētām virknēm, attāliem URL vai dinamiskiem elementiem. eval() zvani:

(function(_0xa1b2c){var _0xd3e4=['/(function(_0xa1b2c){var _0xd3e4=['\x2fapi/(function(_0xa1b2c){var _0xd3e4=['\x2fapi\x2fsteal','...']; ...eval(atob(_0xd3e4[0]));})(this); 

Tā nav saspiešana. Tā ir maskēšanās. Šeit slēpjas JavaScript ļaunprogrammatūra, gaidot, lai izfiltrētu žetonus, ievietotu pikšķerēšanas veidlapas vai piešķirtu atļaujas lietotnēs.

Reālie riski lietotņu drošībā un piegādes ķēdē

Moderna programmatūra pipelineir veidoti, izmantojot trešās puses kodu. JavaScript ļaunprogrammatūra, kas iegulta, izmantojot apmulsinātus skriptus, nav tikai drošības caurums; tā ir piegādes ķēdes pārkāpums. Kad apmulsināta ļaunprogrammatūra nonāk koplietojamā bibliotēkā, tā izplatās:

  • CI versijās, izmantojot pack.json
  • Priekšējās daļas pakotnēs, izmantojot Webpack/Rollup
  • Ražošanas procesā, izmantojot CDN vai skriptu injekcijas

Piemēram, notikumu plūsmas incidents parādīja, kā uzbrucēji izmantoja kodēšanas slēpšanu, lai ievietotu vērtumus plaši izmantotās pakotnēs. Izstrādātāji reti pārbauda dziļi slēpjamu kodu, padarot to par ideālu slēptuvi.

Risks nav teorētisks. Tas jau ir jūsu kodā, ja jūsu atkarības netiek skenētas.

Aptumšota koda noteikšana ar JavaScript deobfuscator rīkiem

Lai atklātu slēptus draudus, komandas izmanto JavaScript atšifrēšanas rīkus. Tie analizē apmulsinātus koda modeļus, dekodē virknes un atklāj brīdinājuma signālus, piemēram, dinamiskos eval(), apmulsinātas cilpas un nevajadzīga sarežģītība.

Noderīgi deobfuscatori ne tikai pārformatē kodu; tie atzīmē:

  • Izmantošana funkcija, eval, un setTimeout ar kodētām kravām
  • Garas Base64 vai heksadecimālo virkņu secības
  • Vadības plūsmas saplacināšana vai neaktīva koda injekcija

Automatizēti rīki, piemēram, statiskie analizatori vai AST parsētāji, palīdz noteikt šīs tendences. Tie ir pirmā aizsardzības līnija, pārskatot atkarības vai validējot pakotņu atjauninājumus.

Piemērs: integrējiet deobfuscācijas skenēšanu pirmsapvienošanās pārbaudēs, lai izvairītos no slēptu draudu apvienošanas.

Integrējot atklāšanu CI/CD Pipelines

Atklāšana nav uzdevums pēc izvietošanas. Aptumšošanas skenēšanai vajadzētu būt daļai no tā. CI/CD pipeline. Izmantot GitHub darbības, GitLab CI, vai Jenkins lai aktivizētu skenēšanu katrā nospiešanas vai apvienošanas reizē.

Tipisks pipeline plūsma:

jobs: security-check: steps: - uses: actions/checkout@v2 - name: Scan for Obfuscation run: node scripts/deobfuscate-scan.js

Izmantojot politikas ieviešanu, varat bloķēt versijas, kas satur riskantu, apmulsinātu kodu. Apvienojiet to ar SCA darbarīki lai npm pakotnēs savstarpēji atsauktos uz zināmiem ļaunprogrammatūras parakstiem.

Negaidiet pārsteigumus izpildes laikā. Padariet to par noraidījumu jau izstrādes laikā.

Apmulsināšanas slēptās izmaksas: cīņa pret JavaScript ļaunprogrammatūru, izmantojot deobfuscatorus

JavaScript obfuskācijas rīkiem ir likumīgi pielietojumi. Taču uzbrucēji paļaujas uz tiem, lai slēptu JavaScript ļaunprogrammatūru un izmantotu uzticību atvērtā pirmkoda ekosistēmai. Īstais risks lietotņu saugumā nav tikai tajā, ko jūs rakstāt, bet arī tajā, ko jūs importējat. Ieguldot JavaScript deobfuscator skenēšanu un statisko analīzi CI/CD pipelineIzstrādātāju komandas var laikus pamanīt draudus. Izturieties pret aizdomām pret apmulsinātu kodu atkarībās, īpaši, ja tas ir negaidīts.

Rīki, piemēram Ksigēni ir izstrādāti, lai palīdzētu DevSecOps komandām iegūt ieskatu par obfuskāciju un piegādes ķēdes riskiem JavaScript ekosistēmās. Izmantojiet tos, lai uzlabotu savu pipeline un atklāt, kas slēpjas jūsu kodā, pirms tas nonāk ražošanas versijā.

Ksigēni sniedzas tālāk par pamata skenēšanu, analizējot JavaScript slēpšanas modeļus, atzīmējot potenciālu JavaScript ļaunprogrammatūru un izsekojot riskantas uzvedības pakotnēs visā jūsu programmatūras piegādes ķēdē. Tas nemanāmi integrējas CI/CD pipelines, nodrošinot automatizētu koda kvalitātes un drošības pārvaldību.

Esi paranoisks. Skenē visu. Un atceries: ja tas izskatās pēc nesaprotamām lietām, iespējams, ir vērts to vēlreiz apskatīt.

sca-tools-software-composition-analysis-tools
Prioritizējiet, novērsiet un aizsargājiet savus programmatūras riskus
Iegūstiet savu bezmaksas kontu.
Nepieciešama kredītkarte.

Nodrošiniet programmatūras izstrādi un piegādi

ar Xygeni produktu komplektu