Manysoftware bugs are merely annoying or inconvenient, but some can have extremely serious consequences—either financially or as a threat to human well-being.[1] The following is alist of software bugs with significant consequences.
The software of theA2LL system for handling unemployment and social services in Germany presented several errors with large-scale consequences, such as sending the payments to invalid account numbers in 2004.[citation needed]
The DAO bug. On June 17, 2016, the DAO was subjected to an attack exploiting a combination of vulnerabilities, including the one concerning recursive calls, that resulted in the transfer of 3.6 millionEther – around a third of the 11.5 million Ether that had been committed to The DAO – valued at the time at around $50M.[2][3]
In order to fix a warning issued byValgrind, a maintainer ofDebian patchedOpenSSL and broke the random number generator in the process. The patch was uploaded in September 2006 and made its way into the official release; it was not reported until April 2008. Every key generated with the broken version is compromised (as the "random" numbers were made easily predictable), as is all data encrypted with it, threatening many applications that rely on encryption such asS/MIME,Tor,SSL orTLS protected connections andSSH.[5]
Heartbleed, an OpenSSL vulnerability introduced in 2012 and disclosed in April 2014, removed confidentiality from affected services, causing among other things the shutdown of theCanada Revenue Agency's public access to the online filing portion of its website[6] following the theft of social insurance numbers.[7]
The Apple "goto fail" bug was a duplicated line of code which caused a public key certificate check to pass a test incorrectly.
The GnuTLS "goto fail" bug was similar to the Apple bug and found about two weeks later. The GnuTLS bug also allowed attackers to bypass SSL/TLS security.[8]
TheVancouver Stock Exchange index had large errors due to repeated rounding. In January 1982 the index was initialized at 1000 and subsequently updated andtruncated to three decimal places on each trade. This was done about 3000 times a day. The accumulated truncations led to an erroneous loss of around 25 points per month. Over the weekend of November 25–28, 1983, the error was corrected, raising the value of the index from its Friday closing figure of 524.811 to 1098.892.[9][10]
Knight Capital Group lost $440 million in 45 minutes due to the improper deployment of software on servers and the re-use of a critical software flag that caused old unused software code to execute during trading.[11]
TheBritish Post Office scandal; between 2000 and 2015, 736 subpostmasters were prosecuted by the UK Post Office, with many falsely convicted and sent to prison. The subpostmasters were blamed for financial shortfalls which actually were caused by software defects in the Post Office's Horizon accounting software.[12]
In theSony BMG copy protection rootkit scandal (October 2005),Sony BMG produced aVan Zant musicCD that employed acopy protection scheme that covertly installed arootkit on any Windows PC that was used to play it. Their intent was to hide the copy protection mechanism to make it harder to circumvent. Unfortunately, the rootkit inadvertently opened a security hole resulting in a wave of successfultrojan horse attacks on the computers of those who had innocently played the CD.[13] Sony's subsequent efforts to provide a utility to fix the problem actually exacerbated it.[14]
A bug in the code controlling theTherac-25radiation therapy machine was directly responsible for at least five patient deaths in the 1980s when it administered excessive quantities ofbeta radiation.[15][16][17]
Radiation therapy planning software RTP/2 created byMultidata Systems International could incorrectly double the dosage of radiation depending on how the technician entered data into the machine. At least eight patients died, while another 20 received overdoses likely to cause significant health problems (November 2000).[18]
AMedtronic heart device was found vulnerable to remote attacks (2008-03).[19]
While attempting its first overseas deployment to theKadena Air Base in Okinawa, Japan, on 11 February 2007, a group of sixF-22 Raptors flying fromHickam AFB, Hawaii, experienced multiple computer crashes coincident with their crossing of the 180th meridian oflongitude (theInternational Date Line). The computer failures included at least navigation (completely lost) and communication. The fighters were able to return to Hawaii by following theirtankers, something that might have been problematic had the weather not been good. The error was fixed within 48 hours, allowing a delayed deployment.[28]
NASA's 1965Gemini 5 mission landed 80 miles (130 km) short of its intended splashdown point when the pilot compensated manually for an incorrect constant for the Earth's rotation rate. A 360-degree rotation corresponding tothe Earth's rotation relative to the fixed stars was used instead of the 360.98-degree rotation in a 24-hoursolar day. The shorter length of the first three missions and a computer failure onGemini 4 prevented the bug from being detected earlier.[29]
TheRussian Space Research Institute'sPhobos 1 (Phobos program) deactivated its attitude thrusters and could no longer properly orient its solar arrays or communicate with Earth, eventually depleting its batteries. (September 10, 1988).[30]
TheEuropean Space Agency'sAriane flight V88 was destroyed 40 seconds after takeoff (June 4, 1996). The first flight of theAriane V rocket self-destructed due to an overflow occurring during a floating-point to integer conversion in the on-board guidance software. The same software had been used successfully in theAriane IV program, but the Ariane V produced larger values for at least one variable, causing the overflow.[31][32]
In 1997, theMars Pathfinder mission was jeopardised by a bug inconcurrent software shortly after the rover landed, which was found in preflight testing but given a low priority as it only occurred in certain unanticipated heavy-load conditions.[33] The problem, which was identified and corrected from Earth, was due tocomputer resets caused bypriority inversion.[34]
In 2000, aZenit 3SL launch failed due to faulty ground software not closing a valve in the rocket's second stage pneumatic system.[35]
NASAMars Polar Lander was destroyed because its flight software mistook vibrations caused by the deployment of the stowed legs for evidence that the vehicle had landed and shut off the engines 40 meters from the Martian surface (December 3, 1999).[37]
Its sister spacecraftMars Climate Orbiter was also destroyed, due to software on the ground generating commands based on parameters in pound-force (lbf) rather than newtons (N).
A mis-sent command from Earth caused the software of the NASAMars Global Surveyor to incorrectly assume that a motor had failed, causing it to point one of its batteries at the sun. This caused the battery to overheat (November 2, 2006).[38][39]
NASA'sSpirit roverbecame unresponsive on January 21, 2004, a few weeks after landing on Mars. Engineers found that too many files had accumulated in the rover'sflash memory. It was restored to working condition after deleting unnecessary files.[40]
Japan'sHitomi astronomical satellite was destroyed on March 26, 2016, when a thruster fired in the wrong direction, causing the spacecraft to spin faster instead of stabilize.[41]
ESA/RoscosmosSchiaparelli Mars lander impacted surface of Mars. Unanticipated spin during descent briefly saturated the IMU, software then misinterpreted the data as showing the lander was underground, so prematurely ejected parachute and shut down engines, resulting in crash.[42]
Israel's first attempt to land an uncrewed spacecraft on the Moon with theBeresheet was rendered unsuccessful on April 11, 2019, due to a software bug with its engine system, which prevented it from slowing down during its final descent on the Moon's surface. Engineers attempted to correct this bug by remotely rebooting the engine, but by the time they regained control of it,Beresheet could not slow down in time to avert a hard, crash landing that disintegrated it.[43]
AT&T long-distance network crash (January 15, 1990), in which the failure of one switching system would cause a message to be sent to nearby switching units to tell them that there was a problem. Unfortunately, the arrival of that message would cause those other systems to fail too – resulting in acascading failure that rapidly spread across the entire AT&T long-distance network.[44][45]
In January 2009,Google's search engine erroneously notified users thatevery web site worldwide was potentially malicious, including its own.[46]
In May 2015,iPhone users discovereda bug where sending a certain sequence ofcharacters andUnicode symbols as a text to another iPhone user would crash the receiving iPhone'sSpringBoard interface,[47] and may also crash the entire phone, induce afactory reset, or disrupt the device's connectivity to a significant degree,[48] preventing it from functioning normally. The bug persisted for weeks, gained substantial notoriety and saw a number of individuals using the bug to play pranks on other iOS users,[citation needed] beforeApple eventually patched it on June 30, 2015, with iOS 8.4.
Theyear 2000 problem spawned fears of worldwide economic collapse and an industry of consultants providing last-minute fixes.[49]
A similar problem will occur in 2038 (theyear 2038 problem), as manyUnix-like systems calculate the time in seconds since 1 January 1970, and store this number as a32-bitsignedinteger, for which the maximum possible value is231 − 1 (2,147,483,647) seconds.[50] 2,147,483,647 seconds equals 68 years, and 2038 is 68 years forward from 1970.
An error in the payment terminal code forBank of Queensland rendered many devices inoperable for up to a week. The problem was determined to be an incorrect hexadecimal number conversion routine. When the device was to tick over to 2010, it skipped six years to 2016, causing terminals to decline customers' cards as expired.[51]
TheBoeing 787 Dreamliner experienced aninteger overflow bug which could shut down all electrical generators if the aircraft were too be kept "on" for more than 248 days.[53] A similar problem was found to exist in theAirbus A350, which needs to be powered down before reaching 149 continuous hours of power-on time, otherwise certain avionics systems or functions would partially or completely fail.[54]
In early 2019, the transportation-rental firmLime discovered a firmware bug with itselectric scooters that can cause them to brake very hard unexpectedly, which may hurl and injure riders.[55]
Boeing 737 NG had all cockpit displays go blank if a specific type of instrument approach to any one of seven specific airports was selected in theflight management computer.[56]
Bombardier CRJ-200 equipped with flight management systems byCollins Aerospace would make wrong turns duringmissed approach procedures executed by the autopilot in some specific cases when temperature compensation was activated in cold weather.[57]
Eve Online's deployment of theTrinity patch erased theboot.ini file from several thousand users' computers, rendering them unable to boot. This was due to the usage of alegacy system within the game that was also named boot.ini. As such, the deletion had targeted the wrong directory instead of the /eve directory.[58]
TheCorrupted Blood incident was asoftware bug inWorld of Warcraft that caused a deadly,debuff-inducing virtual disease that could only be contracted during a particularraid to be set free into the rest of the game world, leading to numerous, repeated deaths of many player characters. This caused players to avoid crowded places in-game, just like in a "real world" epidemic, and the bug became the center of some academic research on the spread of infectious diseases.[59]
On June 6, 2006, the online gameRuneScape suffered from a bug that enabled certain player characters tokill and loot other characters, who were unable to fight back against the affected characters because the game still thought they were inplayer-versus-player mode even after they were kicked out of a combat ring from the house of a player who was suffering fromlag while celebrating an in-game accomplishment. Players who were killed by the glitched characters lost many items, and the bug was so devastating that the players who were abusing it were soon tracked down, caught and banned permanently from the game, but not before they had laid waste to the region of Falador, thus christening the bug "Falador Massacre".[60]
In the 256th level ofPac-Man, a bug results in akill screen. The maximum number of fruit available is seven and when that number rolls over, it causes the entire right side of the screen to become a jumbled mess of symbols while the left side remains normal.[61]
Upon initial release, theZX Spectrum gameJet Set Willy wasimpossible to complete because of a severe bug thatcorrupted the game data, causing enemies and the player character to be killed in certain rooms of the large mansion where the entire game takes place.[62] The bug, known as "The Attic Bug", would occur when the player entered the mansion's attic, which would then cause an arrow to travel offscreen, overwriting the contents of memory and altering crucial variables and behavior in an undesirable way. The game's developers initially excused this bug by claiming that the affected rooms were death traps, but ultimately owned up to it and issued instructions to players on how to fix the game itself.[63]
One of the free demo discs issued toPlayStation Underground subscribers in the United States contained a serious bug, particularly in the demo forViewtiful Joe 2, that would not onlycrash thePlayStation 2, but would also unformat anymemory cards that were plugged into that console, erasing any and allsaved data onto them.[64] The bug was so severe that Sony had to apologize for it and send out free copies of other PS2 games to affected players as consolation.[65]
Valve'sSteam client for Linux could accidentally delete all the user's files in every directory on the computer. This happened to users that had moved Steam's installation directory.[68] The bug is the result of unsafeshellscript programming:
The first line tries to find the script's containing directory. This could fail, for example if the directory was moved while the script was running, invalidating the "selfpath" variable$0. It would also fail if$0 contained no slash character, or contained a brokensymlink, perhaps mistyped by the user. The way it would fail, as ensured by the&& conditional, and not havingset -e cause termination on failure, was to producethe empty string. Thisfailure mode was not checked, only commented as "Scary!". Finally, in the deletion command, the slash character takes on a very different meaning from its role ofpath concatenation operator when the string before it is empty, as it then names theroot directory.
Minus World is an infamous glitchlevel from the 1985 gameSuper Mario Bros., accessed by using a bug to clip through walls in level 1–2 to reach its "warp zone", which leads to the said level.[69] As this level is endless, triggering the bug that takes the player there will make the game impossible to continue until the playerresets the game orruns out oflives.
"MissingNo." is a glitchPokémon species present inPokémon Red andBlue, which can be encountered by performing a particular sequence of seemingly unrelated actions. Capturing this Pokémon may corrupt the game's data, according to Nintendo[70][71][72] and some of the players who successfully attempted this glitch. This is one of the most famous bugs in video game history, and continues to be well-known.[73]