Návod Pro správce a analytiky

Jak bezpečně klonovat cizí Git repozitáře: submoduly, nastavení a CI

Správci Gitu 10. listopadu 2026 zveřejnili chybu CVE-2026-111760: repozitář útočníka může při klonování s přepínačem --recurse-submodules spustit vlastní kód. Opravená verze k 12. 11. 2026 neexistuje. Je to už třetí podobná chyba za dva a půl roku, takže se vyplatí nastavit si klonování cizího kódu tak, aby tuhle třídu útoků omezilo – dnes i po vydání opravy.

Redakce Kyberkitu · · čtení na 5 minut · Pro správce a analytiky

Návod: Bezpečné klonování cizích Git repozitářů a submodulů

Ve zkratce

  • CVE-2026-111760 (CVSS 8,0) se podle správců Gitu týká všech verzí a opravená verze zatím není. Spustí se jen při klonování s --recurse-submodules z repozitáře, který připravil útočník.
  • Výchozí git clone submoduly nestahuje. Cizí repozitáře proto klonujte bez --recurse-submodules a submoduly nechte, dokud nevyjde oprava a nevíte, odkud jsou.
  • Zkontrolujte, jestli nemáte globálně submodule.recurse=true a jestli CI nestahuje submoduly cizího kódu (actions/checkout s submodules: true nebo recursive).
  • Cizí kód zkoumejte v jednorázovém prostředí bez SSH klíčů a tokenů. Po vydání opravy Git hned aktualizujte – předchozí chyba CVE-2025-48384 skončila v katalogu CISA KEV.

Co je CVE-2026-111760 a proč na tom záleží

Správci Gitu 10. listopadu 2026 zveřejnili advisory GHSA-vp2w-7xxj-jvxr s názvem „Recursive clones are susceptible to Remote Code Execution“. Repozitář pod kontrolou útočníka může zneužít chybu, kvůli které Git přepíše takzvaný gitfile submodulu (malý soubor, který říká, kde leží data submodulu) symbolickým odkazem. Odkaz míří do adresáře se škodlivou konfigurací nebo hooky a Git pak může spustit kód, který si útočník určil.

Hodnocení je CVSS 8,0 (vektor AV:N/AC:H/PR:L/UI:R/S:C/C:H/I:H/A:H) – útok potřebuje, aby oběť sama klonovala repozitář útočníka. Advisory uvádí jako dotčené všechny verze Gitu a opravené žádné: opravy se podle něj teprve probírají v e-mailové konferenci git-security. Jako obranu doporučuje neklonovat repozitáře z nedůvěryhodných zdrojů a dodává, že chybu podle všeho jde vyvolat jen s přepínačem --recurse-submodules.

Pro koho je to důležité: vývojáře, kteří zkoušejí cizí projekty, bezpečnostní analytiky, kteří stahují kód k rozboru, a hlavně CI/CD pipeline, které klonují kód automaticky a mají přitom přístup k tajemstvím.

Průběh útoku přes CVE-2026-111760 podle advisory správců Gitu1. Útočník připraví repozitář se submodulem; 2. Oběť spustí git clone --recurse-submodules; 3. Git přepíše gitfile submodulu symbolickým odkazem; 4. Odkaz vede do adresáře se škodlivou konfigurací nebo hooky; 5. Git spustí kód útočníka1Útočník připraví repozitář sesubmodulem2Oběť spustí git clone--recurse-submodules3Git přepíše gitfile submodulusymbolickým odkazem4Odkaz vede do adresáře se škodlivoukonfigurací nebo hooky5Git spustí kód útočníka
Jak může repozitář útočníka spustit kód při rekurzivním klonování (zjednodušeně, podle GHSA-vp2w-7xxj-jvxr)

Není to poprvé: submoduly jako opakovaný vstup

