Společnost Valve aktualizovala přehled o hardwarovém a softwarovém vybavení uživatelů služby Steam. Podíl uživatelů Linuxu dosáhl 3,2 %. Nejčastěji používané linuxové distribuce jsou Arch Linux, Linux Mint a Ubuntu. Při výběru jenom Linuxu vede SteamOS Holo s 26,42 %. Procesor AMD používá 66,72 % hráčů na Linuxu.
Canonical oznámil (YouTube), že nově nabízí svou podporu Ubuntu Pro také pro instance Ubuntu na WSL (Windows Subsystem for Linux).
Samsung představil svůj nejnovější chytrý telefon Galaxy Z TriFold (YouTube). Skládačka se nerozkládá jednou, ale hned dvakrát, a nabízí displej s úhlopříčkou 10 palců. V České republice nebude tento model dostupný.
Armbian, tj. linuxová distribuce založená na Debianu a Ubuntu optimalizovaná pro jednodeskové počítače na platformě ARM a RISC-V, ke stažení ale také pro Intel a AMD, byl vydán ve verzi 25.11.1. Přehled novinek v Changelogu.
Byla vydána nová verze 15.0 svobodného unixového operačního systému FreeBSD. Podrobný přehled novinek v poznámkách k vydání.
UBports, nadace a komunita kolem Ubuntu pro telefony a tablety Ubuntu Touch, vydala Ubuntu Touch 24.04 1.1 a 20.04 OTA-11. Vedle oprav chyb a drobných vylepšení je řešen také středně závažný bezpečnostní problém.
I letos vyšla řada ajťáckých adventních kalendářů: Advent of Code 2025, Perl Advent Calendar 2025, CSS Advent Calendar 2025, Advent of A11Y 2025, Advent of AI Security 2025, Advent of Agents (in Google) 2025, Advent of Svelte 2025, …
Fedora zve na dvoudenní testování (2. a 3. prosince), během kterého si můžete vyzkoušet nové webové uživatelské rozhraní (WebUI) projektu FreeIPA. Pomozte vychytat veškeré chyby a vylepšit uživatelskou zkušenost ještě předtím, než se tato verze dostane k uživatelům Fedory a celého linuxového ekosystému.
Eben Upton oznámil zdražení počítačů Raspberry Pi, kvůli růstu cen pamětí, a představil 1GB verzi Raspberry Pi 5 za 45 dolarů.
Linus Torvalds na YouTube kanálu Linus Tech Tips staví dokonalý linuxový počítač.
Třetí programátorská hádanka byla trochu složitější, tak jsem se rozhodl vše objasnit v extra článku. Vlastní hádanku naleznete zde.
Když zadává útočník název souboru, může zadat např. toto:
skript.php%00
kde to %00 znamená nulový znak - znak s ASCII hodnotou nula. Co se v takovém případě stane?
PHP, stejně jako prakticky každý skriptovací jazyk, bere řetězec jako objekt. Tedy nějaké pole znaků a číslo udávající délku tohoto pole (řetězce). Nulový znak v takové reprezentaci nemá nějaké zvláštní postavení - pracuje se s ním stejně jako s jiným a většinou to ničemu nevadí. Z pohledu PHP tedy nebude název končit „.php“, ale „php\x00“.
Jiné je to při zápisu do souboru. Zápis do souboru je systémové volání a je nutno zavolat funkce jádra na otevření souboru. Všechna jádra současných rozumně používaných systémů jsou psané v Céčku (popř. C++) a očekávají „céčkovou“ reprezentaci řetězce. Tedy ukazatel někam do paměti, kde je posloupnost bajtů ukončených nulovým znakem. V praxi to probíhá tak, že prostě PHP alokuje někde paměť, tam překopíruje tu svoji reprezentaci řetězce, na konec hodí nulu a tenhle buffer předá jádru.
A tady je kámen úrazu. Pokud je nulový znak už v řetězci, PHP ho zkopíruje jako každý jiný znak, avšak jádro se při hledání konce názvu zastaví už na něm (namísto na tom koncovém). Takže se název zkrátí. Schválně si zkuste spustit kód
#!/usr/bin/php
<?php
$nazev = "soubor.php\x00.txt";
if (SubStr($nazev,-4) == '.txt')
File_Put_Contents($nazev,'hack
');
?>
Co se stane? Ověří se, že soubor končí na „.txt“, ale na disku vznikne soubor „soubor.php“. Pěkné, že?
Takto se dají krásně obejít i kontroly, končí-li např. název na .jpg atd.
Předně, není dobré zapisovat soubory tam, odkud by byly spustitelné. Dále není dobré soubory ukládat pod jejich správným názvem, protože kromě bezpečnosti to nemusí být praktické, často je lepší jako jméno volit např. nějaký hash a metainformace, jako je název nebo typ, ukládat např. do databáze. A za další, vždy platí zlaté pravidlo: nezakazujte věci, které se udělat nesmí (blacklist), ale naopak jen povolte věci, o kterých víte, že jsou bezpečné (whitelist). V tomto případě by se asi jednalo o regulární výraz na jasně danou množinu znaků.
Poslední možností je prostě zkontrolovat název souboru na přítomnost nulového znaku. Popravdě, nikdy jsem neviděl, že by toto bylo někdy explicitně ošetřeno. Nicméně při správně nastaveném serveru by nemělo hrozit žádné riziko.
Na tuto chybu jako první v komentářích upozornil AraxoN - gratuluji 
Další bezpečnostní chybou, kterou tento kód má, že povoluje zapsání souboru .htaccess. Pokud je jeho použití na serveru povoleno, lze pomocí něj definovat libovolné soubory jako PHP skripty, např. takto:
AddType application/x-httpd-php .txt
Tato chyba mě předtím nenapadla, díky za upozornění darkovi.
Pokud by server běžel na Windows, bylo by potřeba vyřešit ještě dvě chyby:
Trim() (resp. RTrim()).Mimochodem, spousta z vás hlasovala v anketě, že příklad je lehký, i když se ještě v diskusi neobjevila žádná správná odpověď. Zvláštní
Zeptám se proto ještě jednou (a odpovídejte po pravdě
):
Tiskni
Sdílej:
Další bezpečnostní chybou, kterou tento kód má, že povoluje zapsání souboru .htaccess. Pokud je jeho použití na serveru povoleno, lze pomocí něj definovat libovolné soubory jako PHP skripty, např. taktoI když je povoleno, nemusí být AddType v .htaccess účinné. Záleží na způsobu zpracování PHP serverem.AddType application/x-httpd-php .txt
Mimochodem, spousta z vás hlasovala v anketě, že příklad je lehký, i když se ještě v diskusi neobjevila žádná správná odpověď. ZvláštníTo protože nechtěli kazit zábavu těm později čtoucímZeptám se proto ještě jednou (a odpovídejte po pravdě
Přesně to mě napadlo taky - kontrolovat příponu v linuxu? (Jinak - abych nemachroval - bych na ten exploit samozřejmě nepřišel.)
hehe
)
Response Headers:
... Server: Jetty(6.1.11) 200 OK
Takže nie, abíčko nebeží na Apachi.
com.caucho.quercus.lib.db.Mysqli to vypadá, že tam s kódováním znaků skutečně něco šaší:
Tak nevím. Hádám, že je asi trápí jiné věci, než internacionalizace, ale hádám, že hacknout by to šlo (kdyby se upravila i ta část, která converts StringValues to Strings).// Explicitly indicate that we want iso-8859-1 encoding so // we would know what encoding to use to convert StringValues // to Strings // php/140b
protected static final String ENCODING = "ISO8859_1";
O ten Apache mi šlo preto, že je obecne považovaný za veľmi výkonný server a dobre škáluje. Určite aj preňho existuje nejaký Java modul, veľmi by som sa čudoval, keby nie. Veď máme aj mod_lisp
Takže tipujem, že to Jetty je tam preto, že je to default voľba, nie preto, že by niekto testoval rozdiel vo výkone oproti Apachu?
To PHP som spomínal len z toho dôvodu, že jazyk servera a jazyk, ktorým sa spracúvajú skripty nijak nesúvisia. Pokojne môžete cez Jetty servovať len PHP. Praktickú otázku nasadenia PHP pre abíčko (čo je úplná blbosť) som samozrejme nemyslel 
O ten Apache mi šlo preto, že je obecne považovaný za veľmi výkonný server a dobre škáluje.
To je vtip?
Ale je! Sám jsem v dobách pokusů s Java EE napsal servlet pro servírování statického obsahu. A na správně nastaveném Glassfishi jsem dosahoval desetinásobně lepších výkonů. A to je celý HTTPD napsaný v C.
Pravda, Apachí web server byl trošku v nevýhodě, ale koho to dnes zajímá. 
Aha, ďakujem za objasnenie. Netušim som, že Apache nemá žiadny modul pre Javu. To všetci používajú Jetty? Alebo sú aj iné možnosti?
Asi máte pravdu, že pre jazyky, ktoré len nespracúvajú skripty, ale skutočne bežia ako celistvá aplikácia je výhodnejšie mať špecializovaný server priamo v jazyku (napríklad aj Seaside to tak má, ak sa nemýlim).
Nicméně při správně nastaveném serveru by nemělo hrozit žádné riziko. ... i když se ještě v diskusi neobjevila žádná správná odpověďne ze bych tady tem vecem rozumel, ale vybavuju si, ze kdysi jsem cetl v knizce Zranitelny kod (ci tak nejak se to jmenovalo) prave o teto chybe. Autor upozornuje na nebezpeci nuloveho znaku, ale jestli se dobre pamatuju, tak to bere spis jako chybu ve webovem serveru nez v programu (ve smyslu, ze je tohle je taky dobre osetrit, protoze ve web serveru to osetreno byt nemusi). Treba proto nikdo neodpovedel spravne, protoze tohle vetsina lidi nepovazovala primarne za chybu v programu (tohle byl treba muj pripad, ale ja ani nehlasoval v ankete)
>>> nazov = "test.txt\x00" >>> file_obj = open(nazov, "w") Traceback (most recent call last): File "<stdin>", line 1, in <module> TypeError: file() argument 1 must be encoded string without NULL bytes, not str
Též bych řekl, že by to high level jazyky měly nějak ošetřovat. On vůbec ten null znak je dost podivna věc, která má IMHO smysl jen v C.
Ale souhlasim s tim, ze string by mel byt neco abstraktniho, bez jakehokoli vlivu toho jake znaky v nem jsou. Ta fopen by mela nebezpecne znaky ignorovat. Nejhorsi na tom je to, jak jsou ty obycejne nulou koncene stringy zazrane v systemu. Tyhle koule na noze se unix asi nezbavi ...