Binlerce Eklentide cURL SSL / TLS Sertifika Doğrulaması Devre Dışı!

Binlerce Eklentide cURL SSL / TLS Sertifika Doğrulaması Devre Dışı!

Hazır kütüphaneler, framework ya da eklentiler, bize zaman ve işlevsellik kazandırabilir. Peki ya Güvenlik! Yayınlanan binlerce CMS eklentisi ve PHP kütüphanesinde kullanılan cURL sertifika doğrulama ayarları devre dışı olarak geliyor.

Bu önemli, ancak geliştiriciler tarafından çok fazla dikkat edilmiyor ve bu da milyonlarca kullanıcının bilgilerini riske sokuyor. Scott Arciszewski tarafından yayınlanan buradaki makaleye göre tehlike geçen gün çoğalarak devam ediyor.

cURL Nedir?

Web geliştirme topluluğunda yoğun bir şekilde kullanılan cURL, uzak sunuculara veri aktarmak için kullanılan ve tüm web sunucularında bulunan komut satırı yardımcı yazılımıdır. Birçok CMS eklentisinde, PHP kütüphanesinde ya da farklı yazılım dillerinde, uzak sunucu ile yapılacak olan her bağlantıda gerçek tarayıcı oturumu açmak yerine, cURL ile bağlantı sağlayarak uzak sunuculardan veri indirmek, göndermek ya da yüklemek için kullanılan güzel bir özelliktir.

cURL ile HTTP, FTP, POP3, SMTP, LDAP ve daha birçok protokol üzerinden bağlantı açılabilmektedir. Bu da oldukça fazla bir alan da kullanım imkanı sağlamaktadır.

Örneğin, bir ödeme sayfasında girdiğiniz bilgileri, ödeme sağlayıcısına ait sunucuya göndermek için arkaplanda cURL bağlantıları kullanılır. Bu bağlantılar genellikle HTTPS ile gerçekleştirilir. Ayrıca cURL, SSL/TLS sertifika doğrulamasını da gerçekleştirir. Bu gerçekten HTTPS sunucusu ile iletişime geçildiğini doğrulamak için önemli bir adımdır. Ancak cURL güvenlik ayarları birçok geliştirici tarafından devre dışı bırakılıyor.

cURL Güvenlik Ayarları Neden Devre Dışı Bırakılıyor?

Bunun en büyük nedeni, yazılım geliştiricisinin, geliştirdiği eklentinin ya da yazılımın tüm sunucularda en az hatayla çalışmasını istiyor ve bu da güvenlik açıklarının oluşmasına sebep oluyor. Çünkü güvenlik ayarları etkinleştirildiğinde, cURL uzak sunucu ile arasındaki bağlantıyı, SSL/TLS sertifika doğrulamasını dener. Eğer doğrulama yapmazsa bağlantı başarısız olur ve yazılım veri alıp göndermeyi iptal eder. Bir çok geliştirici bunu bilmesine rağmen ne yazık ki bu ayarları devre dışı bırakmaktadır.

cURL Güvenlik Ayarları Nelerdir?

1- Devre dışı bırakılan ilk güvenlik ayarımız CURLOPT_SSL_VERIFYHOST değeridir. Bu ayar eğer cURL bağlantısında belirtilmezse varsayılan değeri 2'dir. Ancak bir çok geliştirici bu ayarı false ya da 0 olarak eklemektedir.

Bu ayar, uzak sunucudaki sertifikanın, güvenilir bir Sertifika Yetkilisi (CA) tarafından imzalanmış geçerli bir TLS sertifikası ile yanıt verip vermediğini kontrol eder. Eğer devre dışı bırakılırsa, cURL ile bağlandığınız sitenin adresini doğrulamadan bağlantıyı başarılı bir şekilde gerçekleştirir. Yani, siz güvenli.com sitesi ile bağlantı kurmak için istek gönderdiniz ancak sunucudaki sertifika güvensiz.com sitesine ait olsa da veri aktarımı başarıyla gerçekleşir.

2- Devre dışı bırakılan ikinci güvenlik ayarımız CURLOPT_SSL_VERIFYPEER değeridir. Bu ayar eğer cURL bağlantısında belirtilmezse varsayılan değeri true ya da 1'dir. Ancak bir çok geliştirici bu ayarı false ya da 0 olarak eklemektedir.

Bu ayar devre dışı bırakıldığında, bağlantının başarılı olması için sunucuda herhangi bir SSL/TLS sertifikasının olması yeterlidir. Bu sertifikayı kimin yayınladığına bakılmadan, kendinden imzala sertifikaları kullanarak sunucu bağlantısını kabul eder ve veri aktarımı gerçekleşir.

Özellikle PHP geliştiricileri tarafından oldukça yoğun olarak kullanılan cURL bağlantısının, göz ardı edilebilecek küçük bir sorun olmadığını anlamak için GitHub üzerinde ufak bir arama yaptığınızda, karşınıza güvenlik ayarları devre dışı bırakılmış binlerce kütüphane çıkacaktır. Bu da sorunun ne kadar büyük olduğunu göstermektedir.

