"I deleted keys generated by our TV for 5 straight minutes. 5 Minutes of like 200BPM clicking. I restarted. Everything worked again. I laughed so hard I cried. I felt like I'd solved a murder."

Tech people, THIS IS A GREAT FANTASIC READ!!!

The title is, "DO NOT BUY HISENSE TV'S"

https://cohost.org/ghoulnoise/post/5286766-do-not-buy-hisense-t
#Tech #Android #TV #Debug

@davemark wow. TV DDOSs PC. This sounds like a vulnerability in PnP. Completely insane.

@pixel 💯

And the write up was fascinating and entertaining.

@pixel @davemark It's definitely a bug in Windows. Sure, the TV shouldn't be changing the UUID all the time, but Windows absolutely shouldn't DoS itself when it encounters a bunch of UUIDs on the network.
@jernej__s @davemark not sure how it could protect itself from this though other than throttling

@pixel @davemark If I understood the post correctly, the problem happens because Windows is doing something with all those UUIDs, which stalls the UI.

First of all, Task Manager should never be affected by that – its purpose is to manage tasks, most commonly used to kill whatever program got stuck.

Taskbar likewise shouldn't deal with those things, at least not unless you specifically click on the flyout to project your screen somewhere (I'm assuming this is where it needs the list of UPnP devices), and even then the projection task shouldn't freeze the whole taskbar.

Settings is a problem, though I don't know why it can't process this asynchronously, like it does with everything else, including stuff that it shouldn't (I regularly have it seemingly not react to a click, then I navigate somewhere else, when the popup from that earlier click finally opens; while this is awful UX, it's exactly what would've helped with the problem at hand).

Plus, if it can't handle a few thousand devices efficiently, maybe the list should be limited in size, and only show eg. last 100 encountered devices.

@jernej__s @davemark Oh, I thought it was a different issue — that the networking stack was being overwhelmed.

@pixel @jernej__s @davemark

My guess is that it's allocating some internal resource for each UUID--launching a process or thread, maybe, and/or opening some handles--and what the poster is seeing is the fallout of the OS running out of them and going into firefighting mode.

This is absolutely a Windows bug. They made the classic mistake of trusting data on the network. But, tbf, it's an easy thing to miss.

@suetanvil @pixel @jernej__s @davemark This is effectively a DOS (Denial Of Service) issue, i.e. in that way it's something that's not necessarily a bug (you just have not enough RAM/CPU power to handle all those apparent devices on your network!) but should be resolved in Windows, indeed.

Also, curses to the programmer who didn't read the docs on how to do SSDP/UPnP (I am currently writing a SSDP browser app and am having my own fun with it).

@suetanvil @pixel @jernej__s @davemark Microsoft is repeatedly bad at algorithms in Windows getting out of control when dealing with more items than expected. See the problem Windows Update had calculating deprecation chains for Internet Explorer late in Windows 7's run. You'd start the PC and it would sit at 100% CPU for a few hours trying to figure it out
@pixel @jernej__s @davemark By not creating persistent state for every device it ever sees on the network, only ones that, by user intent, have interaction state to save. This is not hard at all. They're just doing stupid shit.
@pixel
There's no vulnerability in UPnP, UPnP itself is the vulnerability.
@davemark
@Mawoka @pixel @davemark Well, to a certain degree it's broken, yes. But DoS (not even DDoS) through UPnP in that way is very new. And I wonder whether one could kinda channel device discovery packages through the Internet to Windows in order to fill up the device tree (nothing more). That'd be terrible.
@davemark Well that was a roller coaster ride

@davemark

Whoa. Please, everyone, put all of your IoT devices on a separate network than your secured devices. All IoT devices need to be considered as unsecured backdoors into your network.

@ashhobbit @davemark yup. Came here to talk about this.

It’s sad that the default way common things are sold today (like TVs) require fairly sophisticated knowledge of networking. My family wouldn’t figure out the solution nor the preventative measures in a million years. They would just give up.

@linux_mclinuxface @ashhobbit @davemark Won’t that cause problems controlling devices from a different network/the one our laptops use for example?

@tomk @linux_mclinuxface @davemark

It depends on the device. Some devices can be controlled from a different network (my TP-Link smart switches and outlets can do this). Other devices can only be controlled from the same network (my soundbar is this way).

If you have to connect to an IoT device on the same network, switch your controlling device over to the IoT network and switch back to your secured network when you're done.

@ashhobbit @tomk @davemark the way I did this on my UniFi setup was far too complicated for the normals. I’m able pass in particular traffic from one VLAN to another, but only just enough to accomplish what I need. I’ve been doing this stuff for decades now and I found it challenging.

@linux_mclinuxface @tomk @davemark

