Byly objeveny chyby v Sandboxu v Latte
- David Grudl
- Nette Core | 8218
Pokud používáte šablony z nedůvěryhodného zdroje v Sandboxu v Latte, aktualizujte na poslední verze 2.8.8, 2.9.6, 2.10.8, kde jsou opravené všechny objevené zranitelnosti.
Pokud sandbox a nedůvěryhodné šablony nepoužíváte, aktualizovat nemusíte.
Zranitelnosti objevili: 赵钰迪, JinYiTong
- David Grudl
- Nette Core | 8218
Pro zajímavost šlo o následující chyby:
- Pokud V PHP za názvem funkce napíšete kontrolní znak (např.
"exec\x00()"
), PHP 8 to nechápe jako volání funkce, ale jako nevalidní kód, takže ani sandbox v Latte jej neošetřuje. Bohužel PHP 7.x takový kód vykoná, takže Latte situaci nyní řeší tak, že zakazuje jakékoliv kontrolní znaky v šabloně. issue (credits: 赵钰迪, JinYiTong) - Druhý problém se týkal toho, že sandbox neošetřoval komplexní výrazy
uvnitř řetězců. Tipuju, že málokdo ví, že v PHP znamenají zpětné
uvozovky totéž co
shell_exec(). Latte je proto nedovoluje používat, ani mimo sandbox. Co
jsem ale netušil, že takto fungují i uvnitř stringu. Tohle "${`ls`}";
spustí
ls
. V sandboxu jsou proto komplexní výrazy v řetězcích zakázané. (credits: 赵钰迪) - Třetí problém se týkal zpracování komentářů, především toho, že
Latte parser nepodporoval jednořádkové PHP komentáře
//
. Nepodporuje je stále, ale teď na to upozorní, aby nevznikl chybný výsledný kod. (credits: 赵钰迪)