Hot answers tagged

114

This hack has to be understood in context. It was published at a time and in a culture where Unix running on all kinds of different hardware was the dominant system. What made the attack so scary was that the C compiler was the central piece of software for these systems. Almost everything in the system went through the compiler when it was first installed (...


84

The purpose of that speech wasn't to highlight a vulnerability that needs to be addressed, or even to propose a theoretical vulnerability that we need to be aware of. The purpose was that, when it comes to security, we'd like to not have to trust anyone, but unfortunately that's impossible. You always have to trust someone (hence the title: "Reflections On ...


63

Developers just need to provide a package for a distribution. Each distribution then has a way to install this package. This way can be in a terminal (apt-get) or via a graphical interface, e.g. Ubuntu Software Center. The beauty is that developers just have to care about building a proper package; the distribution makers take care of the rest, and each ...


61

Today, most database management systems (e.g. PostGreSQL, MongoDB, etc...) internally keep their data inside OS files (in the past, some DBMSs used raw disk partitions directly). On recent computers still using spinning hard disks, the disk is so slow - relative to the CPU or the RAM - that adding a few software layers is not relevant. SSD technology might ...


55

No The attack, as originally described, was never a threat. While a compiler could theoretically do this, actually pulling off the attack would require programming the compiler to Recognize when the source code being compiled is of a compiler, and Figure out how to modify arbitrary source code to insert the hack into it. This entails figuring out how the ...


42

Because they don't need to. Linux distributions usually have working package management systems, unlike Windows, where every single application has to re-implement installation and updating over and over and over and over again.


28

A software is real time not when it is as fast as possible, but when it is guaranteed that a process completes within some determined time slot. In a soft real time system, it is good but not absolutely necessary that this is guaranteed. E.g. in a game, the calculations necessary for a frame should complete within the period of a frame, or the framerate will ...


27

I've done a fair amount of work supporting HFT groups in IB and Hedge Fund settings. I'm going to answer from the sysadmin view, but some of this is applicable to programming in such environments as well. There are a couple of things an employer is usually looking for when they refer to "Low Latency" support. Some of these are "raw speed" questions (do ...


26

First, my favorite writeup of this hack is called Strange Loops. This particular hack could certainly (*) be done today in any of the major open source OS projects, particularly Linux, *BSD, and the like. I would expect it would work almost identically. For example, you download a copy of FreeBSD that has an exploited compiler to modify openssh. From then ...


24

There are two different memory limits. The virtual memory limit and the physical memory limit. Virtual Memory The virtual memory is limited by size and layout of address space available. Usually at the very beginning is the executable code and static data and past that grows the heap, while at the end is area reserved by kernel, before it the shared ...


24

Although this is opinion-based, I think it's just another historical artifact. Early OSes used a simple file system design for performance that was reasonably strongly tied to the characteristics of the hardware available at the time, and it's been the same way ever since. It's difficult to change the old file read/write APIs for more transactional query/...


23

Most closed-source, non free-as-in-beer software for Linux does come with installation wizards. So does some closed-source, free-as-in-beer software, at least until most major distributions pick it up. For open source software, package managers are a clearly superior solution. So what about the early stages before open source software gets picked up by ...


17

Does this affect all languages? This attack primarily affects languages that are self-hosting. That is languages where the compiler is written in the language itself. C, Squeak Smalltalk, and the PyPy Python interpreter would be affected by this. Perl, JavaScript, and the CPython Python interpreter would not. How does this relate to just-in-time compilation? ...


16

In addition to the excellent hardware/setup tuning answer from @jimwise, "low latency linux" is implying: C++ for reasons of determinism (no surprise delay while GC kicks in), access to low-level facilities (I/O, signals), language power (full use of TMP and STL, type safety). prefer speed-over-memory: >512 Gb of RAM is common; databases are in-memory, ...


15

There's a theoretical chance for this to happen. There is, however, a way of checking if a specific compiler (with available source code) has been compromised, through David A. Wheeler's Diverse double-compiling. Basically, use both the suspected compiler and another independently developed compiler to compile the source of the suspect compiler. This gives ...


15

bash has been around since 1989, and its syntax is largely compatible with that of the much older Bourne shell, which was released in 1977. Huge swaths of core functionality in many operating systems (most Linux distros, OS X, and indeed most POSIX-compatible operating systems), and many real-world systems (make systems, automated tests, initialization ...


14

Linux distributions (as well, I think, as BSD-flavoured Unices) have a user-friendly interface to program installation, via so-called package managers (or ports management in the BSD case): pacman for Arch, dpkg for Debian/Ubuntu, and so on. These package manager provide a way to install programs by means of uniform configuration files. Once the program you ...


13

You can also use libreOffice/open-office-spreadsheet-non-zip-xml-fileformat "*.fods" which is plain xml. @glenatron s comment applies to this format, too. The standard open ofice spreadsheet format "*.ods" is zipped xml and not so suitable for git (similar to @Egryan/@emuddudley answer).


13

I've often asked myself, and others this question, and I'd like to address a point I often see brought up before I get to why Linux sees fewer installers: Linux distributions provide package managers. However, I wouldn't say that a Linux distribution's package manager is a replacement for an installer for, in part, the following reasons: These package ...


13

Your understanding is wrong. Several Linux processes can write to the same file at once (and what happens then might be unspecified, except when the processes overwrite different segments of that file). And some other Linux process (e.g. your browser) can read a file which is written to. You could adopt a convention to avoid that. For example, you could use ...


12

Yes, even if you don't use them often, it's good to know how and why things work the way they do. Some environments may not support IDEs as such or the IDE for a new language might be immature or non-existent. You can also make a script that triggers a makefile, thereby allowing code that can autocompile without human intervention. Thus knowing how to make ...


12

The Linux kernel is licensed under the Free Software Foundation's GPL (General Public License) version 2. It is a copyleft license; basically, this means you are free to make copies of the original or modified kernel and sell them at any price, but the license requires you to give the same rights to the recipients: They may copy your modified version and ...


12

The real reason is a lack of need for it. Layering databases on top of files, rather than merging them, handles the vast majority of situations at least as well as a merged solution with substantially reduced complexity. In some situations others have mentioned, we've also layered parts of files on top of databases (such as permissions structures). In that ...


12

Keys in a JSON dictionary are not quoted strings, they are strings. Strings in JSON start with a quote, continue with escaped or unescaped characters, and end with a string. You can’t have different JSON. You can define a different exchange format, but it won’t be JSON and you are completely on your own.


11

The goals of Android security are different than was traditionally with desktop operating systems like Linux or Windows. Until recently, all systems assumed the administrator and user know and trust the applications they install. Or if the user can't be expected to know, they need the administrator, who is presumably more knowledgeable, to do it for them. ...


11

Don't know about python, but I've moved Java applications from Windows to Linux and vice-versa. Java makes the "write once, run anywhere" claim which may not be 100% true, but with very little work I was able to make it true enough (basically everything works great on Linux, a few issues on Windows). I'll use W and L for Windows and Linux: W: files and ...


10

"Consumer-oriented" (whatever that may mean) usages tend to use Title Case, even in the Unix world. This is more often the case when the organization in question has people whose whole job is to think about user experience. For example, my Ubuntu desktop has folders in the home directory called Downloads, Pictures, Documents, etc. Same goes for my OSX ...


10

Yes, he would need permission from every person who has contributed code to the project. This is because those people have only given permission to redistribute their code under the GPL. Some other projects circumvent this by requiring that contributors assign their rights to the project.


Only top voted, non community-wiki answers of a minimum length are eligible