Scoperte due vulnerabilità nel software di controllo degli accessi TEBE Small

26/03/2019

Backbox TEBE Small Vulnerabilità

Il team di ricercatori BackBox ha individuato due vulnerabilità nel software per il controllo degli accessi in TEBE Small Supervisor v05.01, che potrebbero consentire ad un attaccante di ottenere i privilegi di amministratore e quindi il controllo del sistema. TEBE Small è una soluzione per il controllo degli accessi fisici, realizzato da SAET SpA, azienda che sviluppa soluzioni di sicurezza per privati cittadini, aziende, banche, ministeri, università, musei e altri importanti clienti.

La soluzione TEBE Small consiste in una rete di terminali (lettori di badge) o altri meccanismi di autenticazione e di un “supervisor”, tipicamente installato su una Raspberry Pi che funge da controllore dei terminali. Il “supervisor” è accessibile via web dall’amministratore. Quest’ultimo, attraverso una dashboard, può controllare e configurare il comportamento dei terminali e gestire gli utenti.

Descrizione delle vulnerabilità

Le versioni di software impattate sono:

  • Tebe Small Supervisor v05.01 build 1137
  • WebApp version v04.6

L’applicazione web è interessata da due diverse vulnerabilità che potrebbero permettere ad un attaccante di prendere il controllo del sistema e ottenere la password di amministratore. In particolare le vulnerabilità riguardano la Local File Inclusion (CVE-2019-9106) e la Unauthenticated API calls (CVE-2019-9105).

Proof of concept

Assumendo che il “supervisor” sia raggiungibile all’indirizzo “https://my-supervisor.tld“, il team di Backbox ha riscontrato che nel file “https://my-supervisor.tld/inc/js/saet.js” (incluso nell’index della web application) esistono delle funzioni che richiamano il proxy REST API  all’indirizzo “https://my-supervisor.tld/inc/utils/REST_API.php

La chiamata API può essere ricostruita in questo modo:

$ curl "https://my-supervisor.tld/inc/utils/REST_API.php?command=CallAPI&customurl=history%2Fmaxlastupdate&method=GET&svm_id="

Come è possibile osservare dal seguente risultato

{"lastupdate": 1550490686073, "causal_code": 0, "area": 1, "timestamp": 1550490685, "user_second_name": "Doe", "user_first_name": "John", "badge_id": 1234, "terminal_id": 6, "synchronised": false, "event": 7, "svm_id": 0}

la chiamata permette di ottenere l’history, ovvero di leggere gli eventi di entrata e di uscita senza alcuna autenticazione. Inoltre è possibile, utilizzando specifici parametri nella chiamata API, effettuare il dump dell’intero database.

I ricercatori sostengono di non avere avuto difficoltà ad effettuare il login sulla dashboard a causa della debolezza della password di sysadmin, di conseguenza hanno potuto analizzare altre pagine web, in particolare quelle del tipo “https://my-supervisor.tld/index.php?menu=VIEW_NAME”. Sostituendo VIEW_NAME con qualsiasi stringa, ad esempio “aaa” si ottiene l’errore seguente:

Warning: require(aaa.php): failed to open stream: No such file or directory in /data/webapp/index.php on line 141
Fatal error: require(): Failed opening required 'aaa.php' (include_path='.:/usr/share/php:/usr/share/pear') in /data/webapp/index.php on line 141

Dal messaggio si evince che l’applicativo cerca di includere un file .php nel parametro “menu“. Grazie al filtro php “convert.base64-encode”, il team di Backbox è riuscito, tramite un bash script, a scaricare qualsiasi file php dal server. Sfruttando tale script è stato  possibile far girare un crawler sul server alla ricerca di altri file interessanti, tra cui “login.php” presente nella root directory.

Dall’analisi di questo file risulta presente una chiamata API alladminuser, come mostrato di seguito:

$ curl "https://my-supervisor.tld/inc/utils/REST_API.php?command=CallAPI&customurl=alladminusers&method=GET&svm_id="
[{"username": "admin", "first_name": "admin", "role": 5, "plant_name": null, "password": "5f4dcc3b5aa765d61d8327deb882cf99", "second_name": "admin", "svm_id": 0}]

Lo script genera in output gli hash MD5 di ogni account amministratore, il tutto senza autenticazione.

Infine, avendo l’accesso alla dashboard come amministratore, è possibile eseguire attività privilegiate come abilitare / disabilitare terminali, badge, effettuare il download e upload del database o addirittura aggiornare il firmware dall’apposita sezione.

Conclusioni

La vulnerabilità scoperte in TEBE Small Supervisor potrebbero consentire ad un’attaccante di accedere alla dashboard e ottenere il totale controllo del sistema, oltre alla possibilità di scaricare ed eseguire file “.php” o caricare un qualsiasi tipo di file nella sezione “New Firmware”. Questi difetti, se non risolti, potrebbero compromettere l’integrità del sistema e/o esporre informazioni sensibili.

Il 6 febbraio 2019 il team di BackBox ha notificato al fornitore la vulnerabilità dei prodotti, si attende il rilascio ufficiale degli aggiornamenti.

Non si è ancora a conoscenza se le versioni precedenti la 5.01 siano affette delle medesime vulnerabilità, nel dubbio, in assenza di aggiornamenti, si consiglia di installare i dispositivi su una rete segregata avendo cura di configurare bene le regole di accesso alla rete.