Ein Exploit (englisch to exploit ‚ausnutzen‘) ist in der elektronischen Datenverarbeitung eine systematische Möglichkeit, Schwachstellen auszunutzen, die bei der Entwicklung eines Programms entstanden sind. Dabei werden mit Hilfe von Programmcodes Sicherheitslücken und Fehlfunktionen von Programmen (oder ganzen Systemen) ausgenutzt, meist, um sich Zugang zu Ressourcen zu verschaffen oder in Computersysteme einzudringen bzw. diese zu beeinträchtigen. Als Zero-Day-Exploit wird die Ausnutzung einer Sicherheitslücke bezeichnet, für die noch kein Patch des Herstellers der Komponente verfügbar ist.
Ein Exploit wird oft auch nur zum Aufzeigen einer Sicherheitslücke entwickelt und dokumentiert. Damit soll erreicht werden, dass Softwarehersteller eine Sicherheitslücke schneller erkennen und schließen können. Oft bezeichnet man die reine Beschreibung eines Exploits bereits als Exploit.
Exploits machen sich zum Beispiel die Tatsache zunutze, dass Computer mit Von-Neumann-Architektur, das sind nahezu alle Heim- und Bürorechner, nicht zwischen Programmcode und Nutzdaten unterscheiden. So wird zum Beispiel bei einem Pufferüberlauf der Code des Angreifers in einen nicht dafür vorgesehenen Speicherbereich geschrieben, wodurch die Ausführung der Anwendung manipuliert werden kann. Eine andere Möglichkeit sind Formatstring-Angriffe, bei denen ungefiltert Benutzereingaben an Formatierungsfunktionen wie printf()
übergeben werden. Ein Angreifer kann oft einen eigenen Code zur Ausführung bringen, der ihm beispielsweise eine Shell mit den Privilegien der ausgenutzten Anwendung liefert.