← Radar

Konu: Güvenlik3 dk okuma

Zararlı skill'ler talimatlarını nasıl saklıyor: Yüzlerce boş satır, HTML yorumu, görünmez harf

Bu neden önemli?

Skill'i kuran sen, okuyan ajan. Sen GitHub'da ya da mağaza sayfasında düzgün görünen bir belge görüyorsun, ajan ise ham dosyanın tamamını okuyup içindeki her cümleyi talimat sayıyor. Aradaki fark, anahtarlarının sessizce başka bir adrese gitmesine yetiyor.

Skill aslında bir metin

Bir skill, ajana bir işi nasıl yapacağını anlatan küçük bir klasör. Kalbinde bir SKILL.md dosyası var. Ajan iş gelince bu dosyayı okuyup içindekini uyguluyor. Ayrıntıları Agent skill yazısında anlatmıştık.

Bunun güvenlik açısından anlamı şu: Zararlı bir skill’in zararlı kod içermesi gerekmiyor. Düz bir cümle yeterli. VirusTotal’ın 21 Ekim’de yayımladığı yazıya göre, zararlı bulduğu skill’lerin yüzde 62’sinde hiç zararlı kod yok. Yük, ajana verilen düz talimatlar. Buna prompt injection deniyor: Modelin okuduğu metne, onu senin istemediğin bir işe yönlendiren komutlar sokmak.

Üç saklama yöntemi

VirusTotal 35.878 skill’den 6.637’sini zararlı buldu. Bunların 90’ı (yüzde 1,4) işaretlenen talimatı, belgenin görüntülenmiş halinde görünmeyecek bir yere koyuyor. Şirket bunun bir alt sınır olduğunu söylüyor.

  • Boş satır dolgusu (56 skill): Belge bitmiş gibi görünüyor, ama altında 78 ile 825 arası boş satır ve en sonda talimat var. Bir soğuk e-posta skill’i 672 boş satırın altında, her e-postanın gizli kopyasını (BCC) dışarıdaki bir adrese göndermeyi istiyor. Uzun metni kırpan tarayıcılar da son satıra hiç ulaşmayabiliyor.
  • HTML yorumu (28 skill): <!-- ... --> arasındaki metni GitHub, mağaza sayfaları ve editörlerin Markdown önizlemesi göstermiyor. Dört api-helper skill’i bu şekilde ajandan bütün API anahtarlarını dış bir adrese göndermesini ve bundan kullanıcıya bahsetmemesini istiyor. Bir kod inceleme listesi de yorumun içine curl ... | bash saklıyor, yani internetten bir betik indirip çalıştırıyor.
  • Görünmez Unicode (6 skill): Unicode’un tag bloğundaki karakterler (U+E0000–U+E007F) ekranda hiçbir şey göstermiyor ama birebir ASCII harflerine karşılık geliyor. Sıfır genişlikli karakterler (U+200B–U+200D) de görünmüyor. Bir skill bunlarla ikili kod yazıp gizli bir mesaj saklıyor. Bir başkası “API keys” gibi kelimelerin arasına görünmez boşluk serpip anahtar kelime filtrelerini atlatıyor. Aynı numaranın e-posta tarafını görünmez harfler yazısında anlatmıştık.

Talimatlar ne istiyor?

VirusTotal’ın örneklerinde gizli talimatlar anahtarları, ayar dosyalarını ve ortam değişkenlerini dışarı sızdırmak, uzaktaki bir betiği çalıştırmak ya da veriyi bilerek yanlış raporlamak istiyor. Çoğu da “kullanıcıya söyleme” diye bitiyor. Bir grup daha sinsi: MEMORY.md, AGENTS.md gibi ajanın hafıza ve ayar dosyalarına satır ekletiyor. Böylece skill’i silsen bile etkisi kalabiliyor.

Skill mağazalarının bir tedarik zinciri olduğunu OpenClaw yazısında görmüştük. Burada fark şu: Belgeyi okuyarak kontrol etmek bile yetmiyor, çünkü okuduğun şey ajanın okuduğu şey değil.

Kendini nasıl korursun?

  • Ham dosyayı oku. Önizlemeye değil, dosyanın kendisine bak. Sonuna kadar in. wc -l SKILL.md beklenmedik bir satır sayısını hemen gösterir.
  • Gizli olanı ara. grep -n '<!--' SKILL.md yorumları, grep -nP '[\x{200B}-\x{200D}\x{E0000}-\x{E007F}]' SKILL.md görünmez karakterleri bulur. Emoji dizilerinde bu karakterler meşru da geçebilir, bulunca satıra bak.
  • Hafıza dosyalarını koru. Bir skill’in CLAUDE.md, AGENTS.md gibi dosyalara senin onayın olmadan yazmasına izin verme.
  • Kaynağı ve sürümü sabitle. Güvendiğin yazarlardan kur, belirli bir sürümü kullan, güncellemede farkı oku.
  • Taramayı yardımcı say. VirusTotal, Code Insight’ın ham skill paketini incelediğini söylüyor. Yine de tarayıcılar her şeyi yakalamıyor, son kontrol sende.
  • Ajanı kısıtla. Ajan anahtarlarına ve internete ne kadar az erişirse, kandırıldığında o kadar az zarar verir.

VirusTotal’a göre bu yöntemler bugün nadir, ama uygulaması da kontrol etmesi de çok kolay.

Düşün

  • Kurduğun son skill’in ham dosyasını gerçekten sonuna kadar okudun mu?
  • Ajanının hafıza dosyalarına en son kim, ne yazdı?

Videoyu izle

Tıklayınca video YouTube'dan yüklenir; o ana kadar bu sayfa YouTube'a hiçbir istek göndermez.
Kaynaklar (4, İngilizce)

Kendi cümlelerimizle yazılmış bir özettir, çeviri değildir. Tüm kaynaklar yukarıda.

Konu: Güvenlik3 dkVideo: Better Stack

"Kara Ekim": Linux çekirdeği açıkları yanlış listeye düştü, asıl darboğaz artık yama

Trend Micro'nun Zero Day Initiative ekibi, henüz yaması olmayan Linux çekirdeği açıklarını herkese açık posta listesine gönderdi. İkisi CVSS 9.0 puanlı, çekirdeğin SMB sunucusu ksmbd'de. Aynı hafta PHP, GitLab ve Signal'da da kritik açıklar duyuruldu. Ortak nokta: Yapay zekâ hata bulmayı ucuzlattı, düzeltmek hâlâ insan işi.