Wat is OS Command Injection?
OS command injection is een kwetsbaarheid waarmee aanvallers willekeurige besturingssysteemcommando’s kunnen uitvoeren op een server via een kwetsbare applicatie. Geklasseerd als CWE-78 door MITRE, ontstaat het wanneer een applicatie OS-commando’s samenstelt met extern aangeleverde input zonder speciale tekens die de bedoelde opdracht kunnen wijzigen, correct te neutraliseren. Het resultaat is directe, ongeautoriseerde toegang tot het onderliggende besturingssysteem.
Deze kwetsbaarheidsklasse is in verband gebracht met grote cyberaanvallen, van de Shellshock-massexploitatie in 2014 tot aanhoudende aanvallen op netwerkapparatuur, gedocumenteerd in een CISA-advies. CWE-78 behoort tot de MITRE Top 25, samen met out-of-bounds write, cross-site scripting en SQL-injectie.
In de OWASP Top 10 vallen zowel CWE-77 als CWE-78 onder de bredere categorie Injection. Begrijpen hoe de kwetsbaarheid op shell-niveau werkt, is de eerste stap om deze te stoppen.
Hoe werkt OS Command Injection?
OS command injection maakt misbruik van een fundamenteel probleem: een applicatie geeft door de gebruiker gecontroleerde input direct door aan een OS-shellcommando zonder data te scheiden van besturingsinstructies.
MITRE onderscheidt twee subtypen van OS command injection.
Subtype 1: Direct (Command Separator Injection)
De applicatie is bedoeld om één vast programma uit te voeren, waarbij externe input alleen als argumenten wordt gebruikt. Aanvallers injecteren commandoseparatoren (;, |, &&, || of nieuwe regels) om extra commando’s toe te voegen.
Neem een webapplicatie die DNS-lookups uitvoert:

Een aanvaller levert example.com; cat /etc/passwd aan als domeinparameter. De shell voert zowel nslookup example.com als cat /etc/passwd uit en retourneert het wachtwoordbestand van de server.
Subtype 2: Indirect (Volledige Commandocontrole)
De applicatie accepteert input die volledig bepaalt welk programma wordt uitgevoerd. De aanvaller controleert het volledige commando, niet alleen de argumenten:

