Missing Web Security Header Tag Permissions-Policy: come implementare l’intestazione Permissions-Policy e perché

Header tag permissions policy

Missing Web Security Header Tag Permissions-Policy segnalato nel report di Web Vulnerability Assessment

In seguito a un Web Vulnerability Assessment, è possibile che venga segnalata la mancanza di header specifici lato server (qui prendiamo in esame l’assenza dell’intestazione “Missing Web Security Header Tag Permissions-Policy”). Tali header possono essere implementati per migliorare la sicurezza di piattaforme e sistemi.

Web Security Header Tag Permissions-Policy: limita l’accesso a specifiche e necessarie funzionalità del browser

La vulnerabilità riguarda l’assenza dell’intestazione di sicurezza HTTP Permissions-Policy (precedentemente nota come Feature-Policy) nelle risposte del server web. Questa intestazione è utilizzata per controllare le funzionalità che il browser può utilizzare mentre visualizza una pagina web, come ad esempio l’accesso alla fotocamera, al microfono, alla geolocalizzazione, ecc.

Implementare l’intestazione Permissions-Policy è una buona pratica di sicurezza che aiuta a limitare l’accesso a funzionalità del browser solo a quelle necessarie, riducendo così il rischio di attacchi e migliorando la sicurezza complessiva del sito web.

Rischi associati

  1. Maggiore superficie di attacco
    Senza restrizioni esplicite, gli attaccanti potrebbero sfruttare funzionalità del browser che non sono necessarie per il funzionamento del sito, aumentando la superficie di attacco.
  2. Accesso non autorizzato
    Funzionalità sensibili come la fotocamera, il microfono o la geolocalizzazione potrebbero essere accessibili da script malevoli.

Come intervenire sulla vulnerabilità segnalata come Missing Web Security Header Tag Permissions-Policy

Per mitigare questa vulnerabilità, è necessario aggiungere l’intestazione Permissions-Policy nelle risposte HTTP del server, specificando quali funzionalità devono essere consentite.

Esempi di configurazione

Apache

Aggiungi la seguente direttiva nel file di configurazione (conf o apache2.conf):

add_header Permissions-Policy "geolocation=(self), camera=(), microphone=()";

Questo esempio consente l’uso della geolocalizzazione solo per il dominio stesso e disabilita l’uso della fotocamera e del microfono.

Nginx

Aggiungi la seguente direttiva nel blocco server del file di configurazione (conf):

const helmet = require('helmet');
app.use(helmet.permittedCrossDomainPolicies({
permittedPolicies: "none"
}));

3. Express.js (Node.js)

Utilizza il middleware helmet per configurare l’intestazione:

const helmet = require('helmet');
app.use(helmet.permittedCrossDomainPolicies({
permittedPolicies: "none"
}));

Valori Comuni

  • geolocation: controlla l’accesso alla geolocalizzazione.
  • camera: controlla l’accesso alla fotocamera.
  • microphone: controlla l’accesso al microfono.
  • fullscreen: controlla l’uso della modalità a schermo intero.
  • payment: controlla l’uso delle API di pagamento.

Disclaimer. Il codice e le indicazioni tecniche presenti in questo articolo sono forniti a scopo informativo. È fondamentale che qualsiasi codice venga verificato attentamente e testato in un ambiente sicuro prima di essere implementato in un contesto produttivo. Le configurazioni e le impostazioni descritte potrebbero non essere adatte a tutte le situazioni e potrebbero richiedere adattamenti specifici. Si consiglia di consultare un tecnico esperto o un consulente di fiducia per approfondire le informazioni fornite e garantire che siano applicate correttamente al proprio ambiente. Si declina ogni responsabilità rispetto all’uso di tali informazioni.