Monday, April 1, 2019

Hacking the simulation

According to this piece, two billionaires (Elon Musk and Peter Thiel?) want to help break humanity out of a giant computer simulation.
"Many people in Silicon Valley have become obsessed with the simulation  hypothesis, the argument that what we experience as reality is in fact fabricated in a computer; two tech billionaires have gone so far as to secretly engage scientists to work on breaking us out of the simulation."
In this post, I indulge this view, and in the spirit of April 1st, I go with it.

Hacking the simulation by breaking its multitenancy and overloading the VMs

What do the aliens computers look like? Do they have racks and datacenters? Or are their computers more at the molecular/analog level, and avoid the inefficiency of overlaying a digital layer over the physical one. Quantum bits seem so bizarre that I think it follows directly from an elemental/basic construct of the aliens' simulation hardware.

Anyways... Since these simulations are very detailed, and even simulations of branching multi-verses, they should have distributed clusters dedicated to the simulation. And if they are worth their salt, they should be using multitenancy to prevent underutilization of hardware and reduce costs of these heavy simulations.

Is this simulation at the person level? I think it is at least at that level if not at a more finer level. Anything larger would be too coarse. So let's bet on the person level.

If this is a distributed multitenancy deployment simulation, many of us (i.e., many people) share the same machine for the simulation. And we are overpacked based on the statistical likelihood that when some of us are using more resources some others use less resources. This way we co-inhabit the same machine in a crowded manner without any problem. This multitenancy setup helps keep computation costs low, a fraction of what it would be without using multitenancy.

Based on these assumptions, we can try to trick the multitenancy system in order to overload some  machines. The trick is to first do nothing, and let the load-balancing system pack way too many of us together in the machines. If, say, 100 million of us do nothing (maybe by closing our eyes and meditating and thinking nothing), then the forecasting load-balancing algorithms will pack more and more of us in the same machine. The next step is, then, for all of us to get very active very quickly (doing something that requires intense processing and I/O) all at the same time. This has a chance to overload some machines, making them run short of resources, being unable to meet the computation/communication needed for the simulation. Upon being overloaded, some basic checks will start to be dropped, and the system will be open for exploitation in this period.

*wink, wink* Maybe this is why @elonmusk invest his time on its Twitter account to reach to many millions of followers. He keeps posting memes, rap singles, and controversial statements and keeps increasing his follower count. Maybe one day he can convince his followers and coordinate them to give the above scheme a try.

How do we exploit the system in this vulnerable window?

In this vulnerable window, we can try to exploit the concurrency cornercases. The system may not be able to perform all those checks in an overloaded state.

Maybe then we should try to find cornercases like Douglas Adams's description of flying: You jump forward, and then while going down you get distracted by something, and miss the ground accidentally, and that is how you fly.

We can also try to break causality. Maybe by catching a ball before someone throws it to you. Or we can try to attack this by playing with the timing, trying to make things asynchronous. Time is already a little funny in our universe with the special relativity theory, and maybe in this vulnerable period, we can stretch these differences further to break things, or buy a lot of time.

What are other ways to hack the system in this vulnerable window? Can we hack the simulation by performing a buffer overflow? But where are the integers, floats in this simulation? What are the data types? How can we create a typecast error, or integer overflow?

Can we hack by fuzzing the input? Like by looking at things funny. By talking to the birds or jumping into the walls to confuse them.

What are other possible ways? I am not well versed with cracking/exploiting computer systems. Come on, we should all do our parts.

No comments:

Two-phase commit and beyond

In this post, we model and explore the two-phase commit protocol using TLA+. The two-phase commit protocol is practical and is used in man...