Exploity oprogramowania to duża rodzina narzędzi atakujących, których adwersarze używają w celu wykorzystania programowych błędów różnych klas w oprogramowaniu komputerowym. Takie wady obejmują niektóre z bardziej znanych problemów, takich jak luki w zabezpieczeniach stosu i przepełnienia stosu lub luki w zabezpieczeniach ciągów formatujących, a także kilka mniej szeroko rozumianych problemów, takich jak sygnał programu i inne formy warunków wyścigu.
Exploity oprogramowania (publiczne lub nie) stanowią znaczną część arsenału cyberprzestępców; w rzeczywistości szacuje się, że takie exploity oprogramowania stanowiły około 85% włamań na hosty połączone z Internetem w latach 2000-2003.
Łatwość, z jaką narzędzie ataku jest używane
Exploity w oprogramowaniu obejmują szerokie spektrum narzędzi ataków; można zatem uzyskać lepsze zrozumienie poziomów umiejętności przeciwnika poprzez sposób, w jaki używa on exploita oprogramowania, a nie poprzez semantykę samego narzędzia ataku. Istnieje kilka właściwości exploitów oprogramowania, które (w przypadkach, gdy kod exploita jest dostępny do oceny) możemy rozważyć, próbując scharakteryzować poziom umiejętności przeciwnika. Takie rozważania obejmują:
* Czy exploit wymaga szczegółowej znajomości odpowiedniego
słaby punkt?
* Czy publiczna wersja exploita wymaga jakichkolwiek modyfikacji aby funkcjonować?
Dostępność narzędzia ataku
Duża liczba exploitów oprogramowania jest dostępnych w domenie publicznej, a wiele nowych takich exploitów jest publikowanych codziennie na stronach internetowych i forach, takich jak listy mailingowe Bugtraq i „Full Disclosure”. Wykorzystywanie i ujawnianie wcześniej niepublicznych exploitów (i luk w zabezpieczeniach) ) jest szczegółowo omówione w rozdziale 3 tej książki.
Profil przeciwnika
Ze względu na szeroki charakter exploitów oprogramowania nie możemy oczekiwać, że będziemy w stanie profilować przeciwnika tylko na podstawie faktu, że użył on exploita oprogramowania