Čo sa stalo
OpenMage Magento LTS je komunitou udržiavané pokračovanie e-shopového systému Magento 1, ktorý pôvodný výrobca prestal podporovať v roku 2020. Tím OpenMage zverejnil 26. októbra 2026 bezpečnostné upozornenie GHSA-grrq-9gq2-vm55 a chybu v ňom označil ako kritickú. Spoločnosť VulnCheck ju opísala 12. novembra 2026 a v databáze NVD je od 13. novembra 2026 pod označením CVE-2026-128049.
Chyba je v kroku, ktorým správca alebo zákazník schvaľuje externej aplikácii prístup k obchodu cez rozhranie REST API (schvaľovanie typu OAuth). Schválenie sa dalo potvrdiť obyčajným otvorením odkazu, bez kontroly, či ho človek naozaj chcel potvrdiť. Útočník, ktorý má prístupové údaje zaregistrovanej aplikácie, tak môže prihláseného správcu nalákať na pripravený odkaz a získať trvalý prístup k API v jeho mene.
Chybu nahlásilo súkromne cez platformu HackerOne viacero výskumníkov nezávisle od seba. OpenMage v upozornení neuvádza, že by bola zneužitá. Nie je ani v katalógu CISA KEV a európska databáza zraniteľností EUVD pri nej zneužívanie neeviduje.
Prečo je to nebezpečné
Ide o typ chyby CSRF (cross-site request forgery, teda podvrhnutá požiadavka z inej stránky). Prehliadač pri každej návšteve obchodu automaticky posiela aj vaše prihlásenie. Ak obchod nekontroluje, či akciu naozaj spustil človek v jeho vlastnom formulári, stačí, aby obeť otvorila odkaz v e-maile alebo na inom webe, a obchod akciu vykoná, akoby ju potvrdila sama. Je to, ako keby vám niekto podstrčil plnú moc a za podpísanú by sa považovala už vtedy, keď sa na ňu pozriete.
Výsledkom je prístupový token k REST API viazaný na obeť, teda na správcu alebo zákazníka. Funguje nezávisle od jej prihlásenia v prehliadači a platí, kým ho niekto nezruší. Podľa OpenMage je token správcu užitočný len vtedy, ak má správca pridelenú REST rolu. Útočník potom získa všetko, čo táto rola dovoľuje, čo v obchodoch používajúcich API zvyčajne znamená čítanie a menenie údajov o zákazníkoch, objednávkach, produktoch a zásobách.
Útok ide cez internet, no nemôže ho spraviť hocikto. Útočník potrebuje platné prístupové údaje OAuth aplikácie, teda oprávnenie na úrovni integrátora, nie účet správcu. Obeť musí byť prihlásená a musí odkaz otvoriť.
OpenMage aj spoločnosť VulnCheck hodnotia chybu skóre 9,0 z 10 podľa CVSS 3.1, čo je kritická úroveň. VulnCheck uvádza aj hodnotenie podľa novšej verzie CVSS 4.0, a to 9,4. CVSS meria závažnosť, nie to, či chybu niekto zneužíva. Na to slúži katalóg CISA KEV s potvrdene zneužívanými chybami, v ktorom táto nie je. Skóre EPSS, ktoré odhaduje pravdepodobnosť zneužitia v najbližších 30 dňoch, je približne 0,23 %, čo je nízka hodnota.
Koho sa to týka
Týka sa to obchodov na OpenMage Magento LTS vo všetkých verziách starších ako 20.18.2. Zasiahnutá je aj vývojová rada 21.x od 21.0.0-beta1 po verziu pred 21.0.0-beta3. Chyba je v administrácii aj v zákazníckej časti obchodu.
OpenMage zvyčajne beží na webhostingu alebo vlastnom serveri s PHP, často v obchodoch, ktoré začínali na Magento 1 a neprešli na Magento 2. Najväčšie riziko majú obchody, ktoré cez REST API prepájajú ERP, sklad, účtovníctvo alebo trhoviská a majú správcov s pridelenou REST rolou.
- Ak REST API nepoužívate a nemáte zaregistrovanú žiadnu OAuth aplikáciu, útočník nemá s čím začať. Aktualizovať by ste aj tak mali.
- Magento 2 a Adobe Commerce sú samostatné produkty a upozornenie OpenMage sa na ne nevzťahuje.
- Či je zasiahnuté aj pôvodné Magento 1, OpenMage neuvádza. Taký obchod však od roku 2020 nedostáva bezpečnostné opravy a je rizikový sám osebe.
Ako zistiť, či ste zasiahnutí
Verziu zistíte v adresári, kde je obchod nainštalovaný. Ak ste ho inštalovali cez Composer, pozrite sa na riadok versions vo výpise:
composer show openmage/magento-lts
Bez Composera vypíšete verziu priamo cez PHP. Príkaz len načíta jadro obchodu a nič nemení:
php -r 'require "app/Mage.php"; echo Mage::getOpenMageVersion(), PHP_EOL;'
V administrácii potom skontrolujte System › Web Services › REST OAuth Consumers, či máte zaregistrované OAuth aplikácie, a System › Web Services › REST Roles, či majú niektorí správcovia pridelenú REST rolu. Ak áno a verzia je zraniteľná, aktualizácia je naliehavá.
Ako to opraviť
Opravené verzie sú 20.18.2 a 20.19.0, pre vývojovú radu 21.x je to 21.0.0-beta3. Po oprave potvrdenie prístupu OAuth vyžaduje odoslanie formulára s ochranným kľúčom. Obyčajné otvorenie schvaľovacieho odkazu vráti chybu 404.
- 1. Ak nemôžete aktualizovať hneď, ešte dnes zaveďte dočasné opatrenia nižšie.
- 2. Zálohujte súbory aj databázu obchodu.
- 3. Aktualizáciu vyskúšajte najprv na testovacej kópii. Ak vaša téma prepisuje šablóny
oauth/authorize/button.phtmlalebobutton-simple.phtml, upravte ich podľa novej verzie, inak schvaľovanie integrácií prestane fungovať. - 4. Aktualizujte na 20.19.0 alebo 20.18.2, napríklad cez Composer, a vyčistite cache.
- 5. Overte verziu a vyskúšajte, či fungujú vaše integrácie.
- 6. Prejdite vydané tokeny a OAuth aplikácie podľa poslednej sekcie.
Dočasné opatrenia, ktoré odporúča OpenMage:
- Ak REST API nepoužívate, odstráňte alebo vypnite všetky OAuth aplikácie v System › Web Services › REST OAuth Consumers.
- Zrušte aplikácie, ktorým úplne nedôverujete, a skontrolujte vydané tokeny.
- Nepriraďujte REST roly správcom, ktorí prístup k API nepotrebujú.
- Obmedzte prístup k administrácii, napríklad len na vybrané IP adresy alebo cez VPN.
Čo ak už ste mohli byť napadnutí
Ukradnutý token platí, kým ho nezrušíte, a samotná aktualizácia ho neodstráni. Preto po oprave skontrolujte:
- System › Web Services › REST OAuth Authorized Tokens: tokeny, ktoré nepoznáte, zrušte.
- REST My Apps pri účtoch správcov a My Applications v zákazníckych účtoch.
- OAuth aplikácie, ktoré nepoznáte, a REST roly s neprimerane širokými právami.
- Nečakané zmeny cien, produktov, zásob, objednávok alebo údajov zákazníkov.
V logoch webového servera môžete hľadať požiadavky na schvaľovacie adresy OAuth. Logy sú zvyčajne v /var/log/apache2/, /var/log/httpd/ alebo /var/log/nginx/, na webhostingu ich nájdete v administrácii hostingu. Takéto požiadavky pred opravou zanechávali aj bežné integrácie, preto ich porovnajte s tým, kedy ste naozaj pripájali nejakú aplikáciu.
zgrep -E "oauth(_authorize|/authorize)/confirm" /var/log/apache2/*access* /var/log/httpd/*access* /var/log/nginx/*access* 2>/dev/null
Ak nájdete token, ktorý nikto nevie vysvetliť, zrušte ho aj s aplikáciou, vymeňte kľúče integrácií a prizvite odborníka na bezpečnosť. Ak došlo k úniku osobných údajov, GDPR spravidla vyžaduje ohlásiť ho do 72 hodín od zistenia dozornému orgánu. Na Slovensku je to Úrad na ochranu osobných údajov SR, v Česku Úřad pro ochranu osobních údajů.