Intellisystem Technologies

RECS 101: UN WEB SERVER EMBEDDED PER APPLICAZIONI DI CONTROLLO REMOTO TRAMITE TCP/IP – 4° Parte

FE Luglio-Agosto 2003 - RECS 101 - Intellisystem Technologies

FE Luglio-Agosto 2003 - RECS 101 - Intellisystem Technologies

Con questa quarta parte, si conclude la trattazione del dispositivo RECS 101 con un argomento di rilevante importanza: “il problema della sicurezza per i web server embedded”  

La sicurezza è un aspetto molto importante e da non trascurare nei sistemi di controllo specie se sono gestiti tramite la rete Internet. Se da un lato la rete Internet offre grandi flessibilità a livello di condivisione di risorse e di gestione da remoto, dall’altro è sicuramente un ambiente non sicuro, poiché chiunque può connettersi ad essa. Il web ha il potere di aumentare la produttività di chiunque, tuttavia come per ogni tecnologia o attività di gruppo oltre alle straordinarie attività occorre considerarne i rischi. Generalmente gli attacchi ad un sistema di controllo remoto si possono classificare mediante l’individuazione dei punti deboli del sistema che s’intende esaminare. In generale si possono individuare quattro categorie:

• Vulnerabilità dei dati;

•Vulnerabilità del software;

• Vulnerabilità del sistema fisico;

• Vulnerabilità delle trasmissioni.

Per difendersi da questi attacchi, ci si deve attendere che ogni potenziale intruso possa sfruttare queste vulnerabilità per accedere ai dati e quindi potenzialmente danneggiare il sistema. Ad esempio, la connessione di un sistema di controllo su internet può aprire delle falle nei sistemi di sicurezza e tali falle possono essere utilizzate da utenti non autorizzati per accedere o manipolarne le funzionalità. Gli intrusi potrebbero anche invalidare il server Internet del sistema di controllo, modificandone i file in esso memorizzati (ad esempio i file che contengono le informazioni sulle User-ID e Password degli utenti del sistema). I potenziali Hacker potrebbero inserire nel sistema dei virus e altri programmi distruttivi auto-replicanti in grado di danneggiare o disabilitare completamente il sistema. Possiamo classificare gli attacchi provenienti da internet nelle seguenti categorie:

POSSIBILI CONTROMISURE

Sebbene il mondo dell’informatica sia in continua evoluzione trovare dei rimedi che eliminino definitivamente tali problemi è molto difficile, tuttavia nel seguente paragrafo vogliamo presentare alcune soluzioni che adottate potrebbero essere un modo per fronteggiare queste problematiche. Rispecchiando lo schema precedente riportiamo di seguito le soluzioni possibili:

Hyperlink Spoofing: Se s’impiegano già applicazioni Web che fanno affidamento sull’autenticazione del server (ad esempio per il prelevamento di applet Java), l’unica soluzione praticabile consiste nel far partire il browser da una pagina sicura in modo che gli utenti possano fidarsi dei link iniziali e che un hacker non possa mai inviarli in luoghi sospetti Una pagina sicura è quella di cui si può verificare l’integrità e questo, in genere, significa che tale pagina deve essere un file HTML locale o una pagina su un server SSL. Se si desidera che il browser di un utente parta aprendo una pagina SSL, si deve inviare l’indirizzo URL di tale pagina tramite mezzi difficili o impossibili da intercettare (ad esempio un floppy o una lettera), altrimenti la pagina potrebbe diventare il punto di partenza per l’attacco che s’intende prevenire. Tutti i link contenuti in questa pagina dovrebbero inviare gli utenti su siti di provata affidabilità e preferibilmente tutti i link dovrebbero essere di tipo SSL. L’affidabilità può basarsi sui seguenti criteri: • Il sito deve essere condotto con criteri di sicurezza. Ovvero l’intero sito deve essere reso sicuro contro gli attacchi e l’intercettazione delle pagine. • Il sito deve contenere link che conducono solo ad altri siti sicuri.

I PRINCIPALI PROBLEMI DI SICUREZZA DEGLI APPLET JAVA

