How hard is it to secure a baby monitor?

Philips In.Sight B120/37Parents often seek the security of a baby monitor to know that their child is resting comfortably.  Unfortunately that security is often misplaced.  Last year Rapid7 produced a damning report, exposing numerous vulnerabilities in these devices.  As an example, the Philips In.Sight B120/37 made use of a fixed password over an insecure telnet or web service that resides on TCP port 8080.

Don AdamsThe thing is- the In.Sight came very close to getting right, or as the great Maxwell Smart would say, “Missed it by that much!”  That’s because Philips also offers a cloud-based service that would not otherwise require the device to listen to any TCP port.  That’s a good way to go because it is harder to probe the device for vulnerabilities.

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.  Indeed this makes for a very difficult choice, because that same Rapid7 report notes problems with some cloud based services, and so parents wouldn’t be wrong to worry.

Either way, I’ve built a MUD file using MudFileMaker.

A brief view of the application alongside tcpdump together with a quick view of the server binary seems to indicate that cloud communications are to api.ivideon.com.  We can thus come up with an appropriate MUD file as follows:

{
  "ietf-mud:meta-info": {
    "lastUpdate": "2016-10-03T12:56:08+02:00",
    "systeminfo": "Philips In.Sight B120/37 Baby Monitor",
    "cacheValidity": 1440
  },
  "ietf-acl:access-lists": {
    "ietf-acl:access-list": [
      {
        "acl-name": "mud-94344-v4in",
        "acl-type": "ipv4-acl",
        "ietf-mud:packet-direction": "to-device",
        "access-list-entries": {
          "ace": [
            {
              "rule-name": "clout0-in",
              "matches": {
                "ietf-acldns:src-dnsname": "api.ivideon.com",
                "protocol": 6,
                "source-port-range": {
                  "lower-port": 443,
                  "upper-port": 443
                }
              },
              "actions": {
                "permit": [
                  null
                ]
              }
            },
            {
              "rule-name": "entin0-in",
              "matches": {
                "ietf-mud:controller": "http://ivideon.com/babymonitors",
                "protocol": 6,
                "source-port-range": {
                  "lower-port": 8080,
                  "upper-port": 8080
                }
              },
              "actions": {
                "permit": [
                  null
                ]
              }
            }
          ]
        }
      },
      {
        "acl-name": "mud-94344-v4out",
        "acl-type": "ipv4-acl",
        "ietf-mud:packet-direction": "from-device",
        "access-list-entries": {
          "ace": [
            {
              "rule-name": "clout0-in",
              "matches": {
                "ietf-acldns:src-dnsname": "api.ivideon.com",
                "protocol": 6,
                "source-port-range": {
                  "lower-port": 443,
                  "upper-port": 443
                }
              },
              "actions": {
                "permit": [
                  null
                ]
              }
            },
            {
              "rule-name": "entin0-in",
              "matches": {
                "ietf-mud:controller": "http://ivideon.com/babymonitors",
                "protocol": 6,
                "source-port-range": {
                  "lower-port": 8080,
                  "upper-port": 8080
                }
              },
              "actions": {
                "permit": [
                  null
                ]
              }
            }
          ]
        }
      }
    ]
  }
}

Remember, the router needs to fill out which devices are authorized to be in class http://ivideon.com/babymonitors.  Note the use of incoming tcp port 8080.  It is possible at least for the server software run on another port if the configuration is changed.  At that moment, the above MUD file would be too restrictive, and the device would not function.  To fix that, one would simply remove the TCP port filter.

Again, note that only authorized communications are listed in the file, and so just because the developer left a telnet server in place doesn’t mean that just anyone would be able to access it.  This serves as a means to confirm the intentions of the developers.  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.

[del.icio.us] [Digg] [Facebook] [Reddit] [Twitter]

How MUD could help against the Krebs Attack

CybercrimeIn the attack against krebsonsecurity.com, one of the systems that is said to have been used was the “H.264 Network DVR“.  This device accepts HTTP connections, and communicates outbound using FTP and EMail.  There may also be an undocumented protocol for a proprietary interface.

