-
Notifications
You must be signed in to change notification settings - Fork 112
es security signing runbook
Este manual define los procedimientos operativos para introducir y ejecutar la firma criptográfica en el repositorio ClawSec.
Cubre:
- generación clave
- Gestion secreta GitHub
- Integración del flujo de trabajo de firma
- rotación y revocación clave
- respuesta a incidentes
En main, los canales de asesoramiento y liberación se firman y verifican por defecto:
- Escritores de comida:
- Actualizaciones
.github/workflows/poll-nvd-cves.ymladvisories/feed.jsony signosadvisories/feed.json.sig -
.github/workflows/community-advisory.ymlhace lo mismo para los informes de emisión aprobados - ambos artefactos de alimentación firmados en
skills/clawsec-feed/advisories/ - Carril de publicación Feed:
-
.github/workflows/deploy-pages.ymlpublicapublic/advisories/feed.json+.sig - genera y firma
public/checksums.json+public/checksums.sig - publica clave canónica como
public/signing-public.pemypublic/advisories/feed-signing-public.pem - objetos de compatibilidad con espejos bajo
public/releases/latest/download/(incluyendofeed.json,feed.json.sig,checksums.json,checksums.sig,signing-public.pem) - Alimentar a los consumidores:
skills/clawsec-suite/hooks/clawsec-advisory-guardian/handler.tsskills/clawsec-suite/scripts/guarded_skill_install.mjsskills/clawsec-nanoclaw/lib/advisories.ts- URL de alimentación predeterminada es
https://clawsec.prompt.security/advisories/feed.json
El modo no firmado sigue siendo un bypass de compatibilidad explícita (CLAWSEC_ALLOW_UNSIGNED_FEED=1) y no es el modelo operativo estable.
-
advisories/feed.json(carga) -
advisories/feed.json.sig(firma independiente Ed25519; base64) -
advisories/feed-signing-public.pem(clave público)
<release>/checksums.json<release>/checksums.sig<release>/signing-public.pem
Propietario de seguridad: aprueba cambios clave en el ciclo de vida y acciones de incidentes.
- Propietario de Platform: mantiene flujos de trabajo y secretos GitHub.
- Revisor: valida las huellas dactilares en PRs/releases.
Política:
- Las llaves privadas nunca se comprometen
- las claves públicas están comprometidas y revisión de código
- generación clave se produce en la estación de trabajo del operador de confianza o en el entorno respaldado por HSM
■ Huye de una estación de trabajo segura. No corras con corredores compartidos de CI.
# Feed signing keypair
openssl genpkey -algorithm Ed25519 -out feed-signing-private.pem
openssl pkey -in feed-signing-private.pem -pubout -out feed-signing-public.pem
# Release checksums signing keypair (optional separate key)
openssl genpkey -algorithm Ed25519 -out release-signing-private.pem
openssl pkey -in release-signing-private.pem -pubout -out release-signing-public.pemGenerar huellas dactilares (store in ticket/change record):
openssl pkey -pubin -in feed-signing-public.pem -outform DER | shasum -a 256
openssl pkey -pubin -in release-signing-public.pem -outform DER | shasum -a 256Opcional test-sign antes de publicar:
echo '{"probe":"ok"}' > /tmp/probe.json
openssl pkeyutl -sign -rawin -inkey feed-signing-private.pem -in /tmp/probe.json -out /tmp/probe.sig.bin
openssl base64 -A -in /tmp/probe.sig.bin -out /tmp/probe.sig
openssl base64 -d -A -in /tmp/probe.sig -out /tmp/probe.sig.bin
openssl pkeyutl -verify -rawin -pubin -inkey feed-signing-public.pem -in /tmp/probe.json -sigfile /tmp/probe.sig.bin-
CLAWSEC_SIGNING_PRIVATE_KEY— Llave privada con código PEM Ed25519 (utilizada para la firma de alimentación y liberación) -
CLAWSEC_SIGNING_PRIVATE_KEY_PASSPHRASE— (opcional) contraseña si la clave privada está encriptada
- Ir a Repo Settings → Secretos y variables → Acciones → Nuevo secreto del repositorio.
- Paste completo PEM incluyendo cabecera/pieza.
- Preferencia GitHub ** Secretos del medio ambiente** (con revisores requeridos) para el análisis del flujo de trabajo cuando sea posible.
- Billete de cambio con:
- nombre secreto
- Creador
- tiempo de creación
- huella clave
- Solicitar aprobación manual para flujos de trabajo que puedan usar secretos de firma.
- Restringir quién puede editar flujos de trabajo protegidos.
- Permitir la protección de ramas para
mainy requerir revisión para cambios de flujo de trabajo.
Este repo impone la firma como un control post-mutación, pre-publicado.
Puntos de mutación de alimentación actuales:
.github/workflows/poll-nvd-cves.yml.github/workflows/community-advisory.yml
Comportamiento actual:
- signos de flujo de trabajo
advisories/feed.jsonenadvisories/feed.json.sig - firma de acciones verifica firmas generadas durante la ejecución del flujo de trabajo
- los artefactos firmados se cometen a través de la automatización PR
actual fabricante:
.github/workflows/deploy-pages.yml
Comportamiento actual:
- copias de pago/transmisión a
public/advisories/ - genera + signos
public/checksums.jsonypublic/checksums.sig - publica la clave de firma de
public/signing-public.pemypublic/advisories/feed-signing-public.pem - Espejos de asesoramiento + firma / checksum/key compañeros en
public/releases/latest/download/caminos de compatibilidad
Generador de liberación actual:
.github/workflows/skill-release.yml
Comportamiento actual:
- crea
checksums.json, lo firma comochecksums.sig, y verifica la firma antes de publicar - incluye
signing-public.pemen activos de liberación - valida la huella generada en clave pública contra el material clave canónico
- Rutina: cada 90 días (o política de org más estricta).
- Inmediatamente: sobre sospecha de exposición, cambio de flujo de trabajo no autorizado o desajuste de firma no explicada.
- Generar nuevo teclado(s).
- Open PR que actualiza archivos de clave pública y documentación de huellas dactilares.
- Agregue nuevas teclas privadas como GitHub secret(s).
- Combina cambios de flujo de trabajo que utilizan nuevas teclas.
- Reasignar los últimos manifiestos de alimentación/liberación.
- Validar la verificación en CI y en un cliente externo.
- Quitar viejos secretos de llave privada.
- Mantenga la vieja referencia pública clave sólo siempre que sea necesaria para la verificación histórica.
- Desactivar los flujos de trabajo utilizando clave comprometida.
- Retire los secretos de GitHub comprometidos.
- Presentar nota de revocación y nueva clave pública.
- Reasignar los últimos artefactos con llave de reemplazo.
- Publish incident advisory with timestamp and impacted window.
- la verificación de firmas falla para la nueva publicación de feed/release
- compromisos desconocidos / ediciones de flujo de trabajo tocando caminos de firma
- filtrado material clave, registro accidental o acceso secreto sospechoso
SEV-1: la exfiltración clave confirmada o firmada malintencionadamente carga útil publicada SEV-2: fallas de verificación con causa desconocida SEV-3: incumplimiento de procedimiento, no compromiso activo
- *Contenimiento *
- pausa para firmar y publicar flujos de trabajo
- bloque de alimentación se fusiona si la autenticidad es incierta
- Investigación
- revisar registros de flujo de trabajo
- review commits affecting
.github/workflows/,advisories/, and key files - determinar los tiempos y artefactos afectados
- Erradicación
- rotar/revocar claves comprometidas
- restaurar objetos de confianza de un compromiso conocido-bueno
- Recuperación
- artefactos de re-signación
- Redistribuir páginas/liberaciones
- verificar a través de la comprobación del cliente independiente
- *Post-incident *
- publicar cronograma y resumen de remediación
- endurecer los controles (revisar las puertas, entornos protegidos, alcance secreto)
Para cada ciclo de liberación o carrera de señalización de alimentación, retén:
- workflow run URL y compromete SHA
- señalización de huellas digitales en uso
- Registros de resultados de verificación
- Aprobaciones del operador/revisor
- cualquier excepción o racional de bypass
Antes de reforzar aún más la política (por ejemplo, eliminar las vías de bypass de compatibilidad):
- los artefactos firmados se producen consistentemente durante al menos 2 semanas
- desplegar espejos de tuberías compañeros de firma
- un taladro de retroceso y un taladro de rotación clave completado con éxito
- respuesta a incidentes identificados y documentados por el propietario
- asesorías/feed.json
- asesorías/feed.json.sig
- consejeros/feed-signing-public.pem
- Clawsec-signing-public.pem
- .github/actions/sign-and-verify/action.yml
- .github/workflows/poll-nvd-cves.yml
- .github/workflows/community-advisory.yml
- .github/workflows/deploy-pages.yml
- .github/workflows/skill-release.yml
- scripts/ci/verify_signing_key_consistency.sh
- wiki/migration-signed-feed.md
- Security Signing Runbook
- Signed Feed Migration Plan
- Platform Verification Checklist
- Cross-Platform Remediation Plan
- Frontend Web App
- ClawSec Suite Core
- ClawSec Scanner
- Hermes Attestation Guardian
- Hermes Attestation Guardian Draft History (Archived)
- NanoClaw Integration
- Picoclaw Security Guardian
- Picoclaw Self Pen Testing
- Runtime Traffic Guardian Baseline
- Automation and Release Pipelines
- Local Validation and Packaging Tools