IoT Security

bezpečnosť v IoT riešeniach, OWASP IoT Top 10 Project

Záznam z prednášky

Introduction

  • (slide) Ešte skôr, ako sa začneme venovať samotnej téme bezpečnosti v oblasti IoT, skúste si sami odpovedať na nasledujúcu otázku:

    Kedy ste naposledy aktualizovali firmvér na vašom domácom WiFi smerovači?

  • kúpením novej krabičky do domácnosti totiž vpúšťate nového člena, o ktorom toho veľa neviete

    • rovno po kúpe je jeho firmvér/softvér (určite) zastaralý
    • aké komunikačné kanály používa? aké porty má otvorené do sveta?
    • ako dlho a ako často ho bude aktualizovať a podporovať samotný výrobca?
    • aké je predvolené používateľské meno a heslo? a je nutné ho vôbec zmeniť?
  • (slide) Klasický ftip na túto tému totiž znie takto:

    The “S” in IoT stands for “Security”.

OWASP Top 10 IoT Project

(slide) Nadácia OWASP pracuje na zlepšení povedomia o bezpečnosti softvéru prostredníctvom svojich komunitne vedených softvérových projektov s otvoreným zdrojovým kódom. Má desiatky tisíc členov a na zvýšenie povedomia orgranizuje množstvo konferencií po celom svete.

(slide) Najznámejším projektom nadácie je určite projekt OWASP Top Ten. Tento projekt je zoznamom desiatich najkritickejších bezpečnostných rizík, ktoré sú spojené s vývojom webových aplikácií. Tento zoznam je (ne)pravidelne aktualizovaný tisíckami odborníkov v danej oblasti každých niekoľko rokov. Vďaka tomu sú vždy zachytené aktuálne trendy a hrozby v oblasti kybernetickej bezpečnosti.

(slide) Nadácia OWASP však ponúka viacero projektov na zvýšenie povedomia o bezpečnosti. A jedným z nich je aj projekt OWASP IoT Top 10, ktorý sa venuje bezpečnosti práve v oblasti Internetu vecí.

OWASP IoT Top 10 Project

Posledná verzia projektu je z roku 2018 a obsahuje týchto 10 hrozieb:

  1. Slabé, uhádnuteľné alebo natvrdo napísané heslá (z angl. Weak, Guessable, or Hardcoded Passwords)
  2. Nezabezpečené sieťové služby (z angl. Insecure network services)
  3. Nezabezpečené rozhrania ekosystému (z angl. Insecure ecosystem interfaces)
  4. Málo bezpečný aktualizačný mechanizmus (z angl. Lack of secure update mechanisms)
  5. Používanie nebezpečných alebo neaktuálnych komponentov (z angl. Use of insecure or outdated components)
  6. Nedostatočná ochrana súkromia (z angl. Insufficient privacy protection)
  7. Nezabezpečený prenos a ukladanie dát (z angl. Insecure data transfer and storage)
  8. Nedostatočná správa zariadení (z angl. Lack of device management)
  9. Nebezpečné predvolené nastavenia (z angl. Insecure default settings)
  10. Slabá fyzická ochrana zariadení (z angl. Lack of physical hardening)

Podrobnejšie sa na ne pozrieme v tejto prednáške.

1. Slabé, uhádnuteľné alebo natvrdo napísané heslá

Use of easily bruteforced, publicly available, or unchangeable credentials, including backdoors in firmware or client software that grants unauthorized access to deployed systems.

(slide) Jedným z najbežnejších a zároveň najnebezpečnejších bezpečnostných rizík, ktoré môžu ovplyvniť zariadenia internetu vecí, sú slabé alebo ľahko uhádnuteľné heslá. Mnoho zariadení internetu vecí sa dodáva s predvolenými heslami už od výroby, ktoré sú buď ľahko uhádnuteľné, verejne dostupné, nezmenené alebo nemenné. Niektoré zariadenia dokonca obsahujú tajné účty, ktoré sú zámerne používané na diagnostické účely alebo poskytujú zadné vrátka pre samotných vývojárov. Tento typ hrozby sa týka najmä tých IoT zariadení, ktoré disponujú webovým (admin) rozhraním.

Prieskum spoločnosti NordVPN

