Quali sono le implicazioni per la sicurezza delle persone che scaricano gli addon, pensando erroneamente che siano sicuri?

22

Recentemente ho saputo di un plugin per Firefox chiamato Fire Sheep, che è stato incluso nel podcast Security Now. Ho scaricato F.S. e ha iniziato a esaminarlo. Con mia sorpresa include il codice C ++ che deve essere compilato affinché il plugin funzioni.

La mia impressione è sempre stata che Firefox, a differenza di IE, non consenta l'esecuzione di codice oggetto scaricato all'interno del browser. F.S. sembra contraddirlo.

Quali sono le implicazioni sulla sicurezza delle persone che scaricano i plug-in, pensando che siano sicuri, quando potrebbero facilmente contenere malware sotto forma di codice di oggetti Trojan o addirittura di exploit Javascript?

    
posta Snuffles 02.08.2011 - 21:23
fonte

6 risposte

14

Se le persone non leggono il grande avviso di grasso che viene visualizzato su ogni installazione di un Addon o Plugin di Firefox, hanno perso. I componenti aggiuntivi sono programmi completi che possono fare qualsiasi cosa, hai il permesso di fare.

Il messaggio di avviso è davvero ovvio:

You should only install add-ons from sources you trust.

Evil software can harm files on your computer or violate your privacy.

    
risposta data 02.08.2011 - 23:16
fonte
9

La terminologia utilizzata da un browser particolare per descrivere gli addon è leggermente inutile. Alcuni browser chiamano alcuni componenti aggiuntivi, alcuni browser chiamano alcune estensioni di cose. Qualcuno a un certo punto ha avuto l'idea di nominare "cookies" temporanei di archiviazione e quanto è utile come nome.

Quindi un meccanismo di estensione (come in qualsiasi estensione della funzionalità del browser) funziona su due livelli:

1) Il browser implementa alcune lingue secondarie come interfacce utente renderizzate in XML (XUL in firefox è questo, in particolare xulrunner consente di descrivere un'interfaccia utente in xml). Inoltre, molte delle estensioni di firefox possono essere implementate in javascript (cercare spidermonkey e simili, questo è un componente di firefox che esegue javascript - in firefox, ci sono funzioni aggiuntive che permettono a quel javascript di fare cose, come trasformare il DOM del a questo livello il browser può controllare ciò che l'estensione fa abbastanza banalmente, ma tutto ciò che l'estensione vuole fare che Firefox non supporta o non permetterà, non può essere fatto. Ecco una foto:

  OS <--  Firefox <-- Nice extension interpreter <- extension javascript.

2) A volte, devi fare qualcosa che firefox non è costruito per fare, o non può essere fatto in modo efficiente in un formato interpretato da javascript o altro, come ad esempio eseguire flash o decodificare weird-codec.oddfile. Situazioni come questa firefox tendono a gestire i "gestori" che operano un po 'in questo modo:

  OS <--- Firefox  <--- webpage containing something
              |
          Plugin API---Relevant part of webpage, like <embed>
              |                 |
  OS <----- Plugin! like ns_flash.so or such like

Qui, le estensioni sono compilate per corrispondere all'architettura di estensione di firefox per questo genere di cose. Firefox espone un certo insieme di funzioni per consentire all'estensione di controllarlo in determinati modi, ma l'estensione può anche chiedere al sistema operativo di fare le cose direttamente. Se è ben fatto, prende sostanzialmente l'input rilevante (ad esempio, ecco un file .swf ) e fa tutto ciò che deve fare ("firefox, in questa casella, disegnare questo video"). Tuttavia, potrebbe tecnicamente fare qualsiasi cosa l'utente possa fare, perché Firefox non lo sta fermando.

