Cramming Software With Thousands of Fake Bugs Could Make It More Secure, Researchers Say (vice.com)
It sounds like a joke, but the idea actually makes sense: More bugs, not less, could theoretically make a system safer. From a report: Carefully scatter non-exploitable decoy bugs in software, and attackers will waste time and resources on trying to exploit them. The hope is that attackers will get bored, overwhelmed, or run out of time and patience before finding an actual vulnerability. Computer science researchers at NYU suggested this strategy in a study published August 2, and call these fake-vulnerabilities "chaff bugs." Brendan Dolan-Gavitt, assistant professor at NYU Tandon and one of the researcher on this study, told me in an email that they've been working on techniques to automatically put bugs into programs for the past few years as a way to test and evaluate different bug-finding systems. Once they had a way to fill a program with bugs, they started to wonder what else they could do with it. "I also have a lot of friends who write exploits for a living, so I know how much work there is in between finding a bug and coming up with a reliable exploit -- and it occurred to me that this was something we might be able to take advantage of," he said. "People who can write exploits are rare, and their time is expensive, so if you can figure out how to waste it you can potentially have a great deterrent effect." Brendan has previously suggested that adding bugs to experimental software code could help with ultimately winding up with programs that have fewer vulnerabilities.
We can't manage to build the smallest bit of software without bugs, and now we're supposed to introduce large numbers of fake bugs that are, in fact, provably not exploitable.
Sure...that'll work.
Right up until the 'fake' bugs turn out to actually be exploitable (because, you know, we were wrong about them), and the bad guys win again.
A thousand pounds of wood moving at 300 feet per minute. Don't get in the way.
Before you know it, those fake bugs can easily turn into actual bugs. During porting, during updating, during review, etc.
Instead of laying a minefield of false positives to hide sloppy mistakes, why not just fix the exploitable mistakes in the first place and learn from the experience about what NOT to do?
Once a critical nuber if bugs is introduced the software becomes unusable hence making it unattractive for hacz0rz to exploit.
sudo rm -r -f --no-preserve-root /
... literally.
The bugs _are_ still there. They're just harder to find.
What could POSSIBLY go wrong?
E Proelio Veritas.
This guy is an idiot. An increase in complexity - which this most certainly would entail - will always lead to an increase in genuine bugs. And, as was said by someone further up... when programmers already can’t write bug-free code, how the heck are they going to make up 100% guaranteed non-exploitable false bugs which - at the same time - are indistinguishable from the real thing to a skilled hacker?
#DeleteChrome
We have enough issues with trying to make bug free code. So let's add bugs that we "think" aren't exploitable. So we now have the following categories of bugs.
1. Organic, non-exploitable (we already have these)
2. Organic, exploitable (we already have these)
3. Deliberate, non-exploitable (we "want" to introduce these)
3. Deliberate, exploitable (we hope to not introduce any of these... Just like we already hope to not introduce any of type 1 and 2 bugs above... Yea, right.)
But might be tough since it might only be a matter of time before someone makes a mechanism by which to filter out auto-generated "bugs."
the real advantage is: when your boss comes up to you and asks about a bug...."No, no" That's a chaff bug...honest.
This is an application of an age old conflict strategy. Tricking your enemy into thinking they have found a weakness is a well proven tactic if effort is put in to correctly prepare for the situation.
I guess Agile isn't getting the job done, but this is just another in a long list of make work methodologies programmers are deeply entrenched in doing in order to make their jobs perpetual. Also, it's a great hedge for the CPU industry which doesn't have any killer apps to further justify increased computational capacity for the average user. In smartphone land, the approach to forced obsolescence is security / OS updates being withheld from consumers quite maliciously. For desktops and laptops, the update genie is long out of the bottle, so you have to come up with some other way to make people's computers slow. Honeypot code is definitely a new way to do exactly that.
The downfall of Waterfall is that eventually, you can have a complete and working product. But nobody wants to make a Windows XP or Office 2003 that works forever and gets the job done.
1) if you have 500 fake bugs then how are the white hat hackers going to tell you about the real bugs that lurk in your system?
2) how do you prevent the fake bugs from being miscoded to accidentally becoming real bugs? Developers think it's a dummy fake bug and ignore all bug reports about it but it's truly a real bug.
This might work. Right up until day 2 when someone leaks the list of "chaff bugs"
More bugs, not less, could theoretically make a system safer.
Just like how adding actual bugs to food makes it tastier.
It must have been something you assimilated. . . .
I can't see how to do this without spending a lot of time ensuring that the bugs you are adding are non-exploitable.
So, during product definition phase, you're going to have to convince the Product Manager that you want to take more time on the application development by adding exploit bugs and then testing said bugs to ensure that they can't be exploited?
Great non-intuitive idea that clearly came out of academia. Clearly Dolan-Gavitt has never worked for a living.
Mimetics Inc. Twitter
If cramming code with bugs increases security, the code I write is incredibly secure.
Babes with big tits, speedboats and mountains of cocaine.
Otherwise, what's the point?
Mimetics Inc. Twitter
I don't like to call anybody an idiot, but I don't know any other way to end this sentence.
Mimetics Inc. Twitter
That's all I really needed to read. I'd love to write any lengthy rant here to entertain any /.'ers, but I think that says it all. Far cry from cooking up some experimental code that isn't production worthy at all, or SaaS where it's built to drive, function, and fund a business model, no way is your experiment anything more than that.
I'm sure some one has a rank of OSS software against vulnerabilities and/or exploits in their code-base, introduced their "bug" idea into a fork of the application and saw how it went over a period of time. Skipping their academic paper, I saw nothing of that and more of a tip to promote their LAVA system, plus a but of academic accommodating and citing of peers papers.
Sounds cool in academia world as a proof-of-concept to put a paper out and get more grant money, but that's all I'll promote. Anyone who's written a bit of code, maintained anything software related at all knows this is absolutely not realistic.
"Brendan has previously suggested that adding bugs to experimental software code could help with ultimately winding up with programs that have fewer vulnerabilities."
This is not correct. His theory seems to be that you will get fewer exploits. The number of vulnerabilities will remain constant.
the best and only response to this is
https://i.kym-cdn.com/photos/i...
do we need to get the Matriarchs of Computing to explain why this is a BAD IDEA to the point where it qualifies as EVIL BAD AND WRONG??
This idea comes under the heading of "Well, I don't have any useful research, so why don't I publish a paper taking a contrary tack and get noticed."
Clearly the author has, never written a line of code in his life that somebody has to maintain, dealt with product managers that want more for less, worked with QA and security or documented anything that he has written (how do you document that you've put deliberate bugs in the code that should be ignored down the road?).
So, write up a paper extolling the virtues that would be picked apart by any competent professional knowing that others in academia will never think about the practical implications of what's being suggested.
Mimetics Inc. Twitter
Microsoft already tried
I heard that it was an abject failure. They ended up with an O/S with no bugs.
Have gnu, will travel.
"... techniques to automatically put bugs into programs..."
and
"...once they had a way to fill a program with bugs..."
I think I've found my natural calling
Yay, I can finally get a job as a programmer!
Hire me! Hire me!
I can honestly say that this idea is so dumb that it hasn't been parodied in the comics (yet).
Mimetics Inc. Twitter
putting bugs into software.... pffft.... been doing it for years now, as have most others in the biz
determining that they're benign.... now that's the hard part; who signs off on that?
Let's suppose (big if) that we can cram a program with bugs that are either highly unlikely to be exploitable, or provably not exploitable. How long would it take an attacker to learn to recognize a real bug from a manufactured bug, and filter out the probably-manufactured ones?
How long would it take to build a classifier to recognize and flag probably-manufactured bugs?
This might make more sense if we combined this technique with better means for closing exploitable, or probably exploitable, bugs. But man, color me skeptical.
Finding God in a Dog
Not a problem for coder or documentation, the compiler would insert these non-bugs
The real vulnerabilities will still be there. This is an age-old concept called "security through obscurity" and is only minimally effective.
This would only make it even more difficult if researchers have to navigate their way through decoy code designed
against finding real bugs in the first place.
Not to mention, bloated code becomes even MORE bloated code. :|
So the entire idea is " If you can't fix the bugs in the code, hide it amidst a bunch of fake bugs in code ? "
In the history of anything, has security through obscurity EVER worked in the long term ?
Most attackers use fuzzing for finding bugs to analyse further. Hence these need to be bugs that can be found by fuzzing. Fuzzing needs either a crash or crass bad behavior to detect a bug. So all these "non exploitable" bugs can actually be exploited for DoS or will break your application for the right input data. That is the first reason this is unworkable. The second one is that this makes software hard to maintain and hard to test. It is already hard to maintain and test software, and tthis will make it much worse.
If you want to demotivate attackers, use careful input validation, input normalization and privilege separation and you are pretty much done. But these elementary measures are apparently already beyond most people writing software. And that is the real problem here. There is no magic technology that will make insecure software secure. There is only getting people that are experienced, know what they are doing and understand security write it. Nothing else will help.
Most ACs are not even worth the keystrokes to insult them. Be generically insulted by this and ignored otherwise.
I do that one better. My programs are full of REAL bugs.
Slow down, cowboy! It has been 4 hours since you last posted. You must wait another few hours.
I was right all along - they are not bugs, they are features!
Some settling may occur during posting.
1. Get your coders all drunk and stoned.
2. Pressure them to write lots of code.
3. Have testers find all the bugs.
4. Have the (now sober) coders plug their bugs with end-point logic, but not outright remove them.
5. Profit!
Table-ized A.I.
This one needs the foot icon. The first rule of application security is that obscurity is not security. Also assuming a hacker who's compulsively raiding your software will ever run out of energy is also an incredibly stupid idea. I like the way this one plays out. It's hilarious, but it won't work.
This signature has Super Cow Powers
"fake" bugs? No, these are real bugs, just non exploitable ones.
I don't want software to crash or do funny things if it can be avoided. Security is nice but it comes after functionality. If it is not functional, there is no point using the software at all. It is almost like the security guys want to make everything unusable, just because things that are unusable can't be exploited.
and clean up your code.
Code thats full of bugs is not a feature. Secure your code and have real experts help with that.
Domestic spying is now "Benign Information Gathering"
I was taught the bebugging technique during my CS degree over 20 years ago.
https://en.wikipedia.org/wiki/...
Finding bugs can be done automatically. Research is being done to use AI to locate bugs and exploit them. I can see such software with a feature to identify fake bugs aka non-exploitable bugs.
And they generally get though our vigorous internal security scans just fine (i.e. the code generally compiles). And none of this fake bugs, my decoy bugs are real ones. Genuine bugs. Lots of then.
So many that even the most determined hacker is unlikely to figure out how to make the software work correctly, let alone hack it.
First is this is going to contribute to code bloat and make it harder to maintain the code. I've seen a few programmers here on slashdot admit that they've had serious "WTF?" moments when reviewing their own code years or even just months later. Having deliberately non-functional code is going to make support programmers brains hurt, I just know it.
Second is: Your going to have to do a lot more testing to make sure those do-nothing bugs really are inert on your customers systems. What do you do when your code on a customers system conflicts with some obscure factor in their run-time environment? This will add another level to the "It works on our systems" problem.
Third: Software licensing terms aside, I think deliberately adding to flaws to code has the potential to open a can of worms in terms of liability.
I need a wheelchair van for my son. Help me get the word out. https://www.gofundme.com/wheelchair-van-for-jj
No. The idea is so stupid, it's not worth even discussing. It's like we haven't had 50 years of KISS concept.
I do not believe in karma. "Funny"=-6. Do good and forbid evil. Yours, Oft-Offtopic Flamebaiting Troll.
The Tesla model?
I did a double-take and went, "like, what? did I see what I thought I saw? " And then I go and look more closely and lo, the absurdity is sincere.
File under 'M' for 'Manic ranting'
This would be pretty stupid. Bugs are bad, mmm-kay? It would be better to just make the code convoluted and redundant but without bugs if you want to wear out attackers.
On the plus side, you'll know when to stop testing! Since you know all the bugs you planted, if QA finds all of them, you've got a great QA team doing their job, and it's likely they found the ones you did not plant as well.
Obviously, this researchers knows nothing about how coding works. More complexity means more bugs and even intentional "harmless" bugs (if such a thing even exists) can have unintentional side-effects that could be leveraged by an attacker. And now the team of coders working on a project should all agree that "oh these bugs are there on purpose so don't fix them, just test them properly to make sure they can't be exploited".... All because of the idea that we want to waste the time of attackers who, by definition, have unlimited time. Unlike devs.
Time flies when you don't know what you're doing
pointy haired boss had two choices;
let's hire more programmers to add fake bugs to our programs
or
let's hire more security people to help audit and remove security issues from our programs.
his advisor tried to make it simple and steer him in the right direction, it worked so many times before.
except for this time.
On a long enough timeline, the survival rate for everyone drops to zero.
How long would it take to build a classifier to recognize and flag probably-manufactured bugs?
In an arms race, "how long does it take to (reach the next level playing field)" is a relevant factor. A temporary measure is temporary, but it protects for as long as it lasts.
Singularity: a belief in the "God" idea with the "demiurge" relation inverted.
I know this is Slashdot and nowadays people don't even read the summary, let alone the article, much less the actual paper to which the article links, but there's an awful lot of straw littering the floor here.
The chaff bugs are inserted by an automated tool, they will not have to be written or worked around by people writing the actual code.
The authors are aware that the chaff bugs must not be exploitable.
The authors are aware that they will face automated tools for finding bugs and determining their exploitability.
The authors are aware that this is just a proof-of-concept and would require refinement to be useful in the real world.