CVE-2018-14634: Linux Kernel Integer Overflow Vulnerability
Zorluk Seviyesi: Orta | Kaynak: CISA KEV
Zafiyet Analizi ve Giriş
CVE-2018-14634, Linux kernel (çekirdek) üzerinde bulunan bir tamsayı taşma (integer overflow) zafiyetidir. Bu zafiyet, linux'un çekirdek kodunun bir parçası olan ve ELF (Executable and Linkable Format) dosyalarını yönetmekle görevli create_elf_tables() fonksiyonunda bulunmaktadır. Tamsayı taşmaları, sayısal değerlerin beklenenden yüksek değerlere ulaşması sonucu, potansiyel olarak zararlı kodların çalıştırılmasına olanak tanıyabilir. Linux kernel, birçok işletim sistemi ve dağıtım için temel bileşen olduğundan, bu zafiyetin yarattığı riskler oldukça ciddidir.
Zafiyetin tarihçesi 2018 yılına kadar uzanmaktadır. Bu year, siber güvenlik alanında birçok kritik açığın ortaya çıktığı bir dönemdir. Özellikle bu tür zafiyetler, unprivileged (yetkisiz) kullanıcıların, SUID (Set User ID) veya diğer yetkili ikili dosyalar üzerinde işlem yaparak sistemdeki ayrıcalıklarını artırabilmelerine olanak tanımaktadır. Böylece, saldırganlar sistemde kendi yetkilerini yükseltebilir veya sistemde istenmeyen değişiklikler yapabilirler. Örneğin, bir hacker, bu zafiyeti kullanarak işletim sisteminde yönetici haklarına (root) erişim elde edebilir ve sistemin kontrolünü ele alabilir.
Linux üzerindeki birçok dağıtım, bu zafiyetten etkilenmiştir; özellikle sunucu ortamları ve bulut sistemleri gibi kritik altyapıları yöneten sistemler risk altındadır. Web sunucuları, veri merkezleri ve büyük organizasyonların sunucu sistemleri, bu tür bir zafiyetin hedefi haline gelmiştir. Örneğin, bir web sunucusunun SUID bitine sahip bir dosya üzerindeki bu zafiyet kullanılabilir. Saldırgan, dosya üzerinde gerçekleştirilecek sınırlı işlemleri kötüye kullanarak, sistem haklarına erişim sağlayabilir.
Bir güvenlik araştırmacısı, bu tür zafiyetlerin farkına vardığında, öncelikle konuyu analiz eder. Bu aşamada, aşağıdaki gibi bir koda göz atılması faydalıdır:
void create_elf_tables(...)
{
unsigned int entry_size;
...
entry_size = calculate_entry_size();
if (entry_size < 0) {
// Tamsayı taşması durumunda bu koşul geçersiz olacaktır.
return -1;
}
...
}
Bu örnekte, entry_size hesabı bir tamsayı taşmasına yol açıyorsa, fonksiyon beklenmedik bir durumla karşı karşıya kalabilir. Buradan, zafiyetin analizine geçebiliriz: Giriş saiklerinin doğruluğunu ve sınırlarını kontrol etmemek, bu tür kritik hataların ortaya çıkmasına neden olur.
Siber güvenlik araştırmacıları, bu zafiyetin etkilerini ortadan kaldırmak için güvenlik güncellemeleri ve yamalar (patch) önererek sistem yöneticilerinin dikkatini çeker. Ayrıca, Linux'un yönetimi altındaki sistemlerde güvenlik standartlarını artırmak ve bu tür zafiyetleri önlemek için sıkı güvenlik politikaları oluşturulması gerektiği vurgulanır. Unutulmamalıdır ki, zafiyetin yalnızca teknik boyutu yoktur; aynı zamanda organizasyonel ve mali boyutları da göz önünde bulundurulmalıdır. Zafiyetlerin yol açtığı sorunlar, firmalar için ciddi itibar kayıplarına ve maddi zararlara yol açabilmektedir.
Sonuç olarak, CVE-2018-14634 gibi zafiyetlerin varlığı, "White Hat Hacker" topluluğunun sürekli olarak sistemleri analiz etmesi ve güvenlik açıklarını kapatmasını gerektiriyor. Sistem yöneticileri ve güvenlik uzmanları, bu tür tehditlere karşı her zaman hazırlıklı olmalı ve güvenlik açıklarını proaktif bir şekilde ele almalıdır.
Teknik Sömürü (Exploitation) ve PoC
CVE-2018-14634 zafiyetinin teknik sömürü süreçleri, Linux Kernel üzerindeki integer overflow (tam sayı taşması) açığının kötü niyetli kişiler tarafından nasıl istismar edilebileceğini anlamak için önemlidir. Bu zafiyet, özellikle SUID (Set User ID) veya başka bir şekilde yetkili bir ikili dosyaya (binary) erişimi olan, yeterince büyük verilerle kernel içinde bellek hatalarını tetikleyerek yetki yükseltmelerine olanak tanımaktadır.
İlk önce, zafiyetin etkisini anlayabilmek için sistemin hangi SUID ikili dosyalarına sahip olduğunu belirlememiz gerekiyor. Tipik olarak, bu dosyalar /usr/bin/ gibi dizinlerde bulunur. Bu dizinlerdeki dosyalar arasında, zafiyetten yararlanmak amacıyla uygun olanları bulmak çok önemlidir. Örneğin, ping veya passwd gibi sık kullanılan araçlar, düşük ayrıcalıklara sahip bir kullanıcı tarafından etkin şekilde sömürülebilir.
Kullanıcı ile etkileşimi artırmak için aşağıdaki adımlar izlenebilir:
- SUID Dosyalarının Tespiti: Kullanıcının sistem üzerindeki SUID dosyalarını tespit etmek için aşağıdaki komutu çalıştırabiliriz:
find / -perm -u=s -type f 2>/dev/null
Zafiyetin Yüzeysel Analizi:
create_elf_tables()fonksiyonunda oluşan integer overflow hata noktalarını anlamamız gerektiğinden, Linux Kernel kaynak kodunu incelemek önemlidir. Analiz için, belirli bir versiyonun kaynak kodunu incelemek (örneğin,v4.17) gerekebilir.Çalışma Ortamının Hazırlanması: Hedef sistemin bir kopyasını (VM) oluşturmak ve çalıştırmak, riskleri azaltmak için idealdir. Böylece testlerimizi herhangi bir gerçek sistem üzerinde gerçekleştirmeden, güvenli bir ortamda yapabiliriz.
Sömürü Kodu Geliştirme: Integer overflow'u tetiklemek için aşağıdaki gibi basit bir PoC kodu geliştirilebilir. Burada, sırasıyla bir ELF dosyası oluşturulmakta ve bu dosyanın overlyüklüğü ile
create_elf_tables()’ta overflow hatası oluşması sağlanmaktadır:
#include <stdio.h>
#include <stdlib.h>
#include <fcntl.h>
#include <unistd.h>
#include <string.h>
int main() {
FILE *fp;
char buffer[100];
memset(buffer, 0, sizeof(buffer));
fp = fopen("exploit.elf", "w");
if (fp == NULL) {
perror("Dosya açılamadı");
return -1;
}
// ELF dosya yapısını oluştur
fwrite(buffer, sizeof(buffer), 1, fp);
fclose(fp);
return 0;
}
- Kötü Amaçlı Yükün Yürütülmesi: Hazırlanan ELF dosyası sistemde uygun bir dizine yerleştirildikten sonra, yukarıda belirttiğimiz SUID dosya ile birlikte çalıştırılarak exploitation (sömürü) işlemi gerçekleştirilir. Aşağıdaki komut ile dosya çalıştırılabilir:
./exploit.elf
- Sonuçların İncelenmesi: Exploit çalışırsa, kullanıcının PRIVILEGE yükseltilerek yönetici haklarına sahip olması beklenir. Bu tür bir durum, hedef sistemin güvenliğini ciddi derecede tehdit edebilir.
Sonuç olarak, CVE-2018-14634 zafiyetinin pratikte nasıl sömürülebileceği adım adım yukarıda açıklanmıştır. Bu tür güvenlik açıklarının bilinmesi ve zamanında kapatılması, sistem yöneticileri ve güvenlik uzmanları için son derece önemlidir. Nadir de olsa bazı kullanım durumlarında bu tür açıkları değerlendirmek gerekebilir, ancak her zaman etik sınırlar içerisinde kalmak esastır.
Forensics (Adli Bilişim) ve Log Analizi
CVE-2018-14634, Linux çekirdeğinde bulunan ve "create_elf_tables()" fonksiyonunda tespit edilen bir tam sayı taşması (integer overflow) zafiyetidir. Bu zafiyet, yetkisiz bir yerel kullanıcının SUID (Set User ID) veya başka bir ayrıcalıklı ikili dosyaya erişimi varsa, sistemdeki ayrıcalıklarını artırmasına (privilege escalation) olanak tanıyabilir. Bu tür bir zafiyetin, özellikle sunucu ortamlarında ve paylaşımlı sistemlerde ciddi güvenlik açıklarına yol açabileceği düşünülünce, bu durumu detaylı bir şekilde incelemek ve tespit yöntemlerini belirlemek hayati önem taşır.
Bir Siber Güvenlik Uzmanı için bu tür bir saldırının gerçekleştiğini anlamak, çoğunlukla log analizleri ile mümkündür. SIEM (Security Information and Event Management) sistemleri, log verilerini derleyerek saldırı belirtilerini tespit etmek için kritik bir araçtır. SIEM kullanarak, aşağıdaki adımlarla bu tür bir zafiyetin etkilerini izleyebiliriz:
Log Kaynağı ve Türü: Öncelikle, log kaynaklarını belirlemeliyiz. Access log (erişim günlüğü), error log (hata günlüğü) ve system log (sistem günlüğü) gibi farklı log türleri, zafiyetten etkilenen uygulamaların davranışlarını takip etmek için gözlemlenmelidir.
Anomalilerin Tespiti: Tüm log verilerini incelerken, belirli anomaliler dikkat çekici olabilir. Örneğin, erişim günlüğünde sürekli bir "Permission Denied" hatası veya normalin üzerinde erişim isteği sayıları, potansiyel bir saldırıyı gösteriyor olabilir.
Apr 1 14:52:20 server1 application: Permission denied for user alice on /path/to/suid-binary
Zaman Damgaları: Log kayıtlarındaki zaman damgaları, zafiyetin etkilerinin hangi zaman diliminde gerçekleştiğini anlamamıza yardımcı olabilir. Olayların sıralaması, saldırganın hangi adımlar izlediğini belirleme konusunda kritik bir rol oynar.
Bilinmeyen UID/GID Erişimi: SUID ve SGID (Set Group ID) bayraklarına sahip dosyalara erişimin izlenmesi önemlidir. Belirli bir kullanıcı veya grup dışında, normalde yetkisiz kullanıcıların bu dosyalara erişim denemeleri loglarda gözlemlenmelidir.
Apr 1 14:53:00 server1 kernel: [12345.678901] user: uid=1001 gid=1001 euid=0 suid=0
Başka Bir İmza Arama: Kernel hatası veya özgün bir "Segfault" (segment hatası) gibi log girişleri, bu tür bir zafiyetle saldırıya uğramış olabileceğine dair işaretler taşır. Özellikle, bellekte bir aşırı yazma (buffer overflow) ya da bellek erişim hataları, sistemin anormal şekilde davranmasına sebep olabilir.
Zafiyet Taramaları: Günümüzde hemen hemen her sistemde kullanılan zafiyet tarama araçları (Vulnerability Scanners), CVE-2018-14634 gibi spesifik zafiyetleri tespit etmek için kullanılabilir. Bu araçlar, sistem üzerindeki yazılımların güncelliğini ve güvenliğini kontrol ederek, potansiyel açıkları gün yüzüne çıkarabilir.
Sonuç olarak, Linux kernel üzerindeki CVE-2018-14634 zafiyetinin tespiti, sistemi etkileyen log kayıtlarının dikkatlice analizi ile gerçekleştirilir. Gözlemlenen anormallikler, imzalar ve erişim talepleri, bir siber güvenlik uzmanının bu tür bir saldırıyı tespit etmesine yardımcı olacaktır. Bu nedenle, düzenli log analizi ve SIEM kullanımı, siber güvenlik stratejilerinin kritik bir parçasıdır.
Savunma ve Sıkılaştırma (Hardening)
Linux Kernel'deki CVE-2018-14634 zafiyeti, bir integer overflow (tam sayı taşması) güvenlik açığıdır ve bu tür zafiyetler, doğrudan sistem üzerinden unprivileged (yetkisiz) yerel kullanıcıların belirli izinlere sahip SUID (Set User ID) veya diğer ayrıcalıklı ikili dosyalara ulaşarak, sistemdeki yetkilerini artırmasına imkan tanır. Bu tür bir zafiyet, sistemi tehdit eden bir gerçektir ve özellikle paylaşım sunucuları veya bulut tabanlı hizmet sağlayıcıları için büyük bir risk oluşturur.
Güvenlik açığı, create_elf_tables() fonksiyonunda ortaya çıkar ve bu fonksiyon, ELF (Executable and Linkable Format) dosya formatında veri tablolarını oluşturmak için kullanılır. Bu tür işlevlerde yapılan hatalar, çoğu zaman daha büyük ve kritik açıklara yol açabilir. Örneğin, bir saldırgan, bu tür bir zafiyetten yararlanarak, sistemde root (kök) yetkilerine ulaşabilir ve bu da RCE (Remote Code Execution - Uzaktan Kod Çalıştırma) gibi daha ciddi güvenlik tehditlerine yol açabilir.
Zafiyetin giderilmesi adına birkaç etkili yöntem önerilmektedir. İlk olarak, Linux Kernel’in güncellenmesi, bu tür zafiyetlerin kapatılması adına kritik öneme sahiptir. Her zaman güncel kalmak, güvenlik için en iyi uygulamadır. Aşağıdaki komut ile Linux Kernel güncellenebilir:
sudo apt update && sudo apt upgrade
Ayrıca, SUID bitine sahip dosyaların sadece gerekli olduğunda kullanılması ve mümkün olan en kısa sürede kaldırılması gerektiği unutulmamalıdır. Örneğin, bir SUID bitine sahip bir programın kullanım dışı olması durumunda, onu şu şekilde kaldırabilirsiniz:
chmod u-s /path/to/suidbinary
Alternatif firewall (WAF - Web Application Firewall) kuralları da ek bir koruma katmanı sağlayabilir. Bu kurallar, izin verilen ve yasaklanan dosya türlerini ve çalışma yöntemlerini kontrol ederek saldırıları engelleyebilir. Aşağıdakine benzer kural setleri belirlemek, potansiyel saldırıları önlemek için faydalıdır:
<FilesMatch "\.php$">
SetHandler application/x-httpd-php
Options -Indexes
</FilesMatch>
Kalıcı sıkılaştırma (hardening) önerileri arasında şunlar bulunmaktadır:
İzinleri Gözden Geçirme: Kullanıcıların ve grupların izinlerini düzenli olarak kontrol ederek, gereksiz yetkileri kaldırın.
Kernel Güvenlik Modülleri: AppArmor veya SELinux gibi kernel güvenlik modüllerini etkinleştirin. Bu tür araçlar, uygulamaların dosya sistemindeki erişimlerini sınırlayarak saldırılara karşı ek bir koruma sağlar.
Sistem İzleme: Loglarınızı düzenli olarak izleyin. Fail2ban gibi araçlarla şüpheli girişimleri otomatik olarak yasaklayabilirsiniz.
Sistem Kısıtlamaları: Kullanıcıların belirli komutları veya uygulamaları çalıştırmalarını kısıtlamak, böylece potansiyel zafiyetlerin kullanımını sınırlamak mümkündür.
Sonuç olarak, CVE-2018-14634 gibi zafiyetlerle başa çıkmak, çok yönlü bir yaklaşım gerektirir. Herhangi bir binanın güvenliği, ince detayların göz önünde bulundurulması ve sistem bileşenlerinin sürekli izlenmesi ile sağlanabilir. Böylece, cyber saldırıların önüne geçilebilir ve sistemler daha güvenilir hale getirilebilir. Unutulmamalıdır ki, güvenlik bir yolculuktur, bir varış noktası değil.