Riguardo al motivo per cui Firesheep deve essere compilato, questo dipende dal fatto che esso dipende da libpcap (o simili), che riguarda l'estrazione di pacchetti di informazioni dal "filo", cioè da un dispositivo che li sta ricevendo. Un'interfaccia wireless è particolarmente suscettibile a questo perché molti adattatori wireless sono omnidirezionali, quindi qualsiasi interfaccia in prossimità preleva questi pacchetti. Di solito, il kernel (sistema operativo) rilascia pacchetti non ad esso indirizzati, tuttavia, impostando l'interfaccia su modalità promiscua è come si chiede di non farlo. libpcap fa questo per te e ti permette di afferrare quei pacchetti. Per fare questo, ha bisogno di un accesso diretto (probabilmente amministrativo / root) al sistema operativo.

Firesheep funziona interamente analizzando tali pacchetti, trovando quelli http che non sono crittografati, raschiandoli per i dati di accesso e segnalandoli.

Ora, torniamo al rischio per la sicurezza di questi plugin - è abbastanza ovvio, un plugin che funziona come codice nativo (in firefox, un plugin, piuttosto che un'estensione) può fare tutto ciò che l'utente può fare (dimentica Firefox)) così come dice giustamente Hendrik, se si ignora l'avvertenza del grosso grasso, questo è un problema. Un'estensione dovrebbe essere in grado di fare danni limitati.

Mentre siamo qui, il modello di Google Chrome è di nuovo diverso. Ogni applicazione su un computer è composta da processi e thread - in molti thread di ose sono fondamentalmente processi leggeri e condividono memoria attraverso il processo ed è così che si ottiene la concorrenza, tuttavia, un singolo thread in crash interrompe l'intero processo e qualsiasi thread può tecnicamente altera la memoria di un altro thread senza restrizioni.

