◇ OpenCyber Academy
Ingeniería · Capítulo 40 · Español

Capítulo 40 — Laboratorio de verificación II

Aprendizaje gratuito y abierto para quienes desean proteger a las personas y la tecnología. No se necesita una cuenta para estudiar ni consultar las respuestas.

Capítulo 40 — Laboratorio de verificación II

Mapa de la lección

Lección 40 publicada. Mapa, ejemplo, EX118.

flowchart TD
  N0["Resultados de aprendizaje"]
  N1["40.1 De extremo a extremo"]
  N2["40.2 Fallos"]
  N3["40.3 Aprobación"]
  N4["Nota práctica"]
  N5["40.1b Observabilidad y paridad"]
  N6["Nota de campo: paquete malicioso"]
  N7["Síntesis del capítulo"]
  N0 --> N1 --> N2 --> N3 --> N4 --> N5 --> N6 --> N7
  N7 --> EX["Ejemplo resuelto"]
  EX --> Q["Ejercicio EX118"]

Dibujo lógico

flowchart LR
  N0["Resultados de aprendizaje"]
  N1["40.1 De extremo a extremo"]
  N2["40.2 Fallos"]
  N3["40.3 Aprobación"]
  N4["Nota práctica"]
  N5["40.1b Observabilidad y paridad"]
  N6["Nota de campo: paquete malicioso"]
  N7["Síntesis del capítulo"]
  N0 --> N1 --> N2 --> N3 --> N4 --> N5 --> N6 --> N7 --> Q["EX118"]
[Resultados de aprendizaje]
    |
    v
[40.1 De extremo a extremo]
    |
    v
[40.2 Fallos]
    |
    v
[40.3 Aprobación]
    |
    v
[Nota práctica]
    |
    v
[40.1b Observabilidad y paridad]
    |
    v
[Nota de campo: paquete malicioso]
    |
    v
[Síntesis del capítulo]
    |
    v
[Ejemplo resuelto] --> [Ejercicio EX118]

Resultados de aprendizaje

Usted podrá (1) verificar el flujo de extremo a extremo, de la trama al ticket y a la cobertura; (2) inyectar fallos; (3) firmar una versión candidata.

40.1 De extremo a extremo

Trama sintética → decisión del monitor → evento → ticket de hallazgo → actualización de la cobertura. Registre los hashes en cada salto. En el laboratorio II de ABP, Lena reproduce una trama sintética en el banco de pruebas y la sigue por cada paso: la decisión de la función de permiso con su código de motivo, la alerta, la orden de trabajo del sistema de mantenimiento, el ticket de hallazgo y la actualización de la cobertura. Se registra un hash en cada salto, de modo que el expediente puede probar que el ticket describe el mismo evento que vio el monitor. Una cadena que no puede rastrearse salto a salto no cuenta como aprobada, aunque el resultado final parezca correcto.

40.2 Fallos

Detenga el almacén de hallazgos a mitad del flujo; confirme que el monitor sigue denegando y que los borradores se encolan. Corrompa un archivo de evidencia; confirme la alerta de discrepancia de hash. Proporcione una lista de aristas plana (insegura); confirme que la alcanzabilidad no supera la comprobación del SIS.

# Lab 23 - reachability count on a synthetic Purdue-layered OT network
# Nodes: L5-ERP, L4-Office, L3.5-DMZ, L3-Hist, L2-SCADA, L1-PLC, L1-SIS, L0-IO
edges_flat=[("L5","L4"),("L4","L3"),("L3","L2"),("L2","L1-PLC"),("L2","L1-SIS"),("L1-PLC","L0"),("L1-SIS","L0"),("L4","L2")]
edges_zoned=[("L5","L4"),("L4","L3.5"),("L3.5","L3"),("L3","L2"),("L2","L1-PLC"),("L1-SIS","L0"),("L1-PLC","L0")]  # SIS not reachable from SCADA
def reach(edges, start):
    g={};
    for a,b in edges: g.setdefault(a,[]).append(b)
    seen=set(); stack=[start]
    while stack:
        n=stack.pop()
        if n in seen: continue
        seen.add(n); stack.extend(g.get(n,[]))
    return seen
for name,e in (("flat",edges_flat),("zoned",edges_zoned)):
    r=reach(e,"L4")
    print(f"{name}: L4 reaches {sorted(r)} count={len(r)} writes_to_SIS={'L1-SIS' in r}")

Salida esperada:

flat: L4 reaches ['L0', 'L1-PLC', 'L1-SIS', 'L2', 'L3', 'L4'] count=6 writes_to_SIS=True
zoned: L4 reaches ['L0', 'L1-PLC', 'L2', 'L3', 'L3.5', 'L4'] count=6 writes_to_SIS=False

