Remix.run Logo
micah94 a day ago

So we're at the point that finding hardcoded admin passwords is no big deal.

mtlynch a day ago | parent | next [-]

It's a hardcoded default password, not a permanent backdoor. If I'm understanding the post correctly, the user changes it as part of the onboarding flow.

This is the way most apps work if they have a default password the user is supposed to change.

bri3d 21 hours ago | parent | next [-]

The device should ideally have some kind of secret material derived per device, like a passphrase generated from an MCU serial number or provisioned into EEPROM and printed on a label on the device.

Some form of "enter the code on the device" or "scan the QR code on the device" could then mutually authenticate the app using proof-of-presence rather than hardcoded passwords. This can still be done completely offline with no "cloud" or other access, or "lock in"; the app just uses the device secret to authenticate with the device locally. Then the user can set a raw RTSP password if desired.

This way unprovisioned devices are not nearly as vulnerable to network-level attacks. I agree that this is Not Awful but it's also Not Good. Right now, if you buy this camera and plug it into a network and _forget_ to set it up, it's a sitting duck for the time window between network connection and setup.

mtlynch 21 hours ago | parent | next [-]

I agree that would be nice, but it also doesn't sound all that practical for a small vendor.

I used to sell a home networking device,[0] and I wouldn't do what you're describing. If there were an issue where the labels calculate the wrong password or the manufacturer screws up which device gets which label, you don't find out until months later when they're in customer hands and they start complaining, and now you have to unwind your manufacturing and fulfillment pipeline to get back all the devices you've shipped.

All that to protect against what attack? One where there's malicious software on the user's network that changes the device password before the user can? In that case, the user would just not use the camera because they can't access the feed.

[0] https://mtlynch.io/i-sold-tinypilot/

bri3d 20 hours ago | parent | next [-]

Ha! I actually use TinyPilot all the time, nice!

> I agree that would be nice, but it also doesn't sound all that practical for a small vendor.

Personalizing / customizing per device always introduces a huge amount of complexity (and thus cost). However, this is TP-Link we're talking about, who definitely have the ability to personalize credentials at scale on other product lines.

And again, to be clear, I'm not trying to argue that the current way is some horrible disaster from TP-Link, just advocating for a better solution where possible. I think the current system reads as fine, honestly, it sounds like typical cobbled together hardware vendor junk that probably has some huge amount of "real" vulnerability in it too, but this particular bit of the architecture doesn't offend me badly.

> now you have to unwind your manufacturing and fulfillment pipeline to get back all the devices you've shipped.

This can be avoided with some other type of proof-of-presence side channel which doesn't rely on manufacturing personalization - for example, a physical side-channel like "hold button to enable some PKI-based backup pairing or firmware update mode." For a camera, there should probably be an option to make this go away once provisioning is successful, since you don't want an attacker performing an evil maid attack on the device, but for pre-provisioning, it's a good option.

stephen_g 8 hours ago | parent [-]

> Personalizing / customizing per device always introduces a huge amount of complexity (and thus cost)

For a hardware product mass produced like this, they should already have a custom label that has the unique serial number on it which is also programmed into each device, so they should already have the infrastructure to do that (potentially as part of automated board testing/flashing).

Adding a randomly generated password is hardly more work once you have the ability to do that.

chrisweekly 19 hours ago | parent | prev | next [-]

Slight tangent: I just read your Tiny Pilot blog post, which was interesting and worthwhile. Thanks for sharing that!

kelnos 21 hours ago | parent | prev [-]

TP-Link is far from being a small vendor, though.

mtlynch 21 hours ago | parent | next [-]

Ah, I see. I thought OP used TP-Link for their router. I missed that Tapo (the camera manufacturer) is a subsidiary of TP-Link.

creeble 20 hours ago | parent | prev [-]

I think he has it backwards: Easy for a small vendor, very hard for a large one.

stephen_g 8 hours ago | parent [-]

For a large manufacturer, it can be flashed onto the device automatically by a machine as part of the production line. That's not easy to set up, but basically something they already need to have set up (you don't want to have humans have to plug in boards to flash firmware and load serial numbers, etc. on to every unit).

crowfunder 18 hours ago | parent | prev | next [-]