Yeah, I think separate networks are the way to go for most inexperienced users. It's not convenient for some devices, but convenience is the enemy of security.

A separate IoT or guest network can be enabled on many modern routers. If it's not available on your router, get a new router that has it available.

Otherwise, if you have extra routers available, you can use the "3 dumb routers" method, but you'll be maintaining 3 routers. I've been using 3 dumb routers for probably 8 years now, and I almost never take a secure device over to the IoT network.

(Edited to add that a guest network could be used, if your router doesn't have an IoT network option.)

@ashhobbit @linux_mclinuxface @davemark Interesting! I have a provider-supplied modem/router with WiFi disabled, an AirPort Extreme that bridges that router, and an AirPort Express with the version that has AirPlay 2. Could probably use that one for the IoT thingies? How do my secure devices find the IOT devices? Any network setting I should keep in mind?

@tomk @linux_mclinuxface @davemark

I'm not familiar with the AirPorts, but yes, you can do this with 3 routers, with your ISP modem/router as the base router with wifi turned off. Plug your other two routers into the base router. One router would be for your secure network - for your computers, phones, and tablets (any device that gets regular security updates). The other is for IoT devices - your TVs, smart plugs, streaming devices, light bulbs.

The two networks need to be named differently. Make sure all routers have up-to-date firmware.

If you can't control an IoT device from a separate network, do you have an old phone or tablet that you can leave connected to the IoT network, just for controlling the IoT devices? As an alternate, you could also switch your phone over to the IoT network when you need to control an IoT device, then switch back to the secure network when you're done.

If you have a lot of devices, it could be a real pain to set everything up right.

@ashhobbit @linux_mclinuxface @tomk @davemark How about HomeKit? Connecting only through HomeKit should guaranties some kind of security for IoT devices and make the IoT redundant?

@stevesebban @linux_mclinuxface @tomk @davemark

Sorry, I don't know anything about HomeKit. I don't trust IoT devices on the same network as my computers, tablets, and cell phones.

@linux_mclinuxface @ashhobbit @tomk @davemark Are all the VLANs and WLANs on the same IP subnet? I put mine on different subnets, and I think that was a mistake.
@kbob @ashhobbit @tomk @davemark different subnets. Is it not doing what you want?
@linux_mclinuxface @ashhobbit @tomk @davemark I don't have enough info to give a good bug report at this time; just vague recollections that things can't connect.
@kbob @linux_mclinuxface @ashhobbit @tomk @davemark Different subnets with firewall rules that allow only the devices and the ports that are at least 200% (😀) required for the whole stuff to work! Takes some trial-and-error to make sure that everything works correctly, though (ask me for my GDO setup)
@ashhobbit @davemark This is easier to do these days with a lot of newer home routers, too.

@ashhobbit @davemark

Me, a plebe, "people have secured devices?"

@RoseRaven @davemark

Heh.

I'm calling secured devices anything that gets regular security updates. These are typically computers, phones, and tablets. They're devices that you use to log into your bank account, use for email, or for 2-factor authentication (2FA). Anything you don't want to give strangers access to, or allow them to "look over your shoulder" while using.

@davemark Yet another reason to not let your TV connect to the network. Any network.

@davemark what most strikes me about this story is how Windows is still so unstable (and unscrutable), that the solution comes about as a surprise and not as a natural consequence of the gathered evidence. Granted, the author is not an expert on these tools, but I'm pretty sure even an expert (not me, I haven't used Windows in too many years) would have been stumped.

I also wonder how the original solver find out the source of the issue.

