Correggere i risultati di Web Security Scanner

Questa pagina spiega come interpretare, riprodurre e correggere i risultati di Web Security Scanner.

I ruoli IAM per Security Command Center possono essere concessi a livello di organizzazione, cartella o progetto. La possibilità di visualizzare, modificare, creare o aggiornare risultati, asset e origini di sicurezza dipende dal livello di accesso che ti è stato concesso. Per saperne di più sui ruoli di Security Command Center, consulta Controllo dell'accesso.

Classi di vulnerabilità

Web Security Scanner rileva le seguenti classi di vulnerabilità:

  • Cross-site scripting (XSS)
  • Falsificazione richiesta lato server
  • Flash injection
  • Contenuto misto
  • Librerie obsolete o vulnerabili
  • Password in chiaro
  • Convalida dell'origine non sicura
  • Intestazioni non valide
  • Intestazioni con errori ortografici
  • Repository accessibili
  • SQL injection
  • XML injection
  • Prototype pollution

Classi di configurazioni errate

Web Security Scanner rileva le seguenti classi di configurazioni errate:

  • Intestazione HTTP Strict Transport Security configurata in modo errato
  • Intestazione Content Security Policy mancante
  • Intestazione Content Security Policy configurata in modo errato
  • Intestazione Cross-Origin-Opener-Policy mancante
  • Protezione da clickjacking mancante

Se viene rilevata una qualsiasi di queste vulnerabilità o configurazioni errate, il risultato viene evidenziato per consentirti di esaminarlo nel dettaglio.

Impatto sui log

Le tracce delle scansioni di Web Security Scanner vengono visualizzate nei file di log. Ad esempio, Web Security Scanner genera richieste per stringhe insolite come ~sfi9876 e /sfi9876. Questo processo consente alla scansione di esaminare le pagine di errore dell'applicazione. Queste richieste di pagine intenzionalmente non valide vengono visualizzate nei log.

Disattivazione dei risultati dopo la correzione

Dopo aver corretto una vulnerabilità o una configurazione errata, Web Security Scanner non imposta automaticamente lo stato del risultato di Security Command Center corrispondente su INACTIVE. A meno che tu non modifichi manualmente lo stato, i risultati generati da Web Security Scanner in Security Command Center rimangono ACTIVE.

Se utilizzi la versione standalone di Web Security Scanner, dopo aver corretto una vulnerabilità o una configurazione errata e Web Security Scanner non è più in grado di rilevarla, i report successivi non includono la vulnerabilità o la configurazione errata. Un record del risultato rimane nei report dei risultati precedenti.

Web Security Scanner esegue scansioni gestite settimanalmente.

Per saperne di più sulle scansioni di Web Security Scanner, consulta Tipi di scansione.

Correzione dei risultati di Web Security Scanner

Questa sezione spiega come correggere i diversi tipi di risultati di Web Security Scanner. Per le strategie di difesa dagli attacchi comuni a livello di applicazione che sono descritti in OWASP Top 10, consulta Opzioni di mitigazione di OWASP Top 10 su Google Cloud.

XSS

Nome della categoria nell'API: XSS

Il test di injection di Cross-site scripting (XSS) di Web Security Scanner simula un attacco inserendo una stringa di test innocua in campi modificabili dall'utente ed eseguendo una serie di azioni utente. I rilevatori personalizzati osservano browser e DOM durante il test per determinare se un'injection è riuscita e valutarne il potenziale di sfruttamento.

Se la stringa JavaScript contenuta nel test viene eseguita correttamente, viene avviato il debugger di Chrome. Quando una stringa di test può essere eseguita, è possibile inserire ed eseguire codice JavaScript nella pagina. Se un malintenzionato individuasse il problema, potrebbe eseguire qualsiasi codice JavaScript impersonando l'utente (vittima) che fa clic su un link dannoso.

In alcuni casi, l'applicazione sottoposta a test potrebbe modificare la stringa di test prima che venga analizzata dal browser. Ad esempio, l'applicazione potrebbe convalidare l'input o limitare le dimensioni di un campo. Quando il browser tenta di eseguire questa stringa di test modificata, è probabile che si interrompa e generi un errore di esecuzione JavaScript. L'errore indica un problema di injection, ma potrebbe non essere possibile sfruttarlo.

