Wykonywanie jednego programu z innego jest częstą praktyką. Wiele języków programowania do tego celu dostarcza nam dedykowane funkcje. Argumenty tych funkcji są poddawane weryfikacji, po to by złośliwy użytkownik nie mógł zmusić systemu do uruchomienia więcej niż jednego programu, co mogłoby doprowadzić do wstrzyknięcia komendy (ang. command injection). Dziś przyjrzymy się podatności, gdzie okazało się to niewystarczające i dotyczy co najmniej 9 języków programowania.