;

Zařízení internetu věcí (IoT) - zlatý důl pro kyberzločince

4. 10. 2017
Doba čtení: 4 minuty

Sdílet

Autor: Fortinet
Řekne-li se „kyberzločin“, mnoho lidí si představí hackery ve zšeřelých místnostech zírající do poblikávajících monitorů a hledající nový způsob, jak proniknout do cizí sítě. Historicky je tato představa poměrně věrná.

Dnes se z kyberzločinu stal způsob podnikání. Kyberzločinci zhusta dodržují obvyklou pracovní dobu (útoky velmi často nabývají na intenzitě koncem běžné denní směny), cílem útoků je ekonomický prospěch a při rozhodování o cílech a způsobu útoku často hraje roli poměr nákladů a potenciálního výnosu. Hackerské nástroje a škodlivý software je možné objednat online a nechat vyrobit na míru. Využít lze i předpřipravené útoky – rozmáhá se například nabídka vyděračského softwaru jako služby. Někteří vývojáři mají i linku zákaznické podpory.

Inovace přináší nové příležitosti

V centru pozornosti útočníků stojí zařízení internetu věcí. Patří mezi ně přístroje jako digitální bezpečnostní kamery, digitální videorekordéry, herní systémy, chytré domácí spotřebiče, a dokonce i topné a klimatizační systémy. Mnoho z nich je založených na nezabezpečených komunikačních protokolech a nekvalitním kódu. Řada jich má také naprogramovaná zadní vrátka s napevno nastaveným přístupovým heslem a předává data v otevřené podobě. Vzhledem k tomu, že výrobci běžně užívají a sdílí kód z jednoho zdroje, mohou se takové zranitelnosti objevit v celém spektru různých zařízení jedné značky, v zařízeních různých značek v rámci jednoho výrobního konglomerátu, ale i v produktech zcela odlišných výrobců, kteří k připojení svých zařízení k internetu užili shodný veřejně dostupný kód.

Vzhledem k tomu, že tento typ útoků může probíhat autonomně a ve velkém rozsahu, získávají útočníci možnost požadovat výkupné od tisíců obětí současně namísto cílení na jedinou rozsáhlou síť. Kolik byste byli ochotni zaplatit za to, že získáte zpět kontrolu nad svým herním systémem nebo lednicí? Tisíc korun? Nyní si tuto částku vynásobte řádově miliony uživatelů a získáte představu, jak velkou motivaci k investicím do vývoje nových útočných technik kyberzločinci mají.

Vše je propojeno se vším

Chytrá města začínají propojovat elektrorozvodné sítě, systémy řízení dopravy, záchranné systémy a další kritické části infrastruktury a služby do obří integrované sítě. Chytrá auta pomáhají řídit palubní počítače, váš vůz se propojí i s finančním systémem kvůli automatizaci plateb za palivo, mýtné, palubní Wi-Fi, streamovaná multimédia a další služby. Chytré budovy, obhospodařované obřími správcovskými konglomeráty, budou vybavené automatizovaným vytápěním, klimatizací a osvětlením, zabezpečeným vstupem a inteligentními výtahy, které rozpoznají nájemníky a dovezou je do příslušného patra, přičemž správce bude na vše dohlížet vzdáleně.

A takto můžeme pokračovat dále: chytré domácnosti, chytré spotřebiče, interaktivní herní a zábavní systémy, online bezpečnostní systémy a monitory, interaktivní a inteligentní nákupní kiosky, online lékařské konzultace, a dokonce chirurgické zákroky s využitím na dálku ovládaných nástrojů. To vše již funguje nebo bude fungovat ve velmi blízké budoucnosti.

Chránit se je nejen dobrý nápad, ale brzy se může stát povinností ze zákona

Vzhledem k tomu, že mnoho výrobců takových zařízení se neobtěžuje své produkty řádně zabezpečit, je to totéž, jako bychom kyberzločinecké komunitě předali své platební karty i s čísly PIN. Nemusí se totiž nijak namáhat s překonáváním ochrany nebo hledáním způsobů, jak ovládnout robustně zabezpečený operační systém. Překotná snaha výrobců uvádět na trh nové podnikové a spotřebitelské technologie – a mnohdy i systémy základní infrastruktury – s minimálním nebo nulovým zabezpečením znamená pro kyberzločince bezpracný zisk.