Per risolvere questo risultato, devi verificare se il problema è una vulnerabilità XSS controllando manualmente se le modifiche alla stringa di test possono essere evitate. Per informazioni dettagliate su come verificare questa vulnerabilità, consulta Cross-site scripting.

Esistono diversi modi per correggere questo risultato. La correzione consigliata consiste nell'applicare l'escape a tutto l'output e utilizzare un sistema di modelli che supporti l'applicazione automatica contestuale dell'escape.

XSS angular callback

Nome della categoria nell'API: XSS_ANGULAR_CALLBACK

Una vulnerabilità di Cross-site scripting (XSS) nei moduli AngularJS può verificarsi quando Angular interpola una stringa fornita dall'utente. L'injection di valori forniti dall'utente in un'interpolazione AngularJS può consentire i seguenti attacchi:

  • Un malintenzionato può inserire codice arbitrario nella pagina visualizzata dai browser.
  • Un malintenzionato può eseguire azioni per conto del browser della vittima nell'origine della pagina.

Per riprodurre questa potenziale vulnerabilità, segui il link dell'URL di riproduzione in the Google Cloud console dopo aver eseguito la scansione. Questo link apre direttamente una finestra di avviso o inserisce la stringa XSSDETECTED per dimostrare che l'attacco è in grado di eseguire codice. Se la stringa viene inserita, puoi aprire gli strumenti per sviluppatori del browser e cercare XSSDETECTED per trovare la posizione esatta dell'injection.

XSS error

Nome della categoria nell'API: XSS_ERROR

Un risultato XSS_ERROR è un potenziale bug XSS dovuto a un'interruzione JavaScript. In alcuni casi, l'applicazione sottoposta a test potrebbe modificare la stringa di test prima che venga analizzata dal browser. Quando il browser tenta di eseguire questa stringa di test modificata, è probabile che si interrompa e generi un errore di esecuzione JavaScript. Questo errore indica un problema di injection, ma potrebbe non essere possibile sfruttarlo.

Per correggere questo risultato, devi verificare se esiste una vulnerabilità XSS controllando manualmente se le modifiche alla stringa di test possono essere evitate. Per informazioni dettagliate su come verificare questa vulnerabilità, consulta Cross-site scripting.

Server side request forgery

Nome della categoria nell'API: SERVER_SIDE_REQUEST_FORGERY

Una vulnerabilità SERVER_SIDE_REQUEST_FORGERY consente a un utente di un'applicazione web di accedere ai dati interni forzando un server a effettuare una richiesta (ad esempio una richiesta HTTP) a un endpoint di servizio con restrizioni. Ad esempio, un malintenzionato può sfruttare questa vulnerabilità per recuperare i dati dal Google Cloud servizio di metadati.

Per correggere questo risultato, utilizza una lista consentita per limitare i domini e gli indirizzi IP a cui l'applicazione web può inviare richieste.

Rosetta flash

Nome della categoria nell'API: ROSETTA_FLASH

Web Security Scanner potrebbe rilevare che il valore di un parametro di richiesta viene riflesso all'inizio di una risposta, ad esempio in richieste che utilizzano JSONP. Questa vulnerabilità è nota anche come flash injection. In determinate circostanze, un malintenzionato potrebbe fare in modo che il browser esegua la risposta come se fosse un file Flash fornito dall'applicazione web vulnerabile.

Per correggere questo risultato, non includere dati controllabili dall'utente all'inizio di una risposta HTTP.

Mixed content

Nome della categoria nell'API: MIXED_CONTENT

Web Security Scanner osserva in modo passivo il traffico HTTP e rileva quando la richiesta di un file CSS o JavaScript viene eseguita tramite HTTP mentre si trova nel contesto di una pagina HTTPS. In questo scenario, un malintenzionato che esegue un attacco man-in-the-middle potrebbe manomettere la risorsa HTTP e ottenere accesso completo al sito web che carica la risorsa o monitorare le azioni eseguite dagli utenti.

