Panoramica di Web Security Scanner

Web Security Scanner identifica le vulnerabilità di sicurezza nelle applicazioni web di App Engine, Google Kubernetes Engine (GKE) e Compute Engine. Esegue la scansione dell'applicazione, seguendo tutti i link nell'ambito degli URL di partenza e tenta di utilizzare il maggior numero possibile di input utente e gestori di eventi. Attualmente Web Security Scanner supporta solo URL e IP pubblici che non sono protetti da un firewall.

Web Security Scanner supporta attualmente l'ambiente standard di App Engine, gli ambienti flessibili di App Engine, le istanze di Compute Engine e le risorse GKE.

Web Security Scanner è progettato per integrare i processi di progettazione e sviluppo sicuri esistenti. Per evitare di distrarti con falsi positivi, Web Security Scanner commette errori nelle segnalazioni e non visualizza avvisi a bassa confidenza. Non sostituisce un controllo manuale della sicurezza e non garantisce che la tua applicazione sia priva di difetti di sicurezza.

Tipi di analisi

Web Security Scanner fornisce analisi delle vulnerabilità web gestite e personalizzate per applicazioni web pubbliche di App Engine, GKE e Compute Engine.

Scansioni gestite

Le analisi gestite di Web Security Scanner sono configurate e gestite da Security Command Center. Le analisi gestite vengono eseguite automaticamente una volta alla settimana per rilevare ed eseguire la scansione degli endpoint web pubblici. Queste analisi non utilizzano l'autenticazione e inviano richieste solo GET in modo da non inviare moduli sui siti web attivi.

Le analisi gestite vengono eseguite separatamente dalle analisi personalizzate.

Se Security Command Center è attivato a livello di organizzazione, puoi utilizzare le scansioni gestite per gestire centralmente il rilevamento di base delle vulnerabilità delle applicazioni web per i progetti nella tua organizzazione, senza dover coinvolgere singoli team di progetto. Quando vengono scoperti i risultati, puoi collaborare con i team per impostare analisi personalizzate più complete.

Quando abiliti Web Security Scanner come servizio, i risultati della scansione gestita sono automaticamente disponibili nella pagina Vulnerabilità di Security Command Center e nei report correlati. Per informazioni su come abilitare le analisi gestite di Web Security Scanner, consulta l'articolo sulla configurazione di Security Command Center.

Le analisi gestite supportano solo le applicazioni che utilizzano la porta predefinita, ovvero 80 per le connessioni HTTP e 443 per le connessioni HTTPS. Se l'applicazione utilizza una porta non predefinita, esegui un'analisi personalizzata.

Scansioni personalizzate

Le analisi personalizzate di Web Security Scanner forniscono informazioni granulari sui risultati relativi alle vulnerabilità delle applicazioni, come librerie obsolete, scripting tra siti o utilizzo di contenuti misti.

Puoi definire scansioni personalizzate a livello di progetto.

I risultati delle scansioni personalizzati sono disponibili in Security Command Center dopo aver completato la guida per la configurazione delle scansioni personalizzate di Web Security Scanner.

Analisi dei risultati

Questa sezione descrive i tipi di risultati di Web Security Scanner e gli standard di conformità pertinenti.

Rilevatori e conformità

Web Security Scanner supporta le categorie di OWASP Top Ten, un documento che classifica e fornisce indicazioni di correzione per i dieci rischi per la sicurezza delle applicazioni web più critici, come stabilito da Open Web Application Security Project (OWASP).

La mappatura della conformità è inclusa come riferimento e non è fornita o rivista dalla OWASP Foundation.

Questa funzionalità è destinata esclusivamente a monitorare le violazioni dei controlli di conformità. Le mappature non vengono fornite e possono essere utilizzate come base o come sostituto per l'audit, la certificazione o il rapporto di conformità dei tuoi prodotti o servizi con eventuali benchmark o standard di settore o normativi.

Per maggiori informazioni sulla conformità, consulta Valutare e segnalare la conformità del benchmark di sicurezza.

Tipi di risultati

Le analisi personalizzate e gestite di Web Security Scanner identificano i seguenti tipi di risultati. Nel livello Standard, Web Security Scanner supporta le analisi personalizzate delle applicazioni di cui è stato eseguito il deployment con URL e IP pubblici che non sono protetti da un firewall.

Categoria Descrizione del risultato Top 10 OWASP 2017 Top 10 OWASP 2021
Accessible Git repository

Nome categoria nell'API: ACCESSIBLE_GIT_REPOSITORY

