|
| ▲ | sznio 5 hours ago | parent | next [-] |
| don't we already have the NX bit? and it's not sufficient anyways. even with NX you could have the attacker control a function pointer you call. in any sufficiently complex program you'll have enough widgets to build anything you want just out of data. code and data are the same thing. whatever inputs your system receives is "code" that your application interprets, just like your application is the code that the CPU interprets. turtles all the way down. |
| |
|
| ▲ | ihavesomeexampl 4 hours ago | parent | prev | next [-] |
| But.. alter data that gets executed (interpeter?), I mean, how does this work even in theory? All data is potentially code? |
| |
| ▲ | intrasight 4 hours ago | parent [-] | | All data is potentially code only in a Von Neumann architecture, but not in a Harvard architecture, where there's a separation of data and code with different memory access to each. | | |
| ▲ | esterna 4 hours ago | parent [-] | | Code and data being equivalent is a consequence of Turing completeness; you can always write a Python interpreter, point it at "data" and have it execute that via interpretation. |
|
|
|
| ▲ | tosapple 5 hours ago | parent | prev | next [-] |
| and we don't believe a sterilized virtual machine creates a similar situation? any respective machine doesn't require full Turing completeness? any ad-hoc machine allows for mutations and flexibility, which I'm sure is an added strength. 2nd edit, Also, didn't we have a weaker model of this with segmented non-flat memory models on i386- |
|
| ▲ | AlienRobot 5 hours ago | parent | prev [-] |
| How do you turn text into code in this architecture? Through the kernel? |
| |
| ▲ | SSLy 3 hours ago | parent [-] | | you don't. I also believe that JITs would be impossible under strict Harvard. |
|