Różnica między wirusem a robakiem dotyczy przede wszystkim sposobu replikacji i tego, czy złośliwy kod potrzebuje "hosta".
Wirus komputerowy to złośliwy kod, który najczęściej infekuje istniejący obiekt (np. plik wykonywalny, skrypt, dokument z makrami). W praktyce oznacza to, że aby wirus mógł się skutecznie rozprzestrzeniać, zwykle musi zostać przeniesiony razem z takim plikiem i uruchomiony/wykonany w jakiejś formie (np. użytkownik otwiera zainfekowany dokument lub uruchamia program).
Robak komputerowy jest natomiast samodzielnym programem. Jego cechą charakterystyczną jest to, że potrafi kopiować się i propagować dalej bez konieczności "doklejania się" do innego pliku jako nośnika. W praktyce robaki często wykorzystują mechanizmy sieciowe lub podatności usług do rozprzestrzeniania, ale ważne jest, że "sieć" nie jest jedyną możliwą drogą – kluczowa jest samodzielność i automatyzacja replikacji.
Dlatego odpowiedzi mówiące, że "wirus rozprzestrzenia się tylko przez sieć" albo że "robak tylko przez nośniki wymienne" są błędne: kanał dystrybucji nie jest cechą wyłączną. Zarówno wirusy, jak i robaki mogą być przenoszone różnymi drogami (np. poczta, pobieranie plików, nośniki), a rozróżnienie wynika z mechanizmu infekcji i zależności od hosta.
- Jeśli złośliwy kod wymaga obiektu, który "niesie" infekcję (plik/host) – to cecha wirusa.
- Jeśli jest to autonomiczny program zdolny do samodzielnego kopiowania i rozsyłania – to cecha robaka.
Na egzaminie warto zapamiętać: wirus = host, robak = samodzielność, a dopiero potem kojarzyć typowe wektory (np. robaki często sieciowe).