Newsgroup: it.comp.sicurezza.windows
Titolo: ARRRGH

M'era venuta l'idea farlocca di implementare un osceno ibrido dove
l'autenticazione Digest (v. RFC 2617) si appoggiasse a un database
PostgreSQL. Mi veniva decisamente buona per certe applicazioni.
Poi volevo dargli la possibilita' di gestire le sessioni (PHP), ma
senza usare ne' i cookie ne' il session ID sull'URL. Tecnicamente,
sarebbe stata la cosa piu' facile di questo mondo. Sicche' lo fo.
Dopo un po' di ciappinamento, 
www.test.it/test.php
 funziona, ma se
scrivo 
www.test.it/test.php?var=value
 non funziona piu'. Error 400
(invalid request), REQUIRED in mod_pgauth_digest.
Una breve modifica al codice di mod_pgauth_digest mi informa della
ragione: quest'immenso *coglione* di Internet Explorer infatti non
capisce che un URI *comprende* il query fragment e, quindi, il suo
digest deve essere calcolato *anche* sulla query. RFC 1630 (BNF).
La modifica al codice di Internet Explorer e' addirittura banale e
gliela saprei fare io in mezz'ora. Avendo i sorgenti.
Una ricerchina con Google mi informa che questo problema e' stato,
piu' volte, segnalato a Microsoft, la prima volta nel gennaio 2000
(forse un po' prima). Evidentemente, in tre anni non sono riusciti
a trovare *mezz'ora* per dare una *badilata* di compliance al loro
browser Internet (dove "loro" e' da intendersi in senso ampio, dal
momento che grattando IE viene fuori il buon vecchio Mosaic).
Tra l'altro, la finestrina di autenticazione che salta fuori *NON*
e' la stessa a seconda che si usi Auth::Basic o Auth::Digest. Come
dire? Buffo! (in sottofondo: "A ZAPPARE... A ZAPPARE...")
Ora, avendo un po' di tempo, prevedero' il BrowserMatch "MSIE", in
seguito al quale ottenere digest compatibili con MS-RFC 2617. Mica
sara' il primo (v. /etc/httpd/httpd.conf).
Se qualcuno vuole la patch per il mod_auth_digest originale... che
ovviamente ha lo stesso bug, ehh, questo vizio di aderire alle RFC
ufficiali... puo' farmi un fischio in email.
Leonardo lievemente irritato, si nota?
-- 
In nessun caso Microsoft, o i suoi fornitori, saranno responsabili per
[...] omissione di rispetto di obblighi, incluso quello di comportarsi
in buona fede o ragionevole diligenza
                                     -- Contratto di Licenza Microsoft

sara' il primo (v. /etc/httpd/httpd.conf).
...e vai, lo volevi? Magnifico buffer overflow nel codice di MSIE: c'e'
il problema che l'utente deve fornire user e password per avere accesso
al server... pero' non sa che cosi' facendo da' anche accesso al suo PC
da parte del server. Ah, se solo ne sapessi un po' di shellcode <eg>.
Pero', su server onesto, va.
Leonardo


 PostgreSQL. Mi veniva decisamente buona per certe applicazioni.
CUT
Non ho capito niente, pero' hai il mio sostegno morale.

CUT

Nell'autenticazione normale (user e password "comuni"), tipo "Basic",
tu mandi utente e password al server, e questi viaggiano in chiaro; e
cio' obbliga ad usare SSL, a meno che si voglia avere una "sicurezza"
piu' apparente che reale (sniffer sulla rete dell'ufficio: cose gia',
ohime', viste).
L'autenticazione digest prevede lo scambio di un secret, criptato, in
modo che neanche il server sappia la password, ne' tantomeno passi in
chiaro un accidenti. Ci sono ulteriori 'provisions' per evitare anche
dei replay attack.
Tutto cio' c'e' gia', e' mod_auth_digest. Che pero' legge da un file,
e a me avrebbe fatto piacere che leggesse da un database.
Quest'ultima cosa c'è (mod_pg_auth di Giuseppe Tanzilli) pero' non fa
l'autenticazione digest, ma solo la Basic.
Sicche' mi sono messo a costruire un osceno ibrido - compilato, fatto
funzionare, e scoperto che l'URL
 
http://localhost/pippo.php
viene autenticato da tutti, mentre
 
http://localhost/pippo.php?page=MainModule
viene autenticato da tutti TRANNE CHE EXPLORER - causa bug vecchio di
quattro anni e mai rimediato, ereditato da mod_auth_digest, che, devo
dire, non e' mai stato rinfurbito per far fronte al problema.
Inceneriti un paio di arcangeli con lo speciale bestemmione turbo con
ricerca automatica del bersaglio, ho la patch per mod_auth_digest. Il
prossimo passo (per ora non funzia) e' il "transparent sessioning" in
PHP, perche' lo troverei comodoso :-), ma questa e' roba per un altro
gruppo.
{incidentalmente, non capisco bene perche' da modulo utente non posso
alterare una nota di Apache -- come fosse antani, e read only (?). Ma
m'interessa poco, ho visto un modo piu' sudicio per aggirare la cosa}
Leonardo porco in brago
-- 
Questo messaggio e' NAGWARE. Per disattivare frecciatine, giochi
di parole, volgarita' gratuite ed inviti a rileggersi i messaggi
gia' passati e/o consultare 
http://groups.google.com
, effettuare
un versamento di 25 euro come tariffa di registrazione helpdesk.

 ohime', viste).
CUT
Grazie, mi sono un po' perso alla fine, ma ritengo in linea di massima di
aver capito :)
--
ciao, nevermore

 ...e vai, lo volevi? Magnifico buffer overflow nel codice di MSIE: c'e'
Ma noooooooooooooooooooooooooooo................................... e' uno
scandalo... quando mai si era vista prima una roba simile?
-- 
"Ehi, fratelli. Qui c'e' scritto che c'e' anche il tempo per combattere".
SETI@home: 150WU/8357hrs on a P166MMX :-)
SecurFaq             : 
http://securfaq.usenet.eu.org
Biancorossi Siamo Noi: 
http://www.tifonet.it/free/ancona/