@davemark This is why I don`t own a smart TV.

Those things usually get shipped with already outdated operating systems, the software quality is often reprehensible and they are loaded with unnecessary junk software.

And they are of course spying on you. A year ago I read an article about a smart TV, that sent several thousand requests to hundreds of different web adresses a day. All that while beeing idle.

@davemark @goblin I block all outgoing traffic from the TV except for the essentials such as Apple logins. Yeah, it breaks things but that is the cost of crippling garbage spyware.

@davemark Better than a thriller. What the actual ⸺ was that though??? Also, that's some great writing.

PS.: RIP Guts.

@davemark @bigzaphod Or use a better search engine like Duck Cuck Go….
@davemark This actually looks like a bug in windows. Anything that causes the OS to fail is a bug. OK, so the TV is creating fake UUIDs each time it does a DHCP request. I don't know why HiSense does it, but it is about the only way to obtain privacy addresses and avoid DHCP tracking, so there are legit usages. Someone did not foresee the scenario and used an O(N) or maybe O(N^2) algorithm to maintain device lists, thus the stall. That's a bug.
Corrected 4/21: UPNP requests, not DHCP
@davemark Thinking of it a bit more, this actually looks like a security bug. Random attacker brings small device to network, starts a loop of DHCP requests from random MAC and with random UUID, watch Windows11 laptops connected to the network start stalling. I don't have the time to repro that, but it is similar to a bunch of low level attacks against OSes.
Corrected 4/21: these were UPNP notifications, not DHCP requests. No random MAC involved.

@huitema @davemark Jup. I'm not sure how critical it is, because UPnP is in theory only enabled on private networks, but I wonder whether Windows still enumerates them in public or even accepts them remotely and only does the distinction private/public later-on.

That being said, my mom's ISP provided router literally has the same problem but not with UPnP but MAC addresses in the home network: Since I use GrapheneOS which (by default) randomizes per-connection MAC it fills up that list quite quickly... which makes the settings panel almost impossible to open but also the general network performance tank lol.

@ljrk @davemark From the documentation, "network discovery" is set by settings/network settings/advanced network settings/advanced sharing settings. On my PC, this is enabled for "private" networks, so I think it is the default. So the main attack is, some buggy device plugged on a home network. Or, the user did voluntarily open network discovery for public networks, in which case all bets are off.

@huitema @davemark Yes, but I could totally imagine network discovery packages being accepted regardless of the setting and its information simply discarded/ignored later on in the chain for public networks.

If so, the attack might still work.

@huitema @davemark The UPnP UUID is unrelated to IP address privacy extensions. The UPnP UUID doesn't leave the local subnet, so there's no privacy need to rotate it. It also doesn't need to be changed if the IP address changes, the device can just multicast from the new IP with the same UUID to notify the rest of the network, and devices implementing privacy extensions are supposed to keep recognizing the previous IP for a while anyway.

This is the TV software being garbage. I don't let my TV connect to the network because Android TV is so awful, it ends up interrupting movies and TV shows with dialog boxes.

That said, Windows should be smarter about having a limit on the number of devices it keeps in cache and how long it keeps them for.

@mathew @davemark Yes, the TV software is garbage. The interesting step is to isolate what the garbage does, apparently "generate random UUID for UPNP network discovery every few minutes", see whether that can be reproed -- maybe sending series of UPNP/SSDP Notify messages with random IDs. If that's sufficient to crash or stall Windows11, we have an unmitigated DOS attack, which the Windows folks need to fix.

@huitema @davemark yeah this. It's usually a privacy feature for smartphones and tablets. Can argue how much sense it makes on a stationary TV but hey it's usually an option in the settings.

I know because I had to manually disable this for the kids. Unknown devices get no internet and the devices for the kids get a daily time limit. This can't be done when they change IDs all the time.

@davemark TVs are the new HP printers

@davemark So... I can DoS any Windows box on my network with a trivial script?

Nice.

@dickon @davemark If you write or find this script please post a link. I run a Linux only home and would love to mess with visitors who run windows. Or give it to my kid to deploy at the local highschool for giggles. :-)

@poleguy @davemark UPnP isn't a hard protocol. Utterly braindead, which is no surprise given where it came from, and simple enough to implement the important bits (for this use-case as described) in a reasonably small amount of code.

Windows should not be DoSable from the network in this way. It's just stupid.

I'd write it, but the only Windows machine here is t'other half's work laptop. DoSsing that wouldn't go down well...

@davemark a juciy combo of the horrors of modern technology and windows being windows sure is something

though, this also explains why i sometimes see weird devices when i'm scanning bluetooth devices in linux, wouldn't be surprised if the samsung TV we have is doing similar bullshit
@davemark damn, yet another reason to hate everything that has a wifi chip
@davemark This is just one reason why you NEVER connect TV's or other IoT stuff to the same LAN that your computers are in (and also don't let them talk to the Internet).
@davemark was already thinking that things like TVs should probably be isolated from the rest of my LAN, if I even let them connect at all.

@davemark @chris See, THIS is why I don’t own a TV. 👴🏻 (squats stark naked in front of gramophone)

(Edit: kidding, of course. I own three Hisense TVs and multiple windows boxes and none of them are experiencing any issues whatsoever.)

Edit2: followed the process anyway. I had about 50 dafuqpnp entries, elevated RegistryWorkshop as SYSTEM user, deleted all of them in a couple of clicks just for the heck of it. Sure won’t stop me recommending Hisense TVs.

@davemark
Apparently horror is a popular genre.
omg what a crazy ride.

I have a smart fridge and oven now, and no way are they ever getting on my network. This stuff is out of control.
@davemark if you think about it, most smart TVs are really just an invitation for Chinese agents to do whatever they wish in your home network
@davemark Sounds like slightly lazy coding on Microsoft's part combined with borderline malicious coding on Hisense's part to create a quagmire of failures.