İçeriğe geç
parazade

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?
İçindekiler
  1. Komut enjeksiyonu nedir?
  2. Neden tehlikeli?
  3. Geliştirici ne yapmalı?

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.

İlgili terimler

Uzaktan Kod Çalıştırma(Remote Code Execution)Uzaktan kod çalıştırma (Remote Code Execution, RCE), saldırganın ağ üzerinden, fiziksel erişim olmadan hedef sistemde kendi seçtiği kodu çalıştırabilmesini sağlayan güvenlik açığı türüdür ve genellikle kritik seviyede sınıflandırılır.SQL Enjeksiyonu(SQL Injection)SQL enjeksiyonu (SQL injection), bir web uygulamasının kullanıcıdan aldığı veriyi denetlemeden veritabanı sorgusuna eklemesi sonucu saldırganın veritabanında izinsiz sorgu çalıştırabildiği bir güvenlik açığıdır.En Az Yetki İlkesi(Principle of Least Privilege)En az yetki ilkesi, her kullanıcıya, uygulamaya ve sisteme yalnızca görevini yerine getirmesi için gereken en düşük erişim yetkisinin, gerektiği süre boyunca verilmesini öngören temel güvenlik ilkesidir.Güvenli Kodlama(Secure Coding)Güvenli kodlama, yazılımı geliştirirken enjeksiyon, yetki hatası ve veri sızıntısı gibi güvenlik açıklarının oluşmasını baştan önleyen yazım alışkanlıkları ve ilkeler bütünüdür.Veritabanı(Database)Veritabanı, verilerin düzenli, aranabilir ve güncellenebilir biçimde saklandığı elektronik kayıt sistemidir. Müşteri listeleri, siparişler ve ürün bilgileri gibi veriler veritabanlarında tutulur.Arka Kapı(Backdoor)Arka kapı (backdoor), bir yazılımda ya da sistemde normal kimlik doğrulama adımlarını atlayarak gizli erişim sağlayan yoldur. Saldırgan tarafından yerleştirilebileceği gibi geliştiricinin unuttuğu bir test girişi de olabilir.ShellShell (kabuk), kullanıcının yazdığı komutları okuyup işletim sistemine ileten ve sonuçları gösteren komut yorumlayıcı programdır. Bash, Zsh, Fish ve PowerShell en bilinen shell türleridir.Argüman(Argument)Argüman, programlamada bir fonksiyon ya da metot çağrılırken parantez içinde gönderilen gerçek değerdir. Örneğin `topla(3, 5)` çağrısında 3 ve 5 argümandır; bu değerler fonksiyonun parametrelerine aktarılır.