Should final products ship with debugging features disabled?
Barnaby Jack: Ideally, yes. Many vendors will remove resistors leading from the JTAG port, or in the case of the ARM architecture, may drive the TRST pin low. Neither of these methods is sufficient to disable the JTAG functionality. Resistors are easily replaced, and pins can be pulled high. The ideal choice is to remove the JTAG traces altogether. The main argument against removing JTAG and UART ports is the cost factor. Manufacturing boards is expensive, and the cost involved to manufacture both prototype and production boards may not be warranted. Debugging functionality may be needed in some production devices, for technicians to service the device, for example. If the JTAG port is removed, it’s certainly a roadblock for an attacker, but it will not stop someone who is determined to have access to the code — other methods such as tapping data traces and re-socketing chips can be employed. In the end it all boils down to writing secure software. If the software on the device is vul