(slide) Podľa prieskumu NordVPN z roku 2021 vyplýva, že iba necelých 33% opýtaných respondentov odpovedalo, že pre zvýšenie ochrany svojich zariadení zmenia ich predvolené heslá.

Za tento stav sú čiastočne zodpovední aj výrobcovia zariadení, ktorí nijak používateľa nevyzývajú k zmene hesla. Taktiež je možné hovoriť o nedostatočnej osvete používateľov ohľadom rizík, ktoré z tejto situácie vyplývajú.

Natvrdo napísané heslá (známe tiež v angličtine ako embedded credentials alebo hardcoded passwords) sú heslá napísané v textovej podobe priamo v kóde firmvéru zariadenia. Ak útočník získa prístup k zdrojovému kódu, bude mať prístup ku všetkým heslám, ktoré zariadenie používa. Vďaka takto získaným heslám získa automaticky prístup do každého zariadenia, ktoré disponuje rovnakým firmvérom (s rovnakými natvrdo napísanými heslami).

(slide) Príkladom takýchto hesiel sú častokrát aj tieto kombinácie:

  • admin/admin
  • guest/guest
  • user/password
  • root/toor
  • test/test
  • student/student

(slide) K získaniu prístupu do takýchto zariadení nám môžu pomôcť webové aplikácie alebo služby, ktoré sa na tento účel vyslovene špecializujú. Príkladom môže byť Shodan, pomocou ktorého nájdete potrebné IoT zariadenie a následne pomocou služby defpass.com zistíte predvolené prihlasovacie údaje, ktoré už len otestujete.

Hacker terorizoval rodinu prevzatím kontroly nad elektronickou pestúnkou

Hacker terrorizes family by hijacking baby monitor

(slide) V decembri 2018 zobudil v noci mladú rodinu z Texasu hlas hackera prichádzajúci z izby ich 4-mesačného syna, ktorý sa vyhrážal, že unesie ich syna. Keď vyskočili z postele a zasvietili svetlo, kamera na ich elektronickej pestúnke, ktorá bola predtým vypnutá, bola zapnutá tiež. Hacker teda vyzval pár, aby svetlo vypli. Keď tak neurobili, tak im povedal, že “Unesie ich dieťa, pretože je s ním v jeho izbe.”. Otec okamžite vbehol do jeho izby, ale okrem ich syna v nej nikoho iného nenašiel.

Tento problém nebol spôsobený nedostatočným zabezpečením zariadenia, ale použitím hesla, ktoré predtým uniklo. Výrobca preto odporúča svojim klientom, aby miesto predvolených hesiel používali dvojfaktorovú autentifikáciu, a v prípade akéhokoľvek podozrivého správania, ho okamžite kontaktovali.

Ako zmierniť riziko?

(slide) V prípade natvrdo napísaných hesiel alebo prihlasovacích údajov platí, že konfiguračné súbory, v ktorých sa takéto citlivé údaje nachádzajú, sa neposielajú ani do systémov na správu verzií. Každý, kto má prístup k danému repozitáru totiž môže uvedené citlivé údaje získať veľmi jednoducho. Riziko je o to väčšie, ak sa jedná o open source projekt. Github už obsahuje kontrolný mechanizmus, ktorý vlastníka repozitára upozorní, ak v rámci svojho commit-u omylom odoslal do repozitára aj heslá, kľúče alebo autentifikačné tokeny.

Miesto natvrdo napísaných hesiel alebo hesiel uložených v konfiguračných súboroch, sa najamä v prípade mikroslužieb odporúča používať premenné prostredia (viď napríklad The Twelve-Factor App).

V prípade, že zariadenie alebo služba obsahuje používateľské rozhranie, pomocou ktorého je možné prihlasovacie meno a heslo nastaviť, tak toto by malo dbať aj o overenie dostatočnej sily takéhoto hesla. Jednak by malo byť overenie prevedené na základe pravidiel týkajúcich sa vytvorenia hesla (napr. minimálny počet znakov, kombinácia rozličných znakov a pod.), ako aj overenie toho, či takáto kombinácia prihlasovacích údajov sa nenachádza vo verejne dostupných databázach.

