Google'ın yeni komut satırı kodlama aracı Gemini CLI'deki bir güvenlik açığı, kötü niyetli kişilerin bilgisayarınızdaki hassas bilgileri ele geçirmesine ve hatta zararlı komutları çalıştırmasına olanak tanıyabilir. Güvenlik araştırmacıları, aracın varsayılan yapılandırmasında sadece 48 saat içinde bu açığı kullanarak saldırı geliştirmeyi başardı.
Gemini CLI, geliştiricilerin komut satırı ortamında kod yazmalarına yardımcı olan ücretsiz ve açık kaynaklı bir yapay zeka aracıdır. Google'ın en gelişmiş kodlama ve simülasyon modeli olan Gemini 2.5 Pro ile entegre çalışır. Gemini CLI, bir metin editörü yerine doğrudan terminal penceresinde kod oluşturur veya düzenler.
Gemini CLI, Sabotaj İçin Kullanılabilir Mi?
Aracın piyasaya sürülmesinden sadece iki gün sonra, güvenlik firması Tracebit'ten araştırmacılar, zararlı komutların yürütülmesini engellemek üzere tasarlanmış yerleşik güvenlik kontrollerini aşmayı başardı. Bu saldırı, kullanıcının öncelikle kötü amaçlı bir kod paketini tanımlamasını ve ardından zararsız görünen bir komutu izin listesine eklemesini gerektiriyordu.
Kullanılan kötü amaçlı kod paketi, GitHub, NPM veya PyPI gibi platformlarda bulunan milyonlarca diğer paketten farksız görünüyordu. Bu tür platformlar, tedarik zinciri saldırıları yoluyla kötü amaçlı kodların yüklendiği yerler olarak bilinir. Kod paketinin içindeki asıl zararlı unsur, README.md dosyasının içine gizlenmiş birkaç doğal dil cümlesinden oluşuyordu. Bu tür dosyalar, kod paketinin amacı, kapsamı ve gereksinimleri hakkında temel bilgiler sunmak için kullanılır.
Araştırmacılar, bu dosyaların içine gizledikleri özel komutlarla, yapay zeka sohbet botlarının güvenliği için büyük bir tehdit oluşturan "prompt injection" (komut enjeksiyonu) türü saldırılar gerçekleştirdi. Geliştiriciler bu tür dosyaları genellikle hızlıca gözden geçirdiği için, gizlenen komutları fark etme olasılıkları düşüktür. Gemini CLI ise bu dosyaları dikkatlice okuyup işleyebilme potansiyeline sahiptir.
README dosyasındaki birkaç satır metin, bir dizi güvenlik açığını tetikleyerek, geliştirici aracının kullanıcının komut penceresine sessizce komutlar girmesine neden oldu. Bu komutlar, geliştiricinin cihazının saldırgan kontrolündeki bir sunucuya bağlanmasını ve cihazın ortam değişkenlerini göndermesini sağladı. Ortam değişkenleri, sistem ayarlarını ve hatta hesap kimlik bilgilerini içerebilir. Gemini'nin bu tür bilgileri açık izin olmadan yürütmemesi gerekmektedir.
Tracebit kurucusu ve CTO'su Sam Cox, gösterim amaçlı olarak zararsız bir komut seçtiğini, ancak bu tekniğin rm -rf /
(tüm disk içeriğini silen) veya bir "fork bomb" (sistemi çökertebilen) gibi geri dönüşü olmayan ve son derece yıkıcı komutları çalıştırmak için de kullanılabileceğini belirtti. Cox, bu durumun oldukça endişe verici olduğunu, çünkü aynı tekniğin dosyaları silmek, sistemleri kilitlemek veya saldırgana uzaktan makine kontrolü sağlayan bir uzaktan kabuk yüklemek için de kullanılabileceğini vurguladı.
Google, bu güvenlik açığını gidermek için geçtiğimiz hafta bir güncelleme yayınladı ve bu açığı "Öncelik 1" ve "Ciddiyet 1" olarak sınıflandırdı. Bu, şirketin güvenlik açığının kötüye kullanılması durumunda ortaya çıkabilecek ciddi sonuçları kabul ettiğini gösteriyor.
Komut Zincirleme Saldırıları
Komut enjeksiyonu saldırıları, yapay zeka sohbet botlarının karşılaştığı en karmaşık güvenlik açıklarından biridir. Tracebit'in gösterdiği saldırı türü, dolaylı komut enjeksiyonu olarak adlandırılır. Bu saldırılar, makine öğrenmesi modellerinin, geliştiriciler tarafından önceden tanımlanmış veya son kullanıcılar tarafından verilen geçerli komutlar ile modelin kullanıcı adına işlediği e-postalar, görseller veya diğer harici kaynaklardaki doğal dil ifadelerini ayırt edememesinden yararlanır.
Bu ayırt edememe durumu ve modelin kullanıcılara yardımcı olma eğilimi, modelin kötü niyetli olsa bile talimatları izlemesine neden olur. LLM geliştiricileri henüz bu temel nedeni tamamen ortadan kaldıramasa da, komut enjeksiyonlarının zararlı yeteneklerini kısıtlayan çözümler geliştirmeye devam ediyor.
Komut enjeksiyonu açığının yanı sıra, bu teknikte yetersiz doğrulama ve yanıltıcı kullanıcı arayüzü gibi iki zayıflık daha kullanıldı. Varsayılan olarak Gemini CLI, kullanıcı açık izin vermediği sürece komutların çalıştırılmasını engellemelidir. İzin, komut çağrıldıktan hemen sonra gerçek zamanlı olarak verilebilir. Ayrıca kullanıcılar, zamandan tasarruf etmek ve tekrarı önlemek için belirli komutları izin listesine ekleyebilir.
Tracebit'in komut enjeksiyonu, dosyalar içinde metin arayan görece zararsız bir komut olan grep
'i kullandı. Araştırmacıların buradaki amacı, kullanıcının grep
komutunu izin listesine eklemesini sağlamaktı. Ardından, grep
komutunu takiben, daha az zararlı iki komut daha gönderildi: env
ve ardından saldırganın sunucu adresini içeren curl
komutu. Bu komutlar birleştirildiğinde, ortam değişkenlerinin saldırgan sunucusuna gönderilmesini sağladı.
Cox, "Birinci 'grep'ten sonra komut dizisinin hiçbir öğesi bir izin listesiyle karşılaştırılmıyor. Sadece grep komutunun arkasında serbestçe yürütülmesine izin veriliyor." açıklamasında bulundu.Cox, saldırıyı daha da ileri götürerek, bir komut yürütüldükten sonra Gemini'nin kullanıcıya görevin tamamlandığını bildirmesini ve bunu yaparken kullanıcıyı uyarmasını sağladı. Ancak bu durumda bile, komut zaten yürütülmüş ve sonuçları geri alınamaz durumdaydı.
Kullanıcıyı uyarmamak için Cox, komut satırının ortasına büyük miktarda boşluk ekledi. Bu, grep
kısmının ön planda görünmesini ve sonraki kötü amaçlı komutların durum mesajında gizlenmesini sağladı. Böylece Gemini, dikkatli bir kullanıcıya bile hiçbir şeyin yolunda gitmediğine dair bir işaret vermeden, kötü amaçlı komutları sessizce yürüttü.
Yapay Zeka Modellerinin Memnun Etme Eğilimi
Komut enjeksiyonu, aynı zamanda yapay zeka modellerinin kullanıcılara memnuniyet sağlama eğiliminden de yararlanacak şekilde tasarlandı. Bu eğilim, araştırmacılar tarafından "AI sycophancy" (yapay zeka dalkavukluğu) olarak adlandırılıyor. Kötü amaçlı komut satırının hemen öncesindeki dil, bu eğilime hitap ediyordu.
Cox, saldırısını Anthropic Claude ve OpenAI Codex gibi diğer kodlama araçlarında da test ettiğini, ancak daha iyi izin listesi süreçleri uyguladıkları için bu araçların sömürülemez olduğunu belirtti. Gemini CLI kullanıcılarının, en güncel sürüm olan 0.1.14'e güncellemeleri ve güvenilmeyen kod tabanlarını varsayılan olarak etkin olmayan sanal ortamlarda çalıştırmaları tavsiye edilmektedir.