Hacker Newsnew | past | comments | ask | show | jobs | submitlogin

Oh who cares about Rust. This could have been written in many different languages safely, including C/C++. Would it have been easier in Rust? Maybe. But it's also a legacy codebase. So we shouldn't be surprised it wasn't in Rust.

There are SO MANY things that went wrong. They don't even seem to care about half of them.

Ok, it wasn't tested. It wasn't staged. It wasn't a slow roll-out over hours. It wasn't verified from the deployment servers.

How about why is it parsed in kernel space at all? I didn't see that listed.

Why didn't you have a mechanism to catch faulty updates at runtime and flag them so that you'd be able to survive the next boot? Mark somewhere on the FS "I'm loading #19583". If you boot up and find that, it means you failed, so skip it next boot. Succeed? Remove the mark. Tada. Resiliency.

Why are you even doing this stuff yourself? There are Microsoft APIs for a bunch of this stuff that would have helped reduce risk. Oh, because your code is deployed on XP and up and you don't want to have 2 or 3 versions? That went well didn't it. I bet if you were using those you wouldn't have crashed the kernel space.

Do you fuzz? We know you don't. You broke Windows. You broke Macs. You broke Linux. You keep doing this. You're not good at being resilient. You had to face-plant in front of the entire world before you decided to do something. I didn't see fuzzing mentioned.

Those mitigations you propose are not enough. They'll help, but you're still vulnerable. You're supposed to be a _security company_, I'd expect a better list of how to secure software from a security company.

By all means, use Rust or Swift or (insert other memory safe language) if you want. That's smart. But if their existing kernel module had no UB and buffer overruns, it would still be doing things a kernel module shouldn't. The language involved is just a very tiny part.



> ...it means you failed, so skip it next boot. Succeed? Remove the mark. Tada. Resiliency.

Better yet, it's high time that PCs booted like (some) mobile phones do: there's two copies of the OS. The running copy is read-only. The other copy can only be replaced with a monolithic "image" that has is validated with a HS256-based digitally signed Merkle hash. Either the entire image is bit-for-bit valid, or it is rejected.

If booting to the new image fails twice, automatically roll back to the previous known-good image.

This isn't "hard", it isn't even that much work. Heck, Windows can already boot from WIM images and VHDX disk images! The code is already in there, it just needs to be turned on.


This wasn’t an OS problem though, so that wouldn’t have helped. It was the data their module loaded which they change constantly. That would make it a very bad fit for a sealed system partition.

Also I believe Apple Silicon Macs do what you suggest, at least in part. I don’t know if they can fall back after an upgrade failure but everything is validated and signed and tamper proof.


It was a kernel-mode code issue however. The same design could be applied: customisations get put into duplicated read-only overlay images. Any boot issue automatically triggers a rollback, and a manual option is provided to roll back to the vanilla base image as well in the troubleshooting boot menu.


> Oh, because your code is deployed on XP and up

Not even, it only runs on 7 / 2008 Server and up.




Guidelines | FAQ | Lists | API | Security | Legal | Apply to YC | Contact

Search: