Koruyucuların Silahlandırıldığı Gün: FBI FLASH Işığında TeamPCP Tedarik Zinciri Saldırısı

Merhaba

Trivy, KICS, LiteLLM ve TanStack’i vuran, güvenlik araçlarının kendisini saldırı vektörüne çeviren bir kampanyanın anatomisi ve Türkiye’deki regüle finans kurumları için ne anlama geldiği.

Giriş: Güvendiğimiz yazılım, artık saldırı yüzeyi

Bir güvenlik ekibinin en temel refleksi, “güvenilir kaynaktan gelen yazılıma güvenmektir.” Resmi bir GitHub deposundan çekilen bir konteyner tarayıcı, PyPI’dan pip install
ile kurulan bir kütüphane, imzalı ve doğrulanmış bir npm paketi… Bunlar yıllardır güvenlik hijyeninin temel taşları olarak kabul edildi.

2 Temmuz 2026 tarihli FBI FLASH raporu (FLASH-20260702-01), tam olarak bu güven modelinin nasıl silah haline getirildiğini anlatıyor. Raporun konusu, TeamPCP adlı finansal motivasyonlu siber suç grubunun yürüttüğü, geliştirici ve güvenlik araçlarını hedef alan çok aşamalı bir yazılım tedarik zinciri (software supply chain) kampanyası.

Bu yazının çıkış noktası bu FBI FLASH belgesi. Ancak belgedeki göstergelerin arkasındaki teknik hikayeyi, kampanyanın zaman çizelgesini ve Türkiye’deki TCMB/BDDK denetimindeki bir ödeme kuruluşu için doğuracağı somut sonuçları bir arada ele alacağız.

Burada dikkat çeken nokta şu: Bu saldırı yeni bir teknik icat etmedi. Tedarik zinciri saldırıları yıllardır konuşuluyor. TeamPCP’nin yaptığı, bu saldırıları hızlı, ölçeklenebilir ve tespit edilemez hale getirmek oldu. Tıpkı yapay zekanın klasik saldırıları güçlendirmesi gibi, TeamPCP de CI/CD boru hatlarındaki güven ilişkilerini endüstriyel ölçekte istismar etti.

TeamPCP kim? Ransomware’den tedarik zincirine bir evrim

Kampanyayı doğru okuyabilmek için failin geçmişini bilmek gerekiyor. TeamPCP, tek bir aksiyondan ibaret değil; birden fazla güvenlik firmasının bağımsız olarak aynı gruba atfettiği, sürekli evrilen bir operasyon.

Grubun bilinen takma adları oldukça kalabalık: PCPcat, ShellForce, DeadCatx3, CipherForce ve Persy_PCP gibi isimlerle anılıyor. Google’ın Tehdit İstihbarat Grubu grubu UNC6780 olarak izliyor. Telegram üzerindeki bilinen ilk aktivitesi 30 Temmuz 2025’e kadar uzanıyor ve grup, saldırılarını kendi Telegram kanalları üzerinden duyurup üstleniyor.

Grubun trajesi (yörüngesi) şöyle özetlenebilir:

TeamPCP başlangıçta bulut-yerel (cloud-native) bir fidye yazılımı ve kripto madenciliği aktörüydü. 2025 sonundaki “React2Shell” kampanyasında CVE-2025-55182 açığını kullanarak internete açık Docker API’leri, Kubernetes kümeleri, Ray dashboard’ları ve Redis sunucularını hedef aldılar; solucan tabanlı bir botnet kurdular. Bu operasyonlarda neredeyse tüm istismar trafiği için 666 numaralı portu kullanmaları, en belirgin tespit artefaktlarından biri oldu.

2026’nın Mart ayında ise grup, “smash and grab” (vur-kap) mantığıyla yürüttüğü tedarik zinciri saldırılarına yöneldi. İşte FBI FLASH raporunun konu aldığı asıl faaliyet dönemi burası.

Genel görünüm: Ransomware operatörlüğünden başlayıp kripto hırsızlığından geçerek, geliştirici ekosisteminin güven altyapısını hedef alan sofistike bir tedarik zinciri aktörüne dönüşen bir grupla karşı karşıyayız. Bu, tek seferlik bir olay değil, süregelen bir kampanya hattı.

Kampanyanın anatomisi: Beş günde koruyucuları vurmak

