Komut Enjeksiyonu Nedir?
İngilizce: Command Injection
Yayın: · Son güncelleme:
Komut Enjeksiyonu Nedir? Kısaca
Komut enjeksiyonu (Command Injection), bir uygulamanın kullanıcıdan aldığı veriyi süzmeden işletim sistemi komutuna eklemesiyle saldırganın sunucuda kendi komutlarını çalıştırabilmesine yol açan güvenlik açığıdır.

Komut enjeksiyonu nedir?
Komut enjeksiyonu, uygulamanın arka planda çalıştırdığı bir sistem komutuna kullanıcı girdisinin olduğu gibi eklenmesiyle oluşan açıktır. Girdi süzülmezse saldırgan, beklenen değerin yanına kendi komutunu iliştirebilir. Bu komut uygulamanın yetkileriyle sunucuda çalışır.
Neden tehlikeli?
Sonuç çoğu zaman sunucunun ele geçirilmesidir. Saldırgan dosyaları okuyabilir, veritabanı bağlantı bilgilerini alabilir ya da sunucuya arka kapı yerleştirebilir. Bu yüzden komut enjeksiyonu genellikle uzaktan kod çalıştırmanın bir yolu olarak sınıflandırılır.
Gerçekçi bir senaryo düşünün. Bir modem arayüzünde "bağlantıyı test et" kutusu var ve girilen adres doğrudan bir ping komutuna ekleniyor. Bu kutuya adres yerine başka karakterler girilebiliyorsa, cihaz ağ üzerindeki herkese açık bir kapıya dönüşebilir. Bu tür açıklar özellikle eski yazılımlı IoT cihazlarda sık görülür.
Geliştirici ne yapmalı?
En güvenli yol, sistem komutu çağırmadan aynı işi yapan dil kütüphanelerini kullanmaktır. Komut şartsa, girdiyi kabuğa (shell) metin olarak vermek yerine argüman listesi olarak iletin ve izin verilen değerleri beyaz listeyle sınırlayın. Uygulamayı en az yetkiyle çalıştırmak, bir açık bulunsa bile zararı daraltır.
Ev ya da ofis kullanıcısıysanız modem, kamera ve NAS gibi cihazların yazılımını güncel tutun ve yönetim arayüzlerini internete açık bırakmayın.
Sıkça Sorulan Sorular
Komut enjeksiyonu ile SQL enjeksiyonu farkı nedir?
SQL enjeksiyonunda hedef veritabanı sorgusudur. Komut enjeksiyonunda ise doğrudan işletim sistemi komutları çalıştırılır. Bu yüzden ikincisi çoğu zaman sunucunun tamamını riske atar.
Web uygulama güvenlik duvarı bu açığı kapatır mı?
Bilinen kalıpları engelleyerek zaman kazandırabilir ama açığı ortadan kaldırmaz. Kalıcı çözüm kodun düzeltilmesidir.