CVE-2026-67324: Kritisk fejl i GitPython 3.1.50
GitPython 3.1.50 har en sårbarhed, der kan bruges til at køre vilkårlige kommandoer via git clone. Opdatér til 3.1.51.
Hvad er det?
CVE-2026-67324 er en sårbarhed i Python-biblioteket GitPython, som mange udviklingsværktøjer og automatiseringsscripts bruger til at hente og styre Git-repositorier. GitPython har en sikkerhedsspærre, der skal forhindre farlige kommandoer i at blive sendt med, når man kloner et repository baseret på brugerinput. Fejlen betyder, at spærren ikke opdager den forkortede skriveform -u<værdi> af parameteren –upload-pack. En angriber kan derfor snige en skadelig kommando med gennem denne genvej, selvom applikationen tror, den har blokeret netop den type kommando. Når Git efterfølgende udfører klonen, kører den medsendte kommando automatisk på serveren.
Hvem rammer det?
Sårbarheden rammer alle applikationer, der bruger GitPython version 3.1.50 eller ældre, og som lader brugere eller eksterne systemer påvirke de valgfrie parametre til Repo.clone_from, samtidig med at applikationen sætter allow_unsafe_options=False i den tro, at det er sikkert. Det gælder typisk interne udviklingsværktøjer, CI/CD-pipelines, kodegennemgangssystemer og selvbetjeningsportaler, hvor brugere kan angive et Git-repository eller klonparametre. Danske virksomheder med egenudviklede platforme, der integrerer med Git, samt leverandører af udviklerværktøjer bør tjekke deres afhængigheder.
Hvad kan ske?
En angriber, der kan påvirke klonparametrene, kan få serveren til at udføre en vilkårlig kommando under kloningen. I praksis betyder det fuld kompromittering af den server eller tjeneste, der udfører git-clone-kaldet: adgang til filsystem, mulighed for at stjæle koder og adgangsnøgler, og et springbræt videre ind i virksomhedens netværk. Da sårbarheden ikke kræver login eller brugerinteraktion fra en legitim bruger, kan den udnyttes direkte gennem den funktion i applikationen, der modtager klonparametrene.
Hvor alvorligt er det?
CVSS-scoren er 9,8 ud af 10, hvilket er kritisk. Angrebet kræver ikke login (privilege required: none) og ingen handling fra en bruger (user interaction: none). Det kan udføres over netværket med lav kompleksitet, og det giver angriberen fuld kontrol over fortrolighed, integritet og tilgængelighed på den ramte server. Der er ved offentliggørelsen ingen kendte tilfælde af aktiv udnyttelse, men fejlen er let at forstå og udnytte, når man kender detaljerne.
Hvad gør jeg nu?
Sådan lukker I hullet og reducerer risikoen, mens I opdaterer:
- Opdatér GitPython til version 3.1.51 eller nyere i alle applikationer, scripts og containerimages, hvor biblioteket indgår.
- Gennemgå kode, der kalder Repo.clone_from med multi_options, og fjern eller valider al brugerstyret input strengt, uanset om allow_unsafe_options er sat.
- Tjek CI/CD-pipelines, interne portaler og tredjepartsværktøjer for indirekte afhængighed af GitPython via andre pakker.
- Gennemgå logs for uventede git-clone-kald eller udførte helper-kommandoer i perioden op til opdateringen.
- Begræns hvilke systemer og brugere, der kan sende klonparametre til interne tjenester, som en ekstra sikkerhedsforanstaltning.
- Kontakt jeres it-leverandør eller en sikkerhedsrådgiver, hvis I ikke selv kan overskue, hvor GitPython bruges i jeres kodebase.
Opdatér inden for få dage
Vi anbefaler, at I opdaterer GitPython til 3.1.51 hurtigst muligt i alle systemer, hvor biblioteket bruges, særligt hvor brugerinput påvirker klonparametre. Det er ikke forsvarligt at vente til en planlagt opdateringsrunde, da sårbarheden kræver hverken login eller brugerinteraktion. I kan vente kortvarigt, hvis I i mellemtiden kan bekræfte, at ingen brugerstyret input når frem til Repo.clone_from i jeres kode.
Tidslinje
Konkrete eksempler
Intern udviklerportal med selvbetjent repository-kloning
En dansk virksomhed har en intern portal, hvor udviklere kan angive et Git-repository og valgfrie klonindstillinger, som portalen sender videre til GitPython på en backend-server. En medarbejder eller ekstern samarbejdspartner med adgang til portalen indtaster en klonparameter i formen -u<kommando>, som portalen ikke fanger, fordi den kun tjekker for –upload-pack. Backend-serveren udfører den skadelige kommando under kloningen, og angriberen får adgang til serverens filsystem og eventuelle adgangsnøgler.
Ofte stillede spørgsmål
Er vi ramt af denne sårbarhed?
I er ramt, hvis jeres applikationer eller interne værktøjer bruger Python-biblioteket GitPython version 3.1.50 eller ældre, og hvis brugere eller eksterne systemer kan påvirke parametre til Repo.clone_from. Tjek jeres afhængighedslister (requirements.txt eller lignende) for GitPython-versionen.
Hvordan finder vi ud af, hvilken version af GitPython vi bruger?
Kør ‘pip show gitpython’ i det relevante Python-miljø, eller søg efter GitPython i jeres afhængighedsfiler og containerimages. Husk at tjekke alle miljøer, herunder CI/CD-servere og interne værktøjer.
Kan vi vente til weekenden med at opdatere?
Det afhænger af, om jeres system lader brugerstyret input nå frem til klonfunktionen. Hvis det er tilfældet, bør opdateringen ske hurtigst muligt og ikke vente til en planlagt vedligeholdelsesrunde, da sårbarheden ikke kræver login eller brugerinteraktion.
Skal vi anmelde noget, hvis vi finder tegn på udnyttelse?
Hvis I finder tegn på, at sårbarheden er udnyttet og persondata eller forretningskritiske systemer er berørt, skal I vurdere anmeldelsespligt efter databeskyttelsesloven og eventuelt kontakte Datatilsynet samt jeres forsikringsselskab.
Er opdateringen bagudkompatibel, så vores integrationer stadig virker?
Opdateringen til 3.1.51 retter kun sikkerhedsspærren og ændrer ikke den generelle API i GitPython. Vi anbefaler alligevel en kort test af jeres klonfunktioner efter opdatering, især hvis I bruger multi_options aktivt.
CVSS-detaljer
CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:H/I:H/A:H
CWE-svaghedstyper
Original NVD-beskrivelse (engelsk)
GitPython 3.1.50 fails to recognize joined short-option forms such as -u (the short form of –upload-pack=) when enforcing its default unsafe-option gate. When an application passes attacker-influenced clone options into Repo.clone_from(…, multi_options=…, allow_unsafe_options=False), an attacker can supply -u to bypass the gate that blocks –upload-pack/-u, causing Git to execute the specified helper command during clone. Fixed in 3.1.51.
Referencer & kilder
Eksterne kilder
Brug for hjælp med jeres sikkerhed?
Vi hjælper SMV’er med at omsætte trusler som denne til konkrete handlingsplaner.