Microsoft se vyhnul pokutě od Evropské komise za zneužívání svého dominantního postavení na trhu v souvislosti s aplikací Teams. S komisí se dohodl na závazcích, které slíbil splnit. Unijní exekutivě se nelíbilo, že firma svazuje svůj nástroj pro chatování a videohovory Teams se sadou kancelářských programů Office. Microsoft nyní slíbil jasné oddělení aplikace od kancelářských nástrojů, jako jsou Word, Excel a Outlook. Na Microsoft si
… více »Samba (Wikipedie), svobodná implementace SMB a Active Directory, byla vydána ve verzi 4.23.0. Počínaje verzí Samba 4.23 jsou unixová rozšíření SMB3 ve výchozím nastavení povolena. Přidána byla podpora SMB3 přes QUIC. Nová utilita smb_prometheus_endpoint exportuje metriky ve formátu Prometheus.
Správcovský tým repozitáře F-Droid pro Android sdílí doporučení, jak řešit žádosti o odstranění nelegálního obsahu. Základem je mít nastavené formální procesy, vyhrazenou e-mailovou adresu a být transparentní. Zdůrazňují také důležitost volby jurisdikce (F-Droid je v Nizozemsku).
Byly publikovány informace o další zranitelnosti v procesorech. Nejnovější zranitelnost byla pojmenována VMScape (CVE-2025-40300, GitHub) a v upstream Linuxech je již opravena. Jedná se o variantu Spectre. KVM host může číst data z uživatelského prostoru hypervizoru, např. QEMU.
V červenci loňského roku organizace Apache Software Foundation (ASF) oznámila, že se částečně přestane dopouštět kulturní apropriace a změní své logo. Dnes bylo nové logo představeno. "Indiánské pírko" bylo nahrazeno dubovým listem a text Apache Software Foundation zkratkou ASF. Slovo Apache se bude "zatím" dál používat. Oficiální název organizace zůstává Apache Software Foundation, stejně jako názvy projektů, například Apache HTTP Server.
Byla vydána (𝕏) srpnová aktualizace aneb nová verze 1.104 editoru zdrojových kódů Visual Studio Code (Wikipedie). Přehled novinek i s náhledy a videi v poznámkách k vydání. Ve verzi 1.104 vyjde také VSCodium, tj. komunitní sestavení Visual Studia Code bez telemetrie a licenčních podmínek Microsoftu.
Spotify spustilo přehrávání v bezztrátové kvalitě. V předplatném Spotify Premium.
Spoluzakladatel a předseda správní rady americké softwarové společnosti Oracle Larry Ellison vystřídal spoluzakladatele automobilky Tesla a dalších firem Elona Muska na postu nejbohatšího člověka světa. Hodnota Ellisonova majetku díky dnešnímu prudkému posílení ceny akcií Oraclu odpoledne vykazovala nárůst o více než 100 miliard dolarů a dosáhla 393 miliard USD (zhruba 8,2 bilionu Kč). Hodnota Muskova majetku činila zhruba 385 miliard dolarů.
Bylo vydáno Eclipse IDE 2025-09 aneb Eclipse 4.37. Představení novinek tohoto integrovaného vývojového prostředí také na YouTube.
T-Mobile od 15. září zpřístupňuje RCS (Rich Communication Services) zprávy i pro iPhone.
Bezpečnost je značně ošemetná věc, se kterou si nikdy nemůžete být stoprocentně jistí. Poznáte, co je špatně na následujícím kusu PHP kódu? Podotýkám, že se jedná o velice rozšířenou chybu, ale málokdo si ji uvědomuje.
Mějme webovou aplikaci, kam může uživatel posílat své soubory. Kromě samotného souboru volí i jeho název. Všechny soubory musí být uloženy do adresáře „soubory“. Z nějakého důvodu se v tomto adresáři interpretují PHP skripty, takže je nutno ohlídat, aby soubor neměl příponu „.php“. Kromě toho je třeba hlídat, aby vetřelec nemohl zapsat nic mimo tento adresář.
Skript je následující:
function JeBezpecnySoubor($nazev) {
$malymi = StrToLower($nazev);
if (SubStr($malymi,-4) == '.php')
return false;
if (StrPos($malymi,'/') !== false)
return false;
return true;
}
if (JeBezpecnySoubor($_GET['nazev_souboru'])) {
$fp = FOpen('soubory/'.$_GET['nazev_souboru'], 'w');
...a tak dále
Neuvažujte jiné ošetřované přípony než „.php“ a jiný oddělovač adresářů než lomítko. Server běží na standardním unixovým stroji, ale podobně by to fungovalo prakticky kdekoliv. Neuvažujte jako chybu možnost přepsání souboru. Chyba se netýká žádných speciálních vlastností PHP.
Aktualizace: Správné řešení jako první objevil AraxoN, jinou chybu objevil dark. Gratuluji Tato hádanka byla myslím celkem těžká, řešení jsem proto popsal v samostatném článku.
Tiskni
Sdílej:
V php se moc nevyznám, ale kdyby uživatel poslal soubor s názvem ".." tak dostane zápisové právo do nadřazeného adresáře?
nechci to zkoušet, ale nešlo by $_GET['nazev_souboru']
dát třeba "osklivyskript.php?neco=jpg"
?
ne, samozřejmě že nešlo ;)
Ja tam vidím len to, že môže prepísať iné súbory, ktoré tam už sú, ale to asi nebude tá chyba, lebo to by bolo príliš jednoduché.
Zkusím vylučovací metodu:
1) Pokud to zde je napsané, asi na tom něco bude, tedy kód není čistý
2) V podmínce je, že jsou v daném adresáři i skripty (což je na pováženou, ale budiž), takže spuštění skriptu v tom adresáři je podmínka nebezpečnosti
3) V php nedělám, ale kód nepustí soubor s příponou .php a lomítkem. Nejedná se tedy o bezpečnosti typu přepsání souboru mimo tento adresář (takže riziko se bude odehrávat nejspíš v daném adresáři)
4) Kód neošetřuje .htaccess, je riziko spojené s tímto?
Ke čtvrtému bodu:
Wow, soubor .htaccess by to opravdu vzalo a pomocí něj by se např. daly definovat jako PHP skripty i soubory s jinou příponou, které by aplikace pustila. Takže ano, gratuluji, na jednu chybu jste přišel
Nicméně tuto chybu jsem neměl na mysli, hledejte dál
Soubor s hesly by měl být někde úplně mimo (třeba v /etc).
Neberu to jako webserver, ale jako webovou aplikaci – tu si můžeš klidně nainstalovat jako baliček systému a je celkem normální, aby měla svůj adresář v /etc, jako všechny ostatní aplikace.
Pokud je to na webhostingu nebo je potřeba tu aplikaci provozovat ve víc instancích, je spráné, abys měl strukturu třeba:
/var/www/virtual/nějakáDoména/htdocs/ ← tohle zprístupní apache přes HTTP /var/www/virtual/nějakáDoména/etc/ ← tady budou soubory s hesly /var/www/virtual/nějakáDoména/dalšíAdresář/ ← třeba zálohy nebo nějaké dočasné soubory
Každopádně bych dal soubor s hesly mimo adresář, který je zpřístupněný přes HTTP a nespolíhal bych se jen na ochranu pomocí .htaccess nebo dokonce ochranu pomocí aplikace.
Tak to asi mám... alebo som objavil ešte nejakú inú chybu.
Ak $_GET['nazev_souboru']
obsahuje na konci znak \0 (nulový bajt), tak substr() vráti "php\0" a nie ".php", lebo dĺžku reťazca PHP nevedie podľa znaku \0. Naproti tomu fopen() predá parameter volaniu API OS, ktorý je v C-čku, znak \0 pre neho znamená koniec reťazca a všetko počnúc týmto znakom už neberie do úvahy.
fuj.php\0.txt
neprojde? Nebo od kdy to php zahazuje?
Btw. afaik sa pomocou GET nedajú uploadovať súbory...
Ha, on je zásadní rozdíl mezi HTTP metodou GET a PHP proměnnou GET. Ta druhá „funguje“ i u ostatních metod, prostě jsou do ní zpracovány parametry z URL...
A není to vzhledem k problému úplně fuck?
POST i GET se dají míchat dohromady:
<?php echo ($_REQUEST["foo"] . "<br/>"); echo ($_REQUEST["bar"] . "<br/>"); ?> <form action="hack.php?foo=nazdar" method="post"> <input type="text" name="bar" value="bazar"/> <button>poslat</button> </form>
(neřešte validitu HTML, je to jen malý příklad)
Takže GETem můžeš poslat třeba název souboru a POSTem samotný soubor (ale je otázka, proč by to tak chtěl někdo dělat, když může POSTem poslat všechno).
Tohle funguje:
<?php $jmeno = "hack.php\0"; $fp = FOpen($jmeno, "rw"); $obsah = fread($fp, filesize($jmeno)); fclose($fp); echo(nl2br(htmlspecialchars($obsah))); ?>
Výpíše soubor „hack.php“. Ale ta \0 je přímo v PHP kódu, když se ji tam snažíš procpat přes GET, tak se asi někde ztratí.
?promenna=neco%00neco
, tak tam ten nulový bajt opravdu je…
Tak proč to harovi nefunguje?
FOpen
považuje a SubStr
nepovažuje – taková blbost, ale kolik to dokáže nadělat škody, co?
IMHO je zásadní chyba, že se testují jen některé části jména. Správný přístup je pomocí regulárních výrazů přesně definovat, jak jméno souboru má vypadat...
Jiste, p*čoviny se dají dělat i s pomocí regexp... klidně se tam dá rovnou dát „^.*$“, že ano...
^[a-z0-9]+\.[a-z0-9]+$Ale test na příponu bych musel udělat stejně zvlášť.
Máte pravdu, to mě prvně nenapadlo. To je další vážná chyba.
Neumim PHP ani programovat weby, ale neni to v tom, ze se testuji jen lowercase ".php"? Tzn. pokud nekdo vytvori soubor ".PHP", tak ten pak mozna pujde pustit, protoze z URL se bude brat case-insensitive?
Kua, chlape, ty nečteš zadání? Viz:
Neuvažujte jiné ošetřované přípony než „.php“ a jiný oddělovač adresářů než lomítko.
Možná bych si nejdřív ověřil, zda-li se opravdu jedná o uploadnutý soubor - viz is_uploaded_file() a pak ho pomocí move_uploaded_file() uložil na správné místo.
Ano, například z něj udělat xyz/adresar/zakerny_skript.php, že? Doporučoval bych přečíst a pochopit nejdříve zadání a pak blbě kecat
$fp = FOpen('soubory/'.$_GET['nazev_souboru'], 'w');
jenom mne napadlo, jestli by se nedalo nahradit '.php' necim jako je '%20' u mezery ...
pokud bych to zkousel, asi tohle je nejjednodussi (a mozna i nejelegantnejsi) zpusob
:)
$_GET
už je odescapovaný, takže odescapovat ho znovu by byla chyba (a dobrý způsob, jak do programu zavléct nějakou bezpečnostní díru).
POST /blog/EditDiscussion HTTP/1.1 Host: www.abclinuxu.cz User-Agent: Mozilla/5.0 (X11; U; Linux x86_64; en; rv:1.9.1.2) Gecko/20080528 Fedora/2.26.3-3.fc11 Epiphany/2.22 Firefox/3.5 Accept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8 Accept-Language: cs Accept-Encoding: gzip,deflate Accept-Charset: UTF-8,* Keep-Alive: 300 Connection: keep-alive Referer: http://www.abclinuxu.cz/blog/EditDiscussion?action=add&threadId=0&dizId=142779&rid=276521 Cookie: __utma=184452854&ehllip; Content-Type: multipart/form-data; boundary=---------------------------4290172515652242791849073854 Content-Length: 26069 -----------------------------4290172515652242791849073854 Content-Disposition: form-data; name="title" Re: Kdy.. housing, tak NE v Casablance -----------------------------4290172515652242791849073854 Content-Disposition: form-data; name="text" vggdt -----------------------------4290172515652242791849073854 Content-Disposition: form-data; name="attachment"; filename="chata_cela_bok_small.png" Content-Type: image/png .PNG . ... IHDR...q...U.....~C......sRGB....... .IDATx.....k.}..y........}......E..(Q....&yS%.../2.T.f..]N.35.T<.=....b'.mI.,..(.....E.K.}.}o4.;...<...x......A. ...p.|....<..N[