Stejné místo – submoduly, symbolické odkazy a hooky – už Git trápilo dvakrát:

  • CVE-2024-32002 (zveřejněno 14. 5. 2024, CVSS 9,0): upravený repozitář se submoduly přiměl Git zapsat soubory do adresáře .git/ místo do pracovního stromu submodulu. Útočník tak mohl podstrčit hook, který se spustil ještě během klonování, dřív než si uživatel mohl kód prohlédnout. Opraveno ve verzích 2.45.1, 2.44.1, 2.43.4, 2.42.2, 2.41.1, 2.40.2 a 2.39.4; útoku podle advisory bránilo i vypnutí symbolických odkazů (core.symlinks false).
  • CVE-2025-48384 (zveřejněno 8. 7. 2025, CVSS 8,0): Git při zápisu konfigurace zahazoval koncový znak CR. Cesta submodulu končící tímto znakem tak mohla vést jinam a přes symbolický odkaz se mohl spustit hook post-checkout submodulu. Opraveno ve verzích 2.43.7, 2.44.4, 2.45.4, 2.46.4, 2.47.3, 2.48.2, 2.49.1 a 2.50.1. CISA ji 25. 8. 2025 zařadila do katalogu aktivně zneužívaných zranitelností (KEV).

U nové chyby advisory nepíše, jestli pomáhá core.symlinks false, takže na to nespoléhejte.

Časová osa chyb Gitu spojených se submoduly14. 5. 2024: CVE-2024-32002 zveřejněna i opravena, CVSS 9,0; 8. 7. 2025: CVE-2025-48384 zveřejněna i opravena, CVSS 8,0; 25. 8. 2025: CVE-2025-48384 v katalogu CISA KEV; 10. 11. 2026: CVE-2026-111760 zveřejněna, oprava zatím není14. 5. 2024CVE-2024-32002 zveřejněnai opravena, CVSS 9,08. 7. 2025CVE-2025-48384 zveřejněnai opravena, CVSS 8,025. 8. 2025CVE-2025-48384 v kataloguCISA KEV10. 11. 2026CVE-2026-111760 zveřejněna,oprava zatím není
Tři chyby Gitu se submoduly a symbolickými odkazy (podle NVD, CISA a advisory Gitu)

Jak klonovat cizí repozitář bezpečně

1. Klonujte bez submodulů. Výchozí git clone submoduly neinicializuje – to dělá jen s přepínačem --recurse-submodules. U cizího kódu ho nepoužívejte:

git clone https://example.org/projekt.git

2. Podívejte se, co by se stahovalo. Soubor .gitmodules v kořeni repozitáře ukazuje, jaké submoduly projekt používá a odkud. Neznámé adresy jsou důvod k opatrnosti. Submoduly cizích projektů nechte neinicializované, dokud nevyjde oprava.

3. Zkontrolujte, jestli za vás Git nerekurzuje sám. Volba submodule.recurse=true podle dokumentace zapne --recurse-submodules jako výchozí u příkazů checkout, fetch, grep, pull, push, read-tree, reset, restore a switch (u samotného clone ne). Zjistěte, odkud se případně bere:

git config --show-origin --get-all submodule.recurse

Pokud vám vypíše true, zvažte ho do vydání opravy vypnout, nebo u cizích repozitářů používat git -c submodule.recurse=0 ….

4. Cizí kód zkoumejte v jednorázovém prostředí. Naše doporučení z praxe: virtuální stroj nebo kontejner bez vašich SSH klíčů, tokenů a přístupů do cloudu. Když se kód přece jen spustí, nemá co ukrást. Platí to i pro rozbor malwaru a podezřelých repozitářů, jaké se objevily v kampani wfx-loot.

5. Vypnutí hooků nestačí. Hooky jdou vypnout volbou core.hooksPath=/dev/null, advisory ale mluví o škodlivé konfiguraci nebo hoocích. Je to nanejvýš doplněk, ne náhrada bodů 1–4.

Co zkontrolovat v CI/CD

Pipeline jsou nejcitlivější místo: klonují automaticky a často mají po ruce tokeny k registrům a cloudu (jak ukázal útok ARTEX na uniklá tajemství).

  • GitHub Actions: akce actions/checkout má vstup submodules ve výchozím stavu false. Najděte workflow, kde je submodules: true nebo recursive, a ověřte, že nezpracovávají kód z cizích zdrojů.
  • Skripty: vyhledejte v repozitářích s pipeline volání --recurse-submodules a git submodule update --init.
  • Tajemství: actions/checkout ve výchozím stavu ukládá token do lokální konfigurace Gitu (persist-credentials: true). U úloh, které tlačit zpět nepotřebují, ho nastavte na false.
