{"id":2074,"date":"2016-10-04T06:41:46","date_gmt":"2016-10-04T04:41:46","guid":{"rendered":"https:\/\/www.ofcourseimright.com\/?p=2074"},"modified":"2016-10-04T06:42:52","modified_gmt":"2016-10-04T04:42:52","slug":"securing-baby-monitors-with-manufacturer-usage-descriptions","status":"publish","type":"post","link":"https:\/\/ofcourseimright.com\/?p=2074","title":{"rendered":"How hard is it to secure a baby monitor?"},"content":{"rendered":"<p><img loading=\"lazy\" decoding=\"async\" class=\"alignright wp-image-2075\" src=\"https:\/\/www.ofcourseimright.com\/blog\/wp-content\/uploads\/2016\/10\/philips-256x300.jpg\" alt=\"Philips In.Sight B120\/37\" width=\"123\" height=\"144\" srcset=\"https:\/\/ofcourseimright.com\/blog\/wp-content\/uploads\/2016\/10\/philips-256x300.jpg 256w, https:\/\/ofcourseimright.com\/blog\/wp-content\/uploads\/2016\/10\/philips.jpg 342w\" sizes=\"auto, (max-width: 123px) 85vw, 123px\" \/>Parents often seek the security of a baby monitor to know that their child is resting comfortably.\u00a0 Unfortunately that security is often misplaced.\u00a0 Last year <a href=\"https:\/\/www.rapid7.com\/docs\/Hacking-IoT-A-Case-Study-on-Baby-Monitor-Exposures-and-Vulnerabilities.pdf\">Rapid7<\/a> produced a damning report, exposing numerous vulnerabilities in these devices.\u00a0 As an example, the <a href=\"http:\/\/www.usa.philips.com\/c-p\/B120_37\/in.sight-wireless-hd-baby-monitor\">Philips In.Sight B120\/37<\/a> made use of a fixed password over an insecure telnet or web service that resides on TCP port 8080.<\/p>\n<p><img loading=\"lazy\" decoding=\"async\" class=\"wp-image-2076 alignleft\" src=\"https:\/\/www.ofcourseimright.com\/blog\/wp-content\/uploads\/2016\/10\/DonAdams-246x300.jpg\" alt=\"Don Adams\" width=\"129\" height=\"158\" \/>The thing is- the In.Sight came very close to getting right, or as the great Maxwell Smart would say, \u201cMissed it by <strong>that<\/strong> much!\u201d\u00a0 That\u2019s because Philips also offers a cloud-based service that would not otherwise require the device to listen to <strong>any<\/strong> TCP port.\u00a0 That\u2019s a good way to go because it is harder to probe the device for vulnerabilities.<\/p>\n<p>One good reason to offer a local service is that some some people do not trust cloud services, and they particularly do not trust cloud services involving images of their children.\u00a0 Indeed this makes for a very difficult choice, because that same Rapid7 report notes problems with some cloud based services, and so parents wouldn\u2019t be wrong to worry.<\/p>\n<p>Either way, I\u2019ve built a MUD file using <a href=\"https:\/\/www.ofcourseimright.com\/mudmaker\">MudFileMaker<\/a>.<\/p>\n<p>A brief view of the application alongside <a href=\"http:\/\/www.tcpdump.org\/\">tcpdump<\/a> together with a quick view of the server binary seems to indicate that cloud communications are to api.ivideon.com.\u00a0 We can thus come up with an appropriate MUD file as follows:<\/p>\n<pre>{\r\n  \"ietf-mud:meta-info\": {\r\n    \"lastUpdate\": \"2016-10-03T12:56:08+02:00\",\r\n    \"systeminfo\": \"Philips In.Sight B120\/37 Baby Monitor\",\r\n    \"cacheValidity\": 1440\r\n  },\r\n  \"ietf-acl:access-lists\": {\r\n    \"ietf-acl:access-list\": [\r\n      {\r\n        \"acl-name\": \"mud-94344-v4in\",\r\n        \"acl-type\": \"ipv4-acl\",\r\n        \"ietf-mud:packet-direction\": \"to-device\",\r\n        \"access-list-entries\": {\r\n          \"ace\": [\r\n            {\r\n              \"rule-name\": \"clout0-in\",\r\n              \"matches\": {\r\n                \"ietf-acldns:src-dnsname\": \"api.ivideon.com\",\r\n                \"protocol\": 6,\r\n                \"source-port-range\": {\r\n                  \"lower-port\": 443,\r\n                  \"upper-port\": 443\r\n                }\r\n              },\r\n              \"actions\": {\r\n                \"permit\": [\r\n                  null\r\n                ]\r\n              }\r\n            },\r\n            {\r\n              \"rule-name\": \"entin0-in\",\r\n              \"matches\": {\r\n                \"ietf-mud:controller\": \"http:\/\/ivideon.com\/babymonitors\",\r\n                \"protocol\": 6,\r\n                \"source-port-range\": {\r\n                  \"lower-port\": 8080,\r\n                  \"upper-port\": 8080\r\n                }\r\n              },\r\n              \"actions\": {\r\n                \"permit\": [\r\n                  null\r\n                ]\r\n              }\r\n            }\r\n          ]\r\n        }\r\n      },\r\n      {\r\n        \"acl-name\": \"mud-94344-v4out\",\r\n        \"acl-type\": \"ipv4-acl\",\r\n        \"ietf-mud:packet-direction\": \"from-device\",\r\n        \"access-list-entries\": {\r\n          \"ace\": [\r\n            {\r\n              \"rule-name\": \"clout0-in\",\r\n              \"matches\": {\r\n                \"ietf-acldns:src-dnsname\": \"api.ivideon.com\",\r\n                \"protocol\": 6,\r\n                \"source-port-range\": {\r\n                  \"lower-port\": 443,\r\n                  \"upper-port\": 443\r\n                }\r\n              },\r\n              \"actions\": {\r\n                \"permit\": [\r\n                  null\r\n                ]\r\n              }\r\n            },\r\n            {\r\n              \"rule-name\": \"entin0-in\",\r\n              \"matches\": {\r\n                \"ietf-mud:controller\": \"http:\/\/ivideon.com\/babymonitors\",\r\n                \"protocol\": 6,\r\n                \"source-port-range\": {\r\n                  \"lower-port\": 8080,\r\n                  \"upper-port\": 8080\r\n                }\r\n              },\r\n              \"actions\": {\r\n                \"permit\": [\r\n                  null\r\n                ]\r\n              }\r\n            }\r\n          ]\r\n        }\r\n      }\r\n    ]\r\n  }\r\n}<\/pre>\n<p>Remember, the router needs to fill out which devices are authorized to be in class <strong>http:\/\/ivideon.com\/babymonitors<\/strong>.\u00a0 Note the use of incoming tcp port 8080<strong>.<\/strong>\u00a0 It is possible at least for the server software run on another port if the configuration is changed.\u00a0 At that moment, the above MUD file would be too restrictive, and the device would not function.\u00a0 To fix that, one would simply remove the TCP port filter.<\/p>\n<p>Again, note that only <strong>authorized<\/strong> communications are listed in the file, and so just because the developer left a telnet server in place doesn\u2019t mean that just anyone would be able to access it.\u00a0 This serves as a means to confirm the intentions of the developers.\u00a0 Of course developers should never leave back doors, but if they do, perhaps MUD can reduce their impact, and let parents rest just a little easier.<\/p>\n","protected":false},"excerpt":{"rendered":"<p>Parents often seek the security of a baby monitor to know that their child is resting comfortably.\u00a0 Unfortunately that security is often misplaced.\u00a0 Last year Rapid7 produced a damning report, exposing numerous vulnerabilities in these devices.\u00a0 As an example, the Philips In.Sight B120\/37 made use of a fixed password over an insecure telnet or web &hellip; <a href=\"https:\/\/ofcourseimright.com\/?p=2074\" class=\"more-link\">Continue reading<span class=\"screen-reader-text\"> &#8220;How hard is it to secure a baby monitor?&#8221;<\/span><\/a><\/p>\n","protected":false},"author":172,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[87,536,9],"tags":[542,518,496],"class_list":["post-2074","post","type-post","status-publish","format-standard","hentry","category-internet","category-mud","category-security","tag-baby-monitors","tag-mud","tag-security"],"_links":{"self":[{"href":"https:\/\/ofcourseimright.com\/index.php?rest_route=\/wp\/v2\/posts\/2074","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/ofcourseimright.com\/index.php?rest_route=\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/ofcourseimright.com\/index.php?rest_route=\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/ofcourseimright.com\/index.php?rest_route=\/wp\/v2\/users\/172"}],"replies":[{"embeddable":true,"href":"https:\/\/ofcourseimright.com\/index.php?rest_route=%2Fwp%2Fv2%2Fcomments&post=2074"}],"version-history":[{"count":4,"href":"https:\/\/ofcourseimright.com\/index.php?rest_route=\/wp\/v2\/posts\/2074\/revisions"}],"predecessor-version":[{"id":2086,"href":"https:\/\/ofcourseimright.com\/index.php?rest_route=\/wp\/v2\/posts\/2074\/revisions\/2086"}],"wp:attachment":[{"href":"https:\/\/ofcourseimright.com\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=2074"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/ofcourseimright.com\/index.php?rest_route=%2Fwp%2Fv2%2Fcategories&post=2074"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/ofcourseimright.com\/index.php?rest_route=%2Fwp%2Fv2%2Ftags&post=2074"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}