Bug nel JavaScript di Firefox: dati sensibili a rischio

Bug nel JavaScript di Firefox: dati sensibili a rischio

Secunia ha rivelato un pericoloso bug in Firefox, un'errata gestione delle stringhe JavaScript. Verrebbero esposti alcuni dati presenti in memoria

di pubblicata il , alle 15:39 nel canale Sicurezza
FirefoxMozilla
 
167 Commenti
Gli autori dei commenti, e non la redazione, sono responsabili dei contenuti da loro inseriti - info
Leron13 Aprile 2005, 10:14 #141
mi fa piacere che ti piaccia

sto lavorandoci su, voglio migliorarlo un poco soprattutto nei caricamenti delle pagine di firefox
cdimauro13 Aprile 2005, 10:38 #142
Originariamente inviato da: Breakthru]Ovviamente non c'entra + nulla con firefox, ma spero sia interessante la discussione (che e' anche nel forum)[/QUOTE]
Capita spesso ormai, ma l'importante è
l'esempio di una utilitaria truccata da ferrari mi è venuto in mente pensando a
- schermate blu improvvise
- blocchi del sistema frequentissimi
- sempre più pesantezza col passare del tempo

questo si applica a win98SE,

L'ho usato per parecchio tempo: mai avuto i problemi di cui parli. Qualche schermata blu m'è capitata, ma molto raramente (poi io lo trattavo veramente il sistema, facendo esperimenti con gli hook di sistema).
non uso winXp, e se pure winXp fosse meglio (so che è un kernel totalmente diverso) è intollerabile aver dovuto aspettare tanto per avere qualcosa di meglio.

Beh, sono passati 4 anni e 5 da Windows 2000 (che era già molto, ma molto meglio di Win98SE): dimmi tu se ALL'EPOCA di Windows 98 (o delle precedenti versioni) ci fossero delle soluzioni alternative ALMENO usabili e produttive.
io penso che se un software viene scritto avendo in mente che deve essere sicuro, non esce fuori con gli n (non so il numero) bug critici che ha IE.

Questo lo dici perché non hai idea cosa significa realizzare del software in generale, e cosa significhi sicurezza. Scrivere del codice "intrinsecamente sicuro" non è cosa facile, anche perché manca una definizione di codice "sicuro".
hai potuto dare un'occhiata ai bug ?

Sì, ma solamente a qualcuno.
al codice?

No, non lavoro alla MS né ho potuto dare un'occhiata proprio ai sorgenti di IE che girano in rete, appartenenti a Windows 2000.
Ho però visto un sorgente di questo "pacchetto", debbo dire che il codice era scritto MOLTO BENE: perfino le macro, che in genere sono particolarmente criptiche, erano molto leggibili e ben documentate / commentate (come tutto il resto del codice).
(qui correggimi che posso facilmente sbagliare: il buffer overflow avviene a causa di mancati contorlli: ti aspetti che ci sia una certa struttura dati in memoria, e invece ce n'era un'altra con risultati imprevisti.)

se ho detto una minchiata non ci sono problemi, il punto è questo: uno stile di programmazione pulito serve proprio a ridurre i bug, quindi molti bug => cattivo stile.

Questo succede per qualunque software, come ho già detto e t'hanno spiegato. Se poi vai a dare un'occhiata anche ai bug che sono stati trovati per Mozilla, FireFox & co., ti accorgi che non sono affatto esenti da falle di sicurezza molto "gravi", che permettono di eseguire codice arbitrario.
riguardo activeX...

ma scusa, ho una domanda su activeX:
è possibile (senza sfruttare bug) installare un programma senza che l'utente lo viene a sapere?
(solo una finestrella con un bottone "ok" e un testo a scelta mia => non lo viene a sapere.)

Certo che è possibile farlo: non è certo colpa degli ActiveX, che sono delle "semplici" collezioni di componenti, ma dell'applicazione che li usa.
se è possibile, un'altro motivo per non fidarsi e non usare mai più software microsoft.

Vedi sopra: non è certo colpa loro. Tra l'altro col SP2 IE chiede il permesso prima, ma è IE a farlo, non gli ActiveX...
se non è possibile, sembra che sfruttare activeX per farlo sia "triviale": scarsa qualità di activeX?