Quindi google chrome funziona creando processi per ogni dominio univoco che visiti in modo univoco, comportandoti come se avessi un processo per scheda (per molti casi d'uso) e ogni estensione in esecuzione che usi. In realtà, puoi anche personalizzare questo per eseguire un processo per scheda o solo un processo per dominio indipendentemente dalle visite che fai. Quindi mentre in Firefox ottieni:

 Firefox   thread/1
           thread/2
           thread/3

In google chrome ottieni

 Chrome master process

                Chrome child process for security.stackexchange.com
                Chrome child process for meta.stackoverflow.com
                Chrome child process for flash

Ora, ogni processo figlio è strongmente limitato. Il modo standard per creare un processo fornisce per impostazione predefinita le autorizzazioni che il genitore ha (ereditarietà) ma google chrome imposta le autorizzazioni in modo esplicito. I processi figlio possono comunicare solo con il processo principale quando vogliono fare qualcosa e le eventuali chiamate API che fanno al sistema operativo sono severamente limitate dai token di controllo accessi di Windows. Quindi l'idea qui è che un plugin dovrebbe, in teoria, essere solo in grado di fare ciò che è necessario.

Questa è la teoria dell'idea di google chrome. In pratica i documenti di progettazione implicano che devi passare --sandbox-plugins , ovvero non sono attualmente sicuro di cosa i plug-in di estensione sandboxing sono automatici e funzionano correttamente.

    
risposta data 03.08.2011 - 20:09
fonte
6

In primo luogo, ti manca la distinzione tra "add-on" (o "estensioni") e "plug-in". I "componenti aggiuntivi" modificano in qualche modo le funzionalità del browser, semplificando la vita. Per questo motivo hanno un controllo molto maggiore e minori restrizioni di accesso rispetto ai "plug-in". Sono anche (di solito) multipiattaforma. I "plug-in" sono moduli dipendenti dalla piattaforma che consentono a un browser di visualizzare contenuti che altrimenti non saprebbero come visualizzare, come file PDF o video.

La sicurezza del componente aggiuntivo dipende dall'implementazione del browser. Firefox, ad esempio, offre agli add-on un accesso molto maggiore rispetto a quello di Chrome alle sue estensioni. I plugin hanno lo stesso accesso attraverso i browser. Alcuni plugin, come Flash, richiedono file tramite il browser, sottoponendoli a restrizioni che i browser (o i componenti aggiuntivi) potrebbero imporre. Ad esempio, RequestPolicy e il componente aggiuntivo che controlla le richieste tra domini in Firefox, possono (e lo fanno) bloccare le richieste tra domini nel contenuto Flash. Java, d'altra parte, può eseguire codice nella JVM indipendentemente dal browser.

Non lo so per certo, ma credo che la ragione per cui FireSheep include il codice C ++ è perché ha bisogno di catturare tutti i pacchetti che fluiscono sulla rete, cosa che Firefox non consente. Affinché FireSheep lo faccia, deve eseguire una sorta di codice nativo.

Come per gli altri componenti aggiuntivi, in Firefox, un componente aggiuntivo dannoso ha accesso a tutta la cronologia, alle password salvate, ai segnalibri e può modificare l'aspetto e il comportamento di qualsiasi pagina Web che desidera. In Chrome, tuttavia, deve dichiarare esplicitamente l'accesso desiderato e Chrome informerà l'utente a cosa deve accedere l'estensione prima di installarlo.

Un plug-in è quasi paragonabile al codice nativo, quindi un plugin dannoso ha accesso a qualunque sistema operativo gli dia accesso. Se scarichi e installi un plug-in dannoso, è come scaricare e installare qualsiasi altro programma dannoso.

    
risposta data 03.08.2011 - 04:30
fonte
4

Esegui solo un software affidabile sul tuo computer. link

Law #1: If a bad guy can persuade you to run his program on your computer, it's not your computer anymore

Sono confuso riguardo alla tua descrizione di Firesheep che deve essere compilata prima di lavorare; per favore potresti espanderlo? Inoltre, firesheep è un'estensione per Firefox non plug-in.

    
risposta data 02.08.2011 - 23:03
fonte
4

Stai confondendo elementi della pagina web e plug-in del browser.

Molte pagine web contengono codice (di solito scritto in JavaScript) che viene eseguito nel browser, ma in un'area accuratamente recintata (concettualmente, un sandbox - non necessariamente sandbox in un senso tecnico particolare). Il codice contenuto in una pagina web non ha accesso ad altro che ai propri dati; in particolare, non può accedere ai dati di pagine Web da altri siti o dati altrove sul tuo computer o eseguire codice che ha un impatto esterno al browser. (A meno che non ci sia un bug nel browser, ovviamente.)

Browser plug-in e estensioni sono applicazioni eseguite sul tuo computer. A differenza delle applicazioni "complete" come il browser stesso, i plug-in e le estensioni non vengono eseguiti in modo nativo sul sistema operativo: funzionano solo come componenti aggiuntivi del browser. Non ci sono aspettative a priori che queste applicazioni abbiano autorizzazioni limitate.

Non c'è alcuna differenza fondamentale tra plug-in ed estensioni; usano semplicemente interfacce diverse per comunicare con il browser. I plug-in eseguono direttamente il codice nativo, in modo che possano eseguire qualsiasi operazione consentita dal sistema operativo alle applicazioni in esecuzione. Le estensioni sono domatrici; Le estensioni di Chrome hanno un sistema di autorizzazione e altri browser mettono anche delle restrizioni su ciò che le estensioni possono fare. Tuttavia, le estensioni dispongono di autorizzazioni sufficienti che un'estensione dispettosa può causare danni. È necessario prestare la massima attenzione quando si installa un plug-in o un componente aggiuntivo come quando si installa qualsiasi altra applicazione sul proprio computer.

    
risposta data 03.08.2011 - 14:32
fonte
3

Alcuni browser eseguono chroot jailing, intercettazione syscall e simili alle estensioni sandbox come difesa in profondità contro zero-days in flash e simili, ma molti meccanismi di estensione del browser garantiscono molta autorità alle estensioni.

Native Client è un tentativo di fornire una sandbox nel browser per il codice compilato nativo e potrebbe costituire la base di un nuovo meccanismo più flessibile per le estensioni native sandboxing.

    
risposta data 03.08.2011 - 20:24
fonte

Leggi altre domande sui tag