Gene sequencer malware injection via encoded DNA (2017)
wired.com
wired.com
"the researchers admit, they also had to take some serious shortcuts in their proof-of-concept that verge on cheating. Rather than exploit an existing vulnerability in the fqzcomp program, as real-world hackers do, they modified the program's open-source code to insert their own flaw allowing the buffer overflow."
I think they should leave out the verge. But it is an interesting thing to think about, that you can encode DNA with the specific intent to cause a buffer overflow in a vulnerable program. But not this one.
> we first copied fqzcomp from https://sourceforge.net/projects/fqzcomp/and inserted a vulnerability into version 4.6 of its source code; a function that processes and compresses DNA reads individually, using a fixed-size buffer to store the compressed data. This modification lets us perform a buffer overflow with a longer than expected DNA read in order to hijack control flow. While the use of such a fixed-size buffer is an obvious vulnerability, we note that fqzcomp already contains over two dozen static buffers.
> The modified fqzcomp program contained a buffer too small for the 177 base pair read length, so it would overflow after processing the first read.
https://www.usenix.org/system/files/conference/usenixsecurit...
https://sourceforge.net/projects/fqzcomp/
needs a space before "and".
Also, one solution seems simple: run the software inside a virtual machine.
It should be noted that "static buffers" are not per se a vulnerability. This sentence reads like they equate the two.
If this was in something one of Illumina's tools, on a platform that is used for diagnostics (some of their platforms have FDA approval). Then I think this would be fairer... but it's not, and they probably didn't do that because it would be too much work.
As it stands, they might as well have written their own buggy tool and exploited it to be honest.
We contacted all the BAM parser developers (academic) and they all said they had no interest in identifying and fixing bugs in their parsers. We wrote an industrial strength BAM parser in Go.
I think a year or two later one of the major sequencing centers got hozed by a malicious BAM file and that was when all the open source BAM developers got security religion.
https://users.ece.cmu.edu/~ganger/712.fall02/papers/p761-tho...
It's amazing, but it also shows how poor the defense against buffer overflows is in many programs.
sanitize your inputs ---> no exceptions!
Imagine you've got the alleged bomber's computer, it has hundreds of thousands of images with long hexadecimal names like 384d38b0c32aaf03.jpg and you're under pressure to figure out where the missing fifth bomb is before everybody finds out the hard way.
Now, on one hand you've got a simple image viewer built with WUFFS: https://github.com/google/wuffs which you are completely sure is safe for viewing the images, you could perhaps glance at a hundred images per hour, although if there's anything subtle you'd miss it.
On the other hand, you've got a fancy AI-assisted tool that processes over 1000 images per minute and cross-matches them with over a hundred law enforcement databases and other sources to understand what it sees. It might be able to pick out anomalous images in time to make a difference. Still, it was written in C++ and the last time you used it the program crashed three times with mysterious errors.
Which do you choose? If the bomb blows up and kills sixty elementary school kids while you're glancing at image #406 having not noticed that school is in the background of images #284, #301, #305, #313, and #326 and never guessing that the unknown interiors in images #192-198 and #350-400 are from that same school - you're going to feel like an idiot for choosing the slow path.
But if the bomb blows up when your AI assisted image processor is exploited by a C++ JPEG library zero day inside image #4861 and that sends the "explode now" code to a custom web site the bomber set up for exactly this eventuality, you're going to feel like an idiot for not using WUFFS.
This sort of trade-off is how Vinge's "A Fire Upon the Deep" begins. Humans (roughly) are poking around in an apparently forgotten archive in deep space. They could be slow and careful, but it's too tempting to choose quicker methods, smarter methods, letting the archive direct how to improve their AI to better understand it. By the time the humans realise their AI is doing what the archive wanted it to do, not what they wanted it to do, it's far too late for them.