heygrc
Notas de campothe heygrc team

El PR de una línea que silenciosamente incumplió ISO 27001 A.8.15

El cumplimiento no falla en la auditoría. Falla en una solicitud de extracción de cinco líneas que parecía una limpieza.

La auditoría es donde te enteras. La solicitud de extracción es donde ocurrió. En algún momento entre esos dos instantes, a menudo separados por meses, un control que el auditor revisará dejó de funcionar, y nadie lo notó, porque el cambio que lo rompió no parecía un cambio de cumplimiento. Parecía una limpieza.

Esta es la forma en que ocurre. El control es ISO 27001:2022 A.8.15, registro de eventos. El cambio es una línea eliminada.

El cambio

Una solicitud de extracción ordena una función que actualiza el rol de un usuario. Hay una llamada de registro en medio que el autor considera ruido, se activa en cada cambio de rol y satura la salida, así que se elimina. La función sigue funcionando. Las pruebas siguen pasando. El diff es una línea más corto y, si acaso, más limpio.

access/roles.ts+0 -1
async function updateRole(actor, target, role) {  await db.roles.set(target, role)-  await audit.log("role.update", { actor, target, role })  return ok()}
heygrcISO 27001:2022 A.8.15

Esa línea era el registro de auditoría para un cambio en los derechos de acceso. A.8.15 (registro de eventos) exige que los eventos relevantes para la seguridad, incluidos los cambios en los privilegios, se registren y conserven, y A.8.16 (monitoreo) depende de que ese registro exista. Eliminarla suprime la única evidencia de que un rol cambió alguna vez.

Por qué nadie lo detectó

Un revisor que mira este diff ve una línea de registro eliminada. Para detectar el problema, tendría que saber que este registro en particular es la evidencia de un control, que el control es A.8.15 y que A.8.15 está dentro del alcance de su certificación. Son tres piezas de conocimiento del marco normativo que un revisor de código no lleva en la cabeza mientras aprueba una refactorización rutinaria.

Este es el vacío. El punto de control ya está en el lugar correcto: la revisión de código ya examina cada cambio, intencionalmente, antes de implementarlo. Lo que falta es la conciencia del marco normativo para reconocer que una línea aparentemente ordinaria es crítica para una auditoría.

Lo que cuesta después

Detectado aquí, esto es una reversión de una línea y una conversación de treinta segundos. El autor aún tiene todo el cambio fresco en la mente. Detectado en la auditoría, es una excepción: el control no operó durante el período, y ahora alguien tiene que reconstruir cuándo se detuvo el registro, qué dependía de él y cómo restaurarlo de manera segura, bajo presión, posiblemente después de que el autor haya dejado la empresa.

El costo de una brecha de cumplimiento lo determina una sola cosa: cuánto tiempo estuvo allí antes de que alguien lo notara. La solicitud de extracción es el lugar más económico para detectarlo.

El punto clave

El cumplimiento falla en un PR de cinco líneas, no en la auditoría. La auditoría es un indicador rezagado de una decisión que alguien tomó en un diff semanas antes. heygrc está diseñado para leer ese diff frente a los marcos normativos que debes cumplir y nombrar el control que afecta un cambio, A.8.15, en la solicitud de extracción, mientras la corrección aún es barata.

iso-27001loggingcode-reviewshift-left