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 rozprávať viac o bezpečnosti v riešeniach IoT, sa pozrieme na jednu príhodu, ktorá s touto problematikou úzko súvisí. Stala sa jednému indickému programátorovi, ktorý si kúpil chytrý vysávač. Po roku používania zistil, že tento vysávač neustále odosiela dáta na servery v Číne. Keď mu v tom zabránil, zariadenie sa mu “pomstilo“ a po krátkom čase prestalo fungovať.

Po niekoľkých servisoch a po skončení záruky vysávač rozobral a bez akejkoľvek autentifikácie sa mu podarilo pripojiť sa do jeho riadiacej jednotky (počítača). Tu zistil, čo všetko o jeho domácnosti toto zariadenie vedelo a čo všetko robilo: okrem vysávania odoslalo do Číny aj jeho heslo do wifi siete (samozrejme nezašifrované) a rovnako tak aj podobu jeho bytu, ktorú si vysávač naskenoval. A ako bonus v ňom našiel súbor, vďaka ktorému sa vysávač odmietal zapnúť. Dátum jeho úpravy zodpovedal času, kedy zariadenie prestalo pracovať. To znamená, že niekto na diaľku zmenil jeho režim práce.

A presne o tomto je bezpečnosť v IoT riešeniach - je o zariadeniach, ktoré budeme vpúšťať do našich domácností. Inštalovaním takéhoto zariadenia ste totiž do svojej domácnosti vpustili nového člena, o ktorom však toho veľa neviete:

  • neviete, či jeho firmvér používa poslednú, resp. najaktuálnejšiu verziu,
  • neviete, aké všetky porty má otvorené a kde všade a s kým komunikuje,
  • neviete, čo všetko zariadenie robí okrem toho, čo robiť má,
  • atď.

A v prípade spomínaného vysávača je dobré si položiť otázku, či ste pripravení vpustiť si do svojej domácnosti nového člena s kamerou, ktorý sa v nej dokáže voľne pohybovať? A možno ste to už urobili a ani o tom neviete.

(slide) Dnes sa budeme rozprávať o bezpečnosti v oblasti Internetu vecí. A klasický ftip na túto tému znie takto:

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

Prečo sa venovať bezpečnosti v oblasti IoT?

(slide) Počet zariadení v tejto oblasti bude stúpať. Pohybujeme sa v biliónoch, viď obrázok nižšie (bilion - v amerike je to \(10^{12}\), u nas je to \(10^{18}\))

Predpoveď počtu pripojených IoT zariadení v rokoch 2022-2034

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 hrozieb, 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 alebo dodávateľov. Tento typ hrozby sa týka najmä (ale nie len) 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

(slide) Na tomto mieste sa ponúka ešte jedna otázka:

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

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).

(slide) Supply chain (dodávateľský reťazec) v kontexte IoT bezpečnosti označuje celý reťazec subjektov, procesov a komponentov, ktoré sa podieľajú na vzniku IoT zariadenia – od návrhu až po nasadenie u zákazníka.

(slide) Čo všetko tvorí supply chain IoT zariadenia? Napr.:

  • výrobca hardvéru (čipy, senzory, moduly)
  • dodávatelia firmware a OS (napr. Linux, RTOS)
  • knižnice tretích strán (OpenSSL, MQTT klienti, TLS stacky)
  • cloudové služby (AWS IoT, Azure IoT, vlastné backendy)
  • výrobný proces (factory provisioning, nahrávanie firmware)
  • distribúcia a aktualizačný mechanizmus (OTA update servery)

Stačí, ak je kompromitovaný ktorýkoľvek článok, a útočník môže ovplyvniť finálne zariadenie bez toho, aby výrobca alebo zákazník niečo spozorovali. Vo výsledku tak môžu byť kompromitované tisíce (až milióny zariadení) vzhľadom na to, ktorý komponent bol dodávateľského reťazca bol škodlivý (napr. kompromitovaný firmvér WiFi modulu ovplyvní všetky dosky, ktoré ho obsahujú; alebo backdoor v open-source TLS knižnici ovplyvní všetky riešenia, ktoré jej dôverovali)

Ako zmierniť toto riziko?

(slide) V prípade softvérových komponentov sa tomuto problému dá vyhnúť 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?

Jedným zo spôsob, ako zmierniť toto riziko, je na tento účel použiť existujúce riešnia. Príkladom riešenia, ktoré je možné použiť na vzdialenú správu, nasadzovanie a monitorovanie IoT zariadení, je napr. cloudová platforma Balena Cloud.

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) Táto hrozba sa týka situácie, keď má útočník fyzický prístup k IoT zariadeniu a zariadenie nie je dostatočne chránené proti manipulácii. Vďaka tomu môže napr.:

  • získať citlivé údaje (heslá, kľúče, firmware),

  • prevziať lokálnu kontrolu nad zariadením,

  • alebo si pripraviť pôdu pre neskorší vzdialený (remote) útok.

  • č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