> The device should ideally have some kind of secret material derived per device, like a passphrase generated from an MCU serial number or provisioned into EEPROM and printed on a label on the device.

It is better than simple secret like 12345678 but it can go wrong too, like in the case of UPC UBEE routers where the list of potential passwords can be narrowed down to like ~60 possibilities using a googled generator [1] whilst knowing only the SSID.

It did require firmware reverse engineering to figure out [2][3] but applies to most devices I've encountered. User should ideally always change the default password regardless.

[1] https://upcwifikeys.com/UPC1236567

[2] https://deadcode.me/blog/2016/07/01/UPC-UBEE-EVW3226-WPA2-Re...

[3] https://web.archive.org/web/20161127232750/http://haxx.in/up...

otikik 7 hours ago | parent | prev | next [-]

Well it was "the cheapest cam in Amazon" according to the article so my expectations were that this would not be "ideal".

pabs3 10 hours ago | parent | prev | next [-]

> The device should ideally have some kind of secret material derived per device

Thats the wrong way to do it, just require the user create a secret on first boot, and have factory reset functionality for when you forget it.

yannyu 21 hours ago | parent | prev | next [-]

AT&T routers, for example, ship like this. There's a wifi network and a wifi password printed onto the device.

But that also means then that often anyone with physical access can easily get into the device. The complicated password provides an additional layer of illusion of security, because people then figure "it's not a default admin password, it should be good". The fundamental problem seems to be "many people are bad at passwords and onboarding flows", and so trying variations on shipping passwords seem to result in mostly the same problems.

some_random 21 hours ago | parent | next [-]

If you have physical access you can just factory reset the device and onboard it with the normal flow though

yannyu 20 hours ago | parent | next [-]

That's fair, though at least resetting would indicate that an attack happened. Default passwords and printed passwords can result in undetected attacks, which are arguably worse.

some_random 18 hours ago | parent [-]

It doesn't change anything in this case though, you can't use the default password against a tp-link device after it's been onboarded.

21 hours ago | parent | prev [-]
[deleted]
mystifyingpoi 21 hours ago | parent | prev | next [-]

Same with Orange branded ones. There is even a QR code that you can scan on your phone - no more typing 16-24 hex characters.

It's hard to decide whether it's good or bad. It is definitely easier. Which I guess matters most in consumer grade routers.

recursive 19 hours ago | parent | prev [-]

I feel seen. Why is the security illusory? I still don't understand the problem with this. Is the concern that someone will break into my house to covertly get access to my wifi password?

miki123211 19 hours ago | parent | prev | next [-]

These may be illegal in some jurisdictions due to accessibility laws, and are a bad idea in general, for these reasons as well as unattended configuration scenarios.

some_random 21 hours ago | parent | prev [-]

If you buy the camera, plug it in, and forget to set it up, you just flat out can't use it right? I agree that proof of presence is way better but how many people are seriously going to be affected?

bri3d 21 hours ago | parent [-]

No, if you buy the camera, plug it in, and forget to set it up, then someone can use the default password and key material stored in the app to pretend to be the app and provision it on your behalf.

That's the only real vulnerability here, and it's no big deal, but it is A Thing and there is definitely a better way to do this that doesn't lose the freedom of full-offline.

2rsf 8 hours ago | parent | next [-]

There could be another scenario. I assume that factory resetting the camera will bring back the default password. Factory reset is a long press on the power button (in some cheap TPlink camera), so in theory someone with physical access can take control over the camera without you noticing until you try and use it.

some_random 21 hours ago | parent | prev [-]

Ok yeah I think we're in agreement then.

lo0dot0 2 hours ago | parent | prev | next [-]

"if you don't know what you're doing don't do it" vs. "Secure out of the box"

m463 21 hours ago | parent | prev [-]

on the other hand "onboarding" seems to be a less offensive normalizing word which really means "ask permission to use device"...

some_random 21 hours ago | parent | prev | next [-]

Hard coded admin passwords that you have to change in order to start using the device aren't really an issue.

xp84 a day ago | parent | prev | next [-]

I mean, given that it's updated after setup with the normal flow, I'm okay with it.

The thing I've most been convinced of in the past 5 years of building as much 'iot/smart home' stuff out as possible in my house is that nearly every vendor is selling crap that has marginal usefulness outside of a 'party trick' in isolation. Building out a whole smart home setup is frustrating unless it's all from one vendor, but there isn't one vendor which does all of it well for every need.

