Vorige week is een security bug in de Oracle database in het nieuws gekomen, bekend onder de code CVE-2012-1675. Omdat we vragen van meerdere klanten hierover gehad hebben, willen we in deze blogpost hier nog even op in gaan.
Wat is de bug?
Volgens de beschrijving van het security lek is het mogelijk buiten je database server een listener te configureren die als een remote listener geregistreerd wordt aan een database. Waarom heeft Oracle die funtionaliteit destijds toegevoegd? Antwoord: Real Application Clusters, of RAC. Een RAC bestaat nu eenmaal uit meerdere machines met listeners die onderdeel maken van het RAC.
Een hacker kan een remote listener gebruiken om het netwerkverkeer naar de database af te luisteren.
Wat is de oplossing?
Gezien de aard van de bug, is het niet verwonderlijk dat Oracle twee oplossingen heeft: een voor single node databases (Oracle support ID 1453883.1) en een voor RAC databases (Oracle support ID 1340831.1).
Voor single node databases zijn er eigenlijk twee oplossingen. Er is een patch voor bug 12880299 voor TCP verkeer. Na patchen kunt u de parameter “SECURE_REGISTER_<listener_name> = (TCP)” aan de listener.ora toevoegen. De listener moet hiervoor herstart worden. Overigens hebben we nog geen Windows patch kunnen ontdekken. Merk ook op dat deze patch voor bug 12880299 pas in juli verschijnt als onderdeel van de volgende Critical Patch Update.
De andere oplossing voor single node is om de listener te registreren aan de database middels het IPC protocol in plaats van het TCP protocol. Voordeel is dat er geen patch nodig is. Er moeten wel de nodige wijzigingen in de listener.ora gedaan worden en de instance parameter local_listener moet voortaan werken over het IPC protocol. Een herstart van de instance is voor deze parameter niet nodig. De listener moet wel herstart worden.
Voor RAC databases is het onwenselijk dat remote listeners uitgesloten worden. Dus daar heeft Oracle een andere oplossing voor bedacht. Hiervoor wordt een beveiligde SSL verbinding gelegd tussen de listeners. Hiervoor moet een wallet aangemaakt worden op alle machines waar een listener draait. Er moet vervolgens een certificaat aangemaakt worden dat in de wallet wordt opgeslagen. De listener moet aangepast worden en de listeners moeten bekend worden in de instances m.b.v. de parameter remote_listener. Voor de details verwijs ik naar Oracle support ID 1340831.1.
Nu is het zo dat deze met SSL beveiligde verbindingen normaal gesproken vallen onder de Oracle Advanced Security optie en dit is een aparte licentie. Maar speciaal voor deze bug mag je deze functionaliteit van Advanced Security gebruiken zonder dat je de licentie hoeft te betalen. Dit betekent dus niet dat alles van de Advanced Security optie opeens gebruikt kan worden zonder licentie. Volg de instructies van Oracle support ID 1340831.1 dus goed op.
Wat is de impact op de beschikbaarheid van uw systemen?
Voor single node databases zal de listener een keer herstart moeten worden. Op RAC systemen zullen de SCAN listeners twee keer herstart moeten worden.
Moet u deze wijziging implementeren?
Ik zeg “ja”. Waarom? Security is zo sterk als de zwakste schakel. Dat alleen al is een reden om deze bug aan te pakken.
Ook weet ik niet of uw database servers zijn afgeschermd van de rest van uw netwerk en van Internet, of u Wifi verbindingen heeft die al of niet goed beveiligd zijn, of dat iemand binnen uw organisatie gebruik zou wil maken van deze bug om uw klantenbestand of een lijst van credit card nummers of gegevens over burgers mee te nemen, enzovoort, enzovoort. Kortom, om iets over het al of niet dichtzetten van een security bug te kunnen zeggen, moet je de hele stack goed kennen en de risico’s goed weten.
Iets dergelijks zal ik ook zeggen over Critical Patch Updates die Oracle elk kwartaal uitbrengt overigens.