Stai utilizzando un browser vecchio, che non rispetta gli standard web. Ti consigliamo di cambiarlo, perché questo sito potrebbe non funzionare correttamente.

Secure Software Design and Coding in Java-based web applications

ICOJ18

Il corso si basa sui concetti di sicurezza nella progettazione, realizzazione e gestione del software, basandosi sui contenuti del CBK (Common Body of Knowledge) per la Sicurezza Applicativa elaborato da ISC2. Le linee guida sono indipendenti dalla particolare tecnologia, tuttavia il corso presenta anche alcune delle principali vulnerabilità tecnologiche presenti in software realizzati utilizzando Java, JavaScript e tecnologie Web, facendo riferimento alla classifica Top 10 OWASP e alla classificazione CWE (Common Weakness Enumeration).

Nel laboratorio vengono presentati brani di codice insicuro, e verrà spiegato agli allievi come procederne all’individuazione e alla bonifica con l’aiuto di strumenti di analisi statica (SonarQube con profilo OWASP).
Sarà inoltre offerta una applicazione d’esempio che contiene diverse vulnerabilità (SQL Injection, XXE, XSS (Dom, Reflected e Stored), CSRF, Broken Authentication, IDOR, Token Hijacking…). Ai partecipanti verrà chiesto, tramite strumenti come Zed Attack Proxy, Burp, Wireshark, Zenmap, di effettuare gli attacchi per capirne la portata. Sarà inoltre spiegato l’uso di ZAP per operazioni di Spidering, Forced Browsing, Fuzzing, Active Scanning e Penetration Test dell’applicazione di esempio.

Gli strumenti SonarQube, ZAP e Dependency Checker saranno mostrati anche in catena di integrazione Continuous Integration con Maven e Jenkins, tramite opportuni plugin.

Al termine del corso, i partecipanti acquisiranno consapevolezza di come innervare il concetto di sicurezza in tutte le fasi di realizzazione del software (dai requisiti al deploy), e da quali principali vulnerabilità devono difendere lo sviluppo del proprio codice.

Contenuti:

Aspetti di Design e SSDLC

  • Concetti principali di sicurezza: Principi di progettazione della sicurezza; Requisiti software sicuri; Identificare i requisiti di sicurezza; Interpretare i requisiti di classificazione dei dati; Identificare i requisiti di privacy; Sviluppare la matrice di tracciabilità del requisito di sicurezza
  • Progettazione di software sicuro: Modello delle minacce; Definire l'architettura di sicurezza; Progettare interfacce sicure; Valutazione del rischio architettonico; Modelli (non funzionali) di sicurezza e vincoli; Utilizzo di architetture e strumenti di progettazione che migliorano la sicurezza; Utilizzare principi e modelli di progettazione sicura
  • Implementazione / programmazione di software in modo sicuro: Prassi di codifica sicure; Analizzare il codice per le vulnerabilità di sicurezza: OWASP e CWE. Commento delle principali vulnerabilità
  • Test di sicurezza del software: Sviluppare i casi di sicurezza; Sviluppare la strategia di test di sicurezza; Identificare le funzionalità non documentate; Interpretare le implicazioni di sicurezza dei risultati dei test; Classificare e monitorare gli errori di sicurezza; Proteggere i dati di prova; Sviluppare o ottenere dati di prova di sicurezza
  • Gestione del ciclo di vita del software sicuro: Configurazione e controllo della versione; Stabilire milestone di sicurezza; Identificare gli standard e le strutture di sicurezza; Creare una documentazione relativa alla sicurezza; Sviluppare metriche di sicurezza; Decommissionare in modo sicuro software obsoleto; Segnalare lo stato di protezione del software; Governo del rischio e della conformità
  • Rilasciare il software in modo sicuro: Salvare e gestire in modo sicuro i dati di sicurezza; Garantire un'installazione sicura; Eseguire test di sicurezza post-distribuzione; Eseguire il monitoraggio della protezione (ad esempio, gestire i registri degli errori, gli audit, gli SLA, le metriche di sicurezza) Risposta all'incidente di sicurezza; Patch e gestione delle vulnerabilità; Sostenere la continuità delle operazioni
  • Supply Chain e Acquisizione Software: Analizzare la sicurezza di software di terze parti; Fornire un supporto di sicurezza al processo di acquisizione

Esercizi di Attacco e Remediation

  • Presentazione di porzioni di codice Java e JavaScript con vulnerabilità. Classificazione OWASP/CWE delle vulnerabilità. Simulazione di penetrazione delle vulnerabilità. Discussione sulle modalità di hardening del codice e implementazione.
  • Attacchi presentati (OWASP A1 – A9) e discussione delle mitigation:
  • SQL Injection
  • Blind SQL Injection; attacchi Union e Order By
  • XXE; Blind XXE; XXE su architetture REST based
  • Broken Authentication; Parameter Tampering; Web Token Tampering; Reset Password Interception; Elevazione di autorizzazione a pari autenticazione
  • XSS: Stored, Reflected, DOM-Based. Alcuni esempi di attacchi
  • IDOR (Insecure Direct Object Reference)
  • CSRF, vari esempi di attacchi
  • Vulnerabilità nelle dipendenze (OWASP A9), uso di dependency checker, esempi
  • Tutti gli attacchi sono presentati con esempi concreti e challenge presentate agli allievi, che le dovranno risolvere con opportuni strumenti (ZAP, Burp, Wireshark, Zenmap…)

Continuous Integration e Strumenti

  • Setup di tool di security in continuous integration. SonarQube e Sonarlint come strumenti di SAST. Generazione report SonarQube OWASP Top 10 / Sans Top 25
  • Uso di ZAP come DAST per Fuzzing (con FuzzDB); Forced Browsing, Attacco Attivo con relativa configurazione. Generazione del report dei risultati di attacco dinamico
  • Integrazione di Owasp Dependency Check con Maven

Durata

  • 14 ore
  • 2 giorni

Prerequisiti

Senza LAB: Conoscenza dei processi di sviluppo del software;
Con LAB: Sviluppatori Java/JavaScript e tecnologie Web.

Solo su richiesta

Questo corso è erogabile solo su richiesta, in modalità on-line (con formazione a distanza), oppure on-site, sempre personalizzati secondo le esigenze.

Richiesta informazioni