- Sicurezza
- OWASP
- Checklist
Le 10 vulnerabilità del codice da cercare nel 2026
Checklist pratica delle dieci classi di vulnerabilità da controllare in ogni code review, mappate su OWASP Top 10 e CWE, con la correzione per ciascuna.
· 9 min di lettura · Lina Source LLC
La maggior parte delle violazioni nasce ancora da una manciata di classi di bug ben note. I framework sono diventati più sicuri, ma gli errori si sono spostati: negli handler delle API, nei job in background, nel codice di infrastruttura e nel collante tra i servizi. Questa è la lista che controlliamo per prima in ogni audit, con il CWE che troverai in un report di CodeAuditAgent.
1. Controllo degli accessi violato (CWE-639, CWE-862)
È di gran lunga la vulnerabilità grave più comune: un endpoint carica un record tramite ID senza verificare che appartenga a chi fa la richiesta. L'autenticazione ti dice chi è qualcuno; l'autorizzazione deve avvenire su ogni singola query.
// Scope every lookup to the owner
const invoice = await db.invoice.findFirst({
where: { id, userId: session.user.id },
});2. Injection (CWE-89, CWE-78)
SQL costruito concatenando stringhe, comandi shell ed espressioni di template sono ancora ovunque, di solito in quell'unica query che qualcuno ha scritto a mano per motivi di performance. Parametrizza la query o passa gli argomenti come array; non concatenare mai l'input.
3. Segreti hardcoded (CWE-798)
Chiavi API committate nel repository, token di test che si sono rivelati attivi, chiavi private nei file di configurazione. Spostali in variabili d'ambiente o in un secret manager e ruota tutto ciò che sia mai stato committato: cancellare la riga non cancella la cronologia.
4. Server-side request forgery (CWE-918)
Qualsiasi funzionalità che recupera un URL fornito dall'utente, come webhook, anteprime dei link o importazioni, può essere puntata verso la tua rete interna o l'endpoint dei metadati cloud. Usa una allowlist di host, risolvi e verifica l'IP e blocca gli intervalli privati.
5. Cross-site scripting (CWE-79)
I framework moderni applicano l'escaping per impostazione predefinita, quindi oggi l'XSS si nasconde nelle scappatoie: prop con HTML grezzo, renderer markdown e URL inseriti negli attributi href. Sanifica l'HTML con una libreria affidabile e rifiuta gli URL javascript:.
6. Deserializzazione insicura ed eval (CWE-502, CWE-95)
Pickle, il caricamento di YAML, gli object stream di Java e l'eval dinamico trasformano i dati in codice. Usa loader sicuri e JSON validato tramite schema.
7. Crittografia debole (CWE-327, CWE-330)
MD5 o SHA-1 per le password, IV statici, Math.random() per i token. Usa un algoritmo di hashing delle password pensato per questo scopo (Argon2id, bcrypt, scrypt) e una sorgente di numeri casuali crittograficamente sicura.
8. Open redirect (CWE-601)
Un parametro next o returnTo che accetta qualsiasi URL trasforma il tuo dominio in un trampolino affidabile per il phishing. Accetta solo percorsi relativi della stessa origine.
9. Rate limiting assente (CWE-307, CWE-770)
Login, reset della password, OTP e qualsiasi endpoint che ti costa denaro (email, SMS, chiamate AI) hanno bisogno di limiti per utente e per IP. Senza di essi, gli attacchi brute force e quelli che fanno esplodere la bolletta sono banali.
10. Configurazione di sicurezza errata (CWE-16)
CORS con wildcard e credenziali, modalità debug in produzione, stack trace dettagliati, policy dei bucket troppo permissive. Raramente sembrano bug in una code review perché vivono nella configurazione, ed è proprio per questo che vanno revisionati come codice.
Come usare questa lista
- Controlla le classi da 1 a 3 in ogni pull request; sono quelle con l'impatto maggiore e le più facili da non notare.
- Tratta la configurazione dell'infrastruttura e della CI come codice soggetto a revisione.
- Registra il CWE in ogni vulnerabilità rilevata, così da poter tracciare le correzioni e misurare le tendenze.