Giriş
OpenSSL, internet üzerinde güvenli iletişim sağlamak amacıyla yaygın olarak kullanılan açık kaynaklı bir kriptografi kütüphanesidir. Son dönemde keşfedilen HollowByte adlı ciddi bir güvenlik açığı, saldırganların yetkisiz erişimle OpenSSL sunucularında bellek tüketimi saldırısı gerçekleştirmesine olanak tanımaktadır. Bu saldırı, sadece 11 baytlık bir payload kullanarak sunucunun hizmet dışı kalmasına neden olabilmektedir. Aşağıda, bu açığın teknik detayları, etkileri ve çözüm yöntemleri detaylı olarak açıklanmaktadır.
Sorunun Tanımı
HollowByte Açığının Kökeni
HollowByte, OpenSSL kütüphanesinin TLS (Transport Layer Security) el sıkışma işlemlerinde bulunan bir mantık hatasından kaynaklanmaktadır. TLS el sıkışması, istemci ve sunucu arasındaki güvenli bağlantının kurulmasını sağlayan bir protokoldür. Bu süreçte, istemci ve sunucu arasında TLS başlıkları ve mesaj gövdesi adı verilen veriler gönderilir. HollowByte açığı, bu başlıklardan biri olan mesaj gövdesi uzunluğunu belirten alanın yanlış işlenmesinden kaynaklanır.
Vulnerable OpenSSL sürümlerinde, sunucu TLS el sıkışma başlıklarında belirtilen mesaj gövdesi uzunluğunu güvenilir bir şekilde doğrulamadan bellek tahsis etmektedir. Bu, saldırganların sunucuya 11 baytlık bir payload göndererek sunucunun bellek kaynaklarını tüketmesine ve nihayetinde hizmet reddi (DoS) durumuna girmesine olanak tanır.
Saldırının Etkileri
Bu açık, aşağıdaki senaryolarda ciddi sonuçlara yol açabilir:
- Hizmet Reddi (DoS): Saldırganlar, sunucunun bellek kaynaklarını tüketerek hizmetin durmasına neden olabilir.
- Veri Kaybı: Aşırı bellek tüketimi, sunucunun stabilitesini bozabilir ve veri kaybına yol açabilir.
- Güvenlik Açığına Yol Açma: Sunucu kaynaklarının tüketilmesi, diğer saldırı vektörlerinin kullanılmasına zemin hazırlayabilir.
Çözüm Adımları
1. OpenSSL Sürümünün Güncellenmesi
HollowByte açığından etkilenmeyen OpenSSL sürümlerine güncellemek, bu tehdidin ortadan kaldırılmasında en etkili yöntemdir. Aşağıdaki adımları izleyerek OpenSSL'i güncelleyebilirsiniz:
-
Mevcut OpenSSL Sürümünü Kontrol Edin:
openssl versionBu komut, sisteminizde yüklü olan OpenSSL sürümünü görüntüler.
-
Güncel OpenSSL Sürümünü Bulun:
OpenSSL'in resmi web sitesi olan https://www.openssl.org adresinden en son stabil sürümü kontrol edin.
-
OpenSSL'i Güncelleyin:
Linux tabanlı sistemlerde (örneğin Ubuntu/Debian):
sudo apt update sudo apt upgrade opensslRed Hat tabanlı sistemlerde (örneğin CentOS/RHEL):
sudo yum update opensslMacOS sistemlerinde Homebrew kullanılarak:
brew update brew upgrade openssl
2. TLS El Sıkışma İşlemlerinin Güçlendirilmesi
OpenSSL'in TLS el sıkışma işlemlerini daha güvenli hale getirmek için aşağıdaki ayarları yapabilirsiniz:
-
TLS Protokolü Sürümünü Sınırlayın:
Eski ve güvenlik açısından riskli TLS protokolü sürümlerini devre dışı bırakın. Aşağıdaki komut, TLS 1.0 ve 1.1'in devre dışı bırakılmasını sağlar:
SSLProtocol -all +TLSv1.2 +TLSv1.3Uyarı: TLS 1.0 ve 1.1, güvenlik açıkları nedeniyle artık önerilmemektedir. Mümkün olan en yüksek TLS sürümünü kullanın.
-
Mesaj Gövdesi Uzunluğunu Doğrulayın:
OpenSSL konfigürasyon dosyasında (örneğin
/etc/ssl/openssl.cnf) aşağıdaki satırları ekleyerek mesaj gövdesi uzunluğunun doğrulanmasını sağlayabilirsiniz:[system_default_sect] ssl_conf = ssl_sect [ssl_sect] system_default = system_default_sect [system_default_sect] Options = UnsafeLegacyRenegotiationİpucu: Bu ayarlar, OpenSSL'in mesaj gövdesi uzunluğunu daha sıkı bir şekilde doğrulamasına yardımcı olabilir.
3. Sunucu Kaynaklarının İzlenmesi ve Korunması
Sunucunun bellek kullanımını sürekli olarak izlemek ve anormal artışları tespit etmek, HollowByte saldırısına karşı ek bir koruma sağlar. Aşağıdaki adımları izleyerek sunucunuzu koruyabilirsiniz:
-
Bellek Kullanımını İzleyin:
Linux sistemlerinde bellek kullanımını izlemek için aşağıdaki komutu kullanabilirsiniz:
free -hBu komut, sisteminizin toplam, kullanılan ve boş bellek miktarını görüntüler.
-
Sunucu Kaynaklarını Sınırlayın:
Sunucunuzun bellek kullanımını sınırlamak için aşağıdaki yöntemleri kullanabilirsiniz:
- Docker kullanıyorsanız, konteynerlerin bellek kullanımını sınırlayın:
docker run --memory="2g" --name my_container my_image- Sistem kaynaklarını sınırlamak için
ulimitkomutunu kullanın:
ulimit -v 2000000 # 2GB bellek sınırı
Uygulama Örnekleri
Nginx Sunucusunda OpenSSL Güncellemesi
Nginx sunucusunda OpenSSL'i güncellemek için aşağıdaki adımları izleyin:
-
Mevcut OpenSSL sürümünü kontrol edin:
nginx -v -
OpenSSL'i güncelleyin:
sudo apt update sudo apt install --only-upgrade libssl1.1 -
Nginx'i yeniden başlatın:
sudo systemctl restart nginx
Apache Sunucusunda TLS Ayarlarının Yapılması
Apache sunucusunda TLS ayarlarını yapılandırmak için aşağıdaki adımları izleyin:
-
ssl.confdosyasını düzenleyin:sudo nano /etc/httpd/conf.d/ssl.conf -
Aşağıdaki satırları ekleyin:
SSLProtocol -all +TLSv1.2 +TLSv1.3 SSLHonorCipherOrder on SSLCipherSuite ECDHE-ECDSA-AES256-GCM-SHA384:ECDHE-RSA-AES256-GCM-SHA384 -
Apache'i yeniden başlatın:
sudo systemctl restart httpd
Sonuç
HollowByte açığı, OpenSSL sunucularında ciddi bir tehdit oluşturmaktadır. Bu açığın etkilerinden korunmak için öncelikle OpenSSL'in en son stabil sürümüne güncellemek ve TLS el sıkışma işlemlerini daha güvenli hale getirmek gerekmektedir. Ayrıca, sunucu kaynaklarının sürekli olarak izlenmesi ve anormal durumların hızlı bir şekilde tespit edilmesi, saldırıların önlenmesine yardımcı olacaktır. Bu adımları izleyerek, sistemlerinizi HollowByte gibi ciddi tehditlere karşı koruyabilir ve güvenli bir şekilde çalışmasını sağlayabilirsiniz.



