The question I always have when I see these userspace kernels is, Linux in Userspace exists. You can boot Linux with a root in userspace already. Why write a new kernel from scratch instead of fixing/improving usermode Linux instead, which has the benefit of providing the entire Linux API already?
Option A) Everyone shares one OS (container, sandbox, kernel, firewall, whatever). It gets a lot of eyes on it to find bugs. Hacker fuzzes it with a lot of tokens offline. He finds one exploitable vulnerability and he owns everyone.
Option Z) Everyone vibe codes their own custom OS. Each implements and exposes only what they want. Hacker has to beat up on it online to find vulnerabilities. He finds one and he only owns that one machine.
There's probably some middle ground between A and Z, but monocultures are fragile. All eggs in one basket, potato famines, banana fungus, etc...
Option L) Hacker realizes theres more to be gained from joining the builders and shows both sides how to secure their lots against people worse than them
The Linux kernel is a gigantic attack surface with a ton of legacy stuff most modern applications will never need. Namespaces do not really help with this, but userspace kernels can. (Haven't looked into Ginux enough to know if it does.)
That is also why I believe the namespace approach, and by extension Docker-like containerization, is a dead end when it comes to isolation. I hope something like gVisor will win.
This is even more important since agents have turned isolation from a datacenter topic into everyone's concern.
> The Linux kernel is a gigantic attack surface with a ton of legacy stuff most modern applications will never need. Namespaces do not really help with this, but userspace kernels can. (Haven't looked into Ginux enough to know if it does.)
This is incorrect. If you can't trust Linux because it is gigantic, you can't trust a whole another new kernel. Userspace is not blackmagic.
Itās the same approach as gVisor. Fairly decent isolation if your application can work on it, but your SOL if a scenario comes up that doesnāt work. VMs give you pretty much 100% Linux compatibility at the expense of density, optimal resource allocation and startup time. gVisor gives you excellent startup time, resource allocation and density at the expense of some app compat and performance at the extremes
Edit: at least with gvisor you get close to a decade of work on compat. gVisor can support some rootless containers scenarios and systemd these days.
Iād be very interested in it if it started to approach VM style isolation without needing KVM access (or qemu).
But Iām not sure if that is really possible.
The use case Iām thinking about is a sandbox exec isolation on an HPC cluster without Docker. I know singularity/apptainer exist, but Iām always looking for something that could make that environment more flexible. It is a tight security environment, so we are always limited in what we can do.
It all becomes a religion to some people. hypervisor escapes are a thing. People always point to Vt-x or AMD-V as having stood the test of time, and that might be true, but the software layer on top certainly hasnāt. Yet you will have āsecurity professionalsā tell you that you canāt trust anything beyond a hypervisor. Or they might tell you that a user space kernel is just as secure. They might tell you KVM is a no-go because of bad Type1/Type2 hybrid architecture compared to Xen or HyperV Type1. All have had their fair share of vulnerabilities over the years. All less than Linux process isolation, but still.
I really like Virtualization to keep things separate, but I never thought of it as an impenetrable wall. For example, I'd not trust an AI agent even inside a VM in my own system.
OTOH, running a messy environment with rollback support is much easier with a VM than a container.
Containers are fun for packing messy executables into their own environment and run them now and then, though.
I donāt find VMs to be that much easier to manage (in terms of rollback) than containers. The opposite in fact. VMs are these giant blobs that can be stateful or stateless or a mix of both. While containers have clear separation between the state (stored on volumes or in an external store like a db) and the āapplicationā stored in immutable tags or digests.
Rolling back is easy as long as you understand where the state, if any, is which is actually the hard part of any application. At least with containers you have all of them stored in a well defined registry, while with VMs you would be rolling your own VM snapshot storage system. Not super complicated to do in the grand scheme of things, but itās another thing you need to get right. But VMs/applications that can rollback would be just as easy (if not easier) to rollback with containers.
>I really like Virtualization to keep things separate, but I never thought of it as an impenetrable wall. For example, I'd not trust an AI agent even inside a VM in my own system.
Remember the submission about how Auto Review is safe? Their standard of safe is that it will take a playwright dependency of another project in your home directory and add playwright based tests to your current project that hasn't declared playwright as a dependency. Amazing.
The issue literally isn't even about a hypothetical security argument anymore. Your sandbox is now a policy that tells the agent what it is allowed to do or not.
If it has to go through another layer , hopefully without ring0 privs, which more than likely may filter out a number of exploit vectors, how is this the wrong approach ?
Breaking this layer doesn;t automatically give ring0 privs across the hardware.
So how exactly can you control multiple isolated address spaces for the leaf user processes and how do you handle syscalls? Does the host kernel have facilities for normal user processes to do so?
> The current implementation includes a security-focused x86-64 interpreter and a balanced native ptrace backend;
ptrace allows you to have the kernel redirect syscalls back to userspace, mostly for debugging purposes. "balanced" here refers to speed, but the overhead is still quite high.
More seriously, it is a great use of indirection insofar as replacing the full Linux kernel is a gargantuan task. A userspace kernel per task or task group.. makes a lot of sense. I'd be interested to know how it captures syscalls - eBPF? It wasn't obvious from a skim of the readme.
This kind of give-me-this-interface work seems pretty perfect for LLMs, too.
To me, it's that little effort was put into it, so no commitment has been demonstrated. You wouldn't want to build anything serious on top of it because you'd probably just have to throw it away.
A project picked up casually, for a short time, is likely to be dropped casually, in a short time.
A userspace kernel is already pretty niche. Not many people will get anything serious out of it.
The slop problem is also a challenge to overcome. The project barely existed and has already pivoted in a completely new direction. Who knows when this direction bores the author and we get yet another pivot. Or the author loses interest and we end up with a dead pile of abandoned code like so many other LLM generated projects.
The previous state of the project could've made for an interesting VM runtime (safety of Rust without the issues that come with the lack of ported drivers). For this new direction, I don't think there's a similar sort of demand.
Stating that nobody will take it seriously is probably an exaggeration, but I consider these projects to be toys for the author to play with, I don't see why you would take more interest than going "huh, neat I guess".
Why should someone spend anytime on this kind of technical piece that is not created by human? Think about what you will get from this, the answer is pretty obvious.
Well, one obvious issue is that this is controlled not by humans,
whereas the linux kernel is. What if the parent company changes
things with regards to the AI here? You may have to pay more
suddenly.
You could probably work around this partially by having contracts
with people, but these in turn also depend on the AI slop then,
so the problem is just shifted.
It is being created by a human, though. Greg Kurtzer is one of the authors of Rocky Linux. He has the respect of his peers. Perhaps you just aren't one.
The question I always have when I see these userspace kernels is, Linux in Userspace exists. You can boot Linux with a root in userspace already. Why write a new kernel from scratch instead of fixing/improving usermode Linux instead, which has the benefit of providing the entire Linux API already?
Option A) Everyone shares one OS (container, sandbox, kernel, firewall, whatever). It gets a lot of eyes on it to find bugs. Hacker fuzzes it with a lot of tokens offline. He finds one exploitable vulnerability and he owns everyone.
Option Z) Everyone vibe codes their own custom OS. Each implements and exposes only what they want. Hacker has to beat up on it online to find vulnerabilities. He finds one and he only owns that one machine.
There's probably some middle ground between A and Z, but monocultures are fragile. All eggs in one basket, potato famines, banana fungus, etc...
Heterogeneity is bffs with security though. Maybe option z isn't so bad after all.
Option L) Hacker realizes theres more to be gained from joining the builders and shows both sides how to secure their lots against people worse than them
How is Ginux different from User mode Linux?
https://en.wikipedia.org/wiki/User-mode_Linux
It seems to be more like gVisor than UML, providing a restricted kernel interface as opposed to the full kernel.
It is AI slop.
This is kind of the wrong approach when linux namespaces exist and rootless namespaces are approach full spectrum.
The Linux kernel is a gigantic attack surface with a ton of legacy stuff most modern applications will never need. Namespaces do not really help with this, but userspace kernels can. (Haven't looked into Ginux enough to know if it does.)
That is also why I believe the namespace approach, and by extension Docker-like containerization, is a dead end when it comes to isolation. I hope something like gVisor will win.
This is even more important since agents have turned isolation from a datacenter topic into everyone's concern.
> The Linux kernel is a gigantic attack surface with a ton of legacy stuff most modern applications will never need. Namespaces do not really help with this, but userspace kernels can. (Haven't looked into Ginux enough to know if it does.)
This is incorrect. If you can't trust Linux because it is gigantic, you can't trust a whole another new kernel. Userspace is not blackmagic.
Iām still fascinated by the approach, though. It seems to me that it sits somewhere between cgroups and virtual machines.
I do wonder what problem it solves, as I donāt think that it provides the same security guarantees that micro-VMs like firecracker do?
Itās the same approach as gVisor. Fairly decent isolation if your application can work on it, but your SOL if a scenario comes up that doesnāt work. VMs give you pretty much 100% Linux compatibility at the expense of density, optimal resource allocation and startup time. gVisor gives you excellent startup time, resource allocation and density at the expense of some app compat and performance at the extremes
Edit: at least with gvisor you get close to a decade of work on compat. gVisor can support some rootless containers scenarios and systemd these days.
Iād be very interested in it if it started to approach VM style isolation without needing KVM access (or qemu).
But Iām not sure if that is really possible.
The use case Iām thinking about is a sandbox exec isolation on an HPC cluster without Docker. I know singularity/apptainer exist, but Iām always looking for something that could make that environment more flexible. It is a tight security environment, so we are always limited in what we can do.
It all becomes a religion to some people. hypervisor escapes are a thing. People always point to Vt-x or AMD-V as having stood the test of time, and that might be true, but the software layer on top certainly hasnāt. Yet you will have āsecurity professionalsā tell you that you canāt trust anything beyond a hypervisor. Or they might tell you that a user space kernel is just as secure. They might tell you KVM is a no-go because of bad Type1/Type2 hybrid architecture compared to Xen or HyperV Type1. All have had their fair share of vulnerabilities over the years. All less than Linux process isolation, but still.
I really like Virtualization to keep things separate, but I never thought of it as an impenetrable wall. For example, I'd not trust an AI agent even inside a VM in my own system.
OTOH, running a messy environment with rollback support is much easier with a VM than a container.
Containers are fun for packing messy executables into their own environment and run them now and then, though.
I donāt find VMs to be that much easier to manage (in terms of rollback) than containers. The opposite in fact. VMs are these giant blobs that can be stateful or stateless or a mix of both. While containers have clear separation between the state (stored on volumes or in an external store like a db) and the āapplicationā stored in immutable tags or digests.
Rolling back is easy as long as you understand where the state, if any, is which is actually the hard part of any application. At least with containers you have all of them stored in a well defined registry, while with VMs you would be rolling your own VM snapshot storage system. Not super complicated to do in the grand scheme of things, but itās another thing you need to get right. But VMs/applications that can rollback would be just as easy (if not easier) to rollback with containers.
>I really like Virtualization to keep things separate, but I never thought of it as an impenetrable wall. For example, I'd not trust an AI agent even inside a VM in my own system.
Remember the submission about how Auto Review is safe? Their standard of safe is that it will take a playwright dependency of another project in your home directory and add playwright based tests to your current project that hasn't declared playwright as a dependency. Amazing.
The issue literally isn't even about a hypothetical security argument anymore. Your sandbox is now a policy that tells the agent what it is allowed to do or not.
I wonder if this can grow into a capability-based security tool.
Rootless namespaces are getting better, but they don't eliminate the host kernel attack surface
You can combine hypervisors, user space kernels and linux namespaces all into one solution. The attacker will have to escape all of them.
Isn't this also adding a capability sort of like OpenBSD's pledge?
If it has to go through another layer , hopefully without ring0 privs, which more than likely may filter out a number of exploit vectors, how is this the wrong approach ?
Breaking this layer doesn;t automatically give ring0 privs across the hardware.
> Telling someone's research and exploration is wrong...
Never change, HN, never change :D
The project says:
> That research phase is complete.
So not sure what part of it now constitutes "research and exploration".
So how exactly can you control multiple isolated address spaces for the leaf user processes and how do you handle syscalls? Does the host kernel have facilities for normal user processes to do so?
From the README
> The current implementation includes a security-focused x86-64 interpreter and a balanced native ptrace backend;
ptrace allows you to have the kernel redirect syscalls back to userspace, mostly for debugging purposes. "balanced" here refers to speed, but the overhead is still quite high.
Post from yesterday: https://news.ycombinator.com/item?id=50424147
Talk about pivoting. I guess that's what you call lean and agile.
probably you get more isolation with jslinux
My immediate thought was this: https://en.wikipedia.org/wiki/User-mode_Linux
More seriously, it is a great use of indirection insofar as replacing the full Linux kernel is a gargantuan task. A userspace kernel per task or task group.. makes a lot of sense. I'd be interested to know how it captures syscalls - eBPF? It wasn't obvious from a skim of the readme.
This kind of give-me-this-interface work seems pretty perfect for LLMs, too.
Nobody will take him seriously.
The issue with this kind of thing is nobody will take it seriously.
Why? Because a user space kernel is a bad idea? Or because of the AI use when writing it?
Iām still trying to figure out exactly what it is.
To me, it's that little effort was put into it, so no commitment has been demonstrated. You wouldn't want to build anything serious on top of it because you'd probably just have to throw it away.
A project picked up casually, for a short time, is likely to be dropped casually, in a short time.
A userspace kernel is already pretty niche. Not many people will get anything serious out of it.
The slop problem is also a challenge to overcome. The project barely existed and has already pivoted in a completely new direction. Who knows when this direction bores the author and we get yet another pivot. Or the author loses interest and we end up with a dead pile of abandoned code like so many other LLM generated projects.
The previous state of the project could've made for an interesting VM runtime (safety of Rust without the issues that come with the lack of ported drivers). For this new direction, I don't think there's a similar sort of demand.
Stating that nobody will take it seriously is probably an exaggeration, but I consider these projects to be toys for the author to play with, I don't see why you would take more interest than going "huh, neat I guess".
Why should someone spend anytime on this kind of technical piece that is not created by human? Think about what you will get from this, the answer is pretty obvious.
No obvious to me, sorry. What will I get from this?
Well, one obvious issue is that this is controlled not by humans, whereas the linux kernel is. What if the parent company changes things with regards to the AI here? You may have to pay more suddenly.
You could probably work around this partially by having contracts with people, but these in turn also depend on the AI slop then, so the problem is just shifted.
Parent company? It's just this one dude's pet project
It is being created by a human, though. Greg Kurtzer is one of the authors of Rocky Linux. He has the respect of his peers. Perhaps you just aren't one.
Guys - AI slop is winning the war. Soon the Top 500 Supercomputers will run AI-Ginux rather than Linus-Linux.
When something has to be secure and battle-tested, this wonāt happen. It can be written with the help AI, but it needs many humans to verify.
Don't worry, Linus-Linux already stands on the AI slop side.
Can you link to an AI contribution to the mainline kernel that qualifies as slop?