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.