Co se stalo
Ruby on Rails je oblíbený framework pro tvorbu webových aplikací v jazyce Ruby. Jeho součástí je Active Storage, modul, který se stará o nahrávání souborů, třeba profilových fotek, dokumentů nebo příloh. U obrázků často využívá známý program ImageMagick, který z obrázku zjišťuje rozměry a další údaje.
Tým Rails 4. listopadu 2026 zveřejnil bezpečnostní upozornění GHSA-f3w6-w445-fwh9 a opravené verze 8.1.4.1 a 8.0.5.2. Chyba má označení CVE-2026-122006 a v evropské databázi zranitelností EUVD je vedena pod číslem EUVD-2026-116914. Rails ji hodnotí jako kritickou: aplikace může útočníkovi bez přihlášení umožnit zapisovat libovolné soubory na server a za určitých podmínek i číst soubory, ke kterým má aplikace přístup.
Chybu zodpovědně nahlásil výzkumník ryotak přes platformu HackerOne. Chyba zatím není v katalogu CISA KEV a EUVD neuvádí, že by byla zneužívána. Rails píše, že mu byl nahlášen jeden konkrétní způsob útoku, ale nepředpokládá, že je jediný. Stejná vydání opravují i několik dalších chyb v jiných částech Rails.
Proč je to nebezpečné
Jde o chybu typu „nebezpečné výchozí nastavení“ (CWE-1188). Active Storage neomezovalo žádné moduly ImageMagick. ImageMagick si podle obsahu souboru sám vybere, jak ho zpracuje, a některé jeho moduly nepracují jen se samotným obrázkem, ale i se soubory, na které se obrázek odkazuje.
Představte si podatelnu, kde úředník otevře každou doručenou obálku. Když v ní najde lístek „vyndej ze skříně šanon X a udělej s ním tohle“, poslušně to udělá, protože mu nikdo neřekl, že nesmí. Podobně se ImageMagick může nechat nahraným souborem navést k práci se soubory serveru.
Podstatné je, že stačí soubor jen připojit. Analýza obrázku se podle Rails spouští automaticky při nahrání, aplikace ho nemusí nijak dál upravovat. Útok vede přes internet, přes běžný formulář pro nahrání souboru. Pokud aplikace umožňuje nahrávat i bez přihlášení, útočník nepotřebuje žádný účet.
Rails uvádí, že útočník může zapisovat soubory na server. Pokud aplikace ukládá přílohy na lokální disk (služba Disk), může i číst soubory, ke kterým má aplikace přístup. Mezi nimi bývá secret_key_base a přístupové údaje k databázi či externím službám. To podle Rails může vést ke spuštění cizího kódu na serveru nebo k proniknutí do dalších systémů.
CVSS je stupnice závažnosti od 0 do 10. Skóre 9,8 (kritické) uvádí u tohoto CVE organizace MITRE a stejnou hodnotu má i upozornění Rails. Znamená útok přes síť, nízkou náročnost, žádné přihlášení a žádnou akci uživatele. Katalog CISA KEV je seznam chyb, jejichž zneužívání potvrdila americká agentura CISA. Tato chyba v něm zatím není, to ale neznamená, že se zneužívat nezačne.
Koho se to týká
Dotčen je balíček (gem) activestorage, součást Ruby on Rails:
- všechny verze nižší než 8.0.5.2
- verze od 8.1 nižší než 8.1.4.1
Podle Rails je aplikace zranitelná, jen pokud platí všechny tři podmínky současně:
- pro zpracování obrázků v Active Storage používá ImageMagick, tedy
config.active_storage.variant_processor = :mini_magick. Je to výchozí hodnota pro aplikace sload_defaults 6.1nebo starším. - ImageMagick běží s bezpečnostní politikou, která dotčené moduly ještě neblokuje. Politiky, které dodávají Debian a Ubuntu, je neblokují.
- aplikace umožňuje nahrávat soubory nedůvěryhodným uživatelům.
Typicky jde o e-shopy, zákaznické portály, interní systémy a SaaS služby postavené na Rails, které běží na linuxových serverech nebo v kontejnerech. Pokud vám aplikaci dodává externí firma, zeptejte se jí přímo. Netýká se to aplikací bez Active Storage, aplikací s jiným procesorem obrázků než :mini_magick ani těch, kde soubory nahrávají jen důvěryhodní lidé.
Jak zjistit, zda jste zasaženi
Následující příkazy pouze čtou informace a nic nemění. Spouštějte je v adresáři aplikace na serveru. Verze activestorage a mini_magick:
grep -E "activestorage|mini_magick" Gemfile.lock
Jaký procesor obrázků aplikace skutečně používá a jaké má load_defaults:
bundle exec rails runner -e production "p Rails.application.config.active_storage.variant_processor"
grep -n "load_defaults" config/application.rb
Kam se ukládají přílohy (hledejte service: Disk) a jakou politiku ImageMagick uplatňuje:
grep -rn "active_storage.service" config/environments/
cat config/storage.yml
identify -version
identify -list policy
Pokud je activestorage v dotčené verzi, procesor je :mini_magick a aplikace přijímá soubory od veřejnosti, považujte ji za zranitelnou. Pokud produkce používá službu Disk, týká se vás i výměna tajemství popsaná níže.
Jak to opravit
Opravené verze jsou activestorage 8.1.4.1 a 8.0.5.2. Přinášejí bezpečnostní politiku pro ImageMagick, která blokuje nebezpečné moduly a platí pro každý příkaz ImageMagick spuštěný přes MiniMagick. Politika se přidává k politice serveru, nenahrazuje ji.
Doporučený postup:
- Ověřte, zda jste zasaženi, a aktualizaci naplánujte co nejdříve.
- Aktualizujte Rails na 8.1.4.1 (větev 8.1) nebo 8.0.5.2 (větev 8.0), nejprve v testovacím prostředí.
- Při procesoru
:mini_magickpotřebujete imini_magick5.1 nebo novější. Se starším aplikace při startu skončí chybou. - Pokud aplikace přes ImageMagick vykresluje PostScript nebo PDF, musíte v systémovém
policy.xmlznovu povolit delegátgsa moduly, které používáte. - Pokud aplikace po startu přepisuje
MiniMagick.cli_env, čistí prostředí přesMiniMagick.cli_prefixnebo má vlastníMiniMagick::Shell, dodanou politiku nedostane a pravidla je nutné dát do systémové politiky ImageMagick. GraphicsMagick politiky ImageMagick nečte. - Otestujte nahrávání obrázků a nasaďte do produkce.
- Pokud ukládáte přílohy přes službu Disk, vyměňte tajemství podle sekce níže.
Pokud nemůžete aktualizovat hned, Rails doporučuje zkopírovat pravidla z activestorage/lib/active_storage/image_magick/policy.xml do systémové politiky ImageMagick, například /etc/ImageMagick-7/policy.xml. Minimálně zablokujte modul MSL, moduly Ghostscript a delegát gs:
<policy domain="coder" rights="none" pattern="MSL" />
<policy domain="delegate" rights="none" pattern="gs" />
<policy domain="coder" rights="none" pattern="{PS,PS2,PS3,EPS,EPS2,EPS3,EPI,EPSF,EPSI,EPT,EPT2,EPT3,PDF,AI,EPDF,PDFA,POCKETMOD,XPS,PCL}" />
Rails zveřejnil i samostatné záplaty pro ty, kdo nemohou přejít na novou verzi: commit 468aa9a pro 8.1 a ea8c401 pro 8.0. Úprava systémové politiky je jen dočasná pojistka a aktualizaci nenahrazuje.
Co když už jste mohli být napadeni
Rails nezveřejnil konkrétní indikátory napadení. Pokud byla vaše aplikace zranitelná a přijímala soubory od veřejnosti, počítejte s tím, že útočník mohl na server zapisovat soubory. Při ukládání příloh přes službu Disk mohla uniknout i tajemství.
Pokud ukládáte přílohy přes službu Disk, Rails doporučuje vyměnit secret_key_base a všechna tajemství, která aplikace vidí: master key, vše v config/credentials.yml.enc, přístupy k úložišti a databázi i tokeny třetích stran. Starý klíč si nenechávejte jako záložní.
Na co se podívat:
- logy aplikace a webového serveru: neobvykle mnoho nahrávání, nahrávání z neznámých adres nebo nahrávání končící chybou ImageMagick
- nové nebo změněné soubory v adresáři aplikace, v dočasných adresářích a v úložišti Active Storage
- neznámé účty v aplikaci, nové SSH klíče nebo úlohy v
cron - neobvyklá přihlášení do databáze, úložiště a externích služeb, ke kterým má aplikace přístup
Pokud najdete něco podezřelého nebo aplikace zpracovává citlivé údaje zákazníků, přizvěte odborníka na řešení incidentů. Před zásahem si zálohujte logy, aby se zachovaly stopy. Při úniku osobních údajů myslete i na ohlašovací povinnost podle GDPR.