Een kwetsbaarheid in de StartEncrypt-tool van de certificaatautoriteit StartSSL maakte het aanmaken van valse ssl-certificaten mogelijk. Dat ontdekte het Nederlandse beveiligingsbedrijf Computest. Dit kon voor diverse grote domeinen, zoals die van Google en Dropbox.
StartEncrypt is een tool voor de StartSSL-dienst van het bedrijf StartCom, die het automatisch aanmaken en installeren van ssl-certificaten op servers mogelijk maakt. De dienst werd in juni aangekondigd en wordt door sommigen gezien als een alternatief voor het populaire Let's Encrypt.
De tool detecteert voor welke domeinen er certificaten kunnen worden aangevraagd, maar bevatte een bug waardoor een certificaat ook zonder de vereiste autorisatie afgegeven kon worden. Dit werkte niet voor alle domeinen, maar wel voor een groot aantal, zoals google.com, dropbox.com, login.live.com en linkedin.com. Dat ontdekte Computest.
De kwetsbaarheid opent de weg naar man-in-the-middle-aanvallen en ondermijnt volgens Computest het vertrouwen in certificate authority's en de certificaten die ze uitgeven. "Als de certificaatautoriteiten niet op de juiste manier omgaan met hun verantwoordelijkheid op dit gebied, kan op den duur het ssl-certificaat, het 'slotje' naast de url in de adresbalk, niet meer worden gezien als daadwerkelijk bewijs van veiligheid en vertrouwen."
De tool van StartSSL draait op Windows- of Linux-servers en detecteert de configuratie van de webserver. Vervolgens vraagt StartEncrypt certificaten aan voor domeinen die in de configuratie gevonden worden. De StartCom-api doet daarna een http-request bij de website van het domein van de aanvraag, om bewijs te krijgen dat de aanvrager toegang tot deze site heeft. Krijgt de api dit bewijs, dan verstrekt deze het certificaat en installeert die dit in de config.
Computest vond meerdere kwetsbaarheden bij die procedure en de voornaamste is wat het bedrijf de 'path-bug' noemt. De StartEncrypt-api vraagt een handtekening als bewijs dat de gebruiker geautoriseerd is voor een certificaat. Dit gebeurt standaard via de bestemming '/signfile' en de client kiest dat pad via een http-post-request naar de api. "Je kunt ook voor een mailtje met een autorisatie als bewijs kiezen, maar bij StartEncrypt is voor autorisatie via de website gekozen", zegt Christiaan Ottow, de cto Security van Computest, tegen Tweakers. "De aanvrager mag zelf de plek van het autorisatiebestand bepalen. Via die url gaat de server het ophalen."
POST / HTTP/1.1
Host: cg.startpki.com
...
{
"customerID": "general",
"encrypt": "",
"nonce": "",
"publicKey": "-----BEGIN PUBLIC KEY-----\n\n-----END PUBLIC KEY-----\n",
"sessionID": "",
"type": "authorizationRequest",
"verifyRes": [
"http://example.com:80/signfile"
]
}
"Een kwaadaardige client kan een pad naar elk bestand op de server gebruiken waar een certificaat voor is aangevraagd", aldus Computest. Het bedrijf wijst er op dat kwaadwillenden zo certificaten kunnen verkrijgen voor sites die uploads mogelijk maken en deze 'raw' kunnen terugserveren, zoals dropbox.com en github.com.
Erger is dat de api ook redirects volgt, totdat het zijn bewijs heeft verkregen, zelfs als het om url's bij andere domeinen gaat. Hiervoor moet een site 'open redirects' ondersteunen. Sommige beveiligingsexperts beschouwen open redirects als een risico, maar veel sites bieden dit en OAuth 2.0 stelt het nagenoeg verplicht. Veel login-sites hebben bijvoorbeeld 'open redirect'-functionaliteit, om gebruikers na het uitloggen naar een andere site te leiden. "Misbruik van de kwetsbaarheid zou werken in combinatie met heel veel domeinen en in ieder geval om sites die OAuth 2.0 bieden", zegt Ottow.
Computest vond nog meer onvolkomenheden met de tool. De client valideert bijvoorbeeld niet het certificaat bij de verbinding met de api. "Dat is behoorlijk ironisch voor een ssl-tool", meent Computest. Daarnaast bleek de private 'tokenpri'-sleutel die de tool opslaat in te zien en aan te passen.
De kwetsbaarheid werd op 23 juni ontdekt door securityspecialist Thijs Alkemade van Computest en direct gemeld. StartCom haalde daarop het systeem offline verhielp de kwetsbaarheid op 29 juni. Het bedrijf heeft een nieuwe versie van StartEncrypt uitgebracht. "Aan de ene kant was misbruik kinderlijk eenvoudig, aan de andere kant is StartCom niet de bekendste Certificate Authority", stelt Ottow. Vanwege de overeenkomsten met Let's Encrypt heeft StartEncrypt volgens hem wel enige bekendheid gekregen. Ottow stelt dat misbruik van certificaten grote belangstelling heeft van zowel staatshackers als criminelen: "Dat heeft onder andere de Diginotar-affaire laten zien."