Anche se Java rappresenta un ambiente di programmazione relativamente sicuro, occorre considerare vari argomenti che aiutino a difendersi contro i problemi di sicurezza derivanti dall’impiego di Java. Poiché la JVM interpreta gli applet Java localmente, in genere gli applet consumano grandi quantità di risorse di sistema. Gli applet ostili o mal programmati possono consumare troppe risorse di sistema utilizzando la maggior parte della CPU o della memoria de computer. Quando un applet consuma troppe risorse, il computer può rallentare sino quasi a bloccarsi. Questo stato di blocco è il risultato di un attacco. Nelle prime implementazioni di Java (JDK 1.1.2) esisteva un bug nel verificatore di applet che consentiva a un applet prelevato su un client che si trova all’interno di un firewall di collegarsi a un determinato host al di là del firewall. Dopo la connessione, l’applet poteva trasmettere informazioni relative alla macchina client invece che informazioni relative al server proxy così come dovrebbe fare l’applet, aprendo la rete a un attacco spoofing. In generale possiamo dire che il Java può soffrire di quattro tipi possibili di attacchi [5÷13]:

• Leakage (unauthorized attempts to obtain information belonging to or intended for someone else).
• Tampering (unauthorized changing/ including deleting/of information).
• Resource stealing (unauthorized use of resources or facilities such as memory or disk space).
• Antagonism (interactions not resulting in a gain for the intruder but annoying for the attacked party). Gli Applet Java utilizzano un sistema di sicurezza, noto con il nome di Sandbox, che protegge il computer contro l’intrusione di applet ostili. Il modello Sandbox limita l’accesso al sistema da parte del applet restringendolo a determinate aree del client. La tabella 1 si riferisce ad un applet Java di tipo standard chiamato applet sandbox. L’applet sandbox ha un accesso limitato alle risorse del sistema. Un applet sandbox non può ad esempio accedere al disco fisso dell’utente, aprire nuovi canali di trasmissione o restituire informazioni approfondite, relative al client che esegue l’applet stessa. Gli applet e la libreria standard java, sono applet sandbox. Il tipo trusted è una nuova variante del modello java, un applet trusted ha accesso a tutte le risorse di sistema e opera all’esterno della sandbox. In genere, gli applet java trusted, sono applet creati da un’organizzazione o all’interno di un’intranet aziendale, oppure applet che l’autore firma prima della trasmissione via internet. In generale non è possibile garantire la sicurezza degli applet trusted in quanto l’applet ha un accesso completo alle risorse del sistema.

ARCHITETTURA DI SICUREZZA JAVA

In accordo a quanto riportato in letteratura [8], l’applet Verifier [9], è una parte del sistema run-time di java, che assicura che l’applet segua determinate regole di sicurezza. Per iniziare, l’applet verifier conferma che il file della classe segua le specifiche del linguaggio java. L’applet verifier non presume che il file della classe sia stato prodotto da un compilatore sicuro. Al contrario controlla nel file della classe l’esistenza di violazioni alle regole del linguaggio e altre restrizioni riguardanti lo spazio dei nomi e chiudere altre via di fuga, impiegabili per uscire dal file della classe. In particolare l’applet verifier assicura che: • Il programma non provochi l’overflow o l’underflow dello stack. • Il programma esegua accessi validi alla memoria e ai registri. • I parametri di tutte le istruzioni bytecode siano corretti. • Il programma non converta illegalmente i dati. L’applet verifier svolge queste funzioni critiche analizzando le istruzioni contenute nel file dell’applet. Un browser Web utilizza un solo class loader che il browser attiva all’avvio, dopo questa fase il browser non può estendere, modificare o sostituire il caricatore di class. Gli applet non possono creare o far riferimento a un proprio class loader. L’applet verifier è indipendente dall’implementazione di riferimento Sun del compilatore java e dalle specifiche di alto livello del linguaggio Java. L’applet verifier esamina il bytecode generato dal compilatore java. La JVM si fida (e pertanto esegue) del byte code importato da internet solo dopo che tale bytecode ha passato l’analisi del verifier. Per passare al verifier il bytecode deve rispondere alla sintassi, alle firme degli oggetti, al formato del file della classe ed altre prevedibilità dello stack run-time definiti dall’implementazione. Gli applet sono eseguiti in condizioni di sicurezza relativamente stringenti. L’applet security manager è il meccanismo java che si occupa delle restrizioni sugli applet. Un browser ha un solo manager della sicurezza. L’applet security manager si inizializza all’avvio del browser e in seguito non può essere sostituito, modificato o esteso. Gli applet non possono creare o far riferimento a un proprio gestore della sicurezza. Per una descrizione più dettagliata dell’architettura di sicurezza Java si rimanda alle note bibliografiche [5÷13].

RECS 101 SECURITY

