Güvenlik Araştırmaları ve Yazılım Tedarik Zinciri Tehditleri
Son günlerde, güvenlik araştırmacıları en az 187 npm paketinin, devam eden bir tedarik zinciri saldırısı sonucunda tehlikeye girdiğini tespit etti. Bu saldırı, kötü amaçlı bir self-propagating (kendi kendini yayma) yük ile diğer paketleri enfekte etmeyi hedefliyor. Bu koordineli kampanya, “Shai-Hulud” olarak adlandırıldı ve ilk olarak @ctrl/tinycolor npm paketinin saldırıya uğramasıyla başladı; bu paket haftada 2 milyondan fazla indirilme sayısına sahip.
Tinycolor’dan CrowdStrike’a Uzanan Saldırı
Günümüzde, birçok yazılım mühendisi, npmjs.com üzerindeki büyük ölçekli yazılım tedarik zinciri saldırıları hakkında halkı bilgilendirme çabası içinde. Bu saldırının büyüklüğü, özellikle çok sayıda projeyi hedef almasıyla dikkat çekiyor. Daniel Pereira, bir yazılım mühendisi, bu durumu açıklıkla duyurarak “npm’de yaşayarak yayılan bir zararlı yazılım var.” şeklinde yorum yaptı.
Pereira, üst düzey yöneticilerin dikkatini çekmek için çeşitli kanallar kullanmaya çalıştıklarını, GitHub ile iletişimin zorluğundan bahsederek, bazı projelerin tehlikeye girdiğini vurguladı. NPM güvenlik firması Socket, saldırıyı araştırdı ve kampanya içinde en az 40 paketin tehlikeye girdiğini belirtti. Bugüne kadar, bu sayı 187‘ye ulaştı.
Kendini Yayan Zararlı Yazılım ve TruffleHog Kullanımı
Kompromize olan sürümler, aynı bakıcının yönettiği diğer paketleri hedef alan bir kendini yayan mekanizma içeriyor. Bu kötü amaçlı yazılım, bir paketi indirip, package.json dosyasını değiştirerek kendi içinde bir bundle.js dosyası ekliyor, daha sonra paketi yeniden paketleyip yayımlıyor. Socket araştırmacıları, bu sürecin “aşağı akış paketlerinin otomatik olarak Trojanlaştırılmasına” neden olduğunu belirtiyor.
Bundle.js dosyası, geliştiricilerin ve güvenlik profesyonellerinin gizlentileri bulmalarına yardımcı olan, yasal bir gizli tarayıcı olan TruffleHog kullanımını içeriyor. Ancak, bu kötü amaçlı betik, API anahtarları, şifreler ve tokenler gibi hassas bilgileri bulmak için bu aracı kötüye kullanıyor.
Socket’a göre, bu betik “geliştirici ve CI kimlik bilgilerini doğrulayıp kullanıyor, GitHub Actions iş akışları oluşturuyor” ve bulduğu verileri kodlanmış bir webhook’a göndermekte. Böyle bir durum, özellikle yazılım geliştirme süreçlerini tehdit eden ciddi bir güvenlik açığına işaret ediyor.
Benzer Saldırılar ve Olayın Önemi
Bu tedarik zinciri saldırısının göze çarpan bir özelliği, saldırının zamanlamasıdır. Eylül ayının ilk haftasında, yapay zeka destekli zararlı yazılımların 2,180 GitHub hesabını etkilediği ‘s1ngularity’ saldırısı gerçekleşmişti. Saldırının arka planındaki sebepleri araştıran uzmanlar, bu saldırının ‘s1ngularity’ saldırısının failleri tarafından gerçekleştirilmiş olabileceğini öne sürüyor.
Etkilenen npm paketleri arasında, CrowdStrike’ın npmjs hesabında yayınlanan bazı paketler de bulunmaktadır. CrowdStrike, BleepingComputer’a yaptığı açıklamada, “Birçok zararlı Node Paket Yöneticisi (NPM) paketini hızla kaldırdık ve açık kaynak kodlu reposunda anahtarlarımızı proaktif olarak değiştirdik.” dedi. Bu durum, yazılım geliştiricilerin tedarik zinciri güvenliğine dikkat etmesi gerektiğinin altını çiziyor.
Geliştiricilerin Alması Gereken Önlemler
Bu tür saldırıların sonuçları, bağımlılık zincirinin derinliklerine kadar inebilir. Geliştiricilerin yazılım inşaat süreçlerini ve boru hatlarını güvence altına almak için çeşitli önlemler alması kritik önem taşıyor. Ayrıca, kapsama alanını sınırlamak, güvenilir sürümlere bağlı kalmak ve tüm kimlik bilgileri ile güvenlik tokenlerini dönüştürmek ulaşılması gereken önemli adımlar arasında yer alıyor.
Geliştiricilerin ayrıca ortamlarını ve loglarını incelemeleri, olası bir tehdit belirtisi aramaları ve şüpheli sürümler için bağımlılık ağaçlarını gözden geçirmeleri gerekmektedir. Yazılım güvenliği, her projede öncelikli bir konu olmalı ve bu tür olaylarla ilgili farkındalık artırılmalıdır.
Modern yazılım geliştirme yöntemleri, tehditlere maruz kalmaya devam ediyor ve tek bir kötü niyetli pull request ya da tehlikeli bir paket, yüzlerce projeyi etkileyebilir. Bu nedenle yazılım geliştiricilerinin dikkatli olması, projelerini korumak için gereken önlemleri alması hayati öneme sahiptir.


