Categoria OWASP: MASVS-CRYPTO: Cryptography
Panoramica
Nonostante l'uso diffuso della crittografia per proteggere la riservatezza e l'integrità dei dati, si presenta un rischio significativo quando gli sviluppatori implementano inavvertitamente algoritmi crittografici deboli o obsoleti. Questa vulnerabilità deriva dalle debolezze intrinseche di questi algoritmi, che possono essere sfruttate da utenti malintenzionati in possesso della potenza di calcolo o delle conoscenze necessarie. Le conseguenze di questo sfruttamento possono essere gravi e potenzialmente portare ad accesso non autorizzato, violazioni dei dati e manipolazione di informazioni sensibili.
Impatto
I dati sensibili possono essere esposti, modificati o falsificati. Algoritmi crittografici compromessi o rischiosi potrebbero portare a vulnerabilità e possono essere sfruttati per decrittografare informazioni sensibili, manomettere i dati o impersonare entità legittime. L'impatto dello sfruttamento di queste vulnerabilità può variare da violazioni dei dati e perdite finanziarie a danni alla reputazione e perdita di fiducia degli utenti.
Rischio: funzioni di hash crittografiche deboli o compromesse
L'utilizzo di funzioni hash crittografiche deboli o compromesse (come MD5
o SHA1
)
rappresenta un rischio significativo per la sicurezza e l'integrità dei dati. Le funzioni hash
sono progettate per creare impronte (hash) uniche e di lunghezza fissa dei dati di input,
rendendole utili per vari scopi, tra cui la verifica dell'integrità dei dati,
l'archiviazione delle password e le firme digitali. Tuttavia, quando vengono utilizzate funzioni hash deboli o compromesse, possono sorgere diverse vulnerabilità:
- Attacchi di collisione: le funzioni hash deboli sono soggette ad attacchi di collisione, in cui un malintenzionato trova due input diversi che producono lo stesso valore hash. Ciò può consentire loro di sostituire dati dannosi con dati legittimi senza essere rilevati, compromettendo l'integrità dei dati.
- Violazioni dei dati: se le password vengono sottoposte ad hashing con un algoritmo debole, una violazione riuscita di un sistema potrebbe portare all'esposizione delle credenziali utente. Gli autori degli attacchi potrebbero quindi utilizzare rainbow table o altre tecniche per decifrare le password, ottenendo l'accesso non autorizzato agli account.
- Ripudio delle firme digitali: le funzioni hash deboli utilizzate nelle firme digitali possono essere sfruttate per creare firme false, rendendo difficile determinare l'autenticità e l'integrità di documenti o messaggi.
Mitigazioni
Per mitigare questi rischi, è fondamentale utilizzare funzioni di hash crittografiche solide e ben verificate come SHA-2
o SHA-3
e mantenerle aggiornate man mano che vengono scoperte nuove vulnerabilità. Inoltre,
l'adozione di pratiche di sicurezza come l'hashing delle password e l'utilizzo
di algoritmi di hashing specifici per le password come bcrypt
o
Argon2
possono migliorare ulteriormente la protezione dei dati.
Rischio: funzioni di crittografia deboli o compromesse
L'utilizzo di funzioni di crittografia deboli o compromesse (come DES
o
RC4
) comporta gravi rischi per la riservatezza dei dati sensibili. La crittografia
è progettata per proteggere le informazioni trasformandole in un formato illeggibile,
ma se l'algoritmo di crittografia è difettoso, queste protezioni possono essere aggirate:
- Violazioni dei dati: gli algoritmi di crittografia deboli sono vulnerabili a vari attacchi, tra cui attacchi di forza bruta, attacchi di testo normale noto e tecniche di crittoanalisi. Se riusciti, questi attacchi possono esporre dati criptati, consentendo l'accesso non autorizzato a informazioni sensibili come dettagli personali, registri finanziari o dati aziendali riservati.
- Manipolazione e manomissione dei dati:anche se un malintenzionato non riesce a decriptare completamente i dati, potrebbe comunque essere in grado di manipolarli senza essere rilevato se l'algoritmo di crittografia è debole. Ciò può portare a modifiche non autorizzate dei dati, con conseguente potenziale frode, rappresentazione ingannevole o altre attività dannose.
Mitigazioni
Utilizzare algoritmi crittografici efficaci nelle funzioni di crittografia
Per mitigare questi rischi, è fondamentale utilizzare algoritmi crittografici sicuri e ben verificati e seguire le best practice per la gestione delle chiavi e l'implementazione della crittografia. Anche l'aggiornamento regolare degli algoritmi di crittografia e l'aggiornamento sulle minacce emergenti sono essenziali per mantenere una solida sicurezza dei dati.
Alcuni algoritmi predefiniti consigliati da utilizzare:
- Crittografia simmetrica:
AES-128
/AES-256
con modalitàGCM
Chacha20
- Crittografia asimmetrica:
RSA-2048
/RSA-4096
con spaziatura internaOAEP
Utilizza primitive sicure di una libreria di crittografia per ridurre le insidie comuni
Sebbene la selezione di un algoritmo di crittografia appropriato sia fondamentale, per ridurre al minimo le vulnerabilità di sicurezza, valuta l'utilizzo di una libreria di crittografia che offra un'API semplificata e ponga l'accento su configurazioni predefinite sicure. Questo
approccio non solo rafforza la sicurezza delle tue applicazioni, ma
riduce significativamente la probabilità di introdurre vulnerabilità a causa di
errori di codifica. Ad esempio, Tink semplifica le scelte di crittografia offrendo
due opzioni distinte: crittografia AEAD
e Hybrid
, rendendo più facile
per gli sviluppatori prendere decisioni informate in materia di sicurezza.
Rischio: funzioni di firma crittografica deboli o compromesse
L'utilizzo di funzioni di firma crittografica deboli o compromesse (come
RSA-PKCS#1 v1.5
o quelle basate su funzioni hash deboli)
comporta gravi rischi per l'integrità di dati e comunicazioni. Le firme digitali sono progettate per fornire autenticazione, non ripudio e integrità dei dati, garantendo che un messaggio o un documento provenga da un mittente specifico e non sia stato manomesso. Tuttavia, quando l'algoritmo di firma sottostante
è difettoso, queste garanzie possono essere compromesse:
- Falsificazione di firme: gli algoritmi di firma deboli possono essere vulnerabili ad attacchi che consentono a utenti malintenzionati di creare firme falsificate. Ciò significa che possono fingersi entità legittime, falsificare documenti o manomettere messaggi senza essere rilevati.
- Ripudio delle firme: se un algoritmo di firma viene compromesso, un firmatario potrebbe dichiarare falsamente di non aver firmato un documento, minando il principio di non ripudio e creando problemi legali e logistici.
- Manipolazione e manomissione dei dati: negli scenari in cui le firme vengono utilizzate per proteggere l'integrità dei dati, un algoritmo debole potrebbe consentire agli autori degli attacchi di modificare i dati senza invalidare la firma, portando a manomissioni non rilevate e alla potenziale compromissione di informazioni critiche.
Mitigazioni
Utilizzare algoritmi di firma crittografica efficaci
Per mitigare questi rischi, è fondamentale utilizzare algoritmi di firma crittografica robusti e ben verificati:
RSA-2048
/RSA-4096
con spaziatura internaPSS
- Elliptic Curve Digital Signature Algorithm (
ECDSA
) con curve sicure
Utilizza primitive sicure di una libreria di crittografia per ridurre le insidie comuni
La scelta dell'algoritmo di firma giusto è essenziale, ma per ridurre al minimo
le vulnerabilità della sicurezza, prendi in considerazione una libreria di crittografia che fornisca
garanzie di sicurezza solide per impostazione predefinita. Tink, ad esempio, semplifica le scelte di firma offrendo ECDSA
con curve sicure come opzione predefinita, il tutto all'interno di un'API semplice e completa. Questo approccio non solo migliora
la sicurezza, ma semplifica anche lo sviluppo eliminando la necessità di configurazioni
o processi decisionali complessi.
Risorse
- Libreria di crittografia Tink
- Qualità delle app per Android: crittografia
- Firma digitale con Tink
- Crittografia ibrida con Tink
- Crittografia autenticata con Tink
- Funzioni di crittografia e hash crittografici deboli o interrotti Android Security Lint
- CWE-327: Use of a Broken or Risky Cryptographic Algorithm
- CWE-328: Use of Weak Hash
- CWE-780: Use of RSA Algorithm without OAEP
- Pagina del NIST sulle funzioni hash approvate
- Advanced Encryption Standard (Wikipedia)
- Secure Hash Algorithm 2 (Wikipedia)
- Secure Hash Algorithm 3 (Wikipedia)
- RSA cryptosystem (Wikipedia)
- Elliptic Curve Digital Signature Algorithm (Wikipedia)
- Cifrario di flusso ChaCha (Wikipedia)
- Salting password (Wikipedia)
- Sistema crittografico ibrido (Wikipedia)
- Crittografia autenticata