214

Before I tear your idea apart, let me say that it's a really interesting idea and it was super fun to think about. Please continue to think outside the box and ask interesting questions! Alright, let's do this! Let's take a step back and ask why that baby monitor is running Linux in the first place? What if there was no operating system and the ...


119

Modern computers don't have a BIOS, they have a UEFI. Updating the UEFI firmware from the running operating system is a standard procedure, so any malware which manages to get executed on the operating system with sufficient privileges could attempt to do the same. However, most UEFIs will not accept an update which isn't digitally signed by the manufacturer....


81

Mike's answer says basically everything I have to offer about why this is a bad idea from a development perspective (and, as Ghedipunk's comment says, an unusable security feature provides no security). So instead, I'm going to talk about why from a security perspective, you would never do this. The answer is actually surprisingly simple: it's a waste of ...


79

Do not use an outdated OS, even with a modern browser. Assuming that after that day I still use an updated browser, is it true that I'm still safe? No, you cannot avoid browser-based security holes only by updating the browser. There are a few reasons for this. Primarily, the browser is not entirely self-contained. It makes use of operating system ...


58

The syscall table is read-only, and has been since kernel 2.6.16. However, a kernel rootkit has the ability to make it writable again. All it needs to do is execute a function like this* with the table as the argument: static void set_addr_rw(const unsigned long addr) { unsigned int level; pte_t *pte; pte = lookup_address(addr, &level); ...


46

Yes, it is definitely possible. Nowadays, with UEFI becoming widespread, it is even more of a concern: UEFI has a much larger attack surface than traditional BIOS and a (potential) flaw in UEFI could be leverage to gain access to machine without having any kind of physical access (as demonstrated by the people of Eclypsium at black hat last year).


26

If your objective is to deprive an attacker of ls and cat, there's an even better alternative to obfuscation: just don't install those utilities. While I wouldn't say this is a widely implement approach, it is at least implement. For example consider distroless, a collection of docker images with pretty much nothing in them. Some of them (like the one for ...


22

As noted by forest, modern Linux does not allow this, but it's easy to override. However, historically it was useful (and maybe still is) for security purposes: hot-patching against vulnerabilities. Back in the 1990s and early 2000s, whenever a new vulnerability was announced for a syscall I didn't absolutely need (ptrace was a really common one back then),...


20

Practically speaking, a virus is software, so can do anything that any other software can do. So the simple way answer to this question, and all others of the class "Can viruses do X?" is to ask "Does software currently do X?" Such questions might include "can a virus walk my dog?" (not without a dog-walking robot); "Can a virus get me pizza?" (yes: this ...


13

One benefit of the newer operating systems, like Windows 10 over Windows 7, is that they have more advanced features built in to the operating system to protect against entire classes of vulnerabilities. There have actually been examples of web browsers being more secure on Windows 10 than Windows 7 even though Windows 7 is still supported! See for example ...


12

Yes, it is definitely possible. Here is an example of a malware OS update fraudulently signed with the manufacturer's private key: https://www.theregister.co.uk/2019/03/25/asus_software_update_utility_backdoor/ According to Kaspersky Labs, about a million Asus laptops were infected by Shadowhammer, with an update that appeared to be correctly signed. It's ...


11

Because obfuscation isn't security and because OS obfuscation is basically nonsense. There's only so many common OSes, and so many ways to make educated guesses. If you detect that I'm running IIS or MSSQL Server, you have one guess at what OS is running underneath. Even if I somehow manage to run a stack that tells you nothing about my underlying OS, and ...


7

Use the traversal vulnerability to read /proc/self/environ This prints out environment variables among other thread information. Look for a environment variable called DOCUMENT_ROOT


7

For an extremely widespread example, Intel Management Engine, which has its own OS, does something like that, where there exists a firmware update mechanism, but the firmware has to be in a very specific format the details of which are confidential. It appears to involve Huffman encoding with unknown parameters. Similarly to your proposal (which is basically ...


6

Oh goodie a surface area question. The surface area of attacks against the OS via the browser varies wildly with the browser. With Internet Explorer, the surface area is vast. On the other hand, Firefox mostly uses its own decoders for everything, crushing the surface area down to only a few pieces. In any case, the TCP stack, DNS, and the font rendering ...


5

Are the cpu protection rings meant to protect against malicious programs, or against unintentional programming mistakes? CPU protection rings are meant to enable operating system software the control and protection checks necessary to implement an overall security strategy with good performance.  This includes the notion of kernel mode vs. user mode.&...


5

Your question has many false assumptions, and these are the reason for your confusion. An OS doesn't come with source code or binaries. Yes, it does. Open-Source Operating Systems like Linux come with source code, which is regularly looked at for possible vulnerabilities. Closed-Source Operating Systems like Windows still come in binary form. If you ...


5

First, this is not an OS question but more of a compiler one. OS can only execute binary programs that contain machine instructions and that can (if they were instructed to) test the overflow flag. So a part of the question is (IMHO): Why does not the C compilers allow to test the overflow flag? The reason is that the language is supposed to accept (almost)...


5

What you are describing is called "Security through Obscurity" and is a widely known security antipattern. Meaning it's not a new idea, rather it's an old, bad idea, that people who are uninitiated in security philosophy must be educated so as not to fall into. Imagine you were designing a house to be secure, and thought obscurity was a promising strategy. ...


4

why aren't operating systems using this overflow flag to stop integer overflows? The operating system can't just forbid integer overflows, because sometimes it's not a bug but a feature. There is software out there which contains algorithms which actually rely on integer overflow behavior and would break if it would no longer work the way it does. Users ...


4

Your question hints at a more deep subject that is rings and permissions of code on an operating system. On MS DOS the code could do whatever it wants. If the code wanted to write all 0x00's to a hard drive it could if it wanted to send strange output to a piece of hardware it could also there was nothing stopping the user's code. On a modern OS there is a ...


4

There are a lot of techniques. Some of them are: IP TTL values + TCP Window size DHCP requests MDNS ARP / NDP / SEND NetBIOS SSH / SSL / TLS Here is a great article about it. Don't forget to read Nmap OS Detection.


4

If the only port forwarded to the server is the port used by the game, you are fine. You can protect even Windows 95 with the correct measures. If you block everything but the game server, not use the computer for anything else but host the game (no browsing, no email, no running random programs), it will be reasonably safe.


3

Yes. It's hardware specific but here is one case of a user accidentally breaking their motherboard firmware from the OS level https://github.com/systemd/systemd/issues/2402 A bug in the firmware of an MSI laptop meant that clearing the efi variables caused the laptop to be unusable. Because these variables were exposed to the OS and mounted as a file, ...


3

Potentially. It would be hard to do however, as it would more than likely have to masquerade as a legit BIOS update somewhere down the line. The method to do so will change depending on your mobo but chances are it would have to involve the leaking of private or hardware keys or other secrets.


3

VM's are an abstraction we refer to for convenience. The underlying reality is that it's all code running on the host. You can protect a non running VM file with encryption, but a running VM client is running on the host, with host memory and host CPU. The host has access to everything.


3

Think useability Try to explain to your new sysadmin that he have to hit ha7TrUO insetead of sudo, RRI6e29 instead of ls and so on... Yes, there is a list of translation you just have to learn! browsing local network must not be possible too: you have to maintain paper list in order to keep an overall view!? If you rename all critical command, you will have ...


3

Wouldn't entire classes of attacks be practically useless if the OS had ha7TrUO and RRI6e29 commands instead of sudo and ls? Imagine a hacker that somehow gained remote root access--what are they even going to do if they don't know any commands? A better alternative would be to simply not install these commands in the first place. I don't believe you ...


2

you should check the Winbagility project which provides the VMI APIs for VirtualBox (called FDP for Fast Debugging Protocol). A library similar to libvmi has been written on top of it: icebox. I don't believe that they will make a libvmi driver for FDP. The reason is that they used VirtualBox because it is a cross-platform hypervisor, so no need to be ...


2

There are two ways: inspect every line of code, or build your own OS. Not only the OS, but all the libraries, the compiler, everything that touches your source code. A backdoor can be deployed? Yes. But on any open source OS (Linux, OpenBSD, Plan9 et al) any backdoor can be detected by other programmers, the same cannot be told about closed sourced OS (...


Only top voted, non community-wiki answers of a minimum length are eligible