Een kwetsbaarheid met de naam HollowByte stelt ongeauthenticeerde aanvallers in staat om een denial-of-service (DoS) te veroorzaken op OpenSSL-servers met een kwaadaardige payload van slechts 11 bytes. Het OpenSSL-team heeft de kwetsbaarheid stilzwijgend verholpen en de patch teruggeporteerd naar oudere versies van de bibliotheek. Omdat OpenSSL de basis vormt voor veilige internetcommunicatie, is het van belang dat organisaties zo snel mogelijk overstappen op een versie waarin deze kwetsbaarheid is verholpen.
Volgens een recente advisory van het Red Team van Okta werkt de HollowByte-kwetsbaarheid doordat OpenSSL bij een TLS-handshake het geheugen reserveert op basis van een in de header opgegeven lengte, nog voordat de daadwerkelijke payload is ontvangen en gecontroleerd. Elke TLS-handshake begint met een 4-byte header, waarvan drie bytes de lengte van het te verwachten bericht aangeven. De kwetsbare OpenSSL-versies vertrouwen op deze opgegeven lengte en alloceren het geheugen, terwijl de payload zelf kleiner is. Hierdoor blokkeert de werkthread vervolgens oneindig op data die nooit aankomt.
Een aanvaller kan deze kwetsbaarheid misbruiken door een TLS-verbinding te openen en een 11-byte payload te sturen met een header die een veel groter bericht claimt. Door dit te herhalen over meerdere verbindingen, dwingt de aanvaller de server om grote hoeveelheden geheugen te reserveren met relatief weinig verzonden data. Hoewel OpenSSL het geheugen vrijgeeft bij het verbreken van de verbinding, houdt de GNU C Library (glibc) kleine tot middelgrote geheugenallocaties vast voor hergebruik, waardoor het geheugen niet direct terugkeert aan het besturingssysteem. Door het herhaaldelijk openen van verbindingen met willekeurige opgegeven groottes voorkomt de aanvaller dat het geheugen wordt hergebruikt, wat leidt tot fragmentatie en een continue stijging van het geheugengebruik van de server. Zelfs na het verbreken van de verbindingen blijft het geheugen opgeblazen totdat het proces wordt herstart.
OpenSSL wordt veelvuldig gebruikt in populaire software zoals NGINX en Apache webservers, programmeertalen als Node.js, Python, Ruby en PHP, en databases zoals MySQL en PostgreSQL. Het is standaard aanwezig in de meeste Linux-distributies voor TLS-encryptie en certificaatbeheer. Tests van Okta met NGINX tonen aan dat servers met beperkte capaciteit snel geheugen kunnen verliezen door HollowByte, terwijl krachtigere servers tot 25% van hun geheugen kunnen verliezen zonder dat de aanval opvalt binnen de gebruikelijke beveiligingswaarschuwingen.
Hoewel DoS-kwetsbaarheden doorgaans minder ernstig worden geacht dan kwetsbaarheden die datadiefstal of code-uitvoering mogelijk maken, kunnen ze toch leiden tot operationele verstoringen en reputatieschade. De HollowByte-kwetsbaarheid is opgelost in OpenSSL 4.0.1 en teruggeporteerd naar versies 3.6.3, 3.5.7, 3.4.6 en 3.0.21. In deze versies wordt het geheugen pas vergroot zodra de daadwerkelijke data binnenkomt, en worden onjuiste headerclaims genegeerd. Okta adviseert om direct te upgraden naar een gepatchte OpenSSL-versie, ondanks dat het als een hardening-fix wordt gezien en niet als een traditionele beveiligingskwetsbaarheid.
Reacties
Geef een reactie
Vereiste velden zijn gemarkeerd met *