La respuesta de @dunni describe el ataque que esta medida de seguridad intenta mitgar. Un comentario en su respuesta afirma que esto es "teatro de seguridad"; yo describo en esta respuesta (porque esta explicación es demasiado larga para caber en un comentario) por qué no lo es.
La mayoría de las medidas de seguridad no pueden evitar completamente los ataques. Una medida de seguridad eficaz es aquella que aumenta el coste para el atacante de forma significativa y no aumenta también los costes para el defensor más allá de un rendimiento económico razonable.
Por este motivo, los controles aleatorios de los billetes funcionan, aunque a veces permiten viajar gratis: aunque un atacante puede simplemente no comprar un billete y tener la posibilidad de viajar gratis, si la sanción cuando se descubre es lo suficientemente alta, la mayoría de los atacantes potenciales optarán por comprar un billete antes que correr el riesgo de pagar la multa o sufrir otro castigo
En este caso, hay dos requisitos para un atacante: 1. Escribir u obtener una versión de la aplicación que parezca ser la oficial y que muestre el mismo resultado que si el usuario hubiera comprado el billete mucho antes de que el revisor llegara a comprobarlo. 2. Cargar lateralmente esta aplicación, ya que la Deutsche Bahn puede asegurarse con bastante facilidad de que una que aparezca en la tienda oficial sea retirada fácilmente.
Escribir una aplicación de este tipo es significativamente difícil; implica no sólo tener la habilidad de duplicar la propia aplicación, sino también superar cualquier medida de seguridad que proteja la aplicación original (como ser capaz de extraer de ella las claves necesarias para instruir a los servidores de la base de datos para comprar un billete).
Por supuesto, una vez que una persona escriba una aplicación de este tipo, podría ser compartida con otras personas incapaces de hacerlo. Pero encontrar una aplicación de este tipo una vez escrita tampoco es del todo trivial; DB también puede tener la capacidad, incluso si no está en la tienda oficial, de hacer que la retiren por medios legales. Si no pueden hacer eso, también pueden cambiar fácilmente el funcionamiento de su aplicación (diferentes claves de seguridad, diferentes protocolos de red, diferente visualización) para exigir al autor de la aplicación que la actualice.
Incluso en el caso de que la aplicación esté disponible fácilmente, el usuario debe ser lo suficientemente sofisticado como para descargar la aplicación (ya que no estará disponible en la tienda oficial de aplicaciones) y también debe estar dispuesto a correr el riesgo de seguridad personal de que el autor de la aplicación es malicioso y realmente escribió la aplicación para atacar a los usuarios que la descargan, en lugar de a DB.
Todo lo anterior se combina para hacer un costo bastante alto para el atacante, mientras que para DB agregar el temporizador a su aplicación existente es muy poco trabajo. Gastar unos pocos días de tiempo de los desarrolladores y probadores para añadir esta característica a la aplicación probablemente se amortiza muy fácilmente, incluso si evita que sólo el 50% de los atacantes potenciales ejecuten el ataque (aunque probablemente evita un porcentaje mucho mayor).
La razón por la que algo como los controles de seguridad de la TSA estadounidense se califican de teatro de seguridad es porque imponen unos costes muy grandes a los defensores a cambio de muy poco beneficio para los atacantes. Estos controles existen porque los costes son soportados principalmente por personas que pueden hacer poco al respecto (las aerolíneas y sus pasajeros), mientras que los beneficios (parecer que se está haciendo algo con respecto a un problema) recaen sólo en algunos funcionarios gubernamentales y elegidos que sufren poco el coste global.
2 votos
Me pregunto si tienes 2 minutos para detener la venta, después de comprometerte.
0 votos
@Willeke Había un botón "Editar pedido", parecía activo tanto antes como después de que expirara el temporizador. No he probado, pero tu suposición podría ser un caso.
0 votos
@Willeke: Por desgracia, AFAIK no.
1 votos
Este temporizador no es específico de la aplicación de Deutsche Bahn, sino que también se puede ver en (casi) todas las aplicaciones de las empresas de transporte local.
0 votos
Solución tonta, insegura y fácilmente hackeable para un mundo con menos humanos manejando máquinas.
3 votos
O solución barata y suficiente cuando se mira cuál es el vector de ataque. Si utilizas el transporte local, y te fijas en la gente que engañaría y no compraría billetes, honestamente la mayoría de ellos lo más probable es que no sepan cómo hackear una aplicación móvil.
1 votos
No se trata de un billete DB, sino de un billete para la tarifa de transporte regional (VRS), que tiene la regla de los 2 minutos. En el caso de los billetes de los DB, no existe dicha regla (ni contador), aunque la app rechazará la venta de billetes para una conexión específica 2 (más o menos) minutos antes de la salida.