přejít na obsah přejít na navigaci

Linux E X P R E S, Je protokol pro internet věcí MQTT opravdu bezpečný?

Je protokol pro internet věcí MQTT opravdu bezpečný?

mosquitto100.png

Protokol MQTT je bezpečný (secure). Tuto větu jsem našel v dokumentaci jednoho nejmenovaného projektu. A to samo o sobě, bez jakýkoliv dalších podpůrných tvrzení, ve mně vzbudilo příliš velké množství otázek a tedy chuť ověřit si tuto informaci. V následujícím článku najdete shrnutí mého bádání.


Protokol MQTT je komunikační protokol široce používaný v IOT, který se řadí mezi takzvané „Client Server publish-subscribe protokoly“. Lidově řečeno, tento protokol slouží k tomu, aby se malé krabičky domluvily, respektive předaly si navzájem důležité informace. Abychom ale mohli říci alespoň něco o jeho bezpečnosti, musíme si o něm nejprve sami něco zjistit.

Moje cesta začíná u definice protokolu samotného. Jeho nejnovější verze má číslo 5.0, ISO standard ISO/IEC 20922:2016 je pak založen na verzi 3.1.1, která je, na rozdíl od standardu,volně dostupná na webových stránkách projektu. V obou verzích je dokonce celá pátá kapitola věnována bezpečnosti. Je to paradox vzhledem k tomu, jak často se mluví o zranitelnostech IoT zařízení. Pravdou však je, že i starší verze protokolu je z roku 2015, přičemž notná část IoT zařízení, která bývají často terčem útoků, jsou o dost starší; do jejich obměny se ale nikdo nehrne.

Ve standardu je mimo jiné uvedeno, že šifrování je široce využíváno. Čtenář zde najde řadu odkazů na ISO a RFC standardy týkající se bezpečnosti, autentizace, integrity dat, a podobně. To už zní poměrně dobře. Jediné, co to kazí, je povolené zastaralé šifrování DES. Protokol MQTT jako takový by si určitě zasloužil detailnější analýzu, ale tu my teď nepotřebujeme. Zjistili jsme, co jsme potřebovali a alespoň trochu opodstatnili úvodní tvrzení.

Stejně jako u ostatních protokolů, samotná bezpečnost vázne při jejich implementaci. Nejpoužívanější implementací protokolu MQTT je projekt Mosquitto. Zdrojové kódy tohoto projektu jsou dostupné na GitHubu a je tedy možné do nich nahlédnout.

V našem konkrétním případě by náklady na audit zdrojových kódů byly jen těžko ospravedlnitelná položka. Proto nezbývá, než se uchýlit alespoň k několika rychlým nahlédnutím. U síťového protokolu, který má být bezpečný, se dá předpokládat, že bude využívat některou z dostupných SSL knihoven, jako například OpenSSL nebo LibreSSL. Rychlé vyhledání ukázalo, že odhad byl v tomto případě správný. Jeden z příkladů je uveden na obrázku, další příklady nalezené v kódu pak naznačují, že se knihovna opravdu používá.

mosquitto.png

Nyní víme, že Mosquitto využívá knihovnu OpenSSL. Tedy pokud danou funkcionalitu povolíme. Bohužel nám to nic neříká o tom, jestli se tato volba v praxi opravdu používá či nikoliv. Na tuto otázku si můžeme zkusit odpovědět pomocí balíčku jedné oblíbené linuxové distribuce.

Nezjistili jsme sice, jakou volbu zvolí konkrétní výrobci, ale máme aspoň náhled na určitý standard, který poté výrobci mnohdy opíší (pokud na to mají dost výkonu). V tomto případě se podíváme na balík mosquitto v distribuci Ubuntu. Příkazem apt source mosquitto stáhneme do aktuální složky zdrojové soubory z balíku, v souboru mosquitto-1.4.15/config.mk následně nalezneme definici direktivy WITH_TLS, například pomocí grep „WITH_TLS" mosquitto-1.4.15/config.mk. Ve výstupu potom dohledáme vytoužený řádek „WITH_TLS:=yes“. Tím máme potvrzeno, že balíky v dané distribuci TLS používají. O finálním nasazení ovšem rozhoduje až samotná konfigurace, kterou si každý uživatel či výrobce nastaví podle sebe.

Zde naše hledání končí. Protokol se zdá být bezpečný, jeho implementace používá SSL knihovnu a dostupné binární balíky tuto možnost využívají. Podrobnost a přesnost informací závisí především na času a ceně, které má smysl těmto informacím věnovat. V relativně málo krocích (levně) se nám podařilo alespoň trochu osvětlit nepodložené počáteční tvrzení.

Mnoho otázek ale zůstává nezodpovězených. Tou hlavní je, zda je SSL knihovna implementována správně. Nyní ale alespoň víme, že se nejedná o čistě plaintextový protokol, o kterém se tvrdí, že je extra bezpečný.

A jak to vypadá v praxi? Výzkum společnosti Avast uvádí, že v roce 2018 bylo více než 49 000 MQTT serverů dostupných z Internetu. Přes 32 000 jich nebylo chráněno heslem, což znamená, že byly vystaveny riziku úniku dat. V České Republice se tento fakt týkal 158 domácností a firem. Z dat dostupných na serveru Shodan, vyplývá, že nechráněných MQTT serverů bylo v České republice k 30. lednu tohoto roku 321. V blízké době budeme vlastníky konkrétních sítí informovat, aby si zkontrolovali zabezpečení těchto serverů.

Martin Kunc

Autor článku je bezpečnostní analytik sdružení CZ.NIC, které provozuje Národní bezpečnostní tým CSIRT.CZ. Článek vznikl díky projektu Strengthening cyber-security capacities in the Czech Republic, spolufinancovaném Nástrojem Evropské unie pro propojení Evropy, který si klade za cíl zvýšení kybernetické bezpečnosti v ČR.

Nahoru

Odkazy

Top články z OpenOffice.cz

časopis IT Systems

Článek byl převzat z časopisu IT Systems, který se věnuje podnikové informatice a trendům v IT.IT Systems tematicky pokrývá problematiku ERP, CRM, APS a dalších informačních systémů podniku a s tím spojené oblasti business intelligence, plánování, správy dokumentů, bezpečnosti, komunikace atd. Vychází měsíčně od roku 1999.