Efter TechWorlds avslöjande om Uppsalahems felaktiga implementation av inloggning med Bank-id, där det enkelt gick att logga in på sajten utan att kontrollen av användarens Bank-id utfördes, har frågan om säkerheten kring Bank-id kommit upp på bordet.

Alla som TechWorld varit i kontakt med kring ärendet med Uppsalahem, och tidigare, poängterar att Bank-id som e-legitimation och som protokoll fungerar bra och håller en hög säkerhetsnivå. Ändå uppstår problem i ekosystemet kring Bank-id, exempelvis där social ingenjörskonst används för att få bankkunder att logga in på sina banker och bli lurade på sina pengar.

Fallet Uppsalahem visar på en annan sida av problematiken runt omkring Bank-id där den tekniska implementationen av inloggning med Bank-id på en sajt kan gå snett. I kölvattnet av att allt fler implementerar inloggning med Bank-id på sina sajter har en smärre bransch uppstått, en bransch som dels består av företag som utvecklar ramverk och api:er för implementation av Bank-id, men även många konsulter som hjälper till med implementationerna.

TechWorld Summit 4 juni 2019, nätverka med 300 IT-proffs och få samtidigt en heltäckande överblick av den senaste tekniken.

Ändå har Bank-id, som de flesta vet, ett api som vem som helst kan använda. Bank-id:s api är visserligen publicerat med stängd källkod, men det är i vart fall öppet att använda, och väl dokumenterat. Vän av ordning kan då undra varför det behövs specialister som utvecklar api:er för ett api, som ett slags mellanlager för att förenkla implementationen? Är Bank-id i sitt grundutförande för svårt för normala webbutvecklare?

En av dem som reagerat på TechWorlds avslöjande om Uppsalahem är Peter Örneholm, senior utvecklare på Active Solution, ett av de företag som tagit fram lösningar just för att förenkla implementation av Bank-id med speciell inriktning på Microsofts Dotnetmiljö. Företaget har utvecklat ett ramverk som de publicerat under öppen källkod på Github.

– Microsofts Dotnetmiljö är lite speciellt att jobba med. Microsoft har tagit fram bra guidelines för hur utvecklare ska kunna integrera externa inloggningstjänster så länge tjänsterna följer någon etablerad standard, men i Bank-id:s fall så behöver man göra en anpassad integration. Jag kan inte svara för hur det ser ut i andra miljöer än Dotnet, men jag tror inte att det finns någon färdigt lösning för Bank-id där heller, säger Peter Örneholm.

Varför behövs det anpassade integrationer för just Bank-id?

– Bank-id har ett väldokumenterat http-baserat api, men det följer inte någon standard vad gäller inloggning, och det räcker inte i sig för att göra en säker implementation i tjänsten som slutkonsumenten ska använda. Det behövs komponenter som gör det enkelt för utvecklarna att implementera inloggning med BankID. Hade Bank-id:s api följt till exempel Open ID Connect hade det funnits färdiga ”moduler” från Microsoft för att integrera, men nu behöver utvecklaren själv implementera denna kod. Där kommer vår öppen källkods-licensierade modul Active Login in, säger Peter Örneholm.

Ett ganska vanligt misstag som Peter Örneholm ser är att utvecklare vill kunna testa systemet med olika personnummer utan att direkt använda Bank-id. Utvecklarna vill testa, både automatiskt och manuellt, att det går att logga in med andra personnummer än sitt eget. Då gör man kanske en ”workaround” för att kunna testa koden och den ligger kvar när systemet går i produktion.

Peter Örneholm har inte sett att system som använder inloggning med Bank-id har gått i produktion med den typen av misstag som i fallet med Uppsalahem, men det han ser är att många som är mitt uppe i utvecklingen med att implementera inloggning med Bank-id ställer frågor på olika forum om hur de ska lösa olika tekniska utmaningar.

– Ett ganska vanligt behov som finns är att i testsyfte logga in som olika typer av användare. Detta är ganska vanligt under till exempel automatiska enhets- och integrationstester. Det är då inte helt ovanligt att det förekommer odokumenterade bakdörrrar som råkar hänga med ut i produktion fast de bara var avsedda för test.

– Mycket tror jag handlar om att de som implementerar inloggning med Bank-id jobbar under tidspress och pressad budget och gör inte alltid ordentliga säkerhetskontroller. Vi jobbar ofta med externa säkerhetskonsulter som testar att vår implementation blivit rätt. Det är viktigt att man gör detta med ”fyra ögon” för att minska risken för misstag. Bank-id i sig är ju ett säkert protokoll, men det betyder inte att implementeringen inte kan bli fel, säger Peter Örneholm.

Har du någonsin stött på exempel där det skett misstag av samma typ som i fallet Uppsalahem?

– Jag har personligen inte stött på ett fall likt det jag hört om Uppsalahem, det vill säga sett att den typen av misstag gått hela vägen in i produktion, men det görs många misstag under utvecklingen som till slut ändå rättas till. Vi har tagit fram ett ramverk under en öppen källkodslicens för vi tycker inte att dessa saker ska ske bakom stängda dörrar, utan det är viktigt att system som berör säkerhet är öppna för granskning. Vi tror att det är en av flera viktiga faktorer att säkerställa att systemen blir säkra, säger Peter Örneholm.

Läs också:
Enkel miss i implementationen gör det möjligt att runda Bank-id
Tunga kravet: staten måste ta ansvar så att alla kan få e-leg