Logo David Burdelak
Słownik · Cyberbezpieczeństwo

Co to jest command injection?

Ostatnia aktualizacja:

Command injection (wstrzyknięcie poleceń) to atak, w którym atakujący przekazuje aplikacji dane zawierające polecenia systemu operacyjnego, a aplikacja wykonuje je na serwerze. Występuje, gdy dane użytkownika trafiają do funkcji uruchamiających powłokę bez właściwego filtrowania.

Jak wygląda taka podatność?

Aplikacja pozwala np. sprawdzić dostępność domeny i wykonuje ping $domena. Jeśli atakujący wpisze example.com; cat /etc/passwd, powłoka wykona dwa polecenia, a drugie ujawni poufny plik. Skutkiem może być przejęcie serwera.

Jak się chronić?

  • unikaj wywoływania powłoki, a jeśli to konieczne, używaj bezpiecznych API, które przyjmują argumenty osobno,
  • w PHP stosuj escapeshellarg(), ale najlepiej zamiast exec() użyj funkcji dedykowanej danemu zadaniu,
  • sprawdzaj dane według listy dozwolonych wartości,
  • uruchamiaj aplikację z minimalnymi uprawnieniami.

Command injection a RCE

To jeden z najczęstszych sposobów uzyskania zdalnego wykonania kodu (RCE). Opis ataku i metod obrony znajdziesz w materiałach OWASP.

Podobnie jak przy zabezpieczaniu aplikacji przed SQL Injection, podstawą ochrony jest traktowanie wszystkich danych od użytkownika jako niezaufanych.

Zobacz w praktyce

Powiązane pojęcia

Wszystkie hasła z kategorii Cyberbezpieczeństwo