Passa al contenuto principale
Versione: v0.21

Sicurezza e stato dell'SDK PHP

L'SDK legge file di progetto non attendibili e può modificarli quando la correzione è abilitata. Tratta una scansione come un'operazione privilegiata con una destinazione esplicita, archiviazione controllata e un percorso di revisione per ogni rilevamento.

Configurazione globale del processo

Scanner conserva la configurazione e il report corrente in stato statico. I setter fluenti restituiscono una nuova istanza di Scanner, ma modificano quello stato condiviso del processo.

$first = new Scanner();
$second = $first->setPathScan('/srv/project-a');

// Both objects observe the same Scanner configuration.

Esegui una scansione alla volta in ogni processo PHP. Usa un nuovo processo CLI per lavori in background, richieste concorrenti o isolamento dei tenant. Un worker a lunga durata deve applicare la configurazione completa prima di ogni esecuzione ed evitare di riutilizzare lo stato di un lavoro precedente.

run() reimposta il report all'avvio di una scansione. Non reimposta la configurazione più ampia dello scanner. Non fare affidamento sulla costruzione dell'oggetto per ripristinare i valori predefiniti.

Azioni sui file

Il comportamento predefinito del prompt differisce tra esecuzioni interattive e silenziose. Scegli un'azione in modo esplicito nel codice non presidiato:

$report = (new Scanner())
->setPathScan('/srv/app')
->setSilentMode()
->setAutoSkip()
->run();

Per qualsiasi azione che modifica file, chiama enableBackups() e imposta setPathBackups() su una directory scrivibile al di fuori della destinazione. Conserva quarantena, whitelist, deoffuscamento, report, log, rilevamenti durevoli e checkpoint fuori dal progetto scansionato affinché lo scanner non ispezioni il proprio output.

Prima di abilitare la pulizia, la quarantena o l'eliminazione automatiche:

  1. Esegui scansioni di solo report su copie rappresentative dell'applicazione.
  2. Controlla coverage, findings e diagnostics per ogni esecuzione.
  3. Prova le procedure di backup e ripristino con lo stesso account che esegue le scansioni in produzione.
  4. Mantieni il percorso di destinazione limitato alle root di progetto approvate.

Percorsi e autorizzazioni

Passa percorsi assoluti da configurazione attendibile. Normalizza e autorizza i percorsi derivati dalle richieste prima di chiamare setPathScan(), setPathReport() o qualsiasi altro setter di percorso. L'SDK normalizza i percorsi con Path::get(), ma la normalizzazione non applica il limite di autorizzazione dell'applicazione.

Esegui lo scanner con il minimo accesso al filesystem necessario per leggere la destinazione e scrivere l'output controllato. Non eseguire una richiesta web con un account che può scansionare o eliminare file al di fuori della root di distribuzione prevista.

Comportamento di rete e funzionamento offline

La scansione del codice principale usa definizioni incorporate. La verifica di integrità e le definizioni dei domini Maltrail possono usare HTTPS in uscita. Lo scanner conserva i dati remoti riusciti in una cache del sistema operativo al di fuori della destinazione di scansione.

Quando l'ambiente blocca il traffico in uscita, acquisisci e conserva la diagnostica del report. Un aggiornamento non riuscito può lasciare attive le definizioni in cache; il report registra i metadati disponibili in signature_indexes. Non presumere che l'array di diagnostica sia vuoto quando non è disponibile alcuna rotta di rete.

Criteri di errore

Tratta false da run() come un errore operativo. Tratta copertura incompleta, diagnostica e avvisi come segnali di revisione. Archivia il report con timestamp della scansione, identità della destinazione, versione dello scanner da Scanner::getVersion() e qualsiasi identificatore esterno del lavoro.

L'SDK espone i messaggi di errore intercettati tramite getLastError(). Registrali in un log applicativo protetto. Non esporre percorsi di destinazione, contenuti dei report o testo di errore non elaborato a utenti non attendibili.