Bezpečnostní řešení a strategie dokážou do značné míry jednotlivce i organizace ochránit, avšak vývojáři bezpečnostních řešení nemohou problém vyřešit sami. Svoji úlohu musí sehrát i výrobci IoT zařízení, ale mnoho z nich naneštěstí zastává názor, že účel světí prostředky. Hodiny však tikají a dalším krokem bude zavedení odpovědnosti výrobců za prodej snadno napadnutelných řešení.

Výrobci zařízení IoT se musí připravit na to, že chtějí-li se vyhnout závažnému narušení trhu a nespokojenosti zákazníků, budou muset zavést bezpečnostní standardy, nebo je k tomu donutí nová legislativa. Digitální ekonomika se totiž bude rozvíjet dál, ať už s nimi, nebo bez nich.

- partnerský příspěvek

'; document.getElementById('preroll-iframe').onload = function () { setupIframe(); } prerollContainer = document.getElementsByClassName('preroll-container-iframe')[0]; } function setupIframe() { prerollDocument = document.getElementById('preroll-iframe').contentWindow.document; let el = prerollDocument.createElement('style'); prerollDocument.head.appendChild(el); el.innerText = "#adContainer>div:nth-of-type(1),#adContainer>div:nth-of-type(1) > iframe { width: 99% !important;height: 99% !important;max-width: 100%;}#videoContent,body{ width:100vw;height:100vh}body{ font-family:'Helvetica Neue',Arial,sans-serif}#videoContent{ overflow:hidden;background:#000}#adMuteBtn{ width:35px;height:35px;border:0;background:0 0;display:none;position:absolute;fill:rgba(230,230,230,1);bottom:20px;right:25px}"; videoContent = prerollDocument.getElementById('contentElement'); videoContent.style.display = 'none'; videoContent.volume = 1; videoContent.muted = false; const playPromise = videoContent.play(); if (playPromise !== undefined) { playPromise.then(function () { console.log('PREROLL sound allowed'); // setUpIMA(true); videoContent.volume = 1; videoContent.muted = false; setUpIMA(); }).catch(function () { console.log('PREROLL sound forbidden'); videoContent.volume = 0; videoContent.muted = true; setUpIMA(); }); } } function setupDimensions() { prerollWidth = Math.min(iinfoPrerollPosition.offsetWidth, 480); prerollHeight = Math.min(iinfoPrerollPosition.offsetHeight, 320); } function setUpIMA() { google.ima.settings.setDisableCustomPlaybackForIOS10Plus(true); google.ima.settings.setLocale('cs'); google.ima.settings.setNumRedirects(10); // Create the ad display container. createAdDisplayContainer(); // Create ads loader. adsLoader = new google.ima.AdsLoader(adDisplayContainer); // Listen and respond to ads loaded and error events. adsLoader.addEventListener( google.ima.AdsManagerLoadedEvent.Type.ADS_MANAGER_LOADED, onAdsManagerLoaded, false); adsLoader.addEventListener( google.ima.AdErrorEvent.Type.AD_ERROR, onAdError, false); // An event listener to tell the SDK that our content video // is completed so the SDK can play any post-roll ads. const contentEndedListener = function () { adsLoader.contentComplete(); }; videoContent.onended = contentEndedListener; // Request video ads. const adsRequest = new google.ima.AdsRequest(); adsRequest.adTagUrl = iinfoVastUrls[iinfoVastUrlIndex]; console.log('Preroll advert: ' + iinfoVastUrls[iinfoVastUrlIndex]); videoContent.muted = false; videoContent.volume = 1; // Specify the linear and nonlinear slot sizes. This helps the SDK to // select the correct creative if multiple are returned. // adsRequest.linearAdSlotWidth = prerollWidth; // adsRequest.linearAdSlotHeight = prerollHeight; adsRequest.nonLinearAdSlotWidth = 0; adsRequest.nonLinearAdSlotHeight = 0; adsLoader.requestAds(adsRequest); } function createAdDisplayContainer() { // We assume the adContainer is the DOM id of the element that will house // the ads. prerollDocument.getElementById('videoContent').style.display = 'none'; adDisplayContainer = new google.ima.AdDisplayContainer( prerollDocument.getElementById('adContainer'), videoContent); } function unmutePrerollAdvert() { adVolume = !adVolume; if (adVolume) { adsManager.setVolume(0.3); prerollDocument.getElementById('adMuteBtn').innerHTML = ''; } else { adsManager.setVolume(0); prerollDocument.getElementById('adMuteBtn').innerHTML = ''; } } function onAdsManagerLoaded(adsManagerLoadedEvent) { // Get the ads manager. const adsRenderingSettings = new google.ima.AdsRenderingSettings(); adsRenderingSettings.restoreCustomPlaybackStateOnAdBreakComplete = true; adsRenderingSettings.loadVideoTimeout = 12000; // videoContent should be set to the content video element. adsManager = adsManagerLoadedEvent.getAdsManager(videoContent, adsRenderingSettings); // Add listeners to the required events. adsManager.addEventListener(google.ima.AdErrorEvent.Type.AD_ERROR, onAdError); adsManager.addEventListener( google.ima.AdEvent.Type.CONTENT_PAUSE_REQUESTED, onContentPauseRequested); adsManager.addEventListener( google.ima.AdEvent.Type.CONTENT_RESUME_REQUESTED, onContentResumeRequested); adsManager.addEventListener( google.ima.AdEvent.Type.ALL_ADS_COMPLETED, onAdEvent); // Listen to any additional events, if necessary. adsManager.addEventListener(google.ima.AdEvent.Type.LOADED, onAdEvent); adsManager.addEventListener(google.ima.AdEvent.Type.STARTED, onAdEvent); adsManager.addEventListener(google.ima.AdEvent.Type.COMPLETE, onAdEvent); playAds(); } function playAds() { // Initialize the container. Must be done through a user action on mobile // devices. videoContent.load(); adDisplayContainer.initialize(); // setupDimensions(); try { // Initialize the ads manager. Ad rules playlist will start at this time. adsManager.init(1920, 1080, google.ima.ViewMode.NORMAL); // Call play to start showing the ad. Single video and overlay ads will // start at this time; the call will be ignored for ad rules. adsManager.start(); // window.addEventListener('resize', function (event) { // if (adsManager) { // setupDimensions(); // adsManager.resize(prerollWidth, prerollHeight, google.ima.ViewMode.NORMAL); // } // }); } catch (adError) { // An error may be thrown if there was a problem with the VAST response. // videoContent.play(); } } function onAdEvent(adEvent) { const ad = adEvent.getAd(); console.log('Preroll event: ' + adEvent.type); switch (adEvent.type) { case google.ima.AdEvent.Type.LOADED: if (!ad.isLinear()) { videoContent.play(); } prerollDocument.getElementById('adContainer').style.width = '100%'; prerollDocument.getElementById('adContainer').style.maxWidth = '640px'; prerollDocument.getElementById('adContainer').style.height = '360px'; break; case google.ima.AdEvent.Type.STARTED: window.addEventListener('scroll', onActiveView); if (ad.isLinear()) { intervalTimer = setInterval( function () { // Example: const remainingTime = adsManager.getRemainingTime(); // adsManager.pause(); }, 300); // every 300ms } prerollDocument.getElementById('adMuteBtn').style.display = 'block'; break; case google.ima.AdEvent.Type.ALL_ADS_COMPLETED: if (ad.isLinear()) { clearInterval(intervalTimer); } if (prerollLastError === 303) { playYtVideo(); } break; case google.ima.AdEvent.Type.COMPLETE: if (ad.isLinear()) { clearInterval(intervalTimer); } playYtVideo(); break; } } function onAdError(adErrorEvent) { console.log(adErrorEvent.getError()); prerollLastError = adErrorEvent.getError().getErrorCode(); if (!loadNext()) { playYtVideo(); } } function loadNext() { iinfoVastUrlIndex++; if (iinfoVastUrlIndex < iinfoVastUrls.length) { iinfoPrerollPosition.remove(); playPrerollAd(); } else { return false; } adVolume = 1; return true; } function onContentPauseRequested() { videoContent.pause(); } function onContentResumeRequested() { videoContent.play(); } function onActiveView() { if (prerollContainer) { const containerOffset = prerollContainer.getBoundingClientRect(); const windowHeight = window.innerHeight; if (containerOffset.top < windowHeight/1 && containerOffset.bottom > 0.0) { if (prerollPaused) { adsManager.resume(); prerollPaused = false; } return true; } else { if (!prerollPaused) { adsManager.pause(); prerollPaused = true; } } } return false; } function playYtVideo() { iinfoPrerollPosition.remove(); youtubeIframe.style.display = 'block'; youtubeIframe.src += '&autoplay=1&mute=1'; } }
OSZAR »