Los fallos del laboratorio II de Lena incluyen también la pérdida de alimentación del colector, que generó la alerta de visibilidad degradada en 40 segundos, y 90 segundos de desfase de reloj en la copia de banco del PLC-A. Cada fallo se inyecta por separado y luego por pares, porque un fallo inocuo por sí solo puede corromper la evidencia combinado con otro.

40.3 Aprobación

Lista de comprobación de la versión candidata del monitor firmada por el implementador y el revisor; las filas de seguridad de procesos deben estar en verde.

Caso sintético — Ashford Batch Plant. El laboratorio II detectó que, en un reintento, la cobertura se actualizaba antes de crear el ticket; se corrigió el orden con una bandeja de salida.

En ABP, la aprobación del laboratorio II enumera cada fila con su resultado y cada defecto abierto con un responsable, como el orden incorrecto de eventos causado por el desfase de reloj. La corrección del orden de Lena garantiza que el ticket se escriba antes de que se actualice el tablero de cobertura, para que un reintento no pueda contar un hallazgo que nunca se registró.

40.4 Errores y límites

Una prueba de extremo a extremo sin inyección de fallos solo demuestra el camino feliz. La primera ejecución de extremo a extremo de Lena en ABP aprobó todas las filas; sin embargo, el laboratorio II con fallos inyectados descubrió que el desfase de reloj desordenaba dos eventos en el expediente y que un reintento actualizaba la cobertura antes de que existiera el ticket. Ninguno de los dos defectos aparecería en una ejecución limpia, porque ambos dependen de fallos de temporización que solo ocurren cuando algo se rompe. Por eso, la aprobación del laboratorio II exige que cada guion de fallos se haya ejecutado y su resultado se haya registrado, y una ejecución sin fallos se informa como prueba de humo.

Nota práctica

Paquete de datos de prueba maliciosos: hashes erróneos, eventos reordenados, marcas de tiempo futuras, un grafo plano que afirma estar zonificado. Superar solo los datos de prueba favorables es un laboratorio incompleto.

40.1b Observabilidad y paridad

El laboratorio II activa temporalmente los registros de depuración, pero sella una copia redactada. Dejar la depuración activada en las compilaciones de la ventana puede filtrar secretos. El entorno de laboratorio replica las versiones de las herramientas de producción y las claves de firma de políticas (claves de prueba). Una ejecución del laboratorio II que solo pasa al reintentarla bloquea la versión del monitor; no se repite hasta ver verde. Un guion de fallos que no puede ejecutarse se registra como fila fallida, no como omitida. Los guiones que inyectan fallos en el banco, como un archivo de política ausente, se guardan en la carpeta del laboratorio y se fijan por SHA en el informe. Las diferencias de paridad del entorno explican las sorpresas de verde en el laboratorio y rojo en la ventana.

La aprobación de Lena comprueba las diferencias de paridad.

Nota de campo: paquete malicioso

El paquete malicioso del laboratorio II incluía un grafo plano etiquetado como zonificado. La comprobación de alcanzabilidad falló de forma cerrada y bloqueó la versión. Los laboratorios que solo prueban el camino feliz publican mentiras.

Lena sella los registros del laboratorio II con la misma herramienta de manifiesto que el expediente del CNHP, para que el banco y la planta usen un único flujo de hash.

Las pruebas inestables se ponen en cuarentena y se corrigen; publicar con un fallo cerrado ocasional es publicar con fallo abierto.

40.5 Ejemplo resuelto: inyección de fallos de extremo a extremo (ABP sintética)

El laboratorio II ejercita la cadena completa en el banco de pruebas: tráfico reproducido → función de permiso → alerta → orden de trabajo del sistema de mantenimiento → expediente. Fallos inyectados: pérdida de alimentación del colector, desfase de reloj de 90 segundos en el PLC-A, un evento mal formado y una acumulación en la cola de mensajes fallidos. Resultados: la pérdida de alimentación generó «visibilidad degradada» en 40 s; la comprobación de la fuente de tiempo detectó el desfase de reloj, pero este desordenó dos eventos en el expediente hasta que se aplicó la corrección del desfase; el evento mal formado llegó a la cola de mensajes fallidos; la acumulación se despejó en 7 minutos. La aprobación enumera el orden incorrecto como defecto abierto con un responsable.

Ejercicios — capítulo 40

Síntesis del capítulo

Extremo a extremo con fallos; seguridad funcional en verde; dos firmas.

Siga estudiando — capítulo 40 de 50

← Capítulo 39 (borrador) · Índice de capítulos del curso · Capítulo 41 (borrador) →