İçeriğe geç

İş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.

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üman
out, _ := cmd.Output()

Komutu kabuk olmadan çalıştırın ve kullanıcı girdisini birleştirilmiş dize yerine ayrı bir argüman olarak geçirin.