Palo Alto Unit 42’nin “Weaponizing the Protectors” (Koruyucuları Silahlandırmak) başlıklı raporu, kampanyanın ürkütücü verimliliğini gözler önüne seriyor. Mart 2026’da yalnızca beş gün içinde, TeamPCP sırayla üç kritik güvenlik/geliştirici aracını ele geçirdi.

1. Aqua Security Trivy (19 Mart 2026) – Başlangıç noktası

Her şey Trivy ile başladı. Aqua Security’nin popüler konteyner açık tarayıcısı olan Trivy, milyonlarca kurumsal CI/CD boru hattına gömülü durumda.

Saldırı aslında haftalar önce başlamıştı: Yanlış yapılandırılmış bir GitHub Actions workflow’u, otomatik bir botun Aqua Security’nin CI ortamından ayrıcalıklı bir Personal Access Token (PAT) çalmasına izin verdi. Aqua Security ihlali fark edip kimlik bilgilerini rotate etti ancak rotasyon eksik kaldı. TeamPCP artık kalıcı erişime sahipti ve bekledi.

19 Mart’ta, hayatta kalan bu kimlik bilgilerini kullanarak aquasecurity/trivy-action deposundaki 77 sürüm etiketinden 76’sını ve setup-trivy‘deki tüm 7 etiketi saldırgan kontrollü commit’lere yönlendirdiler. Eş zamanlı olarak, resmi dağıtım kanallarına (GitHub Releases, Docker Hub, GHCR, Amazon ECR) arka kapılı bir Trivy binary’si (v0.69.4) yayınladılar.

Kritik detay şu: Zararlı etiketler ve binary, Trivy’nin normal işlevselliğini tamamen koruyordu. Yani aracı kullanan hiç kimse bir anormallik fark etmiyordu. Bu olay daha sonra CVSS 9.4 skoruyla CVE-2026-33634 olarak izlendi ve CISA’nın Known Exploited Vulnerabilities (Bilinen İstismar Edilen Zafiyetler) kataloğuna eklendi.

2. Checkmarx KICS

Aynı hat üzerinde Checkmarx’ın KICS (Keeping Infrastructure as Code Secure) aracı da hedef alındı. KICS, Infrastructure-as-Code (IaC) statik analizi için kullanılan ve yine milyonlarca kurumsal boru hattına entegre bir araç. FBI FLASH’taki checkmarx[.]zone , checkmarx[.]zone/vsx ve audit.checkmarx[.]cx/v1/telemetry domainleri bu ayağın izlerini taşıyor.

3. BerriAI LiteLLM (23-24 Mart 2026) – Kaskadın AI katmanına sıçraması

Trivy ihlali, LiteLLM’e sıçradı. LiteLLM, geliştiricilere 100’den fazla LLM sağlayıcısını (OpenAI, Anthropic, Cohere vb.) tek bir arayüzden çağırma imkanı veren, PyPI’da aylık yaklaşık 95 milyon indirmeye sahip bir Python kütüphanesi. Yani modern AI altyapısının belkemiği.

TeamPCP, muhtemelen Trivy ihlalinden topladığı PyPI publishing token’larını kullanarak LiteLLM’in CI/CD boru hattını zehirledi ve PyPI’a zararlı sürümler (v1.82.7 ve v1.82.8) yükledi.

Bu dalganın en sinsi tarafı, kullandığı çalıştırma yöntemiydi. v1.82.8 sürümü litellm_init.pth adlı bir .pth dosyası içeriyordu. Python yorumlayıcısı başlangıçta .pth dosyalarını otomatik olarak işlediği için, zararlı kod, LiteLLM hiç import edilmese bile, host üzerinde herhangi bir Python süreci her başladığında çalışıyordu. Bu, sıradan bir paket bağımlılığı istismarının çok ötesinde, host genelinde bir kalıcılık mekanizması. FBI FLASH’taki models.litellm[.]cloud domaini bu ayağa işaret ediyor.

Burada dikkat çeken nokta şu: Saldırganlar bir güvenlik aracını (Trivy) ele geçirdi, oradan çaldıkları kimlik bilgileriyle bir başka aracı (LiteLLM) zehirledi. Bu bir “kaskad” (zincirleme çöküş). Tek bir ihlal, güven ilişkileri üzerinden domino etkisiyle yayıldı.