Come evidenziato in precedenza, RECS101, rappresenta un implementazione realistica di un web server integrato capace di gestire al suo interno la JVM. Il problema della sicurezza nel nostro caso presenta diversi vincoli non indifferenti che riguardano le scarse capacità di calcolo del dispositivo realizzato. Sicuramente è quasi impensabile poter implementare tutti i sistemi anti-intrusione presentati nei paragrafi precedenti. Nonostante ciò gioca a nostro favore il fatto che essendo un dispositivo non standard che non ha al suo interno un sistema operativo standard ciò permette di sfruttare le proprietà hardware del dispositivo. Per essere più chiaro, i problemi per cui il dispositivo potrebbe essere vulnerabile, sono principalmente dovuti a:

• Possibile attacco alla password d’accesso al sistema.

• Attacchi al protocollo IP e alla sicurezza dei pacchetti.

• Hyperlink Spoofing.

• Web Spoofing.

Poiché la nostra applicazione si basa sulla JVM, abbiamo un livello di protezione base che comunque ci viene fornito dalla gestione delle Applet (come esposto precedentemente). Le contromisure che abbiamo adottato per far fronte alle problematiche sopra esposte, sono le seguenti: Possibile attacco alla password d’accesso al sistema. RECS 101 non integra al suo interno alcun Sistema di gestione delle chiavi sia esse pubbliche che private, trattandosi di un sistema embedded dedicato al controllo remoto di apparecchiature elettronico il suo utilizzo sarà sicuramente riservato ad una cerchia molto ristretta di utenti di conseguenza si può ipotizzare che gli utenti del sistema possano essere definiti a priori. Ciò implica che il firmware del sistema deve essere programmato in modo tale da inserire tutti i possibili utenti del sistema. La gestione del database delle password ed user ID è effettuata mediante l’applet Java Stessa che andrà a leggere un file crittografato posto all’interno del file system di RECS 101. Attacchi al protocollo IP e alla sicurezza dei pacchetti. Un attacco di questo tipo viene in qualche moto ridotto mediante la crittografia del pacchetto contente lo stato delle porte di I/O. Poiché come si è visto precedentemente le porte di I/O di RECS 101 sono codificate in un dato a 32 bit è possibile inserire un algoritmo di crittografia che possa proteggere il contenuto dei dati. Nel caso in cui RECS 101 venga utilizzato con una propria logica di controllo con operazioni di sniffing è pressoché impossibile risalire all’algoritmo di controllo del sistema poiché questo è contenuto all’interno dell’applet. Hyperlink Spoofing & Web Spoofing. L’implementazione di un supporto SSL all’interno di RECS 101, per la sua complessità è pressoché impensabile. Di conseguenza un attacco Hyperlink Spoofing sarebbe possibile. Per evitare ciò si può pensare di adoperare due RECS 101 che lavorando in parallelo uno controlli gli stati dell’altro, in questo modo la probabilità che entrambi i sistemi vengano attaccati simultaneamente decresce di molto. Per quanto riguarda il Web Spoofing, si può pensare di disattivare il supporto Java in RECS 101, però il prezzo da pagare è la portabilità del dispositivo, nel senso che il dispositivo perderebbe tutte le proprietà inerenti l’accesso alle porte di I/O tramite interfaccia Web. Poiché RECS 101 supporta anche i Socket C è possibile scrivere delle applicazioni Client/Server in C che eseguite localmente in un PC possono attivare una connessione con quest’ultimo. In questo modo si risolvono tutti i possibili problemi di Hyperlink Spoofing e Web Spoofing.

___________

A cura di Cristian Randieri. Articolo pubblicato sulla rivista Fare Elettronica N. 217/218 – Luglio/Agosto 2003.

Per scaricare l’articolo pubblicato sulla rivista, seguire il link riportato di seguito http://www.intellisystem.it/portfolio/fe-lug-ago-2003-recs-101-part-4/

 ___________

Link consigliati per la lettura completa di tutti gli articoli

RECS 101: UN WEB SERVER EMBEDDED PER APPLICAZIONI DI CONTROLLO REMOTO TRAMITE TCP/IP – 1° Parte  

RECS 101: UN WEB SERVER EMBEDDED PER APPLICAZIONI DI CONTROLLO REMOTO TRAMITE TCP/IP – 2° Parte

RECS 101: UN WEB SERVER EMBEDDED PER APPLICAZIONI DI CONTROLLO REMOTO TRAMITE TCP/IP – 3° parte 

Exit mobile version