CVE-2026-78676: Kritisk GitPython-sårbarhed
Kritisk fejl i GitPython giver angribere mulighed for at køre vilkårlig kode via manipulerede git-konfigurationsfiler.
Hvad er det?
GitPython er et populært Python-bibliotek, som mange udviklingsværktøjer og automatiseringsplatforme bruger til at arbejde med git-repositories (versionsstyringssystemer). En kritisk fejl i versioner før 3.1.59 betyder, at biblioteket ikke håndterer flerlinjet indhold i git-konfigurationsfiler korrekt, når det skriver til dem. En angriber kan forberede en konfigurationsfil med skjulte kommandoer, der er gemt i et tilsyneladende ufarligt felt. Næste gang GitPython skriver noget andet til filen — hvad som helst — aktiveres de skjulte kommandoer automatisk og udføres som rigtige instruktioner til git. Det kan ske helt uden at nogen lægger mærke til det.
Hvem rammer det?
Sårbarheden rammer virksomheder og teams, der:
- Bruger udviklingsværktøjer, CI/CD-pipelines (automatiserede byg- og leveringssystemer) eller scripts, der er bygget oven på GitPython
- Kører platforme til kodereview, deployment eller projektautomatisering, der internt benytter git-integration via Python
- Tillader brugere eller eksterne parter at bidrage med filer til et git-repository, som behandles af GitPython
Selv hvis I ikke selv programmerer i Python, kan et eksternt SaaS-værktøj eller en intern platform i jeres tekniske infrastruktur være berørt.
Hvad kan ske?
Hvis en angriber udnytter fejlen, kan vedkommende få GitPython til at udføre vilkårlig kode på den server eller computer, der kører biblioteket. I praksis betyder det:
- Fuldstændig systemkontrol: Angriberen kan køre egne programmer med de samme rettigheder som jeres udviklingsplatform
- Datatyveri: Adgang til kildekode, hemmeligheder, API-nøgler og andre følsomme data i jeres repositories
- Forsyningskædeangreb: Angriberen kan manipulere jeres kode, inden den deployes til produktion, og dermed ramme jeres kunder
- Ransomware eller sabotage: Servere kan krypteres eller data slettes
Hvor alvorligt er det?
Fejlen er vurderet til CVSS-score 9,8 ud af 10 — det er den næsthøjeste mulige score og klassificeres som kritisk. Den er særligt farlig, fordi:
- Angrebet kan udføres over nettet uden login (ingen konto eller særlige rettigheder kræves)
- Det kræver ingen handling fra brugeren — det sker automatisk i baggrunden
- Kompleksiteten er lav, hvilket betyder at angrebet ikke kræver avancerede evner hos angriberen
- Konsekvenserne rammer fortrolighed, integritet og tilgængelighed på én gang
CWE-88 betegner en fejlkategori kaldet ‘argument injection’ — altså at uønskede kommandoer smugles ind og udføres som legitime instruktioner.
Hvad gør jeg nu?
Hvis I bruger GitPython direkte eller har systemer, der gør det, skal I handle hurtigt. Her er hvad du konkret gør:
- Find ud af om I er berørt: Spørg jeres udviklere eller IT-leverandør om jeres systemer bruger Python-biblioteket GitPython, og hvilken version der er installeret. Kør kommandoen
pip show gitpythonfor at se versionen. - Opdatér til GitPython 3.1.59 eller nyere: Det gøres med kommandoen
pip install --upgrade gitpython. Denne version indeholder den rettelse, der lukker sårbarheden. - Gennemgå jeres git-konfigurationsfiler: Bed jeres udviklere om at kontrollere eksisterende
.git/config-filer for ukendte eller mistænkelige linjer, særligt felter somcore.hooksPath. - Begræns hvem der kan bidrage filer til jeres repositories: Sørg for, at kun betroede parter kan uploade eller ændre filer i jeres git-repositories, mens opdateringen rulles ud.
- Kontakt jeres IT-partner eller softwareleverandør: Hvis I bruger tredjeparts platforme, der integrerer med git, så spørg leverandøren om de er opdateret.
Opdatér inden for 48 timer
Auroa anbefaler, at I behandler denne sårbarhed som kritisk og opdaterer GitPython til version 3.1.59 eller nyere inden for 48 timer. Fejlens lave kompleksitet og det faktum, at den ikke kræver login, gør den særligt attraktiv for angribere. Hvis I ikke selv har tekniske ressourcer til at håndtere opdateringen, så kontakt jeres IT-partner med det samme og vis dem dette dokument. Overvej desuden at gennemgå logfiler fra jeres udviklingsplatforme for usædvanlig aktivitet de seneste uger.
Tidslinje
Konkrete eksempler
Ondsindet pull request i åbent projekt
En angriber sender et pull request (et forslag til kodeændring) til jeres repository, der indeholder en tilsyneladende harmløs tekstfil med skjulte linjeskift i git-konfigurationsdata. Når en udvikler på jeres team accepterer ændringen og GitPython efterfølgende skriver en anden konfigurationsændring — for eksempel opdatering af en remote-adresse — aktiveres de skjulte instruktioner. Git begynder nu at køre angriberens scripts automatisk ved hvert commit eller push, uden at nogen opdager det.
Kompromitteret CI/CD-pipeline
En angriber med adgang til ét repository i jeres CI/CD-system (bygge- og leveringsautomatisering) placerer en manipuleret .git/config-fil. Næste gang jeres automatiserede byggesystem kører og bruger GitPython til at håndtere konfigurationen, aktiveres de injekterede direktiver. Angriberen får dermed kørsel af vilkårlig kode på byggeserveren og kan stjæle API-nøgler, hemmeligheder eller manipulere den kode der sendes ud til jeres kunder.
Forsyningskædeangreb via tredjeparts afhængighed
Et tredjepartsbibliotek I bruger i jeres Python-projekt har selv en afhængighed af en sårbar version af GitPython. En angriber udnytter dette indirekte ved at levere en manipuleret konfigurationsfil via en delt pakke eller et delt repository. Uden at I eller bibliotekets vedligeholder er klar over det, udføres angriberens kode på alle de systemer, der bruger biblioteket — inklusiv jeres.
Ofte stillede spørgsmål
Vi bruger ikke selv Python — kan vi stadig være ramt?
Ja, det er muligt. Mange udviklingsværktøjer, CI/CD-platforme og interne automatiseringssystemer er bygget oven på Python og GitPython uden at det er synligt for slutbrugeren. Spørg jeres IT-leverandør eller systemadministrator, om nogle af jeres platforme bruger GitPython i baggrunden.
Hvad er et 'git hook', og hvorfor er det farligt her?
Et git hook er et lille script, som git automatisk kører, når bestemte handlinger udføres — for eksempel når kode commites eller pushes. Normalt bruges hooks til legitime formål som kvalitetskontrol. I denne sårbarhed kan en angriber manipulere git til at pege på et ondsindet hook-script via konfigurationsfilen, så angriberens kode køres automatisk næste gang git udfører en handling.
Kan vi bare vente med opdateringen til næste planlagte vedligeholdelsesvindue?
Det fraråder vi. Sårbarhedens alvor (CVSS 9,8) og lave angrebskompleksitet betyder, at der sandsynligvis allerede eksisterer offentlige proof-of-concept-eksempler på udnyttelse. Jo længere I venter, jo større er risikoen for at blive ramt. Opdateringen er minimal og bør ikke kræve nedetid.
Hvordan ved vi, om vi allerede er blevet angrebet?
Kig efter ukendte linjer i jeres
.git/config-filer — især linjer medhooksPathder peger på uventede steder. Gennemgå også logfiler fra jeres CI/CD-system for uventede scriptudførelser eller processer. Hvis I er usikre, kan Auroa hjælpe med en hurtig gennemgang.Påvirker det vores produktionssystemer eller kun udviklingsmiljøet?
Det afhænger af, hvor GitPython kører. Hvis jeres CI/CD-pipeline har adgang til produktionssystemer — for eksempel til automatisk deployment — kan et angreb hurtigt sprede sig fra udviklingsmiljøet til produktion. Det gør det ekstra vigtigt at handle hurtigt.
Er der en midlertidig løsning, hvis vi ikke kan opdatere med det samme?
Den bedste midlertidige løsning er at begrænse hvem der kan skrive til eller uploade filer i jeres git-repositories, og undgå at lade GitPython skrive til konfigurationsfiler fra ikke-betroede input. Det er dog kun en midlertidig foranstaltning — opdatering til 3.1.59 er den eneste permanente løsning.
Ramte produkter
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 before 3.1.59 fails to safely re-serialize multi-line git-config values during write operations, corrupting dormant quoted values into injected directives like core.hooksPath. Attackers can craft config files with embedded newlines that become live git directives after any unrelated GitPython config write, enabling arbitrary code execution via hook invocation.
Brug for hjælp med jeres sikkerhed?
Vi hjælper SMV’er med at omsætte trusler som denne til konkrete handlingsplaner.