Watershed an: TanStack ve provenance’ın çöküşü (11 Mayıs 2026)

Kampanyanın belki de en yıkıcı ve teknik olarak en çığır açan dalgası, Mayıs ayında TanStack ekosistemine yapılan saldırıydı. Bu olay, CVE-2026-45321 (CVSS 9.6, Critical) olarak izleniyor.

11 Mayıs 2026’da, 19:20 ile 19:26 UTC arasında yani altı dakikadan kısa sürede @tanstack/* isim alanındaki 42 paket için 84 zararlı sürüm npm’e yayınlandı. Etkilenen paketler arasında haftalık 12 milyondan fazla indirmeye sahip @tanstack/react-router da vardı.

Ancak asıl şok, saldırının nasıl yapıldığındaydı. TanStack ekibi resmi post-mortem’inde şunu açıkladı: Hiçbir npm token’ı çalınmadı ve npm publish workflow’unun kendisi değiştirilmedi.

Saldırganlar üç ayrı zafiyet sınıfını zincirledi:

  1. pull_request_target “Pwn Request” yanlış yapılandırması: Saldırgan, TanStack/router deposunu yeniden adlandırdığı bir hesap altında fork’ladı ve pull_request_target workflow’unu tetikleyen bir pull request açtı. Bu, saldırganın fork’undaki kodun, ana deponun güvenilir bağlamında çalışmasına izin verdi.
  2. GitHub Actions cache poisoning (önbellek zehirleme): Saldırgan bu güvenilir bağlamı kullanarak GitHub Actions önbelleğini zararlı binary’lerle zehirledi. Meşru bakımcı (maintainer) pull request’leri sonradan merge edildiğinde, release workflow’u zehirli önbelleği geri yükledi.
  3. Runner belleğinden OIDC token çıkarma: Saldırgan kodu, çalışan sürecin (runner process) belleğinden (heap) doğrudan OpenID Connect (OIDC) token’ını çıkardı ve npm’in federasyon endpoint’i ile değiş tokuş ederek tam yayınlama yetkisi elde etti.

Sonuç: 84 zararlı paket sürümü, Sigstore’dan geçerli SLSA Build Level 3 provenance attestation’ları taşıyarak yayınlandı.

Bu cümlenin ağırlığını vurgulamak gerekiyor. Provenance attestation, tedarik zinciri güvenliğinin “kutsal kasesi” olarak görülüyordu. Bir paketin gerçekten iddia ettiği kaynaktan, iddia ettiği boru hattı üzerinden üretildiğini kriptografik olarak kanıtlayan mekanizma buydu. TeamPCP, meşru pakete geçerli ve doğrulanabilir bir provenance imzasıyla zararlı kod enjekte ederek, daha önce hiçbir tedarik zinciri saldırısının başaramadığı bir şeyi gösterdi: Süreç bütünlüğü kontrolleri (process integrity controls) yenilebilir.

Genel görünüm: Eğer güvenlik stratejiniz “imzalı commit, güvenilir registry ve provenance attestation” üçlüsüne dayanıyorsa, bu kampanya bu kontrollerin tek başına yeterli olmadığının açık kanıtıdır. Bunların yanına runtime doğrulama ve davranışsal izleme eklenmesi şart.

Kendi kendine yayılan solucan: Mini Shai-Hulud ve Miasma

FBI FLASH raporunda adı geçen zararlıların en dikkat çekicisi, kampanyanın ölçeklenmesini sağlayan otonom yayılma mekanizması.

Mini Shai-Hulud – İsim, Frank Herbert’in “Dune” evrenindeki dev kum solucanlarına bir gönderme (grubun tüm altyapısı Dune temalı: fremen , sandworm , harkonnen gibi operasyonel dal isimleri kullanıyorlar). Bu, npm ve PyPI ekosistemleri arasında (cross-ecosystem) kendi kendini kopyalayan bir solucan. Mantığı basit ve yıkıcı: Ele geçirilen her CI/CD boru hattı, yeni bir dağıtım vektörü haline geliyor. Solucan bir sistemi ele geçiriyor, geliştirici ve bulut kimlik bilgilerini çalıyor, ardından bu kimlik bilgileriyle başka paketlerin zehirli sürümlerini yayınlıyor. Bu da üstel (exponential) bir yayılmayı mümkün kılıyor.

Rakamlar bu yayılmanın hızını gösteriyor: Mayıs dalgasında gün sonuna kadar 169 npm paketi genelinde 373 zararlı sürüm belgelendi; etki alanı @tanstack’in çok ötesine @mistralai, @uipath, @squawk, @tallyui gibi isim alanlarına yayıldı.

Miasma – Mini Shai-Hulud’un bir varyantı. FBI FLASH’a göre npm ve PyPI gibi açık kaynak registry’lerinde kendi kendine yayılıyor, kimlik bilgisi topluyor ve yapılandırma (configuration) dosyalarını zehirliyor.

Ve belki en endişe verici gelişme: TeamPCP, 12 Mayıs 2026’da Shai-Hulud solucanının kaynak kodunu açık kaynak olarak yayınladı. Bu, hedefli bir silahı, herhangi bir tehdit aktörünün kullanabileceği bir emtia saldırı altyapısına dönüştürdü. Nitekim bunun sonuçları görülmeye başlandı: Red Hat’i etkileyen bir olayda Wiz, Microsoft ve Unit 42, payload’ı “Mini Shai-Hulud türevi” olarak nitelendirse de, halka açık araç setini kullanan bir taklitçinin (copycat) olma ihtimalini dışlamadı. Yani artık tekil olaylarda operatörlere kesin atıf yapmak zorlaştı.

Kimlik bilgisi hırsızlığının mutfağı: CanisterWorm ve SANDCLOCK

FBI FLASH raporu, TeamPCP’nin dört bileşenli özel zararlı araç setinden ikisini daha adlandırıyor. Bunlar kampanyanın asıl amacını kimlik bilgisi hasadını gerçekleştiren araçlar.

CanisterWorm, birincil hasatçı (harvester) rolünde. CI/CD ortamlarını AWS, GCP ve Microsoft Azure genelinde bulut erişim token’ları ve API anahtarları için tarıyor. Özellikle boru hattı runner’larının çalışma anında (runtime) servis hesabı kimlik bilgileriyle doldurduğu ortam değişkenleri (environment variables) ve yapılandırma dosyalarını hedefliyor.

SANDCLOCK ise daha geniş bir ağ atıyor: AWS kimlik bilgileri, Kubernetes ServiceAccount token’ları (RBAC yanlış yapılandırıldığında küme genelinde ayrıcalık verebilir), yerel ortam değişkenleri ve kripto para cüzdanı verilerini çıkarıyor.

Çalınan verilerin nereye gittiği de FLASH’ta belirtiliyor: tpcp-docs ve docs-tpcp adlı exfil (sızdırma) repo isimleri, solucanın çalınan kimlik bilgileriyle oluşturduğu depolar. FBI, kuruluşlara GitHub organizasyon depolarında bu isimleri aramalarını öneriyor.

FBI FLASH’taki göstergeler (IOC’ler)

Rapor operasyonel açıdan değerli, çünkü doğrudan aksiyon alınabilir göstergeler içeriyor. Bunları kendi SIEM/EDR ortamınıza besleyebilirsiniz:

Kategori Göstergeler
IP Adresleri 83.142.209.11, 45.148.10.212, 83.142.209.194, 83.142.209.203, 94.154.172.43, 67.217.57.240
Öne çıkan domainler checkmarx[.]zone, models.litellm[.]cloud, git-tanstack[.]com, scan.aquasecurtiy[.]org, recv.hackmoltrepeat[.]com, t.m-kosche[.]com, check.git-service[.]com
Exfil repo isimleri tpcp-docs, docs-tpcp
CVE’ler CVE-2026-33634 (Trivy/LiteLLM), CVE-2026-48027 (Nx Console/GitHub), CVE-2026-45321 (TanStack), CVE-2025-55182 (React2Shell)
Dosya hash’leri Rapor 27 SHA-256 hash içeriyor (tam liste FLASH PDF’inde)

Bir not: scan.aquasecurtiy[.]org domainindeki yazım hatasına (typosquat – “security” değil “securtiy”) dikkat edin. Bu, meşru Aqua Security altyapısını taklit eden klasik bir teknik.

CVE-2026-48027 ise ayrı bir ayağa işaret ediyor: Nx Console VS Code eklentisinin (nrwl.angular-console v18.95.0) ele geçirilmesi. Bu olay, geliştirici iş istasyonlarını doğrudan etkiledi ve yaklaşık 3.800 GitHub iç deposunun sızdırılmasına katkıda bulundu.

Türkiye perspektifi: TCMB, BDDK ve PCI DSS çerçevesinde ne anlama geliyor?

Şimdi meselenin bizi ilgilendiren tarafına gelelim. Türkiye’de faaliyet gösteren, TCMB lisanslı bir ödeme kuruluşu ya da BDDK denetimindeki bir finans kurumu için bu kampanya sadece uzak bir haber değil; doğrudan bir uyum ve risk yönetimi meselesi.

Bilgi Sistemleri Yönetmelikleri açısından

TCMB’nin ödeme ve elektronik para kuruluşları için öngördüğü Bilgi Sistemleri Yönetmeliği ve BDDK’nın ilgili düzenlemeleri, kurumlardan yazılım geliştirme yaşam döngüsü (SDLC) ve tedarik zinciri risklerini yönetmelerini bekliyor. TeamPCP kampanyası, “üçüncü taraf yazılım riski” başlığının artık sadece ticari yazılım lisansları değil, açık kaynak bağımlılıkları ve CI/CD araçlarını da kapsaması gerektiğini gösteriyor. Trivy veya LiteLLM gibi bir aracı boru hattınızda kullanıyorsanız, bu artık sizin doğrudan tedarik zinciri riskinizdir.

PCI DSS v4.0.1 açısından

Kart verisi işleyen kuruluşlar için PCI DSS v4.0.1’in birkaç gereksinimi doğrudan bu senaryoyla örtüşüyor:

  • Requirement 6 (Güvenli yazılım geliştirme): 6.3.2 maddesi, yazılım bileşenlerinin ve üçüncü taraf/açık kaynak bağımlılıklarının envanterini tutmayı zorunlu kılıyor. Bir tedarik zinciri saldırısında hangi paketlerin etkilendiğini bilmeniz için bu envanter (SBOM – Software Bill of Materials) hayati.
  • Requirement 6.4.3 & 6.2.4: Uygulama bileşenlerinin bütünlüğünün doğrulanması ve güvenli kodlama pratikleri. Provenance’ın yenilebildiği bir dünyada, bu doğrulamanın runtime davranış izlemesiyle desteklenmesi gerekiyor.
  • Requirement 8 (Kimlik doğrulama): Publishing/CI-CD erişimi olan tüm hesaplarda phishing-resistant MFA (FIDO2). FLASH raporunun da altını çizdiği bir nokta.
  • Requirement 10 (Loglama ve izleme): CI/CD boru hatlarındaki kimlik doğrulama olayları, yapılandırma değişiklikleri ve runner süreçlerinden gelen beklenmeyen dış bağlantıların loglanması. Runner belleğinden OIDC token çıkarma gibi bir teknik, ancak davranışsal loglamayla yakalanabilir.

MASAK ve KVKK açısından

Çalınan kimlik bilgileri bulut ortamlarına erişim sağladığında, bu ortamlarda işlenen kişisel veriler de risk altına girer. KVKK kapsamında bir veri ihlali bildirimi yükümlülüğü doğabilir. FLASH’ın uyarısı burada özellikle önemli: Sızdırılan veri ve kimlik bilgileri, ilk ihlalden çok sonra bile silahlandırılabilir kalıcı bir risktir. Yani “rotate ettik, kapattık” demek yeterli değil; iştigal alanınızdaki tüm token’ların yaşam döngüsünü yeniden gözden geçirmeniz gerekir.

Ne yapmalı? Somut savunma adımları

FBI FLASH’ın önerileri ve kampanyanın teknik doğası ışığında, aksiyon listesi:

CI/CD ve GitHub Actions sertleştirmesi:

  • Tüm GitHub Actions workflow’larını floating version tag veya branch referansı yerine doğrulanmış commit SHA hash’lerine pinleyin. Trivy saldırısının tam olarak istismar ettiği şey buydu.
  • pull_request_target kullanımını gözden geçirin; fork’lardan gelen kodun güvenilir bağlamda çalışmasına izin veren yanlış yapılandırmaları kapatın.
  • CI/CD boru hatları için runtime davranışsal izleme (Harden-Runner veya muadili) uygulayın runner süreçlerinden gelen beklenmeyen dış bağlantıları tespit etmek için.

Kimlik bilgisi hijyeni:

  • Kampanya zaman çizelgesindeki maruz kalma pencerelerinde erişilebilir olan tüm CI/CD secret’larını, publishing token’larını ve bulut kimlik bilgilerini rotate edin. Trivy (v0.69.4–v0.69.6), trivy-action, setup-trivy, KICS (<v2.3.29) veya LiteLLM (1.82.7–1.82.8) kullandıysanız, CI/CD ortamınızı tamamen ele geçirilmiş kabul edin.
  • Statik kimlik bilgileri yerine geçici (temporary) kimlik bilgilerini tercih edin; en az ayrıcalık (least privilege) ve token scoping uygulayın.
  • npm paket bakımcı hesaplarında, süresi dolmuş kurtarma e-posta domainlerini denetleyin TeamPCP bunları publishing kimlik bilgilerini ele geçirmek için istismar ediyor.

Paket ve artefakt bütünlüğü:

  • Minimum paket yaşı eşiği (örneğin 7 gün) uygulayın; yeni yayınlanan zararlı sürümlere, topluluk tespiti gerçekleşmeden maruz kalmayı azaltır.
  • Provenance attestation’a tek başına güvenmeyin. Bu kampanya, geçerli imzaların zararlı içerik taşıyabileceğini kanıtladı. Runtime doğrulama ekleyin.
  • GitHub organizasyon depolarınızda tpcp-docs ve docs-tpcp isimli depoları arayın.

Erişim kontrolü:

  • Kod deposu veya paket registry publishing erişimi olan tüm hesaplarda phishing-resistant MFA (FIDO2/passkey) zorunlu kılın.
  • Kritik depoların ve paket release artefaktlarının offline, değiştirilemez (immutable) yedeklerini tutun.

Sonuç: Fundamentaller daha da önemli

TeamPCP kampanyasının bize öğrettiği tek bir cümle varsa o da şu: Güven, doğrulanana kadar bir risktir.

Yıllardır “güvenilir kaynaktan geleni doğrulamadan kullan” kolaycılığıyla yaşadık. Provenance imzaları, imzalı commit’ler ve güvenilir registry’ler bize bir güvenlik hissi verdi. TeamPCP, bu hissin yeterli teknik sofistikasyon karşısında yanıltıcı olabileceğini gösterdi.

Ama karamsar olmaya gerek yok. Çünkü savunma da aynı fundamentallere dayanıyor, sadece daha titiz uygulanmaları gerekiyor: En az ayrıcalık, kimlik bilgisi rotasyonu, davranışsal izleme, phishing-resistant kimlik doğrulama, ve “hiçbir şeye kör güvenme” disiplini.

Türkiye’deki regüle finans ekosistemi için bu, uyum belgelerinde bir kutucuğu işaretlemekten ibaret değil. Bu, CI/CD boru hattınızı bir “yardımcı araç” değil, birinci sınıf bir saldırı yüzeyi olarak görmeye başlamak demek. Çünkü saldırganlar çoktan öyle görüyor.

Kaynaklar

  • FBI FLASH-20260702-01 – “Cyber Criminal Group TeamPCP” (2 Temmuz 2026)
  • Palo Alto Networks Unit 42 – “Weaponizing the Protectors: TeamPCP’s Multi-Stage Supply Chain Attack on Security Infrastructure”
  • Tenable – “Mini Shai-Hulud: Frequently Asked Questions” (CVE-2026-45321)
  • Snyk – “TanStack npm Packages Hit by Mini Shai-Hulud”
  • StepSecurity – “Mini Shai-Hulud Is Back: A Self-Spreading Supply Chain Attack Hits the npm Ecosystem”
  • ReversingLabs – “TeamPCP’s Mini Shai-Hulud Tears at Open-Source Trust”
  • Cloud Security Alliance – “TeamPCP: Cascading Supply Chain Assault via Developer Security Tooling”
  • TanStack resmi post-mortem raporu

Bu yazı savunma amaçlı hazırlanmıştır.

 

Başka bir yazımızda görüşmek dileğiyle…

 

Bir yanıt yazın

Başa Dön