No. E infatti vedi sopra: FireFox & co. non usano gli ActiveX, ma sono state ugualmente trovate delle gravi falli di sicurezza.
se solo un bravo hacker può sfruttare activeX come mai tanti dialer? tutti bravi hacker? no!

Sì, gravi hacker, che puntano sul software più diffuso.
è stupido bloccare i propri dati in un formato proprietario.
i formati liberi esistono, sono migliori, e ci permettono di essere pronti ad ogni utilizzo futuro che vorremo fare senza restrizioni imposte da UN ALTRO.
è sempre sbagliato.
i truffatori esistono, le aziende scorrette esistono, i negozianti imbroglioni esistono, i formati proprietari esistono, le cose brutte esistono, ma di norma vogliamo evitarle.

Hai un'idea errata sui formati proprietari: come t'ho già detto, sono SEMPRE ESISTITI. In qualche modo le informazioni si devono salvare, no?

Quando agli inizi degli anni '80 spuntò WordStar, che permetteva di scrivere file di testo strutturati, la società che lo sviluppava introdusse un SUO formato (proprietario, quindi), che permettava di conservare le informazioni che gli servivano. Avremmo dovuto trucidare i programmatori per quest'affronto alla libertà personale? Non credo proprio: era un normale esigenza, risolta come s'è sempre fatto.

MS, come ho già detto, è l'ultima arrivata, e ha rilasciato da parecchi anni le specifiche dei file prodotti con Office '97: con le versioni successive non ha fatto lo stesso, ma in ogni caso puoi:
- farne a meno e usare quelli vecchi;
- in qualsiasi momento puoi esportare i tuoi dati in parecchi formati.
Quindi, come vedi, il problema non si pone.

Tra l'altro erroneamente la gente considera come "liberi" formati come MP3, MPEG 1/2/4, ecc.: non è affatto vero! Diritti e licenze sono FORTEMENTE in mano alle varie società che li hanno sviluppati / ideati, o che ne hanno realizzato alcune parti.

Anche qui ci sarebbe da discutere: perché usare MP3 anziché OGG Vorbis? Semplicemente perché all'epoca non c'era nulla di simile, OV non esisteva. MP3, quindi, s'è diffuso, e la gente è convinta che si tratti di un prodotto "libero".
Per verificare questo, prova a vedere se con xmms, noatun, kaboodle, o altre applicazioni Linux, riesci ad ascoltare un file MP3: non ci riuscirai, e come minimo ti apparirà un avvertimento che si tratta di un formato proprietario e per problemi di licenza non hanno potuto integrare il relativo codec o plugin.
per i motivi che abbiamo discusso non mi piace microsoft, non utilizzo i suoi software, e invito gli altri a non farlo.

Non sono motivi sufficienti, a mio avviso: sei troppo prevenuto nei suoi confronti. MS è e si comporta come tante altre software house. Tutto il mondo è paese, come si suol dire...
p.s. spero sei daccordo con me che il monopolio (su qualsiasi bene o servizio) fa SEMPRE danno al CLIENTE! il consumatore deve SEMPRE boicottare il monopolio perchè deve tutelare SE STESSO.

Se il monopolio esiste, magari si potrebbe anche pensare di farlo. Ma mi fai vedere com'è possibile fare a meno dell'ENEL e della corrente elettrica?
p.p.s. io ho letto su www.gnu.org l'articolo sulla filosofia che il software non deve avere padroni, lo condivido appieno e vi invito a leggerlo all'indirizzo
http://www.gnu.org/philosophy/why-free.it.html

Mi spiace, ma m'è bastata già l'introduzione di "Codice Libero": ci tengo alla salute (mi si ritorce il fegato quando leggo alcune cose: per questo mi sono fermato all'introduzione di quel libro), e soprattutto debbo pensare a far campare la mia famiglia col mio lavoro di programmatore...
cdimauro13 Aprile 2005, 10:43 #143
Originariamente inviato da: xeal
Comunque i sistemi attuali non poggiano sul DOS e non mi sembrano da buttar via;

Fino a Windows 3.1 lo erano: poi no. IMHO, chiaramente.

Comunque, AI TEMPI, anche Windows 3.1 non era da buttar via...
cdimauro13 Aprile 2005, 10:45 #144
Originariamente inviato da: edivad82]io penso che con l'andare avanti con il programmare bene o male lo possono far tutti, fare codice sicuro no...servono approcci mentali, rigorosità
Il problema: è possibile definire cosa sia il codice sicuro?
[QUOTE]basta guardare l'approccio di Bernstein, informatevi su Qmail o su djbdns... quello è un approccio verso le prestazioni e verso soprattutto la sicurezza del codice...qmail è sostanzialmente lo stesso dal 1998