grep -rnE "recurse-submodules|submodules: *(true|recursive)" .github/ ci/ scripts/

(Adresáře upravte podle svého projektu.)

Až vyjde oprava

  1. Zjistěte verzi: git --version, na serverech a v obrazech CI i přes správce balíčků.
  2. Aktualizujte všude, kde se klonuje cizí kód – pracovní stanice, buildovací agenty, kontejnerové obrazy. U CVE-2025-48384 uplynuly od opravy do zařazení do KEV necelé dva měsíce.
  3. Opatření z bodů 1–4 si nechte i po opravě. Chyby v submodulech se vracejí.

Hodnocení CVSS si můžete rozebrat v naší CVSS kalkulačce – vložte do ní vektor z advisory a uvidíte, proč „vysoká složitost útoku“ (AC:H) a nutná akce uživatele (UI:R) dávají 8,0, a ne 10.

Když máte podezření, že se kód spustil

Pokud jste rekurzivně klonovali repozitář neznámého původu a vidíte podivné chování: odpojte stroj od sítě, vyměňte SSH klíče, tokeny a hesla dostupná z daného účtu (z jiného zařízení) a projděte, kam se z něj dalo dostat. Organizace v Česku mohou incident hlásit NÚKIB, na Slovensku národnímu týmu SK-CERT.

Aktualizace

      1. 2026: Článek vydán. Opravená verze Gitu pro CVE-2026-111760 zatím není (ověřeno v advisory GHSA-vp2w-7xxj-jvxr).

Časté otázky

Týká se CVE-2026-111760 i obyčejného git clone?

Podle advisory správců Gitu se chyba dá vyvolat jen při použití --recurse-submodules. Běžné git clone bez tohoto přepínače submoduly neinicializuje ani nestahuje. Správci ale píšou, že to tak předpokládají, ne že to mají ověřené pro všechny případy – opatrnost se cizích repozitářů týká vždy.

Je už vydaná opravená verze Gitu?

K 12. 11. 2026 ne. Advisory GHSA-vp2w-7xxj-jvxr uvádí jako dotčené všechny verze a opravené žádné; opravy se podle něj teprve probírají v neveřejné e-mailové konferenci git-security. Článek doplníme, až opravené verze vyjdou.

Ochrání mě vypnutí hooků přes core.hooksPath?

Jen částečně. Advisory popisuje, že symbolický odkaz může vést do adresáře se škodlivou konfigurací nebo hooky. Vypnutí hooků tedy nepokrývá cestu přes konfiguraci. Spolehlivé je nepoužívat --recurse-submodules u nedůvěryhodných repozitářů.

Používáme GitHub Actions. Jsme ohrožení?

Akce actions/checkout má vstup submodules ve výchozím stavu false, takže submoduly sama nestahuje. Riziko vzniká, když máte submodules: true nebo recursive u workflow, které zpracovává kód z cizích zdrojů, nebo když skript v pipeline volá git clone --recurse-submodules.

Zdroje

  1. Git – Security advisory GHSA-vp2w-7xxj-jvxr: Recursive clones are susceptible to Remote Code Execution (CVE-2026-111760, 10. 11. 2026, anglicky)
  2. Git – Security advisory GHSA-8h77-4q3w-gfgv (CVE-2024-32002, anglicky)
  3. NVD – CVE-2024-32002 (anglicky)
  4. NVD – CVE-2025-48384 (anglicky)
  5. CISA – Known Exploited Vulnerabilities Catalog: CVE-2025-48384 (anglicky)
  6. Git – dokumentace git-clone, přepínač --recurse-submodules (anglicky)
  7. Git – dokumentace git-config: submodule.recurse, core.symlinks, core.hooksPath (anglicky)
  8. GitHub – actions/checkout, vstup submodules (anglicky)
  9. NÚKIB – Hlášení kybernetických bezpečnostních incidentů

Našli jste v článku chybu? Dejte nám vědět, opravu vyznačíme.