cURL Güvenlik Sorunlarından Nasıl Kurtulabiliriz?

Geliştirdiğiniz ya da kullandığınız yazılımda cURL bağlantı kodlarını kontrol edin ve CURLOPT_SSL_VERIFYHOST değerini 2CURLOPT_SSL_VERIFYPEER değerini true olarak değiştirin.

Ayrıca bazı sistemlerde CA-Cert paketi yüklü olmayabilir, güncel kök sertifikalarını içermiyor olabilir ya da daha farklı bir neden dolayı sertifika doğrulama hatası oluşabilir. Bunu önlemek için cURL bağlantınıza CURLOPT_CAINFO değerini ekleyerek sertifika bilgisi gönderebilirsiniz. cURL bağlantısındaki bu üç değerin son hali aşağıdaki örnekteki gibi olmalıdır.

curl_setopt($curl, CURLOPT_SSL_VERIFYHOST, 2);
curl_setopt($curl, CURLOPT_SSL_VERIFYPEER, true);
curl_setopt($curl, CURLOPT_CAINFO, 'path/to/yourcacert.pem');

Ayrıca, Scott Arciszewski tarafından geliştirilen ve açık kaynak olarak dağıtılan Certainty kütüphanesini uygulamanıza dahil ederek kök sertifikalarının belirli aralıklarla güncel kalmasını sağlayabilirsiniz.

Bilginin ve güvenliğin önemli olduğu bu günlerde, büyük bir güvenlik sorunu oluşturan ama birçok yazılım geliştiricisinin görmezden geldiği bu hatadan bir an önce vazgeçilir.


Daha önce 2 kişi oy verdi. Sizde oy vermek ister misiniz?

  • 18/11/2018
  • 383

Apple, Safari için HTTP Sitelerinde "Güvenli Değil" Uyarı Testlerine Başladı.

Google'ın Chrome tarayıcısında yaptığı gibi Apple, Safari tarayıcısında HTTP protokolünü kullanan web sitelerinde daha belirgin bir uyarı mesajı göste..

  • 06/11/2018
  • 307

Comodo CA Sertifikaların Adı Sectigo Olarak Değiştirildi.

Sertifika Yetkilisi ve web güvenlik çözümlerinde dünya lideri olan Comodo CA marka adı Sectigo olarak değiştirildi. Comodo CA, Francisco Partners firm..

  • 25/08/2017
  • 594

Google Chrome, SSL Kullanmayan Web Sitelerinde Güvenli Değil Uyarısı!

Geçen yıl yapılan güncellemelerle SSL, SEO için bir etken olarak sayılmaya başlanmıştı. Ayrıca, SSL kullanmayan web sitelerinde, kullanıcı adı, parola..

  • 12/07/2017
  • 19.03K

OpenCart 3.0.2.0 Türkçe Tam Sürüm

OpenCart'ın en yeni versiyonu 3.0.2.0 sürüm numarası ile 18.07.2017 tarihinde yayındı. 22.07.2017 tarihi itibariyle de Türkçe sürümünü sizlerin kullan..

  • 14/01/2019
  • 3.91K

OpenCart 3.0.3.2 Türkçe Tam Sürüm

Yeni yılla birlikte OpenCart 3.0.3.2 sürümü 09.04.2019 tarihinde yayındı. Bununla birlikte OpenCart 3.0.3.2 Türkçe sürümünü 29.01.2019 tarihinde sizle..

  • 20/07/2017
  • 6.01K

OpenCart SSL Sertifikası Nasıl Kurulur?

İlk olarak OpenCart'ı kısaca bilmeyenler için açıklayalım. OpenCart açık kaynak kodlu PHP üzerine inşa edilmiş e-ticaret yazılımıdır. Açık kaynak kodl..

  • 19/10/2018
  • 724

OpenCart Yükleyici İzinleri - Dizine Yazma İzniniz Yok Uyarı Mesajı

OpenCart 3 versiyonlarında eklenti yüklerken X dizinine yazılmasına izin verilmedi! hatası ile karşılaşabilirsiniz. Aslında bu bir hata değil, sadece..

  • 14/07/2017
  • 872

SSL Sertifika Çeşitleri - SSL Sertifika Türleri Nelerdir?

Farklı özelliklerde ve farklı fiyat aralıklarında birçok SSL sertifikası bulunmaktadır. Çeşitlilik iyi olsa da SSL sertifikaları hakkında bilgi sahibi..

  • 13/06/2017
  • 399

SSL Sertifika Fiyatları Neden Farklı?

SSL Sertifikası günümüzde ihtiyaç halinde kullanılması gereken bir seçenekten çıkarak, kullanılması gerekli bir güvenlik protokolü olmaya başladı. Bil..