Underhanded C Contest
The Underhanded C Contest is a programming contest to turn out code that is malicious, but passes a rigorous inspection, and looks like an honest mistake. The contest rules define a task, and a malicious component. Entries must perform the task in a malicious manner as defined by the contest, and hide the malice. Contestants are allowed to use C-like compiled languages to make their programs.
The contest was organized by Dr. Scott Craver of the Department of Electrical Engineering at Binghamton University (New York State). For the 2005 to 2008 contests, the prize was a $100 gift certificate to ThinkGeek. The 2009 contest had its prize increased to $200 due to the very late announcement of winners, and the prize for the 2013 contest is also a $200 gift certificate.
The 2005 contest had the task of basic image processing, such as resampling or smoothing, but covertly inserting unique and useful "fingerprinting" data into the image. Winning entries from 2005 used uninitialized data structures, reuse of pointers, and an embedding of machine code in constants.
The 2006 contest required entries to count word occurrences, but have vastly different runtimes on different platforms. To accomplish the task, entries used fork implementation errors, optimization problems, endian differences and various API implementation differences.
The 2007 contest required entries to encrypt and decrypt files with a strong, readily available encryption algorithm such that a low percentage (1% - 0.01%) of the encrypted files may be cracked in a reasonably short time. The contest commenced on April 16 and ended on July 4. Entries used misimplementations of RC4, misused API calls, and incorrect function prototypes.
The 2008 contest required entries to redact a rectangular portion of a PPM image in a way that the portion may be reconstructed. Any method of "blocking out" the rectangle was allowed, as long as the original pixels were removed, and the pixel reconstruction didn't have to be perfect (although the reconstruction's fidelity to the original file would be a factor in judging). The contest began on June 12, and ended on September 30. Entries tended to either xor the region with a retrievable pseudo-random mask or append the masked data to the end of the file format. The two placing programs both used improperly defined macros while the winner, choosing to work with an uncommon text based format, zeroed out pixel values while keeping the number of digits intact.
The 2009 contest required participants to write a program that sifts through routing directives but redirects a piece of luggage based on some innocuous-looking comment in the space-delimited input data file. The contest began December 29, 2009, and was due to end on March 1, 2010. However, no activity occurred for three years. The winners were only announced on April 1, 2013, with one overall winner and six runner ups.
The 2013 contest was announced on April 1, 2013, and was due July 4, 2013; results were announced on September 29, 2014. It was about a fictional social website called "ObsessBook". The challenge was to write a function to compute the DERPCON (Degrees of Edge-Reachable Personal CONnection) between two users that "accidentally" computes a too low distance for a special user.
The 2014 contest was announced on November 2, 2013, and was due January 1, 2015.
- "Underhanded C Contest Revived". I Programmer. 2013-04-06. Retrieved 2014-10-04.
- Faculty and Staff page of EE Dept. at Binghamton University
- 2008 contest rules
- The Underhanded C Contest », xcott.com (archived from the original on 2011-07-18)
- The Underhanded C Contest » Also, we’re looking for good PhD students
- The Underhanded C Contest
- Scott Craver (2014-09-29). "2013 Winners". Retrieved 2014-10-01.
- Scott Craver (2014-11-02). "The 7th Underhanded C Contest is now Open". Retrieved 2014-12-18.