Un repository Git è esposto pubblicamente. Per risolvere questo risultato, rimuovi l'accesso pubblico involontario al repository GIT.

Livello di prezzo: Standard

Correggi questo risultato

A5 A01
Accessible SVN repository

Nome categoria nell'API: ACCESSIBLE_SVN_REPOSITORY

Un repository SVN è esposto pubblicamente. Per risolvere questo risultato, rimuovi l'accesso pubblico involontario al repository SVN.

Livello di prezzo: Standard

Correggi questo risultato

A5 A01
Cacheable password input

Nome categoria nell'API: CACHEABLE_PASSWORD_INPUT

Le password inserite nell'applicazione web possono essere memorizzate nella cache in una normale cache del browser anziché in uno spazio di archiviazione sicuro delle password.

Livello di prezzo: Premium

Correggi questo risultato

A3 A04
Clear text password

Nome categoria nell'API: CLEAR_TEXT_PASSWORD

Le password vengono trasmesse in chiaro e possono essere intercettate. Per risolvere questo risultato, cripta la password trasmessa attraverso la rete.

Livello di prezzo: Standard

Correggi questo risultato

A3 A02
Insecure allow origin ends with validation

Nome categoria nell'API: INSECURE_ALLOW_ORIGIN_ENDS_WITH_VALIDATION

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. Per risolvere questo risultato, verifica che il dominio principale previsto faccia parte del valore dell'intestazione Origin 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").

Livello di prezzo: Premium

Correggi questo risultato

A5 A01
Insecure allow origin starts with validation

Nome categoria nell'API: INSECURE_ALLOW_ORIGIN_STARTS_WITH_VALIDATION

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. Per risolvere questo risultato, verifica che il dominio previsto corrisponda completamente al valore dell'intestazione Origin prima di rifletterlo nell'intestazione della risposta Access-Control-Allow-Origin, ad esempio .equals(".google.com").

Livello di prezzo: Premium

Correggi questo risultato

A5 A01
Invalid content type

Nome categoria nell'API: INVALID_CONTENT_TYPE

È stata caricata una risorsa che non corrisponde all'intestazione HTTP Content-Type della risposta. Per risolvere questo risultato, imposta l'intestazione HTTP X-Content-Type-Options con il valore corretto.

Livello di prezzo: Standard

Correggi questo risultato

A6 A05
Invalid header

Nome categoria nell'API: INVALID_HEADER

Un'intestazione di sicurezza contiene un errore di sintassi e viene ignorata dai browser. Per risolvere questo risultato, imposta correttamente le intestazioni di sicurezza HTTP.

Livello di prezzo: Standard

Correggi questo risultato

A6 A05
Mismatching security header values

Nome categoria nell'API: MISMATCHING_SECURITY_HEADER_VALUES

Un'intestazione di sicurezza contiene valori duplicati che non corrispondono, il che comporta un comportamento indefinito. Per risolvere questo risultato, imposta correttamente le intestazioni di sicurezza HTTP.

Livello di prezzo: Standard

Correggi questo risultato

A6 A05
Misspelled security header name

Nome categoria nell'API: MISSPELLED_SECURITY_HEADER_NAME

Un'intestazione di sicurezza contiene errori di ortografia e viene ignorata. Per risolvere questo risultato, imposta correttamente le intestazioni di sicurezza HTTP.

Livello di prezzo: Standard

Correggi questo risultato

A6 A05
Mixed content

Nome categoria nell'API: MIXED_CONTENT

Le risorse vengono gestite tramite HTTP in una pagina HTTPS. Per risolvere questo risultato, assicurati che tutte le risorse vengano gestite tramite HTTPS.

Livello di prezzo: Standard

Correggi questo risultato

A6 A05
Outdated library

Nome categoria nell'API: OUTDATED_LIBRARY

È stata rilevata una libreria con vulnerabilità note. Per risolvere il problema, esegui l'upgrade delle librerie a una versione più recente.

Livello di prezzo: Standard

Correggi questo risultato

A9 A06
Server side request forgery

Nome categoria nell'API: SERVER_SIDE_REQUEST_FORGERY

È stata rilevata una vulnerabilità di falsificazione di richieste lato server (SSRF). Per risolvere questo risultato, utilizza una lista consentita per limitare i domini e gli indirizzi IP a cui l'applicazione web può effettuare richieste.

Livello di prezzo: Standard

Correggi questo risultato

Non applicabile A10
Session ID leak

Nome categoria nell'API: SESSION_ID_LEAK

