Kritieke Jenkins-kwetsbaarheid stelt servers bloot aan RCE-aanvallen

De beheerders van de open-source automatiseringssoftware voor continue integratie/continue levering en implementatie (CI/CD) Jenkins hebben negen beveiligingsfouten opgelost, waaronder een kritieke bug die, indien succesvol uitgebuit, zou kunnen resulteren in het uitvoeren van externe code (RCE).

Het probleem, waaraan de CVE-ID is toegewezen CVE-2024-23897is beschreven als een kwetsbaarheid bij het lezen van willekeurige bestanden via de ingebouwde opdrachtregelinterface (CLI)

“Jenkins gebruikt de args4j-bibliotheek om opdrachtargumenten en opties op de Jenkins-controller te ontleden bij het verwerken van CLI-opdrachten”, zeiden de beheerders in een advies van woensdag.

“Deze opdrachtparser heeft een functie die een @-teken vervangt, gevolgd door een bestandspad in een argument met de inhoud van het bestand (expandAtFiles). Deze functie is standaard ingeschakeld en Jenkins 2.441 en eerder, LTS 2.426.2 en eerder schakelt deze niet uit .”

Een bedreigingsacteur zou deze gril kunnen misbruiken om willekeurige bestanden op het Jenkins-controllerbestandssysteem te lezen met behulp van de standaard tekencodering van het Jenkins-controllerproces.

Terwijl aanvallers met de machtiging “Overall/Read” hele bestanden kunnen lezen, kunnen aanvallers zonder deze machtiging de eerste drie regels van de bestanden lezen, afhankelijk van de CLI-opdrachten.

Bovendien zou de tekortkoming kunnen worden ingezet om binaire bestanden met cryptografische sleutels te lezen, zij het met bepaalde beperkingen. Op voorwaarde dat de binaire geheimen kunnen worden geĂ«xtraheerd, zegt Jenkins, zou dit de deur kunnen openen voor verschillende aanvallen –

  • Uitvoering van code op afstand via Resource Root-URL’s
  • Uitvoering van code op afstand via “Onthoud mij”-cookie
  • Uitvoering van code op afstand via opgeslagen cross-site scripting (XSS)-aanvallen via buildlogboeken
  • Uitvoering van code op afstand via CSRF-beveiligingsbypass
  • Decodeer geheimen die zijn opgeslagen in Jenkins
  • Verwijder elk item in Jenkins
  • Download een Java-heapdump

“Hoewel bestanden met binaire gegevens kunnen worden gelezen, probeert de getroffen functie ze als tekenreeksen te lezen met behulp van de standaard tekencodering van het controllerproces”, aldus Jenkins.

“Dit zal er waarschijnlijk toe leiden dat sommige bytes niet succesvol worden gelezen en worden vervangen door een tijdelijke aanduidingswaarde. Welke bytes wel of niet kunnen worden gelezen, hangt af van deze tekencodering.”

Beveiligingsonderzoeker Yaniv Nizry is gecrediteerd voor het ontdekken en rapporteren van de fout, die is opgelost in Jenkins 2.442, LTS 2.426.3 door de opdrachtparserfunctie uit te schakelen.

Als tijdelijke oplossing totdat de patch kan worden toegepast, wordt aanbevolen de toegang tot de CLI uit te schakelen.

De ontwikkeling komt bijna een jaar nadat Jenkins een paar ernstige beveiligingsproblemen had aangepakt, genaamd CorePlague (CVE-2023-27898 en CVE-2023-27905), die zouden kunnen leiden tot code-uitvoering op gerichte systemen.

Thijs Van der Does