As I’ve previously discussed, use of Manufacturer Usage Descriptions (MUD) can limit the attack surface of a device, and it can also prevent devices from being used to source an attack.    MUD allows for manufacturers to define classes, and now one simply needs to fill them in on deployment.  From the manufacturer’s side, one needs to provide the file.  For the DVR in question, I used MudMaker to create a description that a network device could use to create appropriate network protections:

{
  "ietf-mud:meta-info": {
    "lastUpdate": "2016-10-02T08:28:19+02:00",
    "systeminfo": "DVR H.264",
    "cacheValidity": 1440
  },
  "ietf-acl:access-lists": {
    "ietf-acl:access-list": [
      {
        "acl-name": "mud-65333-v4in",
        "acl-type": "ipv4-acl",
        "ietf-mud:packet-direction": "to-device",
        "access-list-entries": {
          "ace": [
            {
              "rule-name": "entout0-in",
              "matches": {
                "ietf-mud:controller": "http://dvr264.example.com/controller"
              },
              "actions": {
                "permit": [
                  null
                ]
              }
            },
            {
              "rule-name": "entin0-in",
              "matches": {
                "ietf-mud:controller": "http://dvr264.example.com/controller",
                "protocol": 6,
                "source-port-range": {
                  "lower-port": 80,
                  "upper-port": 80
                }
              },
              "actions": {
                "permit": [
                  null
                ]
              }
            }
          ]
        }
      },
      {
        "acl-name": "mud-65333-v4out",
        "acl-type": "ipv4-acl",
        "ietf-mud:packet-direction": "from-device",
        "access-list-entries": {
          "ace": [
            {
              "rule-name": "entout0-in",
              "matches": {
                "ietf-mud:controller": "http://dvr264.example.com/controller"
              },
              "actions": {
                "permit": [
                  null
                ]
              }
            },
            {
              "rule-name": "entin0-in",
              "matches": {
                "ietf-mud:controller": "http://dvr264.example.com/controller",
                "protocol": 6,
                "source-port-range": {
                  "lower-port": 80,
                  "upper-port": 80
                }
              },
              "actions": {
                "permit": [
                  null
                ]
              }
            }
          ]
        }
      }
    ]
  }
}

What is left for the controller to do that is specific to this device is define which devices are in the class http://dvr64.example.com.  That might include the FTP-based logging system that this model uses, for instance, as well as those systems that are authorized to connect to the HTTP port.

The important part of that description is what you don’t see.  You don’t see any of the attack vectors used, because through this whitelist approach, you only specify what is permitted, and everything else aside from name service and time queries is explicitly denied.  This device uses a good few services, and so I haven’t specified each one in the example for brevity’s sake.

This may well have stopped the hacker from gaining access to the device in the first place, and would have stopped the device from being able to attack the blogger, and many other attacks as well.

[del.icio.us] [Digg] [Facebook] [Reddit] [Twitter]

Turning the Home Router from a Threat to a Helping Hand

lybid_1002The Federal Communications Commission is set to vote on a proposed rule that would require cable companies to offer consumers more choices about whether they use a rented cable box or home router or their own.  More choice is good, and one could make a strong argument that lack of consumer choice has retarded development of home routers.  However, this decision may come with a few pitfalls from a security perspective.

Home routers were recently a component of the attack against krebsonsecurity.com.  There are many reasons that this would be the case.  Some routers have as a blank password with user name “admin” that allows anyone to access them.  Others have well-known vulnerabilities in their software that has gone unpatched for years.  If the service provider is providing the router, then we can say that it is responsible for the device’s maintenance.  On the other hand, the consumer has a particularly bad track record of doing a good job protecting the device.

Second, because most consumers do not employ security professionals to protect devices in their homes, the service provider is in a good position to offer that protection.  It does require that the service provider have access to the home router to identify threats within the home itself.  By having some control over that device and having access to logging information, the home router is in a position to identify potential attacks within the home itself.  But the router itself needs some guidance to perform that task, and the router itself typically cannot retain all of the necessary knowledge.  Cloud services are useful for this purpose, whether managed by the SP or by some other entity.

Regardless of what the FCC orders, SPs are in the position of setting the standards necessary to connect a router to the Internet.  CableLabs has set several standards, one known as DOCSIS.  While the current specification has a limited security section, one could easily envision additional capabilities that would protect device within the home.  As new entrants such as Google and Ubiquiti develop additional capabilities, they may have more to say about security in the home.  If home users are to have a choice, one choice they should have is to allow service providers to protect them.