Quando effettui una richiesta interdominio, l'applicazione web include l'identificatore di sessione dell'utente nell'intestazione della richiesta Referer. Questa vulnerabilità consente al dominio ricevente di accedere all'identificatore di sessione, che può essere utilizzato per impersonare o identificare in modo univoco l'utente.

Livello di prezzo: Premium

Correggi questo risultato

A2 A07
SQL injection

Nome categoria nell'API: SQL_INJECTION

È stata rilevata una potenziale vulnerabilità di SQL injection. Per risolvere questo risultato, utilizza le query con parametri per impedire che gli input utente influenzino la struttura della query SQL.

Livello di prezzo: Premium

Correggi questo risultato

A1 A03
Struts insecure deserialization

Nome categoria nell'API: STRUTS_INSECURE_DESERIALIZATION

È stato rilevato l'utilizzo di una versione vulnerabile di Apache Struts. Per risolvere questo risultato, esegui l'upgrade di Apache Struts alla versione più recente.

Livello di prezzo: Premium

Correggi questo risultato

A8 A08
XSS

Nome categoria nell'API: XSS

Un campo di questa applicazione web è vulnerabile a un attacco XSS (cross-site scripting). Per risolvere questo risultato, convalida ed esegui l'escape dei dati non attendibili forniti dall'utente.

Livello di prezzo: Standard

Correggi questo risultato

A7 A03
XSS angular callback

Nome categoria nell'API: XSS_ANGULAR_CALLBACK

Una stringa fornita dall'utente non contiene caratteri di escape e AngularJS può interpolarla. Per risolvere questo risultato, convalida ed esegui l'escape dei dati non attendibili forniti dall'utente gestiti dal framework Angular.

Livello di prezzo: Standard

Correggi questo risultato

A7 A03
XSS error

Nome categoria nell'API: XSS_ERROR

Un campo di questa applicazione web è vulnerabile a un attacco tramite cross-site scripting. Per risolvere questo risultato, convalida ed esegui l'escape dei dati non attendibili forniti dall'utente.

Livello di prezzo: Standard

Correggi questo risultato

A7 A03
XXE reflected file leakage

Nome categoria nell'API: XXE_REFLECTED_FILE_LEAKAGE

È stata rilevata una vulnerabilità da entità esterna XML (XXE). Questa vulnerabilità può causare la perdita di un file nell'host da parte dell'applicazione web. Per risolvere questo risultato, configura i parser XML in modo da non consentire le entità esterne.

Livello di prezzo: Premium

Correggi questo risultato

A4 A05
Prototype pollution

Nome categoria nell'API: PROTOTYPE_POLLUTION

L'applicazione è vulnerabile all'inquinamento del prototipo. Questa vulnerabilità si verifica quando alle proprietà dell'oggetto Object.prototype possono essere assegnati valori controllabili da utenti malintenzionati. Si presume universalmente che i valori inseriti in questi prototipi si trasformino in cross-site scripting (XSS) o in vulnerabilità simili lato client, nonché in bug logici.

Livello di prezzo: Standard

Correggi questo risultato

A1 A03

Avvertenze sull'utilizzo

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 per cui ti viene concesso l'accesso. Per saperne di più sui ruoli di Security Command Center, consulta Controllo dell'accesso.

Altri aspetti importanti da tenere presenti quando si utilizza Web Security Scanner:

  • Poiché Web Security Scanner viene sottoposto a continui miglioramenti, una scansione futura potrebbe segnalare problemi non segnalati dalla scansione attuale.
  • Alcune funzionalità o sezioni dell'applicazione potrebbero non essere testate.
  • Web Security Scanner tenta di attivare ogni controllo e input che trova.
  • Se mostri azioni che cambiano stato per le quali il tuo account di test è autorizzato, è probabile che Web Security Scanner le attivi. Questo potrebbe portare a risultati indesiderati.
  • Web Security Scanner ha un limite di 15 analisi per progetto. Poiché le analisi vengono eseguite contemporaneamente, agli utenti che raggiungono questo limite viene consigliato di aggiungere più URL di avvio per analisi o di aggiungere analisi a progetti diversi che non hanno ancora raggiunto il limite.

Chi può eseguire un'analisi della sicurezza?

Per informazioni sui ruoli di Identity and Access Management (IAM) disponibili per Web Security Scanner, consulta Controllo degli accessi.

Quanto tempo è necessario per un'analisi della sicurezza?

L'analisi della sicurezza non viene eseguita immediatamente. Viene inserito in coda e poi eseguito in un secondo momento, possibilmente ore dopo, a seconda del carico del sistema. Dopo l'esecuzione della scansione, il tempo necessario dipenderà dalle dimensioni dell'applicazione. Il completamento delle applicazioni di grandi dimensioni con molti URL può richiedere diverse ore.

