Yaygın olarak kullanılan RSYNC dosya senkronizasyon aracındaki bir dizi kritik güvenlik açıklığı ortaya çıktı ve milyonlarca sunucuyu anonim saldırganlar tarafından potansiyel devralmaya maruz bıraktı.
RSYNC sürüm 3.2.7 ve daha erken keşfedilen kusurlar, GitHub’ın bir raporuna göre, beş farklı saldırı vektörü aracılığıyla uzaktan kod yürütme, hassas veri sızıntıları ve dosya sistemi manipülasyonunu etkinleştirir.
Kavram kanıtı
CVE-2024-12084: Sağlık toplamı ayrıştırmasında yığın arabellek taşması (CVSS 9.8)
En kritik güvenlik açığı, RSYNC Daemons’ın senkronizasyon sırasında dosya sağlama toplamlarını nasıl ele aldığı konusunda mevcuttur.
Saldırganlar, tahsis edilen 16 baytlı tamponu (SUM2 dizisi) aşan kötü amaçlı sağlama toplamı verileri göndererek bir yığın arabelleği taşmasını tetikleyebilir.
Taşma, protokolün uygun doğrulama olmadan 64 bayta kadar (SHA-512 sindirimleri için) S2Length değerlerini kabul ettiği için oluşur:
struct sum_buf {
char sum2[SUM_LENGTH]; // 16-byte buffer
};
// Attacker-controlled parameter
sum->s2length = read_int(f);
read_buf(f, s->sums[i].sum2, s->s2length); // Overflow when s2length>16
Bu, kritik veri yapılarını bozarak 48 baytlık bitişik yığın belleğinin üzerine yazmaya izin verir.
CVE-2024-12085 (ASLR Bypass) ile birleştiğinde, saldırganlar varsayılan RSYNC konfigürasyonlarını çalıştıran Debian 12 ve Ubuntu sistemlerinde güvenilir uzaktan kod yürütme kazanırlar.
Kavram kanıtı istismarları, hazırlanmış senkronizasyon istekleri ile tam sunucu uzlaşmasını gösterir.
CVE-2024-12085: Başlangıçsız yığın veri sızıntısı (CVSS 7.5)
Sağlık toplamı karşılaştırma mantığı, zamanlama yan kanalları aracılığıyla başlatılmamış yığın belleği sızdırır. Dosya Yığın Doğrulaması sırasında:
char sum2[MAX_DIGEST_LEN]; // Uninitialized stack buffer
get_checksum2(map, l, sum2); // Writes 8 bytes (xxhash64)
// Compare s->s2length bytes (attacker-controlled)
if (memcmp(sum2, s->sums[i].sum2, s->s2length) != 0)
Saldırganlar, isteğe bağlı olarak 1 bilinmeyen baytı karşılaştırmak için S2Length = 9’u ayarlar, yavaş yavaş yığın kanaryalar ve kod işaretçileri.
Bu, CVE-2024-12084 sömürüsü için gerekli olan hassas ASLR bypass’ı sağlar1.
CVE-2024-12086: Dosya Eksfiltrasyon Dosyası (CVSS 8.6)
Kötü amaçlı sunucular, XNAME parametresindeki yol geçişiyle keyfi istemci dosyalarını dışarı atabilir. Güvenlik açığı, sunucular dosya karşılaştırma istekleri gönderdiğinde uygunsuz sterizasyondan kaynaklanmaktadır:
if (iflags & ITEM_XNAME_FOLLOWS) {
read_vstring(f_in, buf, MAXPATHLEN); // Server-controlled path
}
fd1 = do_open(fnamecmp, O_RDONLY, 0); // Opens client-side file
Sunucular, SSH anahtarlarının, yapılandırma dosyalarının ve diğer hassas verilerin hırsızlığını sağlayarak, brute-force dosyası içeriği için recksum uyuşmazlıklarını kullanır.
CVE-2024-12087: SymLink Directory Escape (CVSS 8.1)
Saldırganlar, sembolik bağlantı korumalarını atlamak için dizin önbelleğindeki yarış koşullarını kullanırlar. Göndererek:
./malicious-dir (directory)
./malicious-dir/target-file
./malicious-dir (symlink to /etc)
RSYNC istemcileri, senkronizasyon dizini yerine /vb. Bu, ayrıcalık artış ve sistem dosyası yolsuzluğunu sağlar.
CVE-2024-12088: –Safe-Links Bypass (CVSS 6.5)
Symlink saldırılarını önlemek için tasarlanan güvenlik özelliği, iç içe bağlantıları hesaba katmaz:
{DESTINATION}/a -> .
{DESTINATION}/exploit -> a/a/a/../../../etc
Doğrulama mantığı, yol derinliğini 4 (A/A/A/..) olarak hesaplarken, gerçek çözünürlük/vb. Bu, -Safe-Links etkinken bile devam eder.
Tüm RSYNC kullanıcıları hemen sürüm 3.2.8’e yükseltilmeli veya satıcı yamaları uygulamalıdır. Yöneticiler:
- Mümkünse Anonim RSync Daemon erişimini devre dışı bırakın
- Beklenmedik sağlama toplamı hataları için senkronizasyon günlüklerini denetleyin
- İstemci RSYNC’yi yalnızca güvenilir sunucularla kısıtlayın
Debian ve Ubuntu acil durum güncellemeleri yayınladı (DSA-5432-1, USN-6670-1). Güvenlik açıkları, eski senkronizasyon protokollerinin doğasında var olan risklerin ve bellek güvenli uygulamaların öneminin altını çizmektedir.
Collect Threat Intelligence on the Latest Malware and Phishing Attacks with ANY.RUN TI Lookup -> Try for free