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í.
Posledná verzia projektu je z roku 2018 a obsahuje týchto 10 hrozieb:
- Slabé, uhádnuteľné alebo natvrdo napísané heslá (z angl. Weak, Guessable, or Hardcoded Passwords)
- Nezabezpečené sieťové služby (z angl. Insecure network services)
- Nezabezpečené rozhrania ekosystému (z angl. Insecure ecosystem interfaces)
- Málo bezpečný aktualizačný mechanizmus (z angl. Lack of secure update mechanisms)
- Používanie nebezpečných alebo neaktuálnych komponentov (z angl. Use of insecure or outdated components)
- Nedostatočná ochrana súkromia (z angl. Insufficient privacy protection)
- Nezabezpečený prenos a ukladanie dát (z angl. Insecure data transfer and storage)
- Nedostatočná správa zariadení (z angl. Lack of device management)
- Nebezpečné predvolené nastavenia (z angl. Insecure default settings)
- Slabá fyzická ochrana zariadení (z angl. Lack of physical hardening)
Podrobnejšie sa na ne pozrieme v tejto prednáške.
Poznámka
V infraštruktúre IoT riešení sa nenachádzajú len veci, ktoré sú riadené mikrokontrolérmi. Nachádzajú sa v nich aj rozličné softvérové služby, ktoré môžu byť spustené vo forme kontajnerov alebo v nich môžu byť zakomponované aj počítače s veľkým výkonom. OWASP IoT Top 10 sa neviaže na konkrétnu technológiu, ale hovorí o problémoch vo všeobecnosti. Rozličné problémy sa teda budú týkať rozličných zariadení a riešení.
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.
(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
(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í.
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á:
- Defcon 22 - Hack All The Things 20 Devices in 45 Minutes
- Hack All The Things: 20 Devices in 45 Minutes
Ako zmierniť toto riziko?
Typy testovania bezpečnosti internetu vecí
- IoT penetration testing
- Threat modelling
- Firmware Analysis
Additional Sources
CZ Podcast 224 - průmyslové IoT - V tomto díle jsme zavítali za Štěpánem Bechynským do Microsoftu, se kterým jsme probírali průmyslové využití IoT. Štěpán vyprávěl o zajímavých projektech např. optimalizaci nanášení lepidla na etikety pivních lahví. Poslední díl v roce 2019 si užijte.
Shodan - Search Engine for the Internet of Things.
Wigle.net - All the networks. Found by Everyone.
https://www.iot-inc.com/the-s-in-iot-stands-for-security-article/
KLINEDINST, Dan a Christopher KING. On Board Diagnostics: Risks and Vulnerabilities of the Connected Vehicle [online]. CERT® Coordination Center, 2016, 29 [cit. 2023-12-03]. Dostupné z: https://insights.sei.cmu.edu/documents/472/2016_019_001_453877.pdf
Smart chladnička či detská pestúnka? IoT zariadenia sú plné rizík. Na čo si dať pozor
Smart chladnička či detská pestúnka? IoT zariadenia sú plné rizík. Na čo si dať pozor
DEF CON 32 - Anyone can hack IoT- Beginner’s Guide to Hacking Your First IoT Device - Andrew Bellini