Als een aanvaller de SCRIPTNAME-eigenschap beheerst, kan deze naar elk uitvoerbaar bestand op het systeem verwijzen.
De Aanvalsflow
Een typische OS command injection-aanval volgt deze volgorde:
- De aanvaller identificeert een invoerveld, zoals een formulierparameter, HTTP-header, cookie of URL-querystring, die wordt doorgegeven aan een server-side commando.
- De aanvaller injecteert shellmetatekens gecombineerd met een kwaadaardig commando in die input.
- De applicatie geeft de niet-gesaniteerde input door aan de OS-shell.
- De shell interpreteert de metatekens en voert het geïnjecteerde commando uit met dezelfde rechten als het applicatieproces. Als de applicatie als root draait, krijgt de aanvaller diezelfde rechten.
Elk van deze stappen is afhankelijk van de interpretatie van specifieke tekens als besturingsinstructies door de shell. De operatoren die dit mogelijk maken, verschillen per platform.
Veelvoorkomende Injectie-operatoren en Metatekens
OS command injection maakt gebruik van shellmetatekens die bepalen hoe het besturingssysteem een opdrachtregel interpreteert. De operatoren die een aanvaller kan gebruiken, hangen af van het doelplatform.
Commandoseparatoren en Inline-uitvoering
| Operator | Functie | Platform |
| ; | Voert commando’s opeenvolgend uit | Unix |
| & | Voert het tweede commando op de achtergrond uit | Unix en Windows |
| && | Voert het tweede commando alleen uit als het eerste slaagt | Unix en Windows |
| || | Voert het tweede commando alleen uit als het eerste faalt | Unix en Windows |
| | | Pijpt de uitvoer van het eerste commando naar het tweede | Unix en Windows |
| ` (backticks) | Inline-uitvoering; uitvoer vervangt de expressie | Unix |
| $() | Inline-uitvoering; functioneel gelijk aan backticks | Unix |
| 0x0a (nieuwe regel) | Start een nieuw commando op sommige shells | Unix |
Wanneer gebruikersinput binnen een gequote string in het oorspronkelijke commando terechtkomt, moet de aanvaller eerst het aanhalingsteken (" of ') sluiten voordat een separator effect heeft. Encoderingstechnieken zoals URL-encoding, dubbele encoding en Unicode-normalisatie kunnen ook filters omzeilen die op deze tekens in letterlijke vorm controleren. Deze operatoren bereiken de shell door specifieke codepatronen die gebruikersdata niet scheiden van commando-syntaxis.
Oorzaken van OS Command Injection
OS command injection ontstaat door programmeerpraktijken waarbij gebruikersinput zonder voldoende controle een systeem-shell bereikt. Vijf hoofdoorzaken verklaren het merendeel van de kwetsbaarheden.
Onvoldoende Inputvalidatie
Dit is de meest directe oorzaak. Volgens de OWASP-gids worden command injection-aanvallen mogelijk wanneer een applicatie onveilige, door de gebruiker aangeleverde data, zoals formulieren, cookies en HTTP-headers, zonder sanering aan een systeem-shell doorgeeft. Als u erop vertrouwt dat gebruikers verwachte waarden aanleveren, wordt validatie soms helemaal overgeslagen.
Gebruik van Shell-uitvoering in plaats van Taal-native API’s
Aanroepen van system(), exec(), shell_exec() of os.system() roept de OS-shell aan als tussenpersoon. Elke shell-aanroep creëert een injectieoppervlak. De OWASP-cheatsheet identificeert gevaarlijke API’s in de belangrijkste talen:
| Taal | Gevaarlijke API’s |
| Java | Runtime.exec() |
| C / C++ | system(), exec(), ShellExecute() |
| Python | exec(), eval(), os.system(), os.popen(), subprocess.Popen(), subprocess.call() |
| PHP | system(), shell_exec(), exec(), proc_open(), eval(), passthru() |
| Node.js | child_process.exec(), execSync(), spawn() |
Vertrouwen op Denylist-filtering
U probeert mogelijk specifieke gevaarlijke tekens te blokkeren in plaats van te definiëren wat is toegestaan. Deze aanpak, geclassificeerd als CWE-184 (Onvolledige Denylist), faalt consequent. OWASP documenteert expliciet dat PHP’s escapeshellcmd() de uitvoering van extra commando’s voorkomt, maar nog steeds argumentinjectie toestaat. Aanvallers kunnen vlaggen zoals --output-document= injecteren om bestandsschrijven te bereiken zonder commandoseparatoren te gebruiken.
Manipulatie van Omgevingsvariabelen
Wanneer applicaties geen absolute paden voor uitvoerbare bestanden specificeren en omgevingsvariabelen niet opschonen, kunnen aanvallers $PATH omleiden naar kwaadaardige binaries. Als de applicatie met setuid root-rechten draait, wordt de binary van de aanvaller met rootrechten uitgevoerd.
Schending van Least Privilege
Applicaties die met verhoogde systeemrechten draaien, vergroten elke injectiefout. Een command injection tegen een applicatie die draait als www-data beperkt de aanvaller tot de rechten van die gebruiker. Dezelfde injectie tegen een root-proces geeft volledige systeemcontrole. Als een van deze oorzaken niet wordt aangepakt, reikt de impact verder dan alleen de kwetsbare applicatie.
Impact en Risico van OS Command Injection
OS command injection scoort consequent hoog in kwetsbaarheidsclassificatiesystemen. De OWASP Top 10:2021 identificeert injectie als een belangrijk en aanhoudend risicotype. De functionele impact is direct: een aanvaller krijgt de mogelijkheid om willekeurige commando’s op uw server uit te voeren met dezelfde rechten als het gecompromitteerde applicatieproces.
Ernst per Impactcategorie
| Impact | Bewijs |
| Remote Code Execution | CVE-2024-3400 |
| Volledige Systeemcompromittering | SANS-rapport: "complete system compromise, data exfiltration, or network infiltration" |
| Lateral Movement | CISA-advies: OS command injection gecombineerd met path traversal voor meerstapsinbraak |
| Botnet-rekrutering | Mirai-variant |
| Ransomware-levering | CISA-advies; CISA-advies |
CVSS-scores vertellen niet het hele verhaal
CVE-2024-20399 (Cisco NX-OS) heeft een relatief bescheiden CVSS-score en vereist lokale toegang en beheerdersrechten. Toch voegde CISA het toe aan de Known Exploited Vulnerabilities-catalogus na bevestigde exploitatie door de China-nexus Velvet Ant-campagne.
Dit geval illustreert dat CVSS-scores alleen het operationele risico niet weerspiegelen. KEV-catalogusvermelding, statelijke exploitatie en de netwerkpositie van het apparaat zijn onafhankelijke risicofactoren die een basisscore ruimschoots kunnen overtreffen. Inzicht in de specifieke technieken die aanvallers gebruiken, verklaart waarom bevestigde exploitatie zo vaak voorkomt.
Hoe aanvallers OS Command Injection misbruiken
Aanvallers gebruiken een reeks technieken om OS command injection te vinden, te bevestigen en te misbruiken, beginnend met ontdekking en oplopend via blinde injectie en kwetsbaarheidsketening.
Ontdekking en Enumeratie
Aanvallers identificeren invoervelden die interageren met server-side systeemcommando’s, en testen alle parameters, HTTP-headers (User-Agent, Referer), cookies, URL-querystrings en gestructureerde data-inputs (JSON, XML, SOAP).
Directe Output-injectie
Een aanvaller injecteert een commandoseparator gevolgd door een bekend outputcommando:

Als de response de gebruikersnaam van het draaiende proces bevat, is injectie bevestigd en kan de aanvaller doorgaan met schadelijkere commando’s.
Blinde Injectie via Tijdvertragingen
Wanneer commando-uitvoer niet in de HTTP-response verschijnt, injecteren aanvallers tijdvertragingcommando’s en meten ze de responstijd. Injectie van & sleep 10 & op een Linux-doel veroorzaakt een meetbare vertraging als het commando wordt uitgevoerd.
Out-of-Band (OAST) Exfiltratie
Aanvallers injecteren commando’s die DNS-callbacks naar hun eigen infrastructuur triggeren:

Een DNS-query die het serveradres van de aanvaller bereikt, bevestigt code-uitvoering, zelfs als er geen uitvoer of tijdsverschil waarneembaar is. PortSwigger OAST merkt op dat Burp Collaborator het mogelijk maakte om blinde OS command injection-kwetsbaarheden te vinden die eerder niet identificeerbaar waren.
Authenticatie-bypass-ketening
CVE-2024-21887 (Ivanti Connect Secure) vereist geauthenticeerde beheerdersrechten, maar aanvallers combineerden het met CVE-2023-46805 (authenticatie-bypass) om die eis volledig te elimineren. Volgens CISA-advies gebruikten Chinese statelijke actoren dit ketenpatroon systematisch bij Ivanti, Cisco en andere netwerkapparaten.
Argumentinjectie-bypass
Wanneer verdedigers commandoseparatoren (;, |, &&) filteren, schakelen aanvallers over op argumentinjectie (CWE-88). Door vlaggen of opties met - of -- te injecteren, manipuleren ze het gedrag van een reeds aangeroepen programma zonder nieuwe commando’s toe te voegen. OWASP documenteert dat PHP’s escapeshellcmd() deze aanval mogelijk maakt, zelfs als commandoseparatoren worden geblokkeerd. De breedte van deze technieken betekent dat de impact niet beperkt is tot één applicatietype of sector.
Wie is kwetsbaar voor OS Command Injection?
OS command injection treft elk systeem waarbij applicatiecode gebruikersinput doorgeeft aan een OS-shell. Bepaalde applicatietypen en sectoren lopen onevenredig veel risico op basis van bevestigde exploitatiegegevens.
Meest Kwetsbare Applicatietypen
- Netwerkapparatuur en SSL-VPN-apparaten: Deze categorie levert de hoogste concentratie bevestigde CWE-78-exploits in de CISA KEV-catalogus. CVE-2023-44221 (SonicWall SMA100), CVE-2024-8190 (Ivanti Cloud Services Appliance), CVE-2024-40891 (Zyxel CPE) en CVE-2023-28771 (Zyxel Firewall/VPN) betreffen allemaal beheerinterfaces die input direct doorgeven aan OS-niveau commando-uitvoering.
- IoT en Embedded Firmware: QNAP NAS-apparaten (CVE-2023-47218), TP-Link-routers (CVE-2023-1389) en Wavlink-routers bevatten allemaal bevestigde CWE-78-kwetsbaarheden. De Mirai-variant heeft OS command injection-CVE’s systematisch ingezet voor botnet-rekrutering op meerdere router- en IoT-firmwareplatforms.
- Webapplicaties met Server-side Systeemaanroepen: Het OWASP Top 10-scenario beschrijft een Java-applicatie die een OS-commando samenstelt via Runtime.getRuntime().exec() met stringconcatenatie.
- Enterprise-beheerinterfaces: CISA-advies documenteert exploitatie van Ivanti Cloud Service Application-beheerinterfaces via gekoppelde command injection.
Sectoren met het Hoogste Risico
- Kritieke Infrastructuur en Telecommunicatie: CISA-advies documenteert Chinese statelijke exploitatie van command injection in netwerkapparatuur gericht op telecom- en routerinfrastructuur.
- Overheid: CISA KEV-vermeldingen stellen expliciet dat deze "significante risico’s vormen voor de federale onderneming." Overheidsinstanties hebben KEV-tijdlijnen voor KEV-gelabelde command injection-CVE’s.
De exploitatiegegevens in deze categorieën tonen aan hoe OS command injection van een codefout kan uitgroeien tot schade op organisatieniveau.
Praktijkvoorbeelden van OS Command Injection
Bevestigde OS command injection-incidenten variëren van massale exploitatie van open-source software tot gerichte statelijke campagnes tegen netwerkinfrastructuur.
Shellshock (CVE-2014-6271), 2014
GNU Bash tot en met versie 4.3 verwerkte strings na functiedefinities in omgevingsvariabelen, waardoor gecraftede waarden shellcommando’s konden injecteren. Deze kwetsbaarheid was uit te buiten via CGI-scripts, DHCP-clients en SSH ForceCommand-configuraties, wat het internetbrede aanvalsoppervlak van één OS command injection-fout aantoont.
Equifax-inbreuk (CVE-2017-5638), 2017
Apache Struts 2 stond aanvallers toe OGNL-expressies te injecteren via Content-Type-headers, wat willekeurige code-uitvoering mogelijk maakte. Volgens het House-rapport bracht Apache op 7 maart 2017 een patch uit. Drie dagen later, op 10 maart, werd de kwetsbaarheid voor het eerst op het Equifax-netwerk misbruikt. De resulterende inbreuk leidde tot een schikking van $700 miljoen en het aftreden van bestuurders.
Log4Shell (CVE-2021-44228), 2021
De JNDI-message lookup-functie van Apache Log4j2 maakte ongeauthenticeerde remote code execution mogelijk via gecraftede logberichten, CVSS 10.0. Volgens CISA-advies misbruikten APT-actoren Log4Shell op niet-gepatchte VMware Horizon-servers, bereikten zijwaartse beweging en exfiltreerden gevoelige data. LockBit-filialen en Noord-Koreaanse groepen misbruikten deze kwetsbaarheid.
Velvet Ant / CVE-2024-20399, 2024
Sygnia-rapport beschreef een China-nexus spionagegroep die een Cisco NX-OS CLI command injection-kwetsbaarheid uitbuitte. Ondanks de relatief lage CVSS-score voerde de groep kwaadaardige code uit op het onderliggende Linux-besturingssysteem van Nexus-switches. CISA voegde het toe aan de KEV-catalogus, waarmee wordt benadrukt dat het operationele risico vaak groter is dan de CVSS-score aangeeft.
Zyxel Firewall Exploitatie (CVE-2023-28771), 2023
Onjuiste foutafhandelingsberichten in Zyxel firewall-firmware maakten ongeauthenticeerde remote OS command execution mogelijk, CVSS 9.8. Cybersecurity Dive meldde actieve targeting op één dag zonder eerdere activiteit.
Deze incidenten maken deel uit van een breder patroon dat teruggaat tot de vroegste dagen van webapplicaties.
Tijdlijn en Geschiedenis van OS Command Injection
- 1988 tot 1998: Het CGI-tijdperk. Vroege webservers riepen shellscripts aan met niet-gesaniteerde gebruikersinput, wat de eerste OS command injection-aanvalsoppervlakken creëerde. De DARPA Intrusion Detection Evaluation dataset bij MIT Lincoln Laboratory catalogiseerde CGI-aanvallen en sendmail-exploitatie uit deze periode.
- 1999: Formele Classificatie. CVE-1999-0067 documenteerde een van de eerste formele command injection-kwetsbaarheden: een CGI-programma dat het pipe (|)-metateken niet neutraliseerde bij het aanroepen van een telefoonboekprogramma. MITRE’s CWE-78 codificeerde de kwetsbaarheidsklasse.
- 2014: Shellshock. CVE-2014-6271 werd de eerste OS command injection-kwetsbaarheid die op internetschaal massaal werd uitgebuit.
- 2017: Gevolgen voor de Onderneming. De Equifax-inbreuk via CVE-2017-5638 toonde aan dat command execution-primitieven in applicatieframeworks gevolgen hebben die gelijkwaardig zijn aan directe OS command injection op ondernemingsniveau.
- 2021: Consolidatie van Injectiecategorieën. OWASP Top 10:2021 consolideerde alle injectietypen onder de A03 Injection-categorie. Log4Shell (CVE-2021-44228) breidde het patroon uit naar een alomtegenwoordig logging library.
- 2023 tot 2026: Netwerkapparatuur als Doelwit. Het aanvalsoppervlak verschoof duidelijk naar netwerkperimeterapparaten. Volgens CISA-advies exploiteerden Chinese statelijke actoren systematisch command injection in netwerkapparaten van 2021 tot 2025. De OWASP Top 10:2025 voegde CWE-88 (Argumentinjectie) expliciet toe als gemapte zwakte.
Met voortdurende exploitatie blijft vroege identificatie een prioriteit gedurende de volledige applicatielevenscyclus.
Hoe OS Command Injection te Detecteren
Het vinden van OS command injection vereist een gelaagde aanpak die pre-deployment testen combineert met runtime-inzicht.
Static Application Security Testing (SAST)
Volgens de OWASP Top 10 is broncode-review de beste methode om injectie-kwetsbaarheden te vinden. SAST-tools markeren aanroepen van system(), exec(), popen(), shell_exec() en andere gevaarlijke API’s wanneer ze door de gebruiker gecontroleerde input ontvangen. Belangrijke patronen om te markeren zijn stringconcatenatie die wordt doorgegeven aan OS-commando-uitvoerfuncties en PHP-gebruik van escapeshellcmd() in plaats van het veiligere escapeshellarg().
U dient SAST in uw CI/CD-pijplijn te draaien om injectiefouten vóór uitrol te detecteren. De belangrijkste beperking is dat het geen kwetsbaarheden kan vinden die alleen tijdens runtime optreden.
Dynamic Application Security Testing (DAST)
DAST valideert wat daadwerkelijk uit te buiten is door de draaiende applicatie te testen. Web Security Academy documenteert drie DAST-technieken:
- Directe output-injectie: Injecteer
& echo uniquestring &en controleer of de string in de response verschijnt. - Blinde tijdgebaseerde injectie: Injecteer
& sleep 10 &en meet de responstijd. - Out-of-band (OAST) injectie: Injecteer DNS-callbackcommando’s en monitor op externe verzoeken naar een gecontroleerde server. Dit is de meest betrouwbare techniek voor blinde injectie.
Gedragsinzicht op Procesniveau
Op hostniveau stelt NIST SP 800-53 (Information System Monitoring) het kader vast voor gedragsanomaliedetectie. Uw SOC moet letten op deze specifieke indicatoren:
- Webserverprocessen (
apache, nginx, tomcat) die shellprocessen (bash, sh, cmd.exe, powershell) starten - Onverwachte
execve()ofsystem()-aanroepen vanuit webapplicatieprocessen - Uitgaande netwerkverbindingen gestart door applicatieprocessen naar externe IP’s
Web Application Firewall (WAF)-regels
De OWASP ModSecurity Core Rule Set markeert shellmetatekens (;, |, &, backticks, $()) en veelvoorkomende OS-commando’s (whoami, cat /etc/passwd, nslookup) in HTTP-inputs. WAF-regels kunnen worden omzeild via encodering en variatie in hoofdletters, dus behandel ze als één signaalbron, niet als volledige controle.
Vergelijking van Methoden
| Methode | Tijdstip | Detecteert Blinde Injectie | Belangrijkste Beperking |
| SAST | Pre-deployment | N.v.t. (statistisch) | Kan geen runtime-only issues vinden |
| DAST | Pre/post-deployment | Ja (via OAST) | Kan complexe flows missen |
| Gedragsinzicht | Productie | Ja | Vereist baseline tuning |
| WAF | Productie | Gedeeltelijk | Te omzeilen, lost oorzaak niet op |
Alleen kwetsbaarheden vinden is onvoldoende. Preventie vereist het elimineren van de oorzaak in uw code en architectuur.
Hoe OS Command Injection te Voorkomen
Preventie richt zich op het elimineren van de oorzaak: directe OS-shellaanroepen met door de gebruiker gecontroleerde input. Waar shellaanroepen niet kunnen worden verwijderd, verkleinen gelaagde controles het aanvalsoppervlak.
Primaire Verdediging: Vermijd OS-commando’s Volledig
Volgens PortSwigger is de sterkste preventie om nooit OS-commando’s vanuit applicatielaagcode aan te roepen. In bijna alle gevallen kunt u de benodigde functionaliteit implementeren met veiligere platform-native API’s. Als u e-mail wilt verzenden, gebruik een SMTP-bibliotheek. Voor DNS-resolutie, gebruik een DNS-bibliotheek. Elimineer de shell als tussenlaag.
Gebruik Geparameteriseerde Commando-API’s
Wanneer OS-commando-uitvoering onvermijdelijk is, gebruik gestructureerde mechanismen die scheiding tussen data en commando afdwingen. In Python betekent dit het gebruik van de lijstvorm van subprocess.run():

De lijstvorm voorkomt dat de shell metatekens in enig argument interpreteert.
Inputvalidatie via Allowlisting
De OWASP-cheatsheet beveelt allowlist-gebaseerde validatie aan als tweede verdedigingslaag. Definieer toegestane tekens en maximale stringlengte met strikte reguliere expressies. OWASP geeft het voorbeeld ^[a-z0-9]{3,10}$, waarmee alle metatekens en witruimte worden uitgesloten.
PortSwigger waarschuwt expliciet: probeer nooit input te saneren door shellmetatekens te escapen. Deze aanpak is foutgevoelig en kwetsbaar voor omzeiling door ervaren aanvallers. Allowlisting is altijd te verkiezen.
Pas Least Privilege toe (NIST AC-6)
NIST SP 800-53 schrijft het toepassen van het least privilege-principe voor. Voor command injection-verdediging:
- Draai webapplicatieprocessen als toegewijde, niet-geprivilegieerde serviceaccounts
- Beperk serviceaccountrechten tot alleen benodigde bestandslocaties
- Weiger shelltoegang
(/bin/sh, /bin/bash)aan webapplicatie-serviceaccounts - Pas
seccomp-profielen toe op Linux om beschikbare systeemaanroepen te beperken
Implementeer Sandboxing en Containerisatie
Containerisolatie met alleen-lezen root-bestandssystemen, Linux-namespaces en cgroups, en verplichte toegangscontroleprofielen (AppArmor of SELinux) verkleinen allemaal de impact als injectie optreedt. Deze controles sluiten aan bij NIST CM-7 least functionality-principes.
PHP-specifieke Controles
Als u in PHP werkt en shellcommando’s moet aanroepen, gebruik escapeshellarg() in plaats van escapeshellcmd(), omdat dit input beperkt tot één parameter en argumentinjectie voorkomt.
Deze code- en architectuurcontroles vormen de basis, maar tooling biedt het inzicht dat nodig is om ze op schaal af te dwingen.
Tools voor Detectie en Preventie van OS Command Injection
Effectieve verdediging vereist tools voor applicatiebeveiligingstesten, runtimebescherming en endpoint-inzicht. Een gezamenlijk CISA- en FBI-alarm gericht op OS command injection beveelt specifiek ingebouwde bibliotheekfuncties aan die commando’s van hun argumenten scheiden, inputparameterisatie en validatie van alle gebruikersinput.
Applicatiebeveiligingstesttools
- SAST-tools scannen broncode op gevaarlijke API-aanroepen die gebruikersinput ontvangen. U kunt deze integreren in uw CI/CD-pijplijn om injectiefouten vóór uitrol te detecteren.
- DAST-tools zoals Burp Suite testen draaiende applicaties op uit te buiten injectiepunten. De OAST-mogelijkheden van Burp Suite zijn bijzonder effectief voor het vinden van blinde command injection die geen zichtbare uitvoer oplevert.
Runtime- en Netwerkbescherming
- WAF-oplossingen met de OWASP ModSecurity Core Rule Set bieden netwerklaagfiltering van shellmetatekens en veelvoorkomende injectiepayloads. Deze fungeren als defense-in-depth-laag, maar mogen de oorzaak niet vervangen.
- RASP-oplossingen instrumenteren applicaties tijdens runtime en kunnen injectiepogingen blokkeren met volledige applicatiecontext, als compenserende controle voor legacy-applicaties die moeilijk te herstellen zijn.
Endpoint- en Gedragsinzicht
Endpointbeveiligingsplatforms die procescreatie, ouder-kindrelaties en opdrachtregelargumenten monitoren, zijn cruciaal voor het detecteren van post-exploitatie-activiteiten. Wanneer een webserverproces onverwacht een shell start, wordt gedragsanalyse op kernel-niveau uw laatste verdedigingslinie.
Ontketen AI-aangedreven cyberbeveiliging
Verhoog uw beveiliging met realtime detectie, reactiesnelheid en volledig overzicht van uw gehele digitale omgeving.
Vraag een demo aanGerelateerde Kwetsbaarheden
OS command injection behoort tot een familie van injectie-kwetsbaarheden met een gemeenschappelijke oorzaak: het niet scheiden van gebruikersdata van uitvoerbare instructies. Verschillende gerelateerde kwetsbaarheidsklassen kunnen worden gekoppeld aan of overlappen met CWE-78.
- SQL-injectie (CWE-89): Richt zich op SQL-database-engines in plaats van de OS-shell. SQL-injectie kan worden gekoppeld aan OS command injection via databasefuncties zoals
xp_cmdshell. - Code-injectie (CWE-94): Richt zich op de runtime van de applicatietaal zelf (PHP
eval(), Pythonexec()). Code-injectie stelt de aanvaller in staat eigen code toe te voegen die door de applicatie wordt uitgevoerd, en kan escaleren naar OS command injection als de geïnjecteerde codesystem()ofexec()aanroept. - Argumentinjectie (CWE-88): Een kindvariant van CWE-78. In plaats van nieuwe commando’s te injecteren via separatoren, manipuleren aanvallers de argumenten van een reeds aangeroepen programma met vlagtekens (-, --). Deze aanval slaagt zelfs als filtering op commandoseparatoren aanwezig is.
- Server-Side Template Injection (CWE-1336): Richt zich op template-engines (Jinja2, FreeMarker). SSTI escaleert vaak naar OS command injection omdat template-engines vaak toegang hebben tot de onderliggende taalruntime.
- Expression Language Injection (CWE-917): Richt zich op expressietaalparsers in webframeworks (OGNL, Spring SpEL). Log4Shell (CVE-2021-44228) is het bekendste voorbeeld, dat vaak leidt tot OS-commando-uitvoering.
| Kwetsbaarheid | CWE | Doelinterpreter | Directe Weg naar OS-uitvoering |
| OS Command Injection | CWE-78 | OS-shell | Direct |
| SQL-injectie | CWE-89 | SQL-engine | Indirect (via xp_cmdshell) |
| Code-injectie | CWE-94 | Applicatieruntime | Indirect (via systeemaanroepen) |
| Argumentinjectie | CWE-88 | OS-shellargumentparser | Direct (manipuleert aangeroepen commando) |
| SSTI | CWE-1336 | Template-engine | Escaleert vaak naar OS-commando’s |
| EL-injectie | CWE-917 | Expressietaalparser | Escaleert vaak naar OS-commando’s |
De bovenstaande tabel toont dat verschillende kwetsbaarheidsklassen een directe of indirecte weg naar OS-uitvoering bieden, waardoor defense-in-depth over alle injectietypen essentieel is.
Gerelateerde CVE’s
| CVE-ID | Beschrijving | Ernst | Getroffen Product | Jaar |
| Command injection in git diff API-endpoint omzeilt agentuitvoeringscontroles | Kritiek | OpenHands AI Platform | 2026 | |
| OS command injection in WAN-diagnosefunctionaliteit via curl-parameter | Kritiek | Tenda G300-F Router | 2026 | |
| OS command injection in VPN-modules; geauthenticeerde naburige aanvaller | Hoog | TP-Link Archer BE230 | 2026 | |
| Onauthenticeerde OS command injection in ICS-communicatieapparaten | Kritiek | Zenitel Devices | 2025 | |
| Onauthenticeerde OS command injection in EDR-beheerplatform; actief misbruikt | Kritiek | Sangfor EDR | 2025 | |
| Post-authenticatie command injection in DDNS CLI-configuratie | Hoog | Zyxel ATP/USG FLEX Firewalls | 2025 | |
| Command injection via niet-gesaniteerde input doorgegeven aan exec() in image.php | Kritiek | ZoneMinder v1.36.34 | 2025 | |
| Onauthenticeerde RCE via command injection in middleware API-endpoint | Kritiek | Hoverfly API Simulator | 2025 | |
| CLI command injection op Nexus-switches; misbruikt door Velvet Ant-campagne | Medium | Cisco NX-OS | 2024 | |
| Onauthenticeerde OS command injection in Task Manager-component | Kritiek | Synology BeePhotos/Photos | 2024 | |
| Onauthenticeerde command injection in remote_help-cgi-endpoint | Kritiek | Zyxel NAS326/NAS542 | 2024 | |
| Post-authenticatie command injection via HTTP POST in CGI-programma; CISA KEV | Hoog | Zyxel VMG1312-B10A | 2024 | |
| CGI-request command injection waarmee root-level code-uitvoering mogelijk is | Kritiek | Webmin | 2024 | |
| Root-level command injection via web-UI; actief misbruikt; CISA KEV | Kritiek | Cisco IOS XE | 2023 | |
| Command injection via kwaadaardige .tar-bestandsnamen; actief misbruikt; CISA KEV | Kritiek | Barracuda ESG | 2023 | |
| Pre-authenticatie OS command injection via HTTP-verzoeken; CISA KEV | Kritiek | Zyxel NAS326/540/542 | 2023 | |
| Onauthenticeerde command injection in show_zysync_server_contents-functie | Kritiek | Zyxel NAS326/NAS542 | 2023 | |
| OS command injection via shellmetatekens in gebruikers- of hostnamen | Medium | OpenBSD OpenSSH | 2023 | |
| Onauthenticeerde shellmetateken-injectie in logininterface; CISA KEV | Kritiek | Control Web Panel 7 | 2022 | |
| Command injection via kwaadaardige certificaatbestandsnamen in c_rehash-script | Kritiek | OpenSSL | 2022 | |
| Onauthenticeerde OS command injection via webbeheerinterface | Kritiek | Zyxel NWA1100-NH | 2021 | |
| Pre-authenticatie command injection in routerfirmware; CISA KEV | Kritiek | DrayTek Vigor Routers | 2020 | |
| Pre-authenticatie command injection via weblogin.cgi; root-escalatie; CISA KEV | Kritiek | Zyxel NAS326 | 2020 | |
| Command injection via deviceName-parameter in goform/setUsbUnload; CISA KEV | Kritiek | Tenda AC15 Router | 2020 |
Conclusie
OS command injection geeft aanvallers directe OS-niveau-uitvoering via applicaties die onveilige input aan shellinterpreters doorgeven. U verkleint de blootstelling door OS-commando-aanroepen waar mogelijk te verwijderen, geparameteriseerde API’s te gebruiken indien nodig en allowlist-validatie af te dwingen.
Als preventie faalt, helpt gedragsinzicht op het endpoint u snel shellspawning, uitgaande verbindingen en andere tekenen van exploitatie te detecteren.
Veelgestelde vragen
OS command injection (CWE-78) is een kwetsbaarheid waarbij een applicatie besturingssysteemcommando's samenstelt met niet-gesaniteerde externe invoer. Aanvallers injecteren shell-metatekens (;, |, &&) om kwaadaardige commando's toe te voegen die de OS-shell uitvoert met de rechten van de applicatie.
De onderliggende oorzaak is het niet scheiden van gebruikersdata en commandosynthax voordat invoer aan een shell-interpreter wordt doorgegeven.
Ja. OS command injection valt onder de categorie Injection in zowel OWASP Top 10:2021 als OWASP Top 10:2025. Zowel CWE-77 als CWE-78 zijn expliciet opgenomen.
De editie van 2025 heeft ook CWE-88 (Argument Injection) toegevoegd als gekoppelde zwakte.
Ja. De meeste bevestigde CWE-78-kwetsbaarheden in de CISA KEV-catalogus vereisen geen authenticatie en zijn op afstand uit te buiten. CVE-2014-6271 (Shellshock), CVE-2023-28771 (Zyxel), en CVE-2024-3400 staan allemaal ongeauthenticeerde remote exploitatie toe.
Netwerkapparaten, waaronder firewalls, VPN-concentrators en enterprise switches, produceren de hoogste concentratie van bevestigde-geëxploiteerde CWE-78 vermeldingen. IoT- en embedded firmware, waaronder NAS-apparaten en routers, worden systematisch gericht voor botnet-rekrutering.
Webapplicaties die server-side systeemcommando's aanroepen en enterprise managementinterfaces brengen ook een verhoogd risico met zich mee.
Aanvallers testen invoervelden, HTTP-headers, cookies en URL-parameters door shell-metatekens te injecteren gevolgd door diagnostische commando's. Voor blinde injectie gebruiken ze tijdvertragingen (sleep 10) of DNS-callbacks naar door de aanvaller beheerde servers.
Scanners en fuzzingtools testen systematisch alle invoervectoren.
Belangrijke indicatoren zijn webserverprocessen (apache, nginx, tomcat) die onverwachte shellprocessen starten (bash, sh, cmd.exe). Andere signalen zijn uitgaande netwerkverbindingen vanuit applicatieprocessen naar onbekende IP-adressen en ongebruikelijke execve()- of system()-aanroepen vanuit webapplicatieprocessen.
OS command injection is een kwetsbaarheidsklasse met hoge ernst omdat het aanvallers directe toegang op OS-niveau geeft, waardoor ze elk commando kunnen uitvoeren dat het besturingssysteem ondersteunt.
CWE-78 behoort tot de hoogste MITRE-softwarezwaktecategorieën en bevestigde CVE's hebben vaak een CVSS-score van 9.0 of hoger.
Ja. SANS-rapportage over CVE-2024-40891 beschrijft expliciet "volledige systeemcompromittering, data-exfiltratie of netwerk-infiltratie." Wanneer de gecompromitteerde applicatie met verhoogde rechten draait, verkrijgen aanvallers gelijkwaardige toegang op OS-niveau.
Bevestigde gevolgen zijn onder andere ransomware-uitrol, laterale beweging en installatie van een persistente backdoor.
SAST-tools signaleren betrouwbaar gevaarlijke API-aanroepen in broncode, maar missen kwetsbaarheden die alleen tijdens runtime zichtbaar zijn. DAST-tools vinden uit te buiten injectiepunten, vooral bij gebruik van OAST-technieken voor blinde injectie.
WAF-regels detecteren bekende patronen maar kunnen worden omzeild via encodering. Gedragszichtbaarheid op procesniveau biedt de meest betrouwbare runtime-identificatie. Geen enkel hulpmiddel detecteert elke variant, dus gelaagde dekking is noodzakelijk.
Kritieke infrastructuur en telecommunicatie lopen het hoogste bevestigde risico. CISA-adviezen beschrijven door de Chinese staat gesponsorde exploitatie gericht op telecom- en routerinfrastructuur.
Federale overheidsinstanties hebben verplichte KEV-hersteltermijnen. Elke sector die netwerkapparatuur of embedded firmware met internettoegang gebruikt, is een potentieel doelwit.


