İşletim Sistemi Komut Enjeksiyonu (ARCH5102)
Anahtar go.security.os-command-injection · Önem error · Kategori security · CWE CWE-78
Komut dizesini güvenilmeyen girdiyle birleştirip bir kabuk (sh -c) üzerinden çalıştırmak, saldırganın rastgele komut çalıştırmasına olanak tanır. Girdi argüman olarak iletilmelidir, kabuğa değil.
Hatalı
Bölüm başlığı “Hatalı”cmd := exec.Command("sh", "-c", "ping -c 1 "+r.FormValue("host"))out, _ := cmd.Output()host := r.FormValue("host")cmd := exec.Command("ping", "-c", "1", host) // kabuk yok, ayrı argümanout, _ := cmd.Output()Düzeltme
Bölüm başlığı “Düzeltme”Komutu kabuk olmadan çalıştırın ve kullanıcı girdisini birleştirilmiş dize yerine ayrı bir argüman olarak geçirin.