Durch Oracle Netzwerkverschlüsselung (ab Oracle 11.2.0.3 gratis) wird die Sicherheit erhöht, weil der Netzwerkverkehr verschlüsselt wird. Leider war Oracle hier bei der Implementierung vom Verschlüsselungshandshake nicht sorgfältig genug. Durch eine Man-in-the-Middle Attacke kann der Handshake so manipuliert werden, dass nur eine schwache Verschlüsselung (DES, 3DES, RC4) zustande kommt.
Betroffene Versionen und Patch Information
- Oracle Datenbanken 12.1.0.2, 12.2.0.1, 18c, 19c
- Behoben mit Critical Patch Update July 2021 durch Einführen von SQLNET.ALLOW_WEAK_CRYPTO_CLIENTS bzw SQLNET.ALLOW_WEAK_CRYPTO.
Das Einspielen des Patches alleine reicht jedoch nicht, es müssen zusätzlich noch in der Datei sqlnet.ora Konfigurationseinstellungen vorgenommen werden. Dazu gibt es zwei Herangehensweisen:
Schwache Verschlüsselungen verbieten - sqlnet.org am Server bzw. Client
SQLNET.ALLOW_WEAK_CRYPTO_CLIENTS=FALSE (server-side)
SQLNET.ALLOW_WEAK_CRYPTO=FALSE (client-side)
Nur starke Verschlüsselung erlauben - im sqlnet.org am Server
Diese Vorgehensweise entspricht den Empfehlungen von DB Masters zum Thema Datenbank Security / Netzwerkverschlüsselung. Mit diesen Einstellungen kann das Problem auch ohne den Critical Patch Update gelöst werden, indem nur eine starke Verschlüsselung erlaubt wird. Das funktioniert auch für Oracle 11gR2 Datenbanken, für die es von Oracle keine Patches gibt.
SQLNET.ENCRYPTION_SERVER=REQUIRED
SQLNET.ENCRYPTION_TYPES_SERVER=(AES256) # oder AES128, AES192
SQLNET.CRYPTO_CHECKSUM_SERVER=REQUIRED
SQLNET.CRYPTO_CHECKSUM_TYPES_SERVER=(SHA512) # oder SHA256, SHA384
Diese Herangehensweise hat auch den Vorteil, dass sie mit älteren und ungepatchten Oracle Clients funktioniert. Die Einstellung für SQLNET.ALLOW_WEAK_CRYPTO funktioniert nur, wenn der Critical Patch Update auch am Client eingespielt wird!
Referenzen