Vai al contenuto

Potenziare la Sicurezza del Codice con GHAS Code Scanning in Azure DevOps e GitHub

Scopri come il Code Scanning di GitHub Advanced Security può migliorare la sicurezza del codice nei repository di Azure DevOps.

La sicurezza del codice è una priorità fondamentale per gli sviluppatori e le aziende che gestiscono progetti software. Con l’aumento delle minacce informatiche, è essenziale adottare strumenti avanzati per rilevare vulnerabilità e bug nel codice sorgente. Uno di questi strumenti è il Code Scanning disponibile in GitHub Advanced Security, che utilizza CodeQL per eseguire analisi statiche e rilevare problemi di sicurezza.

CodeQL: Un Potente Strumento di Analisi Statica

CodeQL è uno strumento di analisi statica che consente agli sviluppatori di scrivere query personalizzate per analizzare i codebase alla ricerca di pattern specifici e potenziali problemi di sicurezza. Convertendo il codice in un formato di database, CodeQL permette di eseguire query sofisticate simili a quelle dei database per rilevare difetti.

Capacità di CodeQL

CodeQL in Azione

Per utilizzare CodeQL, è necessario seguire alcuni passaggi fondamentali:

1. Preparazione del Codice

  • Creare un Database CodeQL: Estrarre e strutturare il codice in un database per l’analisi.

2. Esecuzione delle Query CodeQL

  • Eseguire le Query: Eseguire query predefinite o personalizzate sul database per trovare potenziali problemi.

3. Interpretazione dei Risultati delle Query

  • Analizzare i Risultati: Esaminare i risultati per trovare, prioritizzare e risolvere vulnerabilità e problemi di qualità del codice.

CodeQL in azione

Esempio di Pipeline di Scansione del Codice in Azure DevOps

Una volta configurata la sicurezza avanzata di GitHub per il repository di Azure DevOps, è possibile creare e eseguire una pipeline dedicata alla scansione del codice per rilevare vulnerabilità e generare risultati e avvisi di query.

Di seguito è riportato un esempio generico di pipeline di scansione del codice:

# Autore: Debjyoti# Questa pipeline utilizza le query predefinite di CodeQL per la scansione del codicetrigger: nonepool:  vmImage: 'windows-latest'variables:  codeql_results_file: '$(Build.ArtifactStagingDirectory)/results.sarif'steps:- task: AdvancedSecurity-Codeql-Init@1  displayName: 'Inizializza CodeQL'  inputs:    languages: 'python'    loglevel: '2'  env:    GITHUB_TOKEN: $(githubtoken)- task: AdvancedSecurity-Codeql-Autobuild@1  displayName: 'AutoBuild'- task: AdvancedSecurity-Codeql-Analyze@1  displayName: 'Esegui Analisi CodeQL'  inputs:    outputFile: '$(codeql_results_file)'- task: PublishBuildArtifacts@1  displayName: 'Pubblica Risultati CodeQL'  inputs:    pathToPublish: '$(codeql_results_file)'    artifactName: 'CodeQLResults'

Configurazione Predefinita della Scansione del Codice nel Repository GitHub

Requisiti per l’Uso della Configurazione Predefinita

  • GitHub Actions: Devono essere abilitate.

Raccomandazioni

  • Abilitare la configurazione predefinita se si prevede di includere almeno un linguaggio supportato da CodeQL in futuro.
  • La configurazione predefinita non utilizzerà minuti di GitHub Actions se non sono presenti linguaggi supportati da CodeQL.
  • Se vengono aggiunti linguaggi supportati da CodeQL, la configurazione predefinita inizierà automaticamente la scansione e l’utilizzo dei minuti.

Personalizzazione della Configurazione Predefinita

  • Iniziare con la configurazione predefinita.
  • Valutare le prestazioni della scansione del codice.
  • Personalizzare se necessario per soddisfare meglio le esigenze di sicurezza.

Passaggi per Abilitare la Configurazione Predefinita

  1. Navigare al Repository: Andare alla pagina principale del repository.
  2. Accedere alle Impostazioni:
    • Fare clic su “Settings” sotto il nome del repository.
    • Se “Settings” non è visibile, selezionare il menu a discesa e fare clic su “Settings”.
  3. Impostazioni di Sicurezza:

Nella sezione “Security” della barra laterale, fare clic su “Code security and analysis”.

Configurazione della scansione del codice GitHub

4. Configurare la Scansione del Codice: Nella sezione “Code scanning”, selezionare “Set up” e fare clic su “Default”.

Configurazione della scansione del codice GitHub

Rivedere la Configurazione:

    • Un dialogo riassumerà la configurazione della scansione del codice creata automaticamente.
    • Facoltativamente, selezionare una suite di query nella sezione “Query suites”.
    • La suite di query estesa esegue query aggiuntive, di gravità e precisione inferiore.
  1. Abilitare CodeQL: Rivedere le impostazioni e fare clic su “Enable CodeQL” per avviare un workflow.
  2. Visualizzare la Configurazione: Dopo l’abilitazione, visualizzare la configurazione selezionando la scelta pertinente.
  3. Esecuzione dell’Analisi CodeQL: Una volta configurato CodeQL, verrà eseguito sul repository per verificare la presenza di vulnerabilità nel codice del linguaggio supportato. È possibile visualizzare ulteriori informazioni facendo clic sull’opzione “View last scan”.

Esecuzione dell'analisi CodeQL

Visualizzare gli Avvisi di Sicurezza: Verranno eseguite le query predefinite integrate sul codice del repository per il linguaggio supportato (in questo caso, Python) e verranno generati avvisi per eventuali vulnerabilità rilevate.

Avvisi di sicurezza CodeQL

Vantaggi dell’Esecuzione di CodeQL per gli Sviluppatori

Vantaggi di CodeQL

Responsabilità e Onere

  • Configurazione Iniziale e Curva di Apprendimento: Richiede tempo per configurare e imparare a utilizzare efficacemente.
  • Manutenzione delle Query: Le query personalizzate potrebbero necessitare di aggiornamenti man mano che il codebase evolve.
  • Falsi Positivi: Potrebbe generare falsi positivi che devono essere esaminati e risolti.
  • Sforzo di Integrazione: Integrare CodeQL nelle pipeline CI/CD esistenti può richiedere uno sforzo significativo.