5 ms·
Yes, the data has code in it... Once that one is out, you're screwed. That applies to most of computer science ironically.
by meaty 14y ago
Yes, the data has code in it...
Once that one is out, you're screwed.
That applies to most of computer science ironically.
- CJefferson 14y agoI don't think that's unique to the web. Word and Excel documents have code in them. So do PDFs and PostScript files. At this point, other than plain text everything seems to have code in it.
- meaty 14y agoI did state in another reply that office VBA suffers the same problems. PostScript as well as you state. All these have been notoriously problematic formats with respect to security.
- brazzy 14y agoIf you think there is a clear and fundamental difference between data and code, you do not understand security.
- meaty 14y agoActually I do, to the point I have been appointed a couple of security positions in the past in the defence industry. Code is executable. Data is not. There should be no level of turing completeness. Taking C as an example, loading a char* with data that contains code and jumping to it or letting it overwrite the code segment is precisely where it breaks down. The same is true when your json payload contains a function or your css contains an expression. The main problem at the moment is that technologies freely interchange the two concepts. Code should be entirely immutable once compiled and data should not be executable.
- zmj 14y agoHow do you implement an interactive page under that model?
- loungin 14y agoMaybe we should think about moving away from interactive pages. What does all that interaction get us, really?
- drivebyacct2 14y ago>Actually I do, to the point I have been appointed a couple of security positions in the past in the defence industry. >Code is executable. >Data is not. There should be no level of turing completeness. I'm sorry for the defence industry.
- meaty 14y agoWhy? They make shit that works with huge investment when the rest of the world makes do with shit that doesn't work properly for very little investment.
- 7952 14y agoBut the pragmatic approach is to assume that data may become executable due to vulnerabilities and design around that fact. Assuming that you can control everything is fanciful and dangerous. Assuming that you control nothing, and everything can and will break is a much safer approach.
- meaty 14y agoThe pragmatic approach is to use a toolchain which prevents data being executable. Most high level languages without pointers and direct memory access (excluding dynamic languages) perform this feat quite well. I disclaim the use of hacks like non executable segments here in certain CPU architectures (x86 LDT/GDT controlled access bits) as they are an afterthought.
- 7952 14y agoSo you just have to force every piece of code on your computer to use that tool chain. "Dear Mr Zuckerberg, please make Facebook available in a form that allows me access without needing to rely on dynamic languages and uses a strictly defined toolchain (of my choosing)". Good luck with that.