Primero, tiene la falsa impresión de que los mecanismos de depuración de SW se eliminan de los productos finales. Por ejemplo, compruebe API de depuración de Windows : tiene un amplio potencial de abuso (leyendo la memoria de otros procesos y demás) y los usuarios finales no necesitan nada.
Segundo, para explotar una interfaz de hardware como JTAG, el atacante debe tener acceso físico al sistema, que generalmente significa "juego terminado" en términos de seguridad. Incluso si la versión para el cliente del producto no tuviera JTAG, nada detendría al atacante de intercambiar la PCB con una personalizada, que tiene las interfaces que necesita el atacante.
El único problema real de seguridad surge cuando los desarrolladores quieren protegerse de usuarios malintencionados que podrían abusar de JTAG (para romper la cárcel, clonar firmware, etc.). Los mecanismos relevantes para dicha protección ya se mencionan en otras respuestas: bits de fusibles, claves de cifrado, etc. Por supuesto, eliminar completamente las interfaces de programación / depuración sería más seguro, pero también sería más costoso (por ejemplo, sin programación dentro del sistema) y reducir la posibilidad de control de calidad.
JTAG, en particular, se utiliza en las pruebas de fin de línea de PCB, lo que garantiza que los dispositivos defectuosos no se envíen a los clientes. Esa es la gran diferencia en comparación con el mundo del software: si ha lanzado un software, no tiene que probar cada copia antes de descargarlo. Si libera hardware, debe probar cada copia o asumir el riesgo de fallas de producción.