e in questo periodo non ci sono stati richiami vari...un esempio di codice scritto con la sicurezza come meta finale

Il codice si evolve: anzi, è normale che lo faccia, perché nascono sempre nuove esigenze.

Dal 1998 a oggi siamo passati da Windows 98 a Windows XP SP2, e XP / 64 è dietro le porte (per non parlare di LongHorn, che il prossimo anno porterà un'altra, grande, rivoluzione).
cdimauro13 Aprile 2005, 10:50 #145
Originariamente inviato da: xeal
Java mi piace, e mi piacciono in particolare le caratteristiche a cui ti riferisci, però non si può mai abbassare la guardia: basta un piccolo bug nel compilatore/interprete che sia e i benefici del linguaggio di alto livello vanno a farsi benedire...

A parte questo, basta passare da Java al C++ o un altro linguaggio orientato agli oggetti senza un garbage collector, per ritrovarsi come minimo con un degli enormi problemi di memory leak.

Purtroppo ormai anche all'università si comincia a programmare in Java e, anzi, quasi sempre è l'unico linguaggio utilizzato e studiato per quanto riguarda la programmazione in generale, e a oggetti in particolare.

Francamente preferirei il Pascal a oggetti, che è fortemente tipizzato (quindi obbliga a capire bene con quali strutture / tipi di dati si ha a che fare, e COME gestirli), e che richiede l'uso di costruttori E distruttori quando si comincia a lavorare con gli oggetti.

Lo so: sono troppo di parte...
cdimauro13 Aprile 2005, 10:57 #146
Originariamente inviato da: Morkar Karamat]

Cmq programmare in Fortran ora come ora lo ritengo "
Non mi pare. Forse ti riferivi al teorema di un nostro illustre collega, di cui adesso mi sfugge il nome, che dimostra che è possibile fare a meno del GOTO, riscrivendo il codice usando cicli WHILE/REPEAT ed eventualmente facendo uso di variabili booleane.
l'unico problema da superare è l'inerzia dei programmatori di vecchia data, + che comprensibile. Anche C/C++ comincia ad essere datato e credo che con la prossima generazione di SO scritti in Java/.NET ci saranno molti meno bug e anche gli interventi di manutenzione sul codice saranno molto facilitati.

Lo credo anch'io. Comunque vorrei spezzare una lancia in favore del Fortran (per quanto non apprezzi proprio questo linguaggio): dalla prima standardizzazione alle ultime è cambiato molto, e permette di utilizzare costrutti e istruzioni ad alto livello.
[QUOTE]Tra l'altro Java 5 è a prova di proiettile, oltre che safe è anche fortemente tipato grazie ai warning che sono stati aggiunti per indicare utilizzi "non safe" del polimorfismo e metterli in evidenza

Mumble... Devo dargli una ripassata prima o poi...
Versatilità, sicurezza...e le prestazioni non sono poi male dato che continuano a migliorare i compilatori, spero che nel giro di 5-10 anni diventi davvero lo standard.

Sulla sicurezza ho miei dubbi.

D'altra parte, da EONI è possibile attivare, ad esempio, il controllo sugli indici degli array, o addirittura sull'overflow delle operazioni, ma chi l'ha mai fatto? Si va sempre di fretta, e poi se ne pagano le conseguenze...
cdimauro13 Aprile 2005, 11:00 #147
Originariamente inviato da: Leron]mi fa piacere che ti piaccia [/QUOTE]
M'è
sto lavorandoci su, voglio migliorarlo un poco soprattutto nei caricamenti delle pagine di firefox