On my phone I have apps for: Ecobee, Lutron, Hue, 4 separate camera vendors[1], Meross, and Smart Life. Probably a couple more that I'm forgetting.

Only Lutron and Hue are reasonable in that they allow pretty comprehensive control to be done by a hub or HomeKit so I never have to use those apps.

It's been years since Matter and Thread were supposedly settled upon as the new standards for control and networking, but the market is, instead of being full of compatible devices, instead absolutely packed with cheap wi-fi devices, each of which is cloud-dependent and demands to be administered and even used day-to-day only through a pile-of-garbage mobile app whose main purpose is to upsell you on some cloud services.

[1] I admit the fact I have 4 is my fault for opportunistically buying cameras that were cheap rather than at least sticking with one vendor. But many people have a good excuse, perhaps one vendor makes the best doorbell camera, while another might make a better PTZ indoor camera.

hleszek a day ago | parent [-]

Home Assistant is making more and more sense to make your own fully local and private home automation system.

johnmaguire a day ago | parent | next [-]

Absolutely. I've been using Home Assistant for around 6 years now and it's absolutely amazing for tying hardware from varying ecosystems together.

Even if your hardware doesn't support local APIs, there's a good chance someone has made an HA integration to talk to their cloud API.

borski a day ago | parent [-]

> Even if your hardware doesn't support local APIs, there's a good chance someone has made an HA integration to talk to their cloud API.

And if they haven’t, you can pretty trivially write your own and distribute it through HACS (I’ve got three integrations in HACS and one in mainline now)

xp84 20 hours ago | parent | next [-]

Thank you for your contributions btw! There is so much amazing work that's gone into HA and I appreciate it every day.

borski 20 hours ago | parent [-]

Thanks, but it really is a community effort. Even the one I wrote the most of was still me and another guy (the Lucid Motors integration).

joostlek 17 hours ago | parent | prev [-]

I'd love to see what's needed to get some of these integrations in core!

xp84 a day ago | parent | prev [-]

I love it! But my setup has a lot of sharp edges. It's a combo of things where the "standards compatible" way to connect to HA lacks things like camera control, by dastardly vendors like Chamberlain who basically killed HA support for spite, and finally, by having to use Google or Amazon for voice assistants.

My #1 wish would be for someone to build a HA-native voice assistant speaker. I'd pay $100 each for a smart speaker of the physical quality of the $30 Google Home Mini but which integrated directly with HA and used a modern LLM to decide what the user's intent was, instead of the Google Assistant or Siri nonsense which is like playing a text adventure whose preferred syntax changes hourly. I'd pay that plus a monthly fee to have that exist and just work.

paddleon 21 hours ago | parent | next [-]

you may be interested in https://www.home-assistant.io/voice-pe/

or

https://www.home-assistant.io/voice_control/thirteen-usd-voi...

projektfu 21 hours ago | parent | prev | next [-]

Chamberlain can't change MyQ to get around the fact that HA can operate the switch in your garage with a simple controller attached to it. It is very annoying that they are anti-hacker though.

paddleon 21 hours ago | parent | prev [-]

or roll your own.

This M5 Stack ASR unit costs $7.50, and has a vocab of about 40-70 words. That's enough to turn on/off lights and timers. You might need to come up with your own command language, but all of the ASR is extremely local

https://shop.m5stack.com/products/asr-unit-with-offline-voic...

xp84 20 hours ago | parent [-]

That is probably a great and fun way to solve the problem for those with even a little free time.

Sadly for family reasons I sadly can't take on projects that require more than a few minutes, so I'm holding out hope for someone to bridge the gap between the "project boards that require writing a bunch of code to interface with Home Assistant and define all of its possible abilities and commands" and "dumb as a post Google thing that you just plug in" with a hardware device that is easy to connect to HA and starts out doing what the Google thing can do, but smart instead of stupid like the legacy voice assistants are.

jama211 20 hours ago | parent | prev | next [-]

Well, they aren’t here though.. I feel like you just wanted to be annoyed at this tech

j45 a day ago | parent | prev [-]

Smartphones can be seen by some as the initial hostile devices.

Network devices can at least be monitored and discovered like this.