(slide) Na overenie toho, či nedošlo ku kompromitovaní účtu na základe emailovej adresy, je možné použiť službu Have I Been Pwned. Služba overuje, či sa zadaný email nenachádza vo verejne známych uniknutých databázach z rozličných služieb.

2. Nezabezpečené sieťové služby

Unneeded or insecure network services running on the device itself, especially those exposed to the internet, that compromise the confidentiality, integrity/authenticity, or availability of information or allow unauthorized remote control…

(slide) Na IoT zariadení môžu byť spustené služby, ktoré pre fungovanie zariadenia alebo pre poskytovanie jeho služby nie sú vôbec potrebné alebo sú nezabezpečené. Napr. ak mám doma chytré svetlo, ktoré komunikuje pomocou WiFi, prečo má otvorený port 23, na ktorom je spustený Telnet server?

Takéto služby sú o to nebezpečnejšie, ak je takéto zariadenie dostupné z internetu. O to viac, ak poskytujú prístup pomocou predvolených prihlasovacích údajov alebo rovno bez nich. Takéto služby totiž môžu pomôcť k úniku dát alebo priamo kompromitovať zariadenie.

(slide) Overiť to, aké porty sú na príslušnom zariadení otvorené, je možné jednoducho pomocou nástroja na skenovanie portov, akým je napríklad nmap:

$ nmap 192.168.1.1
Starting Nmap 7.93 ( https://nmap.org ) at 2023-12-03 18:51 CET
Nmap scan report for 192.168.1.1
Host is up (0.00057s latency).
Not shown: 998 closed tcp ports (conn-refused)
PORT     STATE SERVICE
21/tcp   open  ftp
22/tcp   open  ssh
23/tcp   open  telnet
80/tcp   open  http

Nmap done: 1 IP address (1 host up) scanned in 0.15 seconds

Pomocou tohto nástroja ale vieme urobiť aj scan celej siete a pýtať sa na konkrétny port. Napr. týmto príkazom oscanujeme všetky zariadenia v sieti 192.168.1.0/24, či nemajú otvorený port 80:

$ nmap -p80 192.168.1.0/24

Ako zmierniť riziko?

(slide) Riešením je samozrejme takéto služby, ktoré nie sú potrebné, vypnúť. Ale rovnako aj služby a zariadenia, ktoré reprezentujú IoT riešenie, zapojiť do samostatnej siete izolovanej od ostatných zariadení a internetu.

V prípade nutnosti používania niektorých služieb, by pre komunikáciu malo byť použité šifrované spojenie. To môže byť problém zabezpečiť na mikrokontroléroch, ktoré na to nemajú dostatočný výkon. V tom prípade pomôže aj izolácia siete s takýmito zariadeniami.

3. Nezabezpečené rozhrania ekosystému

Insecure web, backend API, cloud, or mobile interfaces in the ecosystem outside of the device that allows compromise of the device or its related components. Common issues include a lack of authentication/authorization, lacking or weak encryption, and a lack of input and output filtering.

(slide) IoT riešenie sa samozrejme neskladá len z IoT zariadení, ale obsahuje aj množstvo služieb, ktoré poskytujú používateľské rozhranie pre koncových používateľov. To môžu byť napríklad webové rozhrania alebo mobilné rozhrania takýchto služieb, ale rovnako sa môže jednať aj o webové používateľské rozhranie priamo na chytrom zariadení. Taktiež sa však môže jednať aj o komunikačné rozhranie napr. backend API, s ktorým používateľ nekomunikuje priamo, ale komunikuje s ním aplikácia, ktorú používa.

Ako zmierniť riziko?

(slide) Zabezpečiť komunikačné rozhranie je samozrejme možné pomocou spoľahlivého mechanizmu autentifikácie a autorizácie doplnené o kvalitný audítorský mechanizmus. Odporúčanie OWASP-u je v tomto prípade používať existujúce knižnice a mechanizmy, ktoré sú na tento účel určené a nevyvíjať vlastné (neoverené) riešenie.

Celá komunikácia by mala byť šifrovaná a taktiež by malo byť zabezpečené filtrovanie prichádzajúcej aj odchádzajúcej komunikácie na jednotlivých sieťových rozhraniach.

(slide) Obecne môžeme hovoriť, že máme k dispozícii webovú aplikáciu. A pre webové aplikácie obsahuje nadácia OWASP samostatný projekt, ktorý sa volá OWASP Top Ten, ktorý je práve upozorňuje na bezpečnostné riziká súvisiace s vývojom webových aplikácií.

OWASP Top 10 Project

4. Málo bezpečný aktualizačný mechanizmus

Lack of ability to securely update the device. This includes lack of firmware validation on device, lack of secure delivery (un-encrypted in transit), lack of anti-rollback mechanisms, and lack of notifications of security changes due to updates.

(slide) Aktualizácia je jednou z veľkých výziev v oblasti IoT. Tento problém sa týka nedostatku schopností bezpečne a jednoducho aktualizovať zariadenie. Konkrétne sa môže jednať o:

  • príliš komplikovaný proces aktualizácie
  • nedostatočná validácia firmvéru na zariadení
  • nedostatočne zabezpečený prenos aktualizácie (nešifrovaný prenos)
  • chýbajúci roll-back mechanizmus
  • nedostatočné notifikovanie používateľov o nových bezpečnostných aktualizáciách

Ako zmierniť riziko?

(slide) Problematike bezpečných aktualizácií zariadení sme venovali jednu celú prednášku.

5. Používanie nebezpečných alebo neaktuálnych komponentov

Use of deprecated or insecure software components/libraries that could allow the device to be compromised. This includes insecure customization of operating system platforms, and the use of third-party software or hardware components from a compromised supply chain.

(slide) Tento problém sa môže týkať ako softvéru tak aj hardvéru. Zo softvérového hľadiska sa jedná o použitie starých knižníc, pre ktoré už nemusia byť vydávané ani nové aktualizácie. Ale rovnako sa môže jednať o starý firmvér zariadenia, ktorý obsahuje bezpečnostné problémy. Tie sa môžu stať vstupným vektorom pre získanie kontroly nad zariadením.

Rovnako sa ale môže jednať o verzie balíkov operačného systému, ktoré síce nemusia súvisieť s fungovaním aplikácie, ale môžu poskytnúť spôsob, ako daný systém kompomitovať útočníkom.

Vyviesť vývojára aplikácie alebo administrátora systému z rovnováhy môžete tým, že sa ho opýtate na verziu knižnice alebo balíka, ktorý je v systéme používaný. A samozrejme - porovnať jeho verziu s poslednou dostupnou verziou minimálne v danej rade (vetve).

Týmto problémom je ovplyvnený sektor Priemyselného internetu vecí (z angl. Industrial Internet of Things, skrátene IIoT). V tomto prostredí môže byť ťažké aktualizovať a spravovať verzie použitých komponentov v jednotlivých systémoch.

Ako zmierniť toto riziko?

(slide) Vyhnúť sa tomuto problému je možné používaním aktuálnych a bezpečných knižníc. To je možné včasným aktualizovaním používaných komponentov.

Dobrým pomocníkom môže byť aj použitie nástrojov na kontrolu zranitelností. Táto kontrola sa nemusí týkať len knižníc, ktoré používate na vývoj, ale rovnako aj platformy (operačného systému), na ktorom bude vaše riešenie nasadené. Takéto nástroje je ideálne zaradiť do CI/CD.

Jedným z týchto nástrojov je napr. Grype, ktorý slúži na overenie bezpečnosti Docker obrazov. Overenie bezpečnosti služby Notifier, ktorú sme vytvorili počas cvičení, by mohlo vyzerať nasledovne:

$ docker container run --rm -it \
  --volume /var/run/docker.sock:/var/run/docker.sock \
  anchore/grype:latest \
  bletvaska/notifier

6. Nedostatočná ochrana súkromia

User’s personal information stored on the device or in the ecosystem that is used insecurely, improperly, or without permission.

(slide) Zariadenia a služby častokrát uchovávajú osobné informácie používateľov, pomocou ktorých ich je možné identifikovať. Tieto údaje však častokrát uchovávajú nesprávne, nezabezpečene alebo bez vhodných prístupových práv, pričom by to mali robiť s ohľadom na právne predpisy ochrany takýchto údajov, akými je napr. General Data Protection Regulation (skrátene GDPR) v krajinách Európskej únie.

Ako zmierniť toto riziko?

(slide) Pri ukladaní osobných údajov je potrebné zabezpečiť, aby tieto údaje boli ukladané s potrebnými prístupovými právami daného používateľa, bezpečne, a aby tieto údaje boli ukladané šifrovane.

Ochranu je možné zvýšiť šifrovaním lokálneho úložiska s obmedzením prístupu len pre tých, ktorí ho potrebujú.

7. Nezabezpečený prenos a ukladanie dát

Lack of encryption or access control of sensitive data anywhere within the ecosystem, including at rest, in transit, or during processing.

(slide) Okrem toho, že pri prenose údajov v sieti, je dobré tieto dáta šifrovať napr. pomocou TLS, šifrovanie by sa malo používať aj pri ukladaní údajov. To zabezpečí, že aj keď sa útočníkovi podarí získať prístup k údajom, nebude schopný ich prečítať. To môže byť dôležité hlavne v prípadoch, ak ukladané údaje majú citlivý charakter, ako napr. osobné údaje alebo video záznamy uložené vo vnútri kamery.

Ďalšie príklady nezabezpečeného prenosu a ukladania dát môžu byť nasledovné:

  • odosielanie dát cez nezabezpečenú sieť bez šifrovania
  • ukladanie dát do nešifrovanej databázy alebo súboru
  • nesprávne obmedzenie prístupu k citlivým údajom na základe rolí (z angl. role-based access, skrátene RBA)
  • neoverovanie integrity ukladaných údajov, čo môže viesť k možnému poškodeniu údajov

Ako zmierniť toto riziko?

Vo všeobecnosti je možné riziko zmierniť obmedzením prístupu k citlivým údajov a uistiť sa, že všetky údaje sú šifrovane uložené (rest), pri prenose (transit), ako aj pri spracovávaní (processing).

8. Nedostatočná správa zariadení

Lack of security support on devices deployed in production, including asset management, update management, secure decommissioning, systems monitoring, and response capabilities.

(slide)

Správa IoT zariadení zahŕňa operácie ako: provisioning, monitorovanie činnosti a aktualizáciu zariadení. To platí pre všetky zariadenia vrátane IoT brán.

Obrovské množstvo rovnakých IoT zariadení je výzvou. V prípade ich kompromitovania, môže byť proces ich obnovenia náročný ako časovo, tak aj finančne. To platí hlavne v prípadoch, ak sa jedná o inštalácie týchto zariadení vo vzdialených geografických oblastiach.

Ako zmierniť toto riziko?

9. Nebezpečné predvolené nastavenia

Devices or systems shipped with insecure default settings or lack the ability to make the system more secure by restricting operators from modifying configurations.

(slide) Veľa IoT zariadení je distribuovaných s nebezpečnými predvolenými nastaveniami a niektoré zariadenia ich neumožňujú ani zmeniť. To zjednodušuje útočníkom získať prístup alebo údaje z takýchto zariadení.

Mirai Botnet

(slide) Príkladom zneužitia bol napríklad Mirai malvér, ktorý sa šíril v roku 2016. Jeho podstatou bolo infikovanie chytrých zariadení s ARC procesorom, na ktorých bol nainštalovaný OS Linux. Mirai skenoval internet a hľadal práve tieto zariadenia a skúšal sa do neho dostať pomocou predvolených prihlasovacích údajov. Ak sa mu to podarilo, tieto zariadenia infikoval a vytvoril z nich svojich bot-ov (zombíkov). Pomocou nich v septembri 2016 vykonali masívny DDoS útok na jednu bezpečnostnú spoločnosť.

Autori tohto malvéru publikovali jeho zdrojový kód na internete, čo neskôr viedlo ku vytvoreniu ďalších sofistikovanejších verzií.

Ako zmierniť toto riziko?

10. Slabá fyzická ochrana zariadení

Lack of physical hardening measures, allowing potential attackers to gain sensitive information that can help in a future remote attack or take local control of the device.

(slide)

  • čitateľné heslá uložené na disku/flash
  • micropython kód
  • firmvér a strings
  • UART a logy

Ukážku nedostatočného fyzického zabezpečenia prezentujú napr. tieto videá:

Ako zmierniť toto riziko?

Typy testovania bezpečnosti internetu vecí

  1. IoT penetration testing
  2. Threat modelling
  3. Firmware Analysis

Additional Sources