Genel Bakış
JetBrains TeamCity, CI/CD (Continuous Integration/Continuous Deployment) süreçlerinde yaygın olarak kullanılan bir otomatik build ve deployment aracıdır. Bu araç, yazılım geliştirme ekiplerinin kodlarını otomatik olarak derlemelerine, test etmelerine ve dağıtmalarına olanak tanır. 2023 yılının Eylül ayında, JetBrains tarafından TeamCity On-Premises sürümünde tespit edilen kritik bir güvenlik açığı (CVE-2023-42793) yayımlanmıştır. Bu açıklık, kimlik doğrulama bypass zafiyetine dayanmakta olup, saldırganların sistemde uzaktan kod yürütme (RCE) gerçekleştirmelerine olanak sağlamaktadır.
Bu makalede, söz konusu güvenlik açığının detayları, etkilenen sistemler, risk seviyesi ve bu açıktan korunmak için gerekli adımlar detaylı olarak ele alınacaktır. Makalenin zorluk seviyesi intermediate olarak belirlenmiş olup, temel sistem yönetimi bilgisine sahip okuyucular için faydalı olacaktır.
Etkilenen Sistemler ve Güvenlik Açığının Detayları
Etkilenen Sürümler
Aşağıdaki TeamCity On-Premises sürümleri, CVE-2023-42793 güvenlik açığından etkilenmektedir:
- TeamCity 2023.05.1 ve öncesi
- TeamCity 2023.05
- TeamCity 2023.05.2
Önemli Uyarı: TeamCity Cloud sürümleri bu açıklıktan etkilenmemektedir. Sadece On-Premises (yerel kurulum) sürümleri risk altındadır. Eğer TeamCity Cloud kullanıyorsanız, herhangi bir ek işlem yapmanız gerekmez.
Açıklığın Teknik Detayları
CVE-2023-42793, kimlik doğrulama bypass zafiyetine dayanmaktadır. Bu zafiyet, saldırganların sisteme yetkisiz erişim sağlamasına ve ardından uzaktan kod yürütme gerçekleştirmesine olanak tanır. Açıklık, TeamCity'nin HTTP/HTTPS bağlantıları üzerinden gelen istekleri işlerken kimlik doğrulama kontrollerini yetersiz şekilde gerçekleştirmesinden kaynaklanmaktadır.
Aşağıdaki senaryo, açıklığın potansiyel olarak nasıl istismar edilebileceğine dair bir örnektir:
- Saldırgan, TeamCity sunucusuna özel olarak hazırlanmış bir HTTP isteği gönderir.
- Bu istek, kimlik doğrulama kontrollerini bypass eder ve saldırgana yönetici düzeyinde erişim sağlar.
- Saldırgan, bu erişimi kullanarak sistemde arbitrary komut çalıştırma yetkisi elde eder.
- Saldırgan, sistemde tüm verileri silebilir, yeni kullanıcılar oluşturabilir veya sistemin tam kontrolünü ele geçirebilir.
Risk Seviyesi
Bu güvenlik açığı, CVSS v3.1 puanı 9.8 (Kritik) olarak değerlendirilmiştir. Bu yüksek puan, açıklığın uzaktan istismar edilebilir olduğunu ve sistemde tam kontrol sağlama riski taşıdığını göstermektedir. Saldırganlar, bu açıktan yararlanarak veri hırsızlığı, hizmet reddi saldırıları veya sistem bütünlüğünün bozulması gibi ciddi sonuçlara yol açabilir.
Güvenlik Açığından Korunma Yöntemleri
Adım 1: Mevcut Sürümünüzü Kontrol Edin
Aşağıdaki komutları kullanarak TeamCity sunucunuzun hangi sürümde çalıştığını kontrol edebilirsiniz:
# TeamCity sunucusunun çalıştığı dizine gidin
cd /opt/teamcity
# Sürüm bilgisini içeren dosyayı okuyun
cat conf/buildServer.properties | grep build.number
Eğer çıktınız aşağıdaki gibi ise, sisteminiz risk altındadır:
build.number=2023.05.1
build.number=2023.05
build.number=2023.05.2
Adım 2: JetBrains'in Resmi Yama ve Güncellemelerini Uygulayın
JetBrains, bu güvenlik açığını gidermek için TeamCity'nin yeni bir sürümünü yayınlamıştır. Aşağıdaki adımları izleyerek sisteminizi güncelleyebilirsiniz:
-
Yedekleme Yapın: Güncelleme işlemine başlamadan önce, TeamCity veritabanınızın ve yapılandırma dosyalarının yedeğini alın. Aşağıdaki komutları kullanabilirsiniz:
# Veritabanı yedeği (örnek PostgreSQL için) pg_dump -U teamcity -d teamcity > teamcity_backup_$(date +%Y%m%d).sql # TeamCity dizininin yedeği tar -czvf teamcity_backup_$(date +%Y%m%d).tar.gz /opt/teamcity -
Güncelleme Dosyasını İndirin: JetBrains'in resmi web sitesinden en son TeamCity sürümünü indirin:
wget https://download.jetbrains.com/teamcity/TeamCity-.tar.gzNot:
<VERSION>yerine en son sürüm numarasını girin (örn. 2023.05.3). -
Güncellemeyi Uygulayın: Aşağıdaki adımları izleyerek TeamCity'yi güncelleyin:
# Mevcut TeamCity dizinini durdurun docker stop teamcity # Eğer Docker kullanıyorsanız systemctl stop teamcity # Eğer sistem servisi olarak çalışıyorsa # Yeni sürümü kurun mkdir -p /opt/teamcity_new tar -xzvf TeamCity-.tar.gz -C /opt/teamcity_new # Veritabanı bağlantı ayarlarını yeni dizine kopyalayın cp /opt/teamcity/conf/buildServer.properties /opt/teamcity_new/conf/ # Eski TeamCity dizinini yedekleyin ve yeni dizini aktif hale getirin mv /opt/teamcity /opt/teamcity_old mv /opt/teamcity_new /opt/teamcity # TeamCity'yi yeniden başlatın systemctl start teamcity # Eğer sistem servisi olarak çalışıyorsa -
Güncellemenin Doğruluğunu Kontrol Edin: Güncelleme işleminden sonra, TeamCity arayüzüne giriş yaparak sistemin düzgün çalıştığını ve yeni sürüm numarasını doğrulayın.
İpucu: Eğer TeamCity'yi Docker konteynerinde çalıştırıyorsanız, aşağıdaki komutları kullanarak konteyneri güncelleyebilirsiniz:
docker pull jetbrains/teamcity-server # Mevcut konteyneri durdurun ve silin docker stop teamcity docker rm teamcity # Yeni konteyneri başlatın docker run -d --name teamcity -p 8111:8111 -v /opt/teamcity/data:/data -v /opt/teamcity/logs:/logs jetbrains/teamcity-server
Adım 3: Güvenlik Duvarı ve Erişim Kontrollerini Güçlendirin
Sisteminizi sadece gerekli IP adreslerinden erişilebilir hale getirerek saldırı yüzeyini azaltabilirsiniz. Aşağıdaki adımları izleyerek güvenlik duvarı kurallarınızı güncelleyebilirsiniz:
# UFW (Uncomplicated Firewall) kullanıyorsanız
sudo ufw allow from to any port 8111
sudo ufw deny 8111
# iptables kullanıyorsanız
sudo iptables -A INPUT -p tcp --dport 8111 -s -j ACCEPT
sudo iptables -A INPUT -p tcp --dport 8111 -j DROP
Eğer TeamCity'ye sadece VPN üzerinden erişim sağlıyorsanız, bu da ek bir güvenlik katmanı oluşturacaktır.
Adım 4: Sistem Günlüklerini İzleyin ve Saldırı Belirtilerini Kontrol Edin
TeamCity, sistem olaylarını ve erişim denemelerini ayrıntılı olarak kaydeder. Aşağıdaki komutları kullanarak günlükleri inceleyebilir ve olağandışı aktiviteleri tespit edebilirsiniz:
# TeamCity günlüklerini görüntüleyin
cat /opt/teamcity/logs/teamcity-server.log | grep -i "authentication failed"
cat /opt/teamcity/logs/teamcity-server.log | grep -i "remote code execution"
# Son 24 saatteki olağandışı erişim denemelerini listeleyin
grep -E "(Failed login|Unauthorized access)" /opt/teamcity/logs/teamcity-server.log | tail -n 50
Uyarı: Eğer aşağıdaki belirtilerden herhangi birini tespit ederseniz, sisteminizin saldırıya uğradığını düşünebilirsiniz:
- Bilinmeyen IP adreslerinden yapılan başarısız kimlik doğrulama denemeleri
- Sistemde çalıştırılan bilinmeyen komutlar
- Veritabanında yapılan yetkisiz değişiklikler
- Sistem performansında ani düşüşler
Sıkça Sorulan Sorular (SSS)
TeamCity Cloud kullanıyorum. Bu açıklıktan etkilenir miyim?
Hayır. Bu güvenlik açığı sadece TeamCity On-Premises sürümlerini etkilemektedir. TeamCity Cloud kullanıcıları herhangi bir ek işlem yapmasına gerek yoktur.
Güncelleme yapmadan önce nelere dikkat etmeliyim?
Güncelleme işlemine başlamadan önce mutlaka veritabanı ve yapılandırma dosyalarının yedeğini alın. Ayrıca, sistemde çalışan tüm build'leri durdurun ve TeamCity servisini tamamen kapatın.
Bu açıklık nasıl tespit edilir?
Saldırganlar, bu açıklığı istismar etmek için özel olarak hazırlanmış HTTP istekleri gönderirler. Bu istekler, TeamCity sunucusunun günlüklerinde "authentication failed" veya "unauthorized access" gibi mesajlarla kaydedilir. Ayrıca, sistemde çalıştırılan bilinmeyen komutlar da bir saldırı belirtisi olabilir.
Sonuç
CVE-2023-42793, TeamCity On-Premises kullanıcıları için ciddi bir tehdit oluşturmaktadır. Bu açıklık, saldırganlara sistemde tam kontrol sağlama yetkisi vermektedir. Bu nedenle, acilen en son TeamCity sürümüne güncelleme yapılması ve güvenlik önlemlerinin güçlendirilmesi gerekmektedir. Güncelleme işlemine başlamadan önce mutlaka yedekleme yapmayı unutmayın ve sisteminizi sürekli olarak izleyin.
Eğer TeamCity On-Premises kullanıyorsanız, bu makalede verilen adımları takip ederek sisteminizi koruma altına alabilirsiniz. Unutmayın, güvenlik açıklarını önlemek, sistem bütünlüğünü korumak ve veri güvenliğini sağlamak için düzenli güncellemeler ve izleme işlemleri hayati önem taşımaktadır.



