Aşırı yetki, büyük bir dil modeline (LLM) diğer sistemlerle etkileşim kurmak için gereksiz veya aşırı izinli yetkiler verildiğinde ortaya çıkan bir güvenlik açığıdır. Bir LLM'nin harici araçları, eklentileri veya işlevleri (kendi "ajansı") çağırabildiği durumlarda bu güvenlik açığı, LLM'nin istenmeyen, yetkisiz ve potansiyel olarak zararlı işlemler gerçekleştirmesine olanak tanır. Saldırganlar, istem ekleme veya diğer manipülasyon tekniklerini kullanarak bu durumdan yararlanabilir ve LLM'yi, verilen yetkiyi kötü amaçlı amaçlar için kullanmaya ikna edebilir. Temel sorun, LLM'nin işlem yapabilmesi değil, bu işlemlerin kapsamının çok geniş ve kötü kontrol edilmiş olmasıdır.
Android geliştiriciler neden önemsemeli?
Android uygulamanızda bir LLM'ye aşırı yetki vermek ciddi güvenlik olaylarına yol açabilir:
- Yetkisiz sistem erişimi: Saldırgan, LLM'ye yerel Android destekli cihazdaki (ör. kullanıcı dokümanları, uygulama verileri) veya bağlı ağ kaynaklarındaki dosyaları erişme, değiştirme ya da silme komutu verebilir. Bunun için modelin yetkisi ve ilgili Android izinleri olmalıdır.
- Veri sızdırma: LLM, yerel uygulama veritabanlarındaki (ör. Room) hassas verileri, SharedPreferences'ı veya dahili API'leri okuyup bu bilgileri harici bir kaynağa sızdırmak (ör. API çağrısı veya e-posta işlevi kullanarak göndermek) için kandırılabilir. Model, eğitim aşamasında öğrendiği hassas bilgileri veya kullanıcının isteminde sağladığı hassas bilgileri de sızdırabilir.
- Diğer işlevlerin/sistemlerin güvenliğinin ihlal edilmesi: LLM'nin diğer işlevler üzerinde yetkisi varsa (örneğin, SMS gönderme, arama yapma, sosyal medyada örtülü amaçlarla gönderi yayınlama, sistem ayarlarını değiştirme, uygulama içi satın alma işlemleri yapma), saldırganlar bu işlevleri ele geçirerek spam gönderebilir, yanlış bilgi yayabilir veya yetkisiz işlemler gerçekleştirebilir. Bu durum, doğrudan maddi kayba veya kullanıcıların zarar görmesine yol açar.
- Hizmet reddi: LLM, uygulama içinde veya arka uç hizmetlerine karşı kaynak yoğun işlemlerin tekrar tekrar gerçekleştirilmesi için talimat alabilir. Örneğin, karmaşık veritabanı sorguları çalıştırmak veya bir API'yi döngü içinde çağırmak gibi. Bu durum, uygulamanın yanıt vermemesine, pilin boşalmasına, aşırı veri kullanımına veya hatta arka uç sistemlerinde hizmet reddine yol açabilir.
Android uygulama geliştiricileri için azaltma önlemleri
Android uygulamalarında aşırı aracılıkla ilgili riskleri azaltmak için LLM'nin erişebileceği veya tetikleyebileceği her araç ve işlevde en düşük ayrıcalık ilkesi uygulanır.
Yapay zekanın araç kutusunu sınırlayın (ayrıntılı ve açık uçlu işlevler):
- Minimum düzeyde araç sağlama: LLM, uygulamanızda işini yapabilmek için kesinlikle ihtiyaç duyduğu belirli araçlara (işlevler, API'ler, amaçlar) erişebilmelidir. Web'e göz atması veya e-posta göndermesi gerekmiyorsa bu özellikleri LLM'ye sunmayın.
- Basit ve tek amaçlı araçlar kullanın: LLM'ye her şeyi yapabilecek güçlü ve açık uçlu bir araç ("herhangi bir kabuk komutunu yürüt" gibi) yerine yalnızca belirli bir şeyi yapabilen ("belirli bir kullanıcı ayarı türünü oku" gibi) bir araç vermek daha iyidir.
Yapay zekanın gücünü kısıtlama
- Ayrıntılı Android izinleri: Bir LLM tarafından tetiklenen işlev, Android sistem kaynaklarıyla veya diğer uygulamalarla etkileşime girdiğinde uygulamanızın yalnızca gereken mutlak minimum Android izinlerini istediğini ve elinde tuttuğunu doğrulayın.
- Kullanıcı başına izinler: LLM, kullanıcı adına bir işlem gerçekleştirirken bunu daha geniş kapsamlı ve potansiyel olarak yönetici düzeyinde bir hesapla değil, kullanıcının belirli izinleri ve bağlamıyla yapmalıdır. Bu, LLM'nin kullanıcının yapmasına izin verilmeyen hiçbir şeyi yapamayacağını doğrular.
İnsanı kontrolü elinde tutma (önemli işlemler için kullanıcı izni)
- Kullanıcı onayı gerektir: Bir LLM'nin önerebileceği veya gerçekleştirmeye çalışabileceği önemli ya da riskli işlemler (ör. veri silme, uygulama içi satın alma, mesaj gönderme, kritik ayarları değiştirme) için kullanıcı arayüzünüzde onay iletişim kutusu kullanarak her zaman açık kullanıcı onayı isteyin. Bunu, önemli bir kararın onaylanması için yöneticinin imzasının alınması gibi düşünebilirsiniz.
Güven ancak doğrula (giriş/çıkış doğrulaması ve güçlü arka uçlar)
- Arka uç güvenliği: Bir işleme izin verilip verilmeyeceğine karar vermek için yalnızca LLM'ye güvenmeyin. LLM tarafından tetiklenen işlevlerin bağlandığı tüm arka uç hizmetleri veya API'ler, her isteği iki kez kontrol etmek ve isteğin meşru olup olmadığını ve beklenen parametreler içinde yer alıp almadığını doğrulamak için kendi güçlü kimlik doğrulama, yetkilendirme ve giriş doğrulama işlemlerine sahip olmalıdır.
- Verileri temizleme: Diğer güvenlik açıkları gibi, herhangi bir işlem yürütülmeden önce kötü amaçlı talimatları veya beklenmedik çıkışları yakalamak için hem LLM'ye giren girişi hem de işlev çağrıları için LLM tarafından oluşturulan parametreleri temizlemek ve doğrulamak çok önemlidir.
Özet
Aşırı yetki, bir LLM'nin diğer sistemler veya işlevlerle etkileşim kurmak için aşırı geniş izinlere sahip olduğu ve zararlı eylemler gerçekleştirmesi için kandırılmasına olanak tanıyan kritik bir güvenlik açığıdır. Bu durum, Android uygulamalarında yetkisiz veri erişimine, sistemin güvenliğinin ihlal edilmesine, maddi kayba veya kullanıcıların zarar görmesine yol açabilir. Bu saldırıları önlemek için en az ayrıcalık ilkesi büyük önem taşır: LLM'nin kullanabileceği araçlar ve Android izinleri kesinlikle sınırlandırılmalı, her aracın minimum ve belirli işlevlere sahip olduğu doğrulanmalı ve yüksek etkili tüm işlemler için kullanıcı onayı alınmalıdır.