Picture courtesy Sergiy dk on Wikimedia CC BY-SA 3.0

[del.icio.us] [Digg] [Facebook] [Reddit] [Twitter]

What’s a “State-Sponsored Actor”?

Yahoo![Updated thanks to an old friend.]

In Yahoo!’s announcement of the theft of 500 million accounts, the Chief Information Security Officer Bob Lord wrote that the company believes a “state-sponsored actor” was behind the attack.  What does that mean and how would Yahoo! come to this conclusion?

The term “state-sponsored” is vague.  It could means someone who works for a government, or it could mean someone who has in effect been contracted out by a government.  Both Russia and China have been accused of this sort of behavior in the past.  In the case of Russia, there are two well known hacking organizations, Cozy Bear and Fancy Bear that the Washington Post previously reported were involved in the cyberattack against the Democratic National Committee’s systems.  In the case of China, the Elderwood Group was accused of taking part in a successful phishing attack against His Holiness, the Dalai Lama.

But why does Yahoo! believe that the culprit is one of these groups and not any other hacker?  There are several possibilities:

  • Perhaps the botnet systems used used to gain access to the Yahoo! passwords were the same as those used in an earlier attack in which a state-sponsored actor was known to be involved; or
  • The code used to break into Yahoo!’s internal network was the same or similar to code used in an earlier attack that is known to be from one of these groups; or
  • The investigation has been able to determine where the control systems of an attack are and who is accessing them.
  • As my friend points out, governments aren’t in this for the money but for some other purpose.  That means that stolen information isn’t likely to hit the black market anytime soon.  In this case, by the time Yahoo! discovered the problem, the breach was two years old.

Finding proof beyond a reasonable doubt will be difficult.  Consider this: it is possible for the Chinese to make use of a botnet run in Russia or America, or for America to operate a botnet in China to attack systems in Russia, just to lend the appearance as to who the source is, without revealing who the actual source is.

The only fundamental solution to this sort of attack is better end system security.  Only when botnets have dried up can we establish the true source of attacks.  Maybe in my lifetime this will happen.  Maybe.  But that means a lot of people have to do a lot of work.

[del.icio.us] [Digg] [Facebook] [Reddit] [Twitter]

Yahoo! This will happen again

Yahoo!The breach of over 500 million accounts at Yahoo! has caused a number of my friends to deride the company for not applying sufficient protections of private consumer data.  While it’s hard to argue with that claim, one thing is certain: this will happen again.  Maybe not to Yahoo! but to some other giant web site, like Amazon or Facebook or Google or Twitter.

We have concentrated so much trust into so small a percentage of sites that if any one of them has a breach, it can impact hundreds of millions of people.  Americans have previously spoken of banks that are too big to fail.  Social networking sites are similarly so big that when they have an incident, it perturbs our lives in all sorts of ways that we only begin to understand after the fact.

These sites have an interest in maintaining their customer interest, and the network effect helps them: the more people who visit Facebook, the more people Facebook will attract.  This is how the Internet and telephone networks came to be in the first place.

This vast concentration of consumers into a small number of sites also has its upsides: because they are regularly attacked, they have developed very strong expertise to fend off bad guys.  That’s something the average consumer – and even most enterprises – will never have.

This form of market concentration is not an easy problem to solve.  Imagine a world in which we all had software that sat on in our homes instead of in Facebook’s cloud (for instance).  If the software were all the same, then one bug would impact everyone in much the same way as if the software were centrally located.  The only question is how long it would take for an exploit of a vulnerability to propagate, and how long it would take someone to notice.

We know that such distributed software is a problem because one of the key vectors for infection these days is unused and out of date virtual machines or WordPress instances.  This puts aside all the issues of cost of maintaining a WordPress site.  How much does it cost you to maintain your Facebook account today?

One approach would a healthy exchange of social information across a reasonable number (perhaps in the thousands) of well managed sites.  That requires a rethink about how we consider privacy and who is responsible.  It also requires that incentives be aligned for that sharing to occur.  We would in essence be suggesting that Facebook advertisers go elsewhere.  That doesn’t seem like something Facebook would want to see.

[del.icio.us] [Digg] [Facebook] [Reddit] [Twitter]