Cruft is commonly used to refer to the mess left inside software as it is revised and updated.
As changes are made to software, updating, adding and changing features, it’s not uncommon for some portions of the software to no longer be necessary. Often in a hurry to release new versions, this code is left in place because it would take additional time and introduce additional risk to actually remove it safely. Over time, cruft accumulates, and can often present a significant issue to programmers attempting to understand and further modify the software.
Cruft is also occasionally used to refer simply to poor quality hardware or shoddily produced software, which might be referred to as “crufty”.