Per correggere questo risultato, utilizza link HTTP relativi, ad esempio, sostituisci http:// con //.

Outdated library

Nome della categoria nell'API: OUTDATED_LIBRARY

Web Security Scanner può riscontrare che la versione di una libreria è nota per avere un problema di sicurezza. Web Security Scanner è uno scanner basato sulla firma che tenta di identificare la versione della libreria in uso e la controlla a fronte di un elenco noto di librerie vulnerabili. Sono possibili falsi positivi se il rilevamento della versione non riesce o se alla libreria sono state applicate patch manualmente.

Per correggere questo risultato, esegui l'aggiornamento a una versione sicura della libreria inclusa.

Struts insecure deserialization

Nome della categoria nell'API: STRUTS_INSECURE_DESERIALIZATION

Web Security Scanner potrebbe rilevare che la tua applicazione web utilizza una versione di Apache Struts vulnerabile agli attacchi di injection di comandi remoti. Le versioni di Struts interessate possono analizzare in modo errato l'intestazione HTTP Content-Type non valida di un malintenzionato. Questa vulnerabilità consente di eseguire i comandi dannosi con i privilegi del server web.

Di seguito sono riportate le versioni vulnerabili di Apache Struts:

  • Versioni 2.3.x precedenti alla 2.3.32
  • Versioni 2.5.x precedenti alla 2.5.10.1

Per correggere questo risultato, esegui l'upgrade di Apache Struts all'ultima versione.

Per saperne di più sulla vulnerabilità di Apache Struts, consulta CVE-2017-5638.

Cacheable password input

Nome della categoria nell'API: CACHEABLE_PASSWORD_INPUT

Web Security Scanner potrebbe rilevare che, per un input della password, l'applicazione web utilizza un elemento <input> senza l'attributo type impostato su password. Ciò può portare i browser a memorizzare nella cache la password inserita dall'utente nella normale cache del browser, anziché in uno spazio di archiviazione sicuro delle password.

Per correggere questo risultato, nell'elemento <input>, aggiungi l'attributo type e impostalo su password, ad esempio &lt;input&nbsp;type="password"&gt;. Questo attributo oscura i caratteri inseriti dall'utente nel campo della password.

Clear text password

Nome della categoria nell'API: CLEAR_TEXT_PASSWORD

Web Security Scanner potrebbe rilevare che l'applicazione sembra trasmettere un campo password in chiaro. Un malintenzionato può intercettare il traffico di rete e sniffare il campo della password.

Per proteggere informazioni sensibili passati tra client e server, prendi sempre le seguenti precauzioni:

  • Utilizza certificati TLS/SSL.
  • Utilizza sempre HTTPS per le pagine che includono campi per la password.
  • Assicurati che gli attributi di azione modulo puntino sempre a un URL HTTPS.

Insecure allow origin ends with validation

Nome della categoria nell'API: INSECURE_ALLOW_ORIGIN_ENDS_WITH_VALIDATION

Web Security Scanner potrebbe rilevare che un endpoint HTTP o HTTPS tra siti convalida solo un suffisso dell'intestazione della richiesta Origin prima di rifletterlo all'interno dell'intestazione della risposta Access-Control-Allow-Origin. Se la convalida è configurata in modo errato, l'endpoint potrebbe concedere l'accesso a un dominio dannoso che ha lo stesso suffisso di un dominio nella lista consentita. Ad esempio, se il validatore dell'endpoint corrisponde a domini come *google.com, potrebbe concedere erroneamente l'accesso a maliciousdomaingoogle.com.

Per correggere questo risultato, verifica che il dominio principale previsto faccia parte del Origin valore dell'intestazione prima di rifletterlo nell'intestazione della risposta Access-Control-Allow-Origin. Per i caratteri jolly nel sottodominio, anteponi il punto al dominio principale, ad esempio .endsWith(".google.com").

Insecure allow origin starts with validation

Nome della categoria nell'API: INSECURE_ALLOW_ORIGIN_STARTS_WITH_VALIDATION

Web Security Scanner potrebbe rilevare che un endpoint HTTP o HTTPS tra siti convalida solo un prefisso dell'intestazione della richiesta Origin prima di rifletterlo all'interno dell'intestazione della risposta Access-Control-Allow-Origin. Se la convalida è configurata in modo errato, l'endpoint potrebbe concedere l'accesso a un dominio dannoso che ha lo stesso prefisso di un dominio nella lista consentita. Ad esempio, se il validatore dell'endpoint controlla solo se il dominio richiedente contiene google.com, potrebbe concedere erroneamente l'accesso a google.com.maliciousdomain.com.

Per correggere questo risultato, verifica che il dominio previsto corrisponda completamente al Origin valore dell'intestazione prima di rifletterlo nell'Access-Control-Allow-Origin risposta intestazione, ad esempio .equals(".google.com").

Session ID leak

Nome della categoria nell'API: SESSION_ID_LEAK

Web Security Scanner potrebbe trovare un identificatore di sessione nell'intestazione della richiesta Referer delle richieste tra domini dell'applicazione web. I domini che ricevono il Referer possono utilizzare l'identificatore di sessione per impersonare un utente (utilizzando il suo token) o identificarlo in modo univoco.

Per correggere questo risultato, archivia gli identificatori di sessione nei cookie anziché nell'URL. Inoltre, proteggi i cookie utilizzando i seguenti attributi:

  • HTTPOnly: un attributo che rende i cookie inaccessibili agli script lato client
  • Sicuro: un attributo che rende i cookie trasmissibili solo tramite HTTPS

Invalid content type

Nome della categoria nell'API: INVALID_CONTENT_TYPE

Web Security Scanner potrebbe rilevare che è stata caricata una risorsa che non corrisponde all'intestazione HTTP Content-Type della risposta. In questo scenario, l'applicazione restituisce contenuti sensibili con un tipo di contenuto non valido o senza un'intestazione X-Content-Type-Options: nosniff.

Per correggere questo risultato, assicurati che:

  • Le risposte JSON vengano fornite con l'intestazione Content-Type application/json
  • Altre risposte sensibili vengano fornite con i tipi MIME appropriati
  • I contenuti vengano forniti con l'intestazione HTTP X-Content-Type-Options: nosniff

Invalid header

Nome della categoria nell'API: INVALID_HEADER

Web Security Scanner potrebbe rilevare che un'intestazione di sicurezza contiene un errore di sintassi, che genera un'intestazione con valori non validi o non validi. Di conseguenza, il browser ignora queste intestazioni.

Le intestazioni valide sono descritte nelle sezioni seguenti.

Intestazione Referrer-Policy

Un criterio relativo al referrer valido contiene uno dei seguenti valori:

  • Una stringa vuota
  • no-referrer
  • no-referrer-when-downgrade
  • same-origin
  • origin
  • strict-origin
  • origin-when-cross-origin
  • strict-origin-when-cross-origin
  • unsafe-url

Intestazione X-Frame-Options

Un'intestazione X-Frame-Options valida può avere solo i seguenti valori:

  • DENY: non consentire tutti i frame
  • SAMEORIGIN: consenti il framing se l'URL di primo livello ha la stessa origine
  • ALLOW-FROM URL

Chrome non supporta ALLOW-FROM URL. Non sono consentite intestazioni X-Frame-Options multiple.

Intestazione X-Content-Type-Options

Un'intestazione X-Content-Type-Options valida può avere solo un valore: nosniff.

Intestazione X-XSS-Protection

Un'intestazione X-XSS-Protection valida deve iniziare con 0 ("disattivata") o 1 ("attivata"). Poi, solo se attivi la protezione, puoi aggiungere fino a due opzioni:

  • mode=block mostra una pagina vuota anziché filtrare l'XSS
  • report=URL invia i report a URL

Separa le opzioni con punti e virgola, ad esempio 1; mode=block; report=URI. Assicurati di non avere un punto e virgola finale.

Misspelled security header name

Nome della categoria nell'API: MISSPELLED_SECURITY_HEADER_NAME

Web Security Scanner potrebbe trovare un errore ortografico nell'intestazione di sicurezza. Se errata, l'intestazione di sicurezza è inefficace e deve essere corretta.

