Hilos de informes en Slack
Cómo un informe de vulnerabilidad se corresponde con una sola tarjeta y un solo hilo de Slack — qué muestra la tarjeta, qué publica una respuesta, en qué canal aterriza y por qué los informes restringidos nunca aparecen.
Por qué es importante
Un informe de vulnerabilidad vive durante semanas y se mueve una docena de veces. Si cada uno de esos movimientos es una publicación de Slack aparte, un programa con actividad entierra su propio canal — y un #vdp silenciado es un reloj de SLA corriendo en un sitio que nadie mira.
Por eso Kit publica una tarjeta por informe y cuelga todo lo demás del hilo de esa tarjeta. Por muchas veces que se mueva un informe, el cuerpo del canal sigue mostrando una sola línea para él.
La tarjeta y el hilo
Lo primero que hace Kit con un informe nuevo es publicar su tarjeta. Esa tarjeta es la raíz del hilo y se queda ahí durante toda la vida del informe.
- La tarjeta se redibuja en el mismo sitio. Kit la reconstruye a partir del informe y edita ese mismo mensaje. Nunca publica una segunda, y nunca publica una tarjeta propia de «cambio de estado».
- El hilo es el registro. Todo lo que un compañero pueda necesitar reconstruir más tarde se publica como una respuesta breve debajo.
La separación es deliberada. Los workspaces de Slack pueden fijar una ventana de edición de mensajes, y la edición de una tarjeta puede empezar a fallar de forma permanente cuando el mensaje es lo bastante antiguo. Cuando eso ocurre pierdes una comodidad, nunca un hecho: el hecho ya está en el hilo.
Important
Slack no avisa a nadie de una edición. Cuando la tarjeta se redibuja, no se notifica a nadie y el canal no se reordena. Eso es lo que mantiene el canal tranquilo, pero también significa que la tarjeta no es una alerta. Para enterarte de que un informe se mueve, sigue el hilo; Slack sí te notifica las respuestas.
Qué muestra la tarjeta
Un informe abierto se renderiza con las mismas cinco zonas en todas las etapas, así que el canal siempre se lee con la misma forma.
Encabezado: un emoji de severidad y el título del informe. Los títulos los escriben los investigadores, así que se escapan: un título que contenga <!channel> aterriza como texto, no como una mención a toda la sala.
Seis campos fijos, en este orden. Un campo que todavía no tiene respuesta muestra una raya (—) en lugar de desaparecer.
| Campo | Qué muestra |
|---|---|
| Severity (Severidad) | El nivel de severidad, con la puntuación CVSS una vez evaluado el informe. Antes de la evaluación muestra la valoración que reclama el propio investigador, etiquetada explícitamente como «researcher’s own rating, not yet assessed» (valoración del propio investigador, aún sin evaluar): el «Crítico» autoasignado por un desconocido nunca se queda sin marcar en la casilla Severity de tu equipo. |
| Status (Estado) | El estado actual del informe. |
| Type (Tipo) | El tipo de vulnerabilidad. |
| Assignee (Responsable) | El nombre de quien lo tiene a su cargo, o Unassigned. |
| SLA | El plazo absoluto de acuse de recibo, en UTC, no una cuenta atrás. Una cuenta atrás en vivo reescribiría la tarjeta cada minuto. |
| Bounty (Recompensa) | El importe de la recompensa con formato, en cuanto lo hay. |
Línea de confianza: el país de quien envía el informe (cuando se conoce), el nombre acreditado del investigador con su nivel de karma y cuántos informes válidos tiene en este programa. La posición de un investigador en el programa de otra empresa nunca se filtra al tuyo. Los segmentos sin datos se omiten en lugar de renderizarse vacíos.
Línea de procedencia: el ID del informe, la hora de envío en UTC y el nombre del programa.
Botones: Reply to researcher ↗ (Responder al investigador; solo cuando el informe tiene una cuenta de investigador) y Open in Kit ↗ (Abrir en Kit), siempre el último. Ambos son URL normales de Kit: al hacer clic en uno inicias sesión y se vuelve a comprobar tu acceso al llegar. Ningún botón lleva un token, un enlace para compartir ni una URL de adjunto prefirmada.
Una vez que un informe llega a Paid o Dismissed, la tarjeta se colapsa a un encabezado, una única línea de resultado (💸 Paid · $250 USD, o 🚫 Dismissed con el motivo de la desestimación) y Open in Kit ↗. Un informe ya cerrado no debería ocupar una pantalla entera del canal para siempre. Fix Verified no es un colapso: sigue pendiente de pago, así que conserva la tarjeta completa.
Qué publica una respuesta y qué solo redibuja la tarjeta
La regla: existe una respuesta en el hilo cuando ha pasado algo que una persona quizá necesite reconstruir más tarde. Todo lo demás solo redibuja la tarjeta.
| Evento | Respuesta en el hilo | Tarjeta |
|---|---|---|
| Nuevo informe enviado | — esto es la tarjeta | Publicada |
| Cualquier cambio de estado | Sí | Redibujada |
| SLA incumplido | Sí | Redibujada |
| Recompensa aprobada | Sí | Redibujada |
| Desembolso completado | Sí | Redibujada |
| Apelación recibida | Sí | Redibujada |
| Escalamiento: un informe evaluado con una severidad que escala, o un informe estancado del que había que avisar a sus admins | Sí | Redibujada |
| Asignación o reasignación | No | Redibujada |
Warning
Un escalamiento es una respuesta en el hilo, así que no aparece en el cuerpo del canal. Quien no siga ya ese hilo no lo verá. No cuentes con el canal para interrumpir a alguien por un hallazgo Crítico: la superficie que de verdad avisa a una persona es tu rotación de guardia, que alerta a quien responde por DM o por correo cuando se valida un informe con una severidad que escala.
Las respuestas son deliberadamente texto plano, no tarjetas. Se leen dentro de un hilo, bajo una tarjeta que ya lleva el título, la severidad, el estado y los enlaces: repetir esa estructura solo haría el hilo ilegible. Una respuesta de estado lleva la transición (Submitted → Validated), quién la hizo y su comentario si dejó alguno, recortado para que una traza de pila pegada no se convierta en un muro.
Cada evento publica como mucho una respuesta, por muchas veces que un job se reintente. Kit vincula cada respuesta al registro subyacente —la transición de estado, la apelación, el pago— así que un reintento encuentra la respuesta ya puesta.
Los informes restringidos nunca llegan a Slack
Un informe restringido no recibe ninguna tarjeta ni ningún hilo, tampoco una versión censurada.
Warning
La audiencia de un canal de Slack no es un límite de control de acceso. Los canales contienen invitados de varios canales y miembros de Slack Connect de otras empresas; una tarjeta publicada hoy la sigue pudiendo leer mañana alguien a quien se dio de baja en Kit. En un informe restringido, el título, la severidad y el simple hecho de que exista son el secreto: por eso Kit no publica nada en lugar de publicar una tarjeta censurada.
Si un informe se restringe después de que su hilo ya se haya publicado, Kit lo retira:
- La tarjeta raíz se edita hasta dejarla en una lápida neutra (tombstone): sin título, sin severidad, sin ID, sin enlace. Al canal se le dice que la conversación se movió a Kit, no de qué iba.
- Las respuestas que el propio Kit publicó en el hilo se eliminan.
- El mensaje raíz en sí nunca se elimina, porque eliminarlo dejaría el hilo huérfano.
- Las respuestas que escribieron tus compañeros no se eliminan. Son sus propias palabras, no datos que Kit puso ahí: Kit no puede eliminarlas y no lo hace.
Quitar la restricción vuelve a rellenar esa misma tarjeta raíz en el mismo sitio. No se reproduce nada: las respuestas eliminadas al restringir siguen eliminadas.
La identidad del investigador en el canal
La tarjeta consulta la preferencia de reconocimiento del investigador —el mismo ajuste que rige tu salón de la fama público— antes de nombrar a nadie.
Important
Una negativa también obliga en Slack. A un investigador que eligió Anónimo o No listado se le muestra como anónimo en la tarjeta incluso cuando Kit conoce su nombre y su alias. Su negativa no se limita al salón de la fama público: cubre toda audiencia más amplia que el propio informe, y un canal de Slack —con invitados y miembros de Slack Connect de otras empresas— es exactamente eso.
La dirección de correo de un investigador nunca se muestra en la tarjeta, sea cual sea su preferencia. La misma regla se aplica a las vistas previas de enlaces de Kit en Slack cuando un compañero pega la URL de un informe en un canal, y a lo que se le entrega a KitBot para trabajar.
En qué canal vive la tarjeta
La tarjeta va al canal al que tu cuenta enruta New vulnerability report submitted (Nuevo informe de vulnerabilidad enviado), resuelto con la precedencia habitual: ese propósito exacto, luego All VDP notifications (Todas las notificaciones del VDP) y luego All notifications (Todas las notificaciones). Configúralo en Integraciones → Slack.
Dos consecuencias que conviene conocer:
- Un hilo solo puede estar en un sitio. Si hay varios canales enrutados al mismo propósito, la tarjeta aterriza en uno de ellos, no en todos.
- Una vez que la tarjeta existe, manda su canal. Cambiar más adelante el enrutamiento del propósito mueve dónde aterrizan los informes nuevos; nunca migra un hilo vivo.
El dinero tiene su propio carril. Si enrutas Bounty approved (Recompensa aprobada) o Disbursement completed (Desembolso completado) a un canal distinto —un #finance que no debería ver todo el feed de seguridad—, ese canal recibe igualmente su propia publicación independiente, además de la respuesta en el hilo. Si está enrutado al mismo canal en el que vive la tarjeta, la respuesta en el hilo es la única publicación: sin duplicados.
Preguntar a KitBot en el hilo
Como la raíz del hilo es el informe, mencionar a @KitBot en cualquier punto de él lo resuelve sin adivinanzas: estado, cronología, estado del SLA, comprobaciones de duplicados, contexto de severidad y comparaciones de recompensas. Consulta Usar @KitBot en Slack.
Lo único que puede escribir
Pídele a KitBot que resuma la conversación, que deje constancia de una decisión o que tome nota, y guardará lo que ha escrito como nota interna en ese informe, registrada a tu nombre, porque eres tú quien se lo ha pedido. Te lo confirma en el hilo con un enlace directo a la nota en Kit. Si no te confirma que la ha guardado y no te da un enlace, no se ha guardado nada.
Menciónalo en cualquier punto del hilo y dile qué quieres que escriba:
@KitBot summarise this discussion as an internal note
@KitBot note that we're waiting on the researcher's PoC video
@KitBot record the decision: duplicate of the March report, not paying twice
@KitBot save a note with the repro steps we agreed on above
Las preguntas de siempre siguen funcionando igual: @KitBot what's the SLA on this?. KitBot solo escribe cuando le pides que escriba.
Important
Una nota escrita por KitBot no puede llegar jamás al investigador. La herramienta de la que dispone en Slack no tiene forma de expresar un mensaje externo: no es un «por favor, no lo hagas» en sus instrucciones, es una herramienta que carece de esa opción. Diga lo que diga el hilo, y por mucho que el texto de un informe intente persuadirlo, lo único que puede producir es una nota sobre el informe al que corresponde el hilo, visible solo para el equipo.
Otras dos cosas que no puede hacer:
- No puede elegir en qué informe escribe. El destino es el informe cuya tarjeta encabeza el hilo, y queda fijado antes de que KitBot lea una sola palabra. El texto del hilo —incluido el que haya escrito un investigador— no puede desviar la nota a otro informe.
- No puede escribir fuera del hilo de un informe. Menciónalo en un canal general y no dispone de ninguna herramienta de notas: te dirá que vuelvas a preguntar en el hilo del propio informe.
Las notas que guarda KitBot son notas internas corrientes: aparecen en la pestaña Conversación del informe y cualquiera con acceso puede editarlas o eliminarlas.
Hay una cosa que KitBot estropea a propósito: los enlaces para compartir con colegas. Cualquiera que tenga esa URL puede iniciar el flujo de acceso para colegas de un informe que nunca se le concedió, así que, si aparece uno en el hilo, KitBot no lo repetirá: tanto en su respuesta como en una nota, el token sale como …. El enlace sigue funcionando para quien lo recibió; KitBot simplemente se niega a ser quien lo propague.
Lo que sigue sin poder hacer
Todo lo demás es de solo lectura. KitBot no puede encargarse del triaje de un informe, ni evaluarlo, asignarlo o desestimarlo; no puede escribir ni enviar correos a un investigador; no puede aprobar ni ajustar una recompensa; no puede cambiar la configuración de tu programa. Pídele cualquiera de esas cosas y te llevará a la página del informe en Kit.
Guardar una nota también respeta tu propio nivel de acceso: si tu cuenta de Kit no es administradora de CSIRT, KitBot te lo dirá y te indicará a quién dirigirte, en lugar de fallar en silencio.
Si mencionas a KitBot en el hilo de un informe que no tienes permiso para ver, responde discretamente preguntas de todo el programa en su lugar: nunca confirma que el informe existe, y tampoco se le entrega forma alguna de escribir en él.
En resumen
- Enruta New vulnerability report submitted (o All VDP notifications) al único canal que tu equipo de seguridad lee de verdad
- Sigue el hilo de un informe si necesitas que te avisen cuando se mueva: las ediciones de la tarjeta son silenciosas
-
Prueba
@KitBot summarise this discussion as an internal noteen el hilo de un informe: la confirmación enlaza directamente a la nota en Kit -
Enruta Bounty approved a
#financesolo si quieres una publicación aparte ahí - Restringe un informe sensible lo antes posible: restringir uno que ya se publicó deja una lápida en el canal en lugar de nada
- Comprueba quién está realmente en tu canal de VDP: los invitados y los miembros de Slack Connect ven todas las tarjetas que hay en él