Però io uso Opera...
cdimauro13 Aprile 2005, 11:03 #148
Scusatemi per gli orrori grammaticali: sono troppi da correggere e il tempo che ho è poco...
fek13 Aprile 2005, 13:46 #149
Originariamente inviato da: xeal
Poi, quel risultato è ottenuto in parte mediante limitazioni alla libertà del programmatore: ad esempio, Java ti impedisce di gestire direttamente l'allocazione della memoria (intendendo per direttamente la richiesta al sistema operativo di allocarne quanta ne vuoi e più o meno come vuoi: in definitiva lo fa lui), cosa che per un OS è di fondamentale importanza, inoltre non è possibile sovraccaricare gli operatori, limitazione utile da un lato, potenzialmente eccessiva ai fini della scrittura di un OS: in C++, ad esempio, potresti scrivere una tua versione dell'operatore new (o più versioni) per accedere in memoria e gestirne l'allocazione nella maniera più opportuna in determinate circostanze (ma potresti farlo anche con apposite funzioni in C, non potresti farlo in alcun modo in Java).


Mi inserisco in questa vostra discussione perche' e' interessantissima.

Riporto una frase di Don Box che riguarda proprio questo argomento, dove, piu' o meno, dice: "Ogni volta che un nuovo linguaggio o un nuovo paradigma alza il livello di astrazioni, c'e' qualcuno che si lamenta perche' non ha piu' il controllo che aveva prima. E' successo con con il passaggio dall'Assembly al C/C++ ed ora succede col passaggio da codice unmanaged a codice managed. I vantaggi derivati dall'aumento del livello di astrazione hanno sempre superato gli svantaggi dovuto al minore controllo".

Don Box si riferisce al codice gestito (managed) dal framework .NET, ma il discorso e' identico per il codice gestito dalla JVM di Java.
Entrambi gli ambienti innalzano il livello di astrazione, ad esempio eliminando il concetto di memoria, introducendo un raccoglitore di rifiuti che si occupi di liberare gli oggetti non piu' usati, astraggono dai concetti quali il Thread introducendo concetti quali l'esecuzione asincrona.

Tutti questi cambiamenti limitano il programmatore come hai detto tu, gli danno un ambiente di lavoro piu' "controllato", "gestito" che limitano la possibilita' di commettere errori, rendono le applicazioni anche piu' sicure. Ma come hai aggiunto limitano anche l'espressivita' del programmatore nell'esprimere concetti richiesti da certi tipi di applicazioni. E non solo.

Il punto e' che ogni aumento del livello di astrazione e l'aumento di produttivita' che ne deriva portano ad inefficienze nell'esecuzione del codice.

La mia opinione e' che nel 99% dei casi l'aumento di produttivita' giustifichi ampiamente le inefficienze.

Poi esistono applicazioni particolari quali il Kernel di un sistemi operativo, posso anche aggiungere il render loop di un motore 3d, dove gestire i puntatori in maniera nativa, oppure il ciclo di vita di un oggetto, o avere il massimo controllo possibile sull'ambiente sono fondamentali, ma queste sono eccezioni, non la norma. E non credo che le eccezioni dovrebbero penalizzare la produttivita' e la sicurezza nella maggior parte delle applicazioni.

In sintesi sono totalmente a favore degli ambienti gestiti come Java e .NET. Credo sia solo una questione di strumenti ed usare gli strumenti adatti a risolvere un dato problema: devo scrivere il kernel di un sistema operativo, posso farlo in Java o C#? No, perche' non ho gli strumenti espressivi per esprimere determinati concetti. Devo scrivere un'architettura di streaming video peer to peer (), ha senso farlo in C/C++? Si', ma in C# posso esprimere tutti i concetti che mi servono e riesco a farlo in un terzo del tempo, quindi scelgo questo strumento.
cdimauro13 Aprile 2005, 16:31 #150
D'accordo, e infatti ormai da mesi uso quasi esclusivamente Python come linguaggio / ambiente per lo sviluppo delle applicazioni dove lavoro, che offre un notevole livello di astrazione e permette di concentrare le energie sul problema da risolvere, piuttosto che perdere tempo in dettagli implementativi come l'allocazione o la liberazione della memoria...

I problemi sorgono per chi da questi linguaggi / ambienti "comodi" passa poi ad altri, che non offrono gli stessi meccanismi...

Devi effettuare il login per poter commentare
Se non sei ancora registrato, puoi farlo attraverso questo form.
Se sei già registrato e loggato nel sito, puoi inserire il tuo commento.
Si tenga presente quanto letto nel regolamento, nel rispetto del "quieto vivere".

La discussione è consultabile anche qui, sul forum.
 
^