Note that there are some explanatory texts on larger screens.

plurals
  1. PO
    primarykey
    data
    text
    <blockquote> <p>So, is it in practice possible that this user space program can make the OS crash, or make the machine unavailable to the proxy?</p> </blockquote> <p>Well, in theory you should have a hard time making the OS crash. However, there are many many bug reports out there that say it's more possible in practice than we would like.</p> <p>Without special precautions, on the other hand, it's going to be fairly easy to achieve denial of service. Imagine a user program that did nothing but flood the proxy with packets; that alone might, if not achieve outright denial of service, then make things embarrassingly slow.</p> <blockquote> <p>With assembly the programmer can do basically whatever he wants (manipulate stack pointer for instance), and I wonder how restrictive/robust Linux is in this respect.</p> </blockquote> <p>However, we're a lot better than that. If all you needed for privilege escalation was "mess with the stack pointer" security as a field would be a total joke. The kernel is <em>intended</em> to be written so that no program, no matter what, can cause the kernel to crash. As noted, it is imperfect.</p> <p>The moral of the story is that you really don't want to be running untrusted code on a computer you care about. The stock answer here would be a checkpointed VM: start a virtual machine, run the untrusted code on the virtual machine, and then after completion or timeout blow the virtual machine away. That way persistent damage is impossible. As far as other abuse goes, your proxy will prevent them from hosting seedy internet services, which is good. Depending on your VM situation there may be good tools for limiting CPU consumption and network usage as well, which will help eliminate other denial-of-service possibilities.</p> <p>You mention needing the CPU to perform at full capacity. Hardware virtualization <em>is</em> quite good, and performance should reasonably reflect what it would be on a real system.</p> <p>Nothing above is Linux-specific, by the way; it should be true of all credible general-purpose operating systems.</p> <p>edit: If you are truly insistent on running directly on hardware, then:</p> <ul> <li>boot from a read-only device (livecd or writeblocked hard drive)</li> <li>have no writeable media in the system</li> <li>Add a lights-out server that can forcibly reset the machine at the proxy's request, in case of denial of service; commercial solutions exist for this</li> </ul> <p>That's essentially giving you the features of the VM solution, but on hardware. </p>
    singulars
    1. This table or related slice is empty.
    plurals
    1. This table or related slice is empty.
    1. This table or related slice is empty.
    1. This table or related slice is empty.
    1. This table or related slice is empty.
    1. VO
      singulars
      1. This table or related slice is empty.
    2. VO
      singulars
      1. This table or related slice is empty.
    3. VO
      singulars
      1. This table or related slice is empty.
 

Querying!

 
Guidance

SQuiL has stopped working due to an internal error.

If you are curious you may find further information in the browser console, which is accessible through the devtools (F12).

Reload