2014 Underhanded C Contest Winners Announced
Rei writes with a bit of news from earlier this week: It's that time of year again — the results of the 2014 Underhanded C Contest have been announced. Techniques used for secretly alerting a user to a NSA request include (among others) misleadingly long loop execution, replacing user #defines with system ones, K&R style function declarations to avoid type checking, and using system #includes to covertly change structure packing. The winning entry exploits a system-provided function that is implemented as a poorly protected macro, tricking it into executing a piece of code given as an argument multiple times.
In my days, we only had six registers and we had to push values through the snow, both ways!
I didn't get even half of the summary but it sounds like there's giant security holes in modern design itself.
I've just come in from a few hours of sitting on the back porch and sipping spirits, so I'm not at the heights of my cognitive powers. Can someone explain in a few sentences how this works as an alert to the user? Wouldn't the user just think the website is a little bit broken? Or is that the point?
You are welcome on my lawn.
Now the large companies will fix all the holes and they did it at the cost of a paltry prize package (assuming there is one).
If you're good at something, never do it for free.
2015 Underhanded Company award goes to Dice Holdings Inc. and SOURCEFORGE.
The goal of the Underhanded C contest is to write code that is as readable, clear, innocent and straightforward as possible, and yet it must fail to perform at its apparent function. To be more specific, it should do something subtly evil.
That sounds just like all code ever written, except some code obviously is not clear and readable. (at least before debugging)
Don't waste your vote! Vote for whoever you want, unless you live in a swing state it won't matter anyways
This contest is always a good read. I continue to be impressed with the crazy things these participants can think of, and simultaneously disturbed by the fact that they actually came up with this.
The winner is especially good, both for being truly underhanded and for putting the lynchpin error in the location you'd least expect to see it. It's a beautiful combination of subtle subterfuge at several points to make the whole thing come together. As TFA so delightfully puts it: "The whole thing is hidden in auditing code, which wins points for sheer spite."
So kudos to the winner. And on behalf of the rest of humanity, please never end up in a situation where you get to use your evil skills in the real world!
And the nerdiest topics gather the least responses.
Where have the nerds migrated? Is there some forum with less astroturfing, but with high quality articles and commentary for nerds?
I tried hackernews but it's very politically correct.
On topic, the underhanded-c continues to impress every year, keep on going with the good work.
While impressive, most of these bugs would be prevented with a reasonable coding standard. No macros, our at least very limited macros. One statement per line. Buffer checking. Basic professional stuff. I don't see how lint doesn't catch these.
I'd be impressed if strict standards were followed and they still pulled it off.
I have a feeling at least some of these ideas originated as bugs in the authors' own code experience (hopefully in debugging someone else's code).