Een beveiligingslek is een fout of zwakke plek in software waardoor een systeem op een andere manier kan worden gebruikt dan bedoeld, vaak met als gevolg dat onbevoegden toegang krijgen tot gegevens of functies. Het gaat niet alleen om programmeerfouten, maar ook om verkeerde configuraties, verouderde componenten of logica die onbedoelde toegang mogelijk maakt.
In de praktijk wordt een beveiligingslek meestal ontdekt wanneer onderzoekers, ontwikkelaars of aanvallers een manier vinden om een systeem te laten reageren buiten de normale grenzen van het ontwerp. Soms leidt dat tot directe toegang tot data, soms alleen tot informatie die eigenlijk niet zichtbaar hoort te zijn. Niet elk lek wordt meteen misbruikt, maar elk lek vormt wel een ingang die theoretisch kan worden benut.
Beveiligingslekken komen in veel vormen voor. Sommige zitten in applicatiecode, andere in bibliotheken, frameworks of serversoftware. Ook de manier waarop systemen zijn ingericht kan een lek veroorzaken, bijvoorbeeld wanneer rechten te ruim zijn ingesteld of wanneer onderdelen onverwacht met elkaar communiceren.
Een beveiligingslek is daarmee minder een dramatische gebeurtenis dan een structureel risico dat bij softwareontwikkeling hoort. Software verandert voortdurend, en met elke wijziging kan een nieuwe zwakke plek ontstaan. Het echte verschil zit zelden in het bestaan van lekken, maar in hoe snel ze worden ontdekt, begrepen en verholpen.