2min

Tags in dit artikel

, , , ,

Een groot aantal CMS-plugins en PHP-libraries schakelen de validatie SSL/TLS-certificaten expres uit, meldt ZDNet. Daardoor zouden miljoenen internetgebruikers in gevaar komen. Bovendien worden veel van de plugins en libraries gebruikt om verbindingen met providers van betalingsdiensten op te zetten, waar later gevoelige gebruikersdata mee wordt verstuurd of financiële transacties mee worden afgehandeld.

Het beveiligingsprobleem werd ontdekt door Scott Arciszewski, Chief Development Officer bij Paragon Initiave Enterprise. Het probleem zit in hoe makers van CMS-plugins en PHP-libraries hun code configureren, en dan met name een aantal cURL-opties.

cURL is een command-line utility die op alle web hosting servers zit, die gebruikt wordt om data van en naar remote servers te versturen. Het gebruik ervan komt veel voor in de web development-gemeenschap en veel CMS-plugins en PHP-libraries gebruiken het om data te downloaden, versturen en uploaden naar remote servers via de console van die server. Daardoor hoeft er geen browser-sessie geopend te worden voor iedere verbinding. cURL ondersteunt diverse protocollen, waaronder het openen van verbindingen via HTTP, FTP, SMPT, POP3 en LDAP.

Als een WordPress-plugin die financiële transacties bijvoorbeeld afhandelt met Payment Process #46, gebruikt het cURL-verbindingen in de achtergrond om de creditcardgegevens te uploaden naar de servers van de betalingsprovider. Dit gebeurt vaak via cURL-verbindingen die via HTTPS opgezet worden, waar cURL ook de validatie van het SSL/TLS-certificaat afhandelt. Dat is een cruciale stap als er gepraat wordt met een legitieme HTTPS-server.

Arciszewski ontdekte echter dat ontwikkelaars van veel van deze plugins en libraries cURL-beveiligingsfuncties uitschakelen als cURL gebruikt wordt om data te downloaden of versturen via HTTPS-verbindingen. Als de verbindingen plaatsvinden via verzwakte HTTPS-verbindingen, kunnen er problemen voorkomen. Zo kunnen aanvallers websites zo ver krijgen om legitieme data te downloaden of versturen naar malafide servers. Maar omdat de functies uitstaan, komen er geen alarmen binnen via de originele website.

Oplossing

Arciszewski heeft echter ook een oplossing gevonden voor het probleem. De voornaamste reden dat zoveel projecten de cURL-functies uitschakelen, is omdat als ze ingeschakeld zijn ze enge beveiligingsgerelateerde errors weergeven op de servers van klanten. Om die alarmen te omzeilen, worden de functies uitgezet.

De reden dat de errors verschijnen, is omdat cURL de certificaten van remote HTTPS-servers moet valideren met een lijst aan bekende en echte SSL/TLS-certificaten. Niet alle web hosting services hebben die lijst echter, en veel partijen slaan die op op andere serverlocaties, waardoor cURL-instellingen voor CMS-pugins en PHP-libraries niet goed geconfigureerd kunnen worden.

Arciszewski heeft daarom een eigen PHP-library genaamd Certainty gemaakt, die het bestand regelmatig download van de cURL-homepage en het zelf host. Websites hebben daardoor altijd een up-to-date-lijst van valide certificaten. De library is te implementeren in eigen projecten, waarna de cURL-instellingen aangezet kunnen worden zonder dat er beveiligingsalarmen verschijnen.