CVE-2020–15227: Chyba potenciálně umožňující vzdálené spuštění kódu
Vůbec poprvé za 13letou historii Nette v něm byla objevena bezpečnostní chyba. Našel ji vývojář z malebného Taiwanu. Jde o chybu závažnou, která může za určitých okolností vést k vzdálenému vykonání kódu.
Chyba dovoluje útočníkovi za určitých okolností na některých webech pomocí speciálně sestaveného URL vykonat PHP kód. Bližší popis mechanismu útoku nebudeme zveřejňovat.
K dispozici je oprava pro úplně všechny postižené verze Nette, tj. počínaje verzí 2.0. Ta už sice není přes 6 let udržovaná, ale Nette si na bezpečnosti velmi zakládá a proto vyšly i opravy nepodporovaných verzí.
Aktualizujte prosím co nejdříve na nejnovější setinkové verze:
- nette/application 3.0.6 (případně 3.0.2.1, 3.1.0-RC2 nebo dev)
- nette/application 2.4.16
- nette/application 2.3.14
- nette/application 2.2.10
- nette/nette 2.1.13
- nette/nette 2.0.19
Chtěli bychom poděkovat Cyku Hong z DEVCORE, který zranitelnost objevil a nahlásil.
O chybě byli neprodleně informování všichni partneři Nette e-mailem, aby měli dostatečný čas záplatovat weby dříve, než vyjde informace veřejně.
Aktualizace pomocí Composeru
Obvykle stačí v projektu zavolat composer update
a stáhnou
se aktuální verze všech balíčků. Pro aktualizaci jen konkrétního
balíčku použijte např. composer update nette/application.
Jakou máte nainstalovanou verzi jednotlivých balíčků zjistíte
příkazem composer show
.
Pozor, Composer je potřeba spustit se stejnou verzí PHP, jako je na hostingu, nebo doplnit verzi do composer.json, viz dokumentace.
Aktualizace stažením balíčku
Pokud místo Composeru používáte distribuční balíčky, můžete si je stáhnout z archivu.
Nejrychlejší oprava
Michal Špaček připravil Linuxový skript (+ obdoba v PHP), který automaticky aplikuje patch přímo do zdrojových kódů Nette na disku. Hodí se v případě, že udržujete velké množství projektů, které nemáte prostor korektně aktualizovat pomocí Composeru.
Komentáře
https://files.nette.org/…k-2.1.13.zip → obsahuje verzi 2.1.12
viz. např. záhlaví v minifikované verzi → Nette Framework (version 2.1.12 released on 2015–12–03
či v loader.php → Nette Framework (version 2.1.12 released on 2015–12–03
či v class Framework → const NAME = ‚Nette Framework‘,
VERSION = ‚2.1.12‘,
VERSION_ID = 20112,
REVISION = ‚released on 2015–12–03‘;
Asi se vloudila chybička.
Radek
#1 ras opraveno
Asi je nějaká chybka i v označení verze/revize u 2.2 a 2.3:
https://files.nette.org/…20201001.zip
class Framework
REVISION = ‚released on 2016–04–13‘
https://files.nette.org/…e-2.2.14.zip
class Framework
VERSION = ‚2.2.13‘,
VERSION_ID = 20213,
REVISION = ‚released on 2016–04–13‘;
#3 lukas.haj tam už se po rozdělení Nette na jednotlivé composerové balíčky přestalo verzovat
Narazil jsem na to, že meta balíček pro nette 2.3 nebyl aktualizován, byť ho některé projekty ještě používají, pro ně tedy buď rozpad na balíčky a nebo explicitní 2.3.14 as 2.3.11, kterou 2.3.9 i 2.3.10 explicitně vyžadují.
#5 repli2dev V tom jsem se úplně ztratil.
Metabalíček nette/nette 2.3.10 má otevřenou závislost na nette/application, takže composer update by měl nainstalovat nejnovější verzi.
#6 ano, na GitHubu jsem taky koukal, že je ta závislost otevřená, přesto jsem narazil na projekt, ve kterém to via composer upgrade nette/application nešlo aktualizovat a když jsem zkoušel vyžádat přímo tu verzi, tak mi řekl, že je konfliktní s tím co vyžaduje nette/nette, pro které jsem v composer.lock dohledal „nette/application“: „2.3.11“…
Da se prosim nekde stahnout verze nette 2.0.19 jako ZIP? V gitu to nemuzu najit. DIky
#8 tom Uz jsem to nasel https://files.nette.org/releases/2.0/
Myslel jsem, že composer require nette/nette:dev-master mi už nainstaluje opravenou verzi nette/application, ale zjistil jsem, že je nutné potom ještě explicitně uvést composer require nette/application:3.1-dev nebo 3.0.6 .
Tupě se zeptám…
tedy toto v sekci require:
„nette/nette“: „~2.3.0“,
změním na:
„nette/application“: „2.3.14“,
a spustím: „composer update nette/application“
Mate ta změna jména balíčku.
Díky moc!
Doplnil jsem do článku ještě stručný postup aktualizace.
#11 Eve v sekci require nic potřeba měnit není, stačí jen
composer update nette/application
Davide, můžeš prosím vydat i opravený release verze 3.1-RC? Už to používám na produkci a nerad bych dělal downgrade.
Chcete-li odeslat komentář, přihlaste se