Limitazioni del target

Web Security Scanner dispone di filtri che limitano le destinazioni della scansione alla specifica istanza di App Engine per la quale viene creata la scansione. L'inserimento di URL per un altro progetto App Engine o un dominio esterno comporterà un messaggio di errore.

Le scansioni per Compute Engine e GKE sono limitate ai domini mappati a indirizzi IP esterni statici prenotati per lo stesso progetto e a indirizzi IP esterni statici che appartengono allo stesso progetto. Per istruzioni sulla prenotazione di indirizzi IP per i progetti, consulta i seguenti link:

App Engine non fornisce un modo per mappare indirizzi IP statici a un'applicazione. Tuttavia, puoi utilizzare Cloud Load Balancing e i gruppi di endpoint di rete serverless per prenotare un indirizzo IP statico per il bilanciatore del carico, che poi indirizza il traffico alla tua applicazione. Per informazioni sui prezzi, consulta Prezzi degli indirizzi IP esterni.

All'interno del tuo progetto, Web Security Scanner tenta automaticamente di evitare URL di uscita e altre posizioni generiche che potrebbero influire negativamente su una scansione. Tuttavia, per assicurarti, puoi utilizzare le impostazioni di scansione per escludere manualmente gli URL.

Convalida

Le configurazioni di scansione vengono convalidate al momento della creazione e prima di ogni analisi. Web Security Scanner controlla le impostazioni di Security Command Center e le credenziali di autenticazione dell'applicazione per garantire che le scansioni siano configurate correttamente e che possano accedere all'applicazione correttamente. Vengono controllati anche i parametri di configurazione, inclusa la velocità massima di scansione, per garantire che rientrino negli intervalli supportati.

Devi risolvere gli errori prima di creare o aggiornare una scansione. Le applicazioni modificate dopo la configurazione iniziale potrebbero generare errori durante le analisi. Ad esempio, se un dominio non punta più a un indirizzo IP di proprietà del progetto, la risorsa non viene analizzata e viene segnalato un errore nella pagina di configurazione della scansione.

best practice

Poiché Web Security Scanner compila i campi, esegue il push di pulsanti, fa clic sui link ed esegue altre azioni dell'utente, devi utilizzarlo con cautela, in particolare se stai analizzando le risorse di produzione. Web Security Scanner potrebbe attivare funzionalità che modificano lo stato dei dati o del sistema, con risultati indesiderati.

Ad esempio:

  • In un'applicazione di blog che consente i commenti pubblici, Web Security Scanner potrebbe pubblicare stringhe di test come commenti a tutti gli articoli del blog.
  • In una pagina di registrazione via email, Web Security Scanner potrebbe generare un numero elevato di email di test.

Di seguito sono riportate alcune tecniche che puoi utilizzare, separatamente o in combinazione, per evitare risultati indesiderati:

  1. Esegui scansioni in un ambiente di test. Imposta un ambiente di test creando un progetto App Engine separato e caricando lì dati e applicazione. Se utilizzi Google Cloud CLI, puoi specificare il progetto di destinazione come opzione della riga di comando quando carichi l'app.
  2. Utilizza un account di prova. Crea un account utente che non ha accesso a dati sensibili o operazioni dannose e utilizzalo durante la scansione dell'app. Molte applicazioni presentano un flusso di lavoro speciale al primo accesso di un utente, ad esempio accettando termini e creando un profilo. A causa del diverso flusso di lavoro, un account di prova per un utente iniziale può avere risultati della scansione diversi rispetto a un account utente stabilito. È preferibile eseguire la scansione con un account nel normale stato dell'utente, dopo il completamento del flusso iniziale.
  3. Blocca i singoli elementi dell'interfaccia utente che non vuoi che vengano attivati applicando la classe CSS inq-no-click. I gestori di eventi associati a questo elemento non vengono attivati durante la scansione e il test, a prescindere dal fatto che siano JavaScript incorporati, associati tramite addEventListener o associati impostando la proprietà del gestore di eventi appropriata.
  4. Utilizza i dati di backup. Ti consigliamo di eseguire un backup dei dati prima di eseguire la scansione.
  5. URL esclusi. Puoi specificare i pattern URL che non verranno sottoposti a scansione o test. Per informazioni sulla sintassi, consulta la sezione Esclusione degli URL.

Prima di eseguire la scansione, verifica attentamente l'applicazione per rilevare eventuali funzionalità che potrebbero influire su dati, utenti o sistemi oltre l'ambito desiderato.

Passaggi successivi