· kaynak dev.to (home feed)
Kötü niyetli SDK paketleri testleri ve import kontrollerini geçerken kimlik bilgilerini çalıyor
Bir dev.to analizi, kötü niyetli SDK paketlerinin doğru API yanıtlarını döndürürken kimlik bilgilerini saldırgan sunucularına gönderdiğini belgeliyor; event-stream'den Temmuz 2026'daki Paysafe dalgasına kadar kampanyalara değiniyor.

Desen: gizli bir yan kanalla çalışan SDK
Son tedarik zinciri olaylarına ilişkin bir dev.to analizine göre, kötü niyetli SDK paketleri giderek daha fazla uygulamanın normal davranmasını sağlarken gizli sırları sifonlamaya yönelik şekilde inşa ediliyor. Yazı iki varyantı tanımlıyor: birinde paket gerçek API isteğini gerçekleştiriyor, doğru yanıtı uygulamaya geri veriyor ve paralel olarak kimlik bilgilerini saldırgan kontrolündeki bir sunucuya gönderiyor; diğerinde ise gerçek API'ye hiç bağlanmıyor ve makul bir yanıt uyduruyor. Makale bunları "interception proxy" (araya girme vekil sunucusu) ve "fake-response facade" (sahte yanıt cephesi) olarak adlandırıyor. Her iki durumda da entegrasyon testleri yeşil kalıyor, çünkü uygulama tam olarak beklediğini görüyor.
SDK'lar bulundukları konum nedeniyle cazip hedefler. Bir API istemci kütüphanesi, uygulama kodu ile API sunucusu arasında aracılık eder; bu yüzden STRIPE_SECRET_KEY, AWS_SECRET_ACCESS_KEY ve GITHUB_TOKEN gibi kimlik bilgileri, herhangi bir uygulama kodu çalışmadan önce paket tarafından görülebilir. Kurulum genellikle kimsenin önceden incelemediği tek satırlık bir komuttur ve npm ile PyPI'nın barındırdıklarını denetlediğine dair örtük bir varsayıma dayanır. Rakamlar aksini söylüyor: analiz, 2025'in ilk çeyreğinde izlenen 17.954 kötü niyetli paketi bildiren Sonatype verilerine değiniyor; bunların %56'sı veri sızdırma olarak sınıflandırılmış. 2025'in ikinci çeyreğinde 4.400'den fazla paket özellikle API token'larını hedefledi ve genel kötü niyetli paket hacmi yıl üzerinden %188 büyüdü.
Bağımlılık karışıklığı (dependency confusion) saldırı yüzeyini genişletiyor. Hem npm hem PyPI daha yüksek sürüm numarasını çözer; bu yüzden sürümü yükseltilmiş genel bir paket yayınlamak, registry kilidi olmayan dahili bir isme bağımlı pipeline'lara ulaşabilir.
Dört kampanya, 2018'den 2026'ya
Analiz, desenin yerleşik olduğunu gösteren olayları tek tek ele alıyor:
- Temmuz 2026, Paysafe: Socket.dev, npm ve PyPI üzerinde PaysafeCard, Skrill ve Neteller istemcilerini taklit eden 17 paket belgeledi. Her biri, gerçek API yapısıyla eşleşen uydurma 200 OK yanıtları döndürürken kimlik bilgilerini ngrok-free.dev üzerindeki bir alan adına yönlendiriyordu. Socket.dev kampanyayı altı dakika içinde işaretledi, ancak 1.0.0'dan 1.0.3'e kadar sürümler çoktan dağıtılmıştı. Paketler, iki CPU çekirdeğinden azı olan makinelere veya VM benzeri kullanıcı adlarına sahip makinelere dokunmuyordu ve iki dosyanın karması aynı değildi; bu da imza tabanlı kara listeleri etkisiz bırakıyordu.
- Mart 2026, LiteLLM: yazının TeamPCP olarak adlandırdığı bir grup, Trivy'nin CI kimlik bilgilerini ele geçirerek LiteLLM'nin PyPI hesabına yayınlama erişimi kazandı. Arka kapı, Python'un herhangi bir import'tan önce yorumlayıcı başlangıcında çalıştırdığı site-packages içindeki bir .pth dosyası kullandı. Aylık 95 milyon indirilen paket, PyPI'nin yayından yaklaşık 40 dakika sonra karantinaya almasına kadar kabaca 119.000 kez indirildi. Saldırganın arşivinde tahminen 434.000 CI/CD pipeline çalıştırmasından gelen kimlik bilgileri bulunduğu bildiriliyor.
- 2023, PyPI: The Hacker News'a göre 27 paket BT profesyonellerini hedefledi; 56.866 occurred olayda AWS, Azure AD, GitHub OAuth, Dropbox, MongoDB ve Twilio kimlik bilgileri toplandı.
- 2018, event-stream: haftalık 2 milyon npm indirmesine binmiş zehirlenmiş bir geçişli (transitive) bağımlılık. Enjekte edilen flatmap-stream paketi, Copay Bitcoin cüzdanlarını çalmak için Credentials.getKeys() metodunu geçersiz kılan şifreli bir yük taşıyordu ve yalnızca Bitpay'in üretim ortamında etkinleşiyordu.
JFrog tarafından belgelenen ve FakeFix adı verilen ayrı bir Solana kampanyası, kurulum sırasında kod çalıştırmak için postinstall lifecycle hook'larını kullandı.
Standart savunmalar neden bunu gözden kaçırıyor
Her geleneksel katmanın yapısal bir kör noktası var. Entegrasyon testleri yanıtlar üzerinde doğrulama yapar; doğru veri döndüren kötü niyetli bir SDK her doğrulamayı geçer. Ana akım hiçbir test çerçevesi, bir sürecin çalışma sırasında açtığı TCP bağlantılarını kaydetmez. SAST tarayıcıları varsayılan olarak node_modules/ ve .venv/ dizinlerini hariç tutar; bu kodun tam olarak yaşadığı yer de orasıdır. Registry bütünlük karmaları bir paketin aktarım sırasında değiştirilmediğini doğrular; doğru karmlarla yayınlanmış kötü niyetli bir paket bu denetimi de geçer. API gateway'leri gelen trafiği izlerken, sızdırma aynı çıkış yolundan ama izleme kapsamı dışındaki farklı bir alan adına doğru gerçekleşir. .pth vektörü, uygulama ölçüm araçları daha var olmadan önce çalışır. Lockfile'lar doğrudan bağımlılıkları sabitler, ancak event-stream geçişli bir bağımlılık olarak geldi.
Sızdırmayı ortaya çıkaran runtime sinyalleri
Yazı üç gözlemlenebilir gösterge belirliyor. Birincisi, ikili çıkış trafiği: meşru bir SDK her API çağrısı için tek bir bağlantı açar; bu yüzden bildirilen API yüzeyi dışındaki bir alan adına yapılan ikinci bir giden bağlantı ele geçirildiğine işaret eder. İkincisi, bildirilen alan adına sıfır trafik; bu, sahte yanıt paketlerini kesin olarak ifşa eder. Üçüncüsü, site-packages içinde yol yerine çalıştırılabilir kod içeren herhangi bir .pth dosyası. Bunlar sırasıyla strace veya dtruss, eBPF ve mitmproxy ile yakalanabilir.
Analiz ayrıca, servis başına beklenen API çağrı grafiklerini eşleyen ve bilinen bir API alan adına yapılan isteğin alakasız bir alan adına giden trafikle eş zamanlı göründüğü durumları işaretleyen MAGO Intel adlı araca değiniyor; ek gidiş-dönüş gecikmesi P99 sapması olarak ortaya çıkıyor. Önerilen sağlamlaştırma, runtime algılamayı servis bazlı çıkış izin listeleri, npm audit signatures ve PyPI Trusted Publishers aracılığıyla provenance doğrulaması ve lockfile'larda kesin sürüm sabitleme ile birleştiriyor.
Neden önemli
Paket kurulumu günde milyonlarca kez gerçekleştirilen bir güven kararıdır ve olay verileri, kimlik bilgisi hedefleyen paketlerin hızla büyüdüğünü gösteriyor. Bu saldırı sınıfı, ekiplerin bel bağladığı denetimlerin tam olarak görünmez; çünkü uygulamanın gözlemlenebilir davranışında hiçbir şey değişmez. Tespit, runtime ağ davranışına ve provenance'a kaymalı; buradaki zaman çizelgeleri — LiteLLM'nin karantinaya alınması için kabaca 40 dakika ve kaldırılmadan önce dağıtılan dört Paysafe sürümü — tepkisel yanıtların her zaman ilk mağdur dalgasının gerisinde kalacağı anlamına geliyor.
- #supply-chain-security
- #npm
- #pypi
- #sdk
- #security