Trojan Source saldırısı, C, C++, C#, Java, JavaScript, Python, Rust ve Go gibi tüm popüler programlama dili derleyicilerini etkiler.
Bir araştırma makalesi yayınlanan Cambridge Üniversitesi araştırmacıları Ross Anderson ve Nicholas Boucher tarafından hazırlanan “Truva Kaynağı: Görünmez Güvenlik Açıkları” başlıklı makale, tespit edilmeden kaynak koduna kötü amaçlı yazılım eklemek için istismar edilebilecek benzersiz bir güvenlik açığı sınıfının ayrıntılarını ortaya koyuyor.
Araştırmaya göre kötü amaçlı yazılım, kaynak kodun tanımlanmış mantığını değiştirerek bir dizi birinci taraf ve tedarik zinciri riskine izin verebilir. Sorun, hangi dil kullanılırsa kullanılsın bilgisayarların bilgi alışverişinde bulunmasını sağlayan bir dijital metin kodlama standardı olan Unicode’da yatmaktadır.
Şu anda Unicode, 154 farklı dildeki komut dizilerinde 143.000’den fazla karakter ve emojiler gibi birçok komut dosyası olmayan karakter kümesini tanımlamaktadır.
Trojan Kaynak Saldırıları Hakkında
Bu teknik, belirteçleri mantıksal olarak orijinalinden tamamen farklı bir sırada kodlanan farklı bir kaynak kodu üretmek için Unicode dahil olmak üzere metin kodlama standartlarının inceliklerini kullanır. Bu, insan kodu gözden geçirenlerin doğrudan algılayamayacağı güvenlik açıkları oluşturabilir.
Bu güvenlik açıkları — CVE-2021-42574 ve CVE-2021-42694 olarak sınıflandırılmıştır. aşağıdakiler gibi tüm popüler programlama dili derleyicilerini etkiler:
- Gitmek
- C#
- C, C++
- Pas
- java
- Piton
- JavaScript
Raporda, “Truva Kaynağı güvenlik açığının neredeyse tüm bilgisayar dillerini etkilemesi, bunu sistem çapında ve ekolojik olarak geçerli çapraz platform ve satıcılar arası yanıt karşılaştırması için nadir bir fırsat haline getiriyor.” [PDF] Okumak.
Bilgin olsun, derleyici programlar, insanlar tarafından okunabilen yüksek seviyeli kaynak kodunu işletim sisteminin çalıştırabileceği alt seviye temsillerine yorumlamaktan sorumludur. Bunlar, nesne kodunu, montaj dilini ve makine kodunu içerir.
Unicode Algoritması Nasıl Kullanılır?
Temel sorun, Unicode’un Bidi (çift yönlü) algoritmasında yatmaktadır. Bu algoritma, sırasıyla İngilizce ve Arapça gibi soldan sağa ve sağdan sola yazılan diller için desteği teşvik eder. Ayrıca, sağdan sola bir cümle içinde soldan sağa kelimelerin yazılmasını veya tam tersini sağlamak için Bidi geçersiz kılma özelliklerine de sahiptir. Bu nedenle, soldan sağa metni sağdan sola olarak kullanılmaya zorlar.
Ancak, kaynak kodunu doğru bir şekilde uygulamak için derleyicinin çıktısı gerekli olsa da, Unicode Bidi geçersiz kılma karakterlerini dizelere ve yorumlara enjekte ederek oluşturulan herhangi bir değişiklik, karakterlerin görüntülenme sırasının gerçek olandan farklı bir mantık sunduğu sözdizimsel olarak geçerli bir kaynak kodu sağlayabilir.
Saldırı ayrıntıları
Kaynak kod dosyalarının kodlaması, mantıksal hataları bağımsız olarak tanıtmak yerine hedeflenen güvenlik açıkları oluşturmak için kullanılır. Bu, kaynak koddaki belirteçlerin görsel olarak yeniden sıralanmasına izin verir. Kabul edilebilir bir şekilde işlendiğinde, derleyici, kodu yeni bir şekilde işlemesi için kandırılır, böylece program akışını değiştirir. Örneğin bir yorumun kod olarak görünmesini sağlayabilir.
Bu nedenle, Program A, Program B’ye anagramlanırsa, kod mantığındaki değişiklik, bir düşman hedeflenen güvenlik açıklarını ortaya çıkarabileceği ve bunlar gizli kalacağı için, sonraki testlerde tespit edilmeyecek kadar ince olacaktır.
“Onları, bir insan gözden geçiren için zararsız görünen kaynak kodunda kullanabilirsiniz. [that] aslında kötü bir şey yapabilir. Bu, Linux ve Webkit gibi rastgele kişilerin katkılarını kabul eden, bunları manuel incelemeye tabi tutan ve ardından bunları kritik koda dahil eden projeler için kötü bir haber. Bu güvenlik açığı, bildiğim kadarıyla, hemen hemen her şeyi etkileyen ilk güvenlik açığı,” diye yazdı Ross Anderson.
Tedarik Zinciri Üzerindeki Etki
Bu kodlamalar tedarik zincirini etkileyebilir çünkü görünmez yazılım güvenlik açıkları açık kaynaklı yazılımlara eklendiğinde, sonunda tüm kullanıcıları etkileyecektir. Ayrıca araştırmacılar, bir saldırgan bir yukarı akış paketinde önceden var olan işlevleri yeniden tanımlamak için homoglifler kullanırsa ve böylece onları bir kurban programdan çağırırsa, Truva Kaynağı saldırılarının etkisinin daha şiddetli olabileceği konusunda uyardılar.
Araştırmacılar, “Güçlü tedarik zinciri saldırıları bu teknikler kullanılarak kolayca başlatılabildiğinden, bir yazılım tedarik zincirine katılan kuruluşların savunmaları uygulaması çok önemlidir” uyarısında bulundu.
Bu makaleyi okumaktan zevk aldınız mı? Sayfamızı beğenmek Facebook ve bizi takip edin twitter.