Gå till innehållet

25 – Mjukvara (Alfa)

Alfa

Testet är märkt som alfa. Identifieringen fungerar, men träffsäkerheten varierar mellan mjukvaror och bedömningen kan komma att justeras.

Testet tar reda på vad webbplatsen är byggd av och jämför versionerna mot register över kända sårbarheter.

Vad testas?

Testet identifierar bland annat:

  • Publiceringsverktyg (CMS)
  • Webbserver
  • Operativsystem
  • Besöksanalys
  • JavaScript-bibliotek
  • CSS-bibliotek
  • Programmeringsspråk
  • Bildformat och den programvara som skapat bilderna

För varje identifierad komponent med känd version görs en kontroll mot CVE-register.

Så påverkas betyget

Betyget påverkas av kända sårbarheter i den mjukvara som hittas, och av hur långt efter aktuell version komponenterna ligger. Att inget publiceringsverktyg kunde identifieras är i sig varken bra eller dåligt. Det står som en upplysning i granskningen.

Kör testet

python default.py -u https://example.com -t 25 -r

Inställningar

Inställning Standard Betydelse
tests.software.browser chrome Webbläsare som används vid identifieringen
tests.software.stealth.use true Undvik att bli identifierad som automatiserad besökare
tests.software.advisory.path tomt Sökväg till en lokal kopia av GitHubs sårbarhetsdatabas
github.api.key tomt GitHub-nyckel, sätts av -d vid uppdatering av definitionerna

De två sista behövs bara när definitionerna uppdateras, inte när du kör testet. Se nedan.

Sårbarhetsdatabasen

Behövs inte för att köra testet

När du kör -t 25 läser testet defaults/software-sources.json, som redan ligger i repot. Sårbarhetsdatabasen behöver du bara om du ska generera om den filen med -d, vilket är en underhållsuppgift i projektet.

Definitionerna byggs av GitHubs sårbarhetsdatabas, som innehåller CVE-uppgifter i maskinläsbar form. Webperf Core läser bara de granskade rådgivningarna i advisories/github-reviewed. Katalogen advisories/unreviewed rörs aldrig.

Klona databasen

Repot är stort: en vanlig klon blir omkring 4,6 GB, varav 3,2 GB är versionshistorik du inte har någon användning för. Två steg krymper det rejält.

Grund vid ytlig klon. Hoppa över historiken:

git clone --depth 1 https://github.com/github/advisory-database.git

Bara det som faktiskt läses. Ytlig klon plus gles utcheckning av den enda katalog Webperf Core öppnar. Det tar databasen från 4,6 GB till omkring 170 MB:

git clone --depth 1 --filter=blob:none --sparse \
  https://github.com/github/advisory-database.git
cd advisory-database
git sparse-checkout set advisories/github-reviewed
Metod Storlek på disk
Vanlig klon ~4,6 GB
--depth 1 ~1,4 GB
--depth 1 + gles utcheckning ~170 MB

Peka ut den

python default.py -d DIN-GITHUB-NYCKEL \
  --setting tests.software.advisory.path=/sokvag/till/advisory-database

Sökvägen ska peka på repots rot, alltså katalogen som innehåller advisories/. Anger du ingen sökväg letar verktyget efter en katalog som heter advisory_database i arbetskatalogen.

Vill du slippa upprepa flaggan, lägg den i settings.json:

{
  "tests": {
    "software": {
      "advisory": {
        "path": "/sokvag/till/advisory-database"
      }
    }
  }
}

Hålla den aktuell

En ytlig klon uppdateras inte med ett vanligt git pull. Hämta en ny ytlig ögonblicksbild i stället:

cd advisory-database
git fetch --depth 1 origin main
git reset --hard origin/main

Databasen uppdateras flera gånger om dagen. Hämta den strax innan du kör -d, annars bygger du definitioner på gamla uppgifter.

Bra att veta

Att en version syns utåt är i sig en upplysning till en angripare. Men att dölja versionsnummer löser inte en osäker version. Det gör bara problemet svårare att upptäcka, även för dig.

Se även