Sigurnost PHP-a

17.12.2006.

Nedavno je na slashdotu bila vijest o otkazu Stefana Essera, PHP developera koji se brinuo o sigurnosti. Dosadilo mu je, kaže, da se stalno prepucava s kolegama oko toga da ne postoje sigurnosne rupe u PHP-u odnosno da je svaka kritika PHP sigurnosti dočekana na nož. "he had stopped counting the number of times he was called a traitor when he published a bug report on a vulnerability in PHP." Strašno. Također mu nisu dali da objavi neki vulnerability sve dok se ne pojavi zakrpa. S jedne strane razumljiva, a s druge neodgovorna praksa koja samo odgađa izdavanje zakrpi. Također iznosi jednu stvar koja me zabrinjava: prestaju updatei nad PHP4 serijom, koja se još uvijek masovno koristi.
Ono što on možda ne naglašava dovoljno, činjenica je da je glavni uzrok za toliki broj problema nastalih pri korištenju raznih php portala, foruma i sličnih isključivo nekompetentnost programera tih aplikacija pisanih u PHP-u, a ne core PHP-a. Kao što se PHP dobro opisuje: easy to learn, difficult to master, upravo je to stvorilo pravu vojsku kvazi PHP programera kojima je to prvi dodir s programskim kodom i koji ne ugrađuju nikakve provjere; "bitno da radi", em zato što ne znaju da treba, em zato što ih možda rokovi pritišću. I zato nastaju programi poput phpBB-a, PostNukea i sličnih, koji zadaju noćne more adminima. Još je jedan problem tih foruma: prejednostavni su za instalaciju i zato ih svatko može instalirati, ne misleći da se te aplikacije moraju redovito osvježavati novim verzijama. Također, neke stvari su inherentno nesigurne, a korisnici ih zahtijevaju, jer opet, kod nije dobro napisan. Primjer je register_globals, koji trga velik broj programa. Tu su i razne funkcije includeanja nekih URL-ova koje pak omogućuju pokretanje programa pod dozvolama Apache usera. Horor. Uopće je nebitno što taj user ne može doći do roota, kad se od njega mogu pokretati razni napadi, a čak sam doživio da se ostavlja dump divxa i koristi za potrošnju bandwidtha.
Nedavno sam imao drugačiji problem, neka skripta na sustavu koristila se za slanje spama (stizalo je po par stotina bounceova na postmastera zbog neisporučene pošte *dnevno*). Nakratko sam to onemogućio, a onda stavio jedan vrlo koristan patch za php koji u headere dodaje ime skripte s kojom je taj mejl poslan. Također sam u php.ini dodao i skripticu koja automatski Bcc-a sve mejlove poslate na taj način.

formail -R bcc x-original-bcc -f -A "Bcc: adr@esa.hr" -A "x-php-formmail: yes" | sendmail -t -i. Možda nekom pomogne. Gornji patch je svakako koristan.
No, slanje spama je prestalo i uskratilo mi zadovoljstvo svađe s korisnikom. A da maknem mod_security? Možda bi to pomoglo :-) Sad malo evaluiram Suhosin www.hardened-php.net, djeluje obećavajuće po feature listu, a opet, ne želim riskirati stavljajući ga u produkciju jer bi mogao nešto potrgati.

Divide by zero error

08.12.2006.

Za uvod jedan vitz:
Black holes are places where God divided by zero.

I tako, oduvijek smo znali da se ne može baš dijeliti s nulom. I prvi osnovnoškolski digitroni (TM by Buje) su na tu operaciju nabacili jedan E (kasnije se saznalo da to znači error, a ne 14(hex)). Kasnije se saznalo da dijeljenje s nulom ipak ima nekog kvazi smisla pa se dobije neka +-beskonačnost (dva nesmisla se pokrate pa je to još smisleno). No, ipak je bilo oblika gdje ni limes nije mogao pronaći svoju upotrebu. I znalo se da 0/0 (nula kroz nula) nije nešto pametno. Kako ništa podijeliti na nitijedan dio.
Ipak, engleski školarci znaju da se to može podijeliti, a kao rezultat se dobiva nullity (ništavilo je sasvim dobar prijevod, rekao bih), posebna "brojka" koja se nalazi izvan brojevnog pravca (?), a simbol joj izgleda kao veliko grčko slovo fi. I ne bi to bila vijest vrijedna spomena (zaboga, pa u Hrvatskoj je otkrivena supravodljivost na sobnoj temperaturi pa još nije izašlo u Natureu) da ju nije objavio BBC, a prenio i Slashdot, pa sam se zakačio zbog čiste vjerodostojnosti izvora, i još većeg razočaranja kad sam pogledao filmić. I zaista, čovjek na linku s BBC-a raspisuje neki dokaz na ploči, definira novi simbol, hvali se kako ni Pitagora ni Newton nisu to mogli podijeliti (pa kad nisu imali digitron!). Nisam matematičar, ali ovo je strašno.

In other news, Tannenbaum (of "computer networks" fame) zajedno sa studentom je smislio neki RFID pametni bloker i management alat koji može blokirati RFID zračenja u blizini nositelja uređaja, sve zbog privatnosti. Relativno beskoristan, ali zgodan uređaj, možda prvi te vrste koji će proizvesti ogroman broj sličnih. http://www.rfidguardian.org/.

Prodaja CPU vremena

03.12.2006.

Zanimljiv link izronio je na vrh digga, prodaja procesorskog vremena. Već sam pričao o Seti@home, kako se opterećuje stroj time a zaludu, pa pozvao da motate folding@home ili sličan humani projekt. Ako netko ni u to ne vjeruje ili jednostavno ne želi dati svoju struju nekome, može prodavati resurse za koju god namjenu to trebalo (da li time američka vlada razbija enkripciju ili što god, who cares). Financijski, komp mjesečno troši oko 20 kn ako je low end, vjerojatno dosta više ako je malo jača grafička, brži procesor, dodatni ventilatori itd. U komentarima na digg.com sam pronašao da je cijena sata 0,02 eurocenta. To je preko 100 kn mjesečno. Dakle na granici isplativosti, no ako komp ionako radi (dok traje flat na adsl-u pa služi za l33ch ili jednostavno se ne gasi). Ako je dobro riješeno hlađenje, ne skraćuje se život procesora ili neke druge komponente (od ljudi koji održavaju veći broj kompova čujem da identični kompovi dulje traju ako rade 0-24 nego ako se pale u 09 i gase u 17h). Ekologiju moramo ovaj put staviti na stranu. No, kako je hladno vrijeme, komp usput služi i grijanju prostorije :)
I da, klijent postoji zasad samo za Linux (i kao LiveCD).

<< Prethodni mjesec | Sljedeći mjesec >>