Hjälpmedel

Från FriBID
Hoppa till navigeringHoppa till sök

Denna sida kan bara redigeras av inloggade användare pga upprepad länkspam,

Protokollanalys

  • Detta gäller i huvudsak gamla BankID, som fasas ut nu under slutet av 2014. För info om nya BankID version "Cava", se denna sida.

Alla webbsidor som använder BankID skickar all data krypterad via SSL/HTTPS. För att se vad som skickas kan du t.ex. använda mitmproxy:

http://mitmproxy.org/
http://github.com/hno/mitmproxy (innehåller en buggfix som behövs i vissa fall)

Det går även att använda Firefox-tillägget Tamper Data:

https://addons.mozilla.org/sv-SE/firefox/addon/966/

Ofta går det också att använda "Visa källkod"-funktionen i webbläsaren, men tyvärr låser den officiella klienten upp webbläsaren när någon dialogruta visas och då fungerar inte detta (om man inte är snabbt med att avbryta laddningen av sidan). Det går troligtvis också att använda tillägg till Firefox såsom Live HTTP Headers (som även loggar formulär/POST-data) eller dylikt (någon som testat detta?).
Det fungerar fint att använda Firebug i Firefox, tricket är att öppna Firebug i ett eget fönster. / JKAbrams

Som ett mindre känt men väldigt smidigt alternativ till Tamper Data kan HttpFox rekommenderas:

https://addons.mozilla.org/en-US/firefox/addon/6647/

Testning

Det finns ett par testsidor för BankID i tests/-katalogen i källkoden. Lägg dessa på en server med SSL, eller ta bort https-kontrollen i FriBID i client/main.c

Ett tips är att openssl har en inbyggd https webb server som duger utmärkt för ändamålet

cd tests
openssl req -x509 -out server.pem -keyout server.pem -nodes
openssl s_server -cert server.pem -WWW

öppna sedan t.ex. https://localhost:4433/test-authsig.html för att testa login & signering.

Kontroll av säkerhetshål

Minneskontroll med valgrind

Du kan köra din webbläsare under valgrind för att kontrollera att FriBID allokerar och använder minnet på ett korrekt sätt:

valgrind --trace-children=yes /usr/bin/firefox

Man kan stänga av visning av minnesläckor och copyright-information:

valgrind --trace-children=yes --leak-check=no -q /usr/bin/firefox

Fuzzing

Det finns också en s.k. fuzzer i form av en webbsida. Lägg filen tests/fuzzer.html på en server med SSL eller ta bort https-kontrollen i client/main.c.

Denna fuzzer är väldigt simpel och kör helt enkelt slumpmässigt valda funktioner med felaktig indata. Vi behöver en bättre fuzzer som testar mer sofistikerade flöden av funktionsanrop, med delvis korrekt indata.

Statisk analys

Med Sparse:

sudo apt-get install sparse
CC=cgcc make -s 2>&1 | grep -vE '^/usr/include/'

Med nyare versioner av clang:

make clean
scan-build make

Med äldre versioner av clang. I Ubuntu behöver man skapa en länk till /usr/include/asm-generic:

mkdir ~/clang-includes
ln -s /usr/include/asm-generic ~/clang-includes/asm
CC=clang CFLAGS="-O2 -g -I$HOME/clang-includes --analyze" make -s

För hand, med grep, kan man upptäcka möjliga problem:

 grep -F '[' *.c         -- array-problem
 grep -F '+' *.c         -- integer overflows
 grep -E ' (strcat|strcpy|sprintf)' *.c   -- rasprintf är säkrare!