Qual è l'impatto sulla sicurezza del codice JavaScript?

4

Negli ultimi anni l'uso del codice JavaScript per le applicazioni web è cresciuto così rapidamente che oggi può essere considerato uno standard de facto. Mi chiedo se l'uso di tali strumenti possa introdurre nuove vulnerabilità non presenti nel codice sorgente iniziale?

    
posta westbeam87 28.10.2017 - 11:40
fonte

1 risposta

4

È improbabile che le sostituzioni semplici introducano nuove vulnerabilità.

Le regole che seguono la minificazione sono semplici e facili da implementare e la grammatica della lingua è abbastanza facile da analizzare.

Pertanto, la minificazione stessa non pone significative minacce aggiuntive all'utilizzo di JavaScript (essenzialmente un metodo per l'esecuzione di codice arbitrario remoto) in generale.

Dopo un commento di @Armenius, vorrei sottolineare che ci sono alcuni casi limite in cui i minificatori fanno ipotesi sul sistema di battitura (in qualche modo contorto) di JavaScript che introduce - beh - bug.

Questo problema è stato ancora risolto, ma ovviamente non vi è alcuna prova che non ci siano minificatori con un design più scadente che facciano cose per minimizzare che (ab) usino le caratteristiche in modo diverso da ciò che l'autore intendeva.

Si noti inoltre che dipende da quale minificatore si utilizza - ad esempio, come prova aneddotica - il passaggio da gcc a clang ha riportato buffer overflow "corretti" controllando se un intero ha overflow in un'istruzione if. Lo standard dice che il comportamento degli interi traboccati non è definito e gcc ha usato per ricominciare da capo a minint. Clang era intelligente: »se il numero intero non scorreva, non poteva essere negativo. Se è negativo, deve esserci un overflow. Quali conseguenze sono indefinite, quindi sto ottimizzando l'intera dichiarazione if «

Quindi, sì, c'è una piccola possibilità che i minifiers (in pratica qualsiasi software così anche) introducano nuovi bug. Tuttavia, sono fiducioso che sono rari e facilmente risolvibili in quanto la sintassi non è così complicata.

Tuttavia, c'è un'implicazione che spesso viene trascurata quando si parla di minificazione: ogni volta che gli script vengono minimizzati, diventano essenzialmente inintelligibili per gli umani a meno che non vengano reinventati. Quindi, quando non sono inclusi da un CDN di fiducia, possono contenere parti di script dannosi nascosti in un'implementazione jQuery altrimenti valida, ad esempio.

E l'introduzione di tale codice dannoso può essere fatta molto bene dai minificatori. D'altra parte, tali strumenti sono di solito open source e un criptovalutro nascosto in ogni script minimizzato verrà individuato abbastanza rapidamente dalla comunità.

A parte questo, la caduta di codice malizioso altrimenti non ovvio in uno script miniato dopo la sua generazione e prima della sua distribuzione agli utenti può essere un buon nascondiglio - e la minificazione continua rende più complicate le revisioni manuali della sicurezza dei siti web.

    
risposta data 28.10.2017 - 11:48
fonte

Leggi altre domande sui tag