Per riprodurre questa vulnerabilità, controlla la presenza di errori ortografici nella scheda Rete degli strumenti per sviluppatori del browser.

Mismatching security header values

Nome della categoria nell'API: MISMATCHING_SECURITY_HEADER_VALUES

Web Security Scanner potrebbe rilevare che la risposta contiene intestazioni di risposta relative alla sicurezza duplicate con valori in conflitto. Alcune intestazioni HTTP relative alla sicurezza si comportano in modo indefinito se vengono dichiarate due volte in una risposta con valori non corrispondenti.

Per correggere questo risultato, mantieni solo una di queste intestazioni non corrispondenti.

Repository accessibile

Web Security Scanner potrebbe trovare un repository GIT o SVN accessibile nell'applicazione. Questa condizione può causare perdite di configurazione e del codice sorgente.

Per riprodurre la vulnerabilità, fai clic sull'URL di riproduzione nel report dei risultati.

XXE reflected file leakage

Nome della categoria nell'API: XXE_REFLECTED_FILE_LEAKAGE

Web Security Scanner potrebbe rilevare una vulnerabilità di tipo XXE (XML eXternal Entity) in un'applicazione web che analizza XML dagli input degli utenti. Un malintenzionato può fornire un XML contenente un'entità esterna. Questa entità esterna può fare riferimento a contenuti a cui l'applicazione ha accesso, ad esempio file sulla macchina host dell'applicazione. Quando il parser XML dell'applicazione elabora l'XML dannoso, può causare la perdita dei contenuti dei file sull'host.

Per correggere questo risultato, configura i parser XML in modo da non consentire le entità esterne.

Per saperne di più su questa vulnerabilità, consulta Elaborazione di entità esterne XML (XXE).

SQL injection

Nome della categoria nell'API: SQL_INJECTION

Web Security Scanner potrebbe rilevare una vulnerabilità SQL injection. I malintenzionati possono creare input che manipolano la struttura della query SQL sottostante in esecuzione sul server. Questi input consentono di esfiltrare i dati dal database e, in alcuni casi, di modificarli. Per risolvere questo risultato, utilizza query con parametri per impedire che input utente influenzi la struttura della query SQL.

Per saperne di più su questa vulnerabilità, consulta SQL injection.

Prototype pollution

Nome della categoria nell'API: PROTOTYPE_POLLUTION

Web Security Scanner potrebbe rilevare una vulnerabilità di tipo "prototype pollution" in un'applicazione web le cui proprietà degli oggetti sono assegnate a valori controllabili da un malintenzionato. I malintenzionati possono creare input che rendono l'applicazione vulnerabile a Cross-site scripting o ad altre vulnerabilità lato client.

Per correggere questo risultato, elimina la proprietà deprecata proto e rendi immutabile l'oggetto Object.prototype. Se questa mitigazione è incompatibile con il tuo codice, modifica la parte di codice vulnerabile in modo da copiare solo i valori previsti dagli input controllabili da utenti malintenzionati.

Correzione dei risultati di configurazione errata di Web Security Scanner

Questa sezione spiega come correggere i diversi tipi di risultati di configurazione errata di Web Security Scanner.

Configurazione errata di HTTP Strict Transport Security

Nome della categoria nell'API: HSTS_MISCONFIGURATION

Web Security Scanner garantisce che l'intestazione HTTP Strict Transport Security venga inviata con ogni risposta HTTP e sia configurata correttamente. Per limitare l'impatto sulla stabilità del tuo sito web:

  1. Inizia con un max-age ridotto e solo l'includeSubDomains inclusione (senza preload). Esempio: max-age=3600; includeSubDomains.
  2. Dopo un breve periodo di raffreddamento di circa una settimana senza problemi segnalati, aumenta il valore di max-age. Esempio: max-age=604800; includeSubDomains o max-age=2592000; includeSubDomains.
  3. Dopo circa tre mesi senza problemi segnalati, aggiungi il tuo sito web e i relativi sottodomini a hstspreload.org e specifica la direttiva preload. Se specifichi la direttiva preload, il requisito HSTS viene integrato nel browser e i malintenzionati non possono eseguire il downgrade della connessione. Direttiva preload: max-age=63072000; includeSubDomains; preload.

Intestazione Content-Security-Policy mancante

Nome della categoria nell'API: CSP_MISSING

Web Security Scanner garantisce che un'intestazione Content-Security-Policy rigorosa e solo con nonce venga inviata con ogni risposta HTTP.

  Content-Security-Policy:
    script-src 'nonce-{random}' 'report-sample';
    object-src 'none';
    base-uri 'none';
    report-uri https://link-to-report-endpoint

Intestazione Content-Security-Policy configurata in modo errato

Nome della categoria nell'API: CSP_MISCONFIGURATION

Web Security Scanner garantisce che un'intestazione Content-Security-Policy rigorosa e solo con nonce venga inviata con ogni risposta HTTP.

  Content-Security-Policy:
    script-src 'nonce-{random}' 'report-sample';
    object-src 'none';
    base-uri 'none';
    report-uri https://link-to-report-endpoint

Intestazione Cross-Origin-Opener-Policy mancante

Nome della categoria nell'API: COOP_MISSING

Web Security Scanner garantisce che l'intestazione Cross-Origin-Opener-Policy venga inviata con ogni risposta HTTP, inclusa una delle direttive valide:

  • unsafe-none
  • same-origin-allow-popups
  • same-origin

Protezione da clickjacking mancante

Nome della categoria nell'API: CLICKJACKING_PROTECTION_MISSING

Web Security Scanner garantisce che un'intestazione X-Frame-Options o Content-Security-Policy venga inviata con ogni risposta HTTP per impedire il clickjacking:

  • Se utilizzi un'intestazione X-Frame-Options, utilizza la direttiva DENY o SAMEORIGIN.
  • Se utilizzi un'intestazione Content-Security-Policy, configura la direttiva frame-ancestors.

Verificare il problema

Quando Web Security Scanner segnala un problema, devi verificarne la posizione. Questa sezione spiega come utilizzare i report dei risultati per riprodurre e verificare le vulnerabilità.

  1. Vai alla pagina Web Security Scanner nella Google Cloud console.

    Vai a Web Security Scanner

  2. Seleziona un progetto. Viene visualizzata una pagina con un elenco delle scansioni gestite e personalizzate.

  3. In Configurazioni della scansione, seleziona la scansione che contiene il risultato che vuoi verificare. Viene visualizzata una pagina con i dettagli della scansione.

  4. Vai alla scheda Risultati , espandi una categoria e seleziona un risultato per visualizzarne i dettagli.

  5. Il metodo di verifica varia in base alla categoria del risultato. Utilizza un browser di test e segui le istruzioni riportate di seguito.

    • Cross-site scripting: se segui l'URL di riproduzione, nel browser viene visualizzato un popup vuoto, a indicare che la scansione ha inserito correttamente codice innocuo in uno script.
    • Libreria obsoleta: se segui l'URL vulnerabile, viene visualizzata una pagina con il testo "Exploited", a indicare che la scansione ha inserito correttamente codice innocuo in uno script.
    • Contenuto misto : se segui l'URL della pagina HTTPS , viene visualizzato un avviso relativo a una vulnerabilità di contenuto misto. Il report dei risultati identifica la risorsa vulnerabile in URL della risorsa gestita via HTTP.
    • Flash injection: Web Security Scanner potrebbe restituire risultati in questa categoria, ma la maggior parte dei browser moderni è protetta da flash injection. È improbabile che questi risultati possano essere sfruttati.
    • Prototype pollution: segui l'URL nel campo URL di riproduzione e cerca le modifiche apportate all'oggetto Object.prototype dal payload con i seguenti snippet JavaScript.
      • ({}).__secret_injected_property
      • ({}).__defineGetter__.__secret_injected_property
      • ({}).hasOwnProperty.__secret_injected_property

L'applicazione dei criteri di sicurezza dei contenuti (CSP) potrebbe comunque impedire l'esecuzione di codice JavaScript. Questa condizione può rendere più difficile riprodurre la vulnerabilità XSS. Se riscontri questo problema, controlla la console di log del browser per informazioni dettagliate sulla violazione CSP che si è verificata.