Seguridad
casty no ha sido auditado. Esta página enumera lo que guarda y lo que puede hacer cada pieza.
Secretos
Sección titulada «Secretos»| Secreto | Dónde está | Qué puede hacer | Cómo revocarlo |
|---|---|---|---|
| Frase semilla | En memoria mientras se ejecuta casty init o casty key revoke; nunca se escribe en disco ni se envía a ningún sitio. Con casty init --fid y una clave añadida desde la página por una billetera, casty no la ve en absoluto |
Todo: tiene la custodia de tu fid | casty no puede. Guárdala sin conexión |
| Clave de aplicación (Ed25519) | ~/.config/casty/keys.enc.json, cifrada con scrypt y XChaCha20-Poly1305, modo 0600 |
Firmar casts, reacciones y follows para tu fid hasta que caduque sin uso (30 días por defecto, como máximo 90) | casty key revoke <key> con la frase semilla, o --self con la propia clave |
KEY_ADD firmado aún no confirmado |
En el mismo almacén cifrado, hasta que casty init ve la clave listada o el nodo rechaza el mensaje |
Añadir esa única clave, una vez | casty key revoke si alguna vez se fusiona |
| Contraseña del almacén de claves | Tecleada en un prompt oculto | Descifrar las claves de aplicación en esta máquina | Revocar las claves, borrar keys.enc.json, ejecutar casty init |
| Token de casty web | ~/.config/casty/web-token, modo 0600; en el almacenamiento del navegador emparejado |
Mientras se ejecuta casty web: leer el feed y escribir con tu clave de aplicación, desde dondequiera que se pueda llegar a la página |
Detener casty web y luego arrancarlo con --new-token |
Lo mismo, en el host del nodo (1-node.sh serve) |
~/snapchain/casty/config/keys.enc.json (0600), la contraseña en ~/snapchain/casty/passphrase (0600, un secreto de Docker), el token en ~/snapchain/casty/config/web-token; la clave descifrada en la memoria del servicio mientras se ejecuta |
Leer y escribir como tú desde cualquier red, mientras se ejecuta el servicio; root en el host tiene la clave | casty key revoke <key> con la frase semilla; docker compose stop casty en el host; --read-only mantiene la clave en casa |
Par de claves push y suscripciones (casty serve) |
~/snapchain/casty/config/vapid.json (0600) y cache/push.json en el host |
Enviar una notificación push, “new mention from @name”, a los navegadores suscritos; el servicio push solo ve texto cifrado | Borrar ambos archivos y reiniciar casty; desactivar las notificaciones en el navegador |
Token de la nube (HCLOUD_TOKEN, credenciales de AWS) |
Tu entorno; los scripts nunca lo escriben | Crear y borrar servidores en esa cuenta | Revocarlo en la consola del proveedor |
| Clave SSH | Tuya; solo se sube la mitad pública | Iniciar sesión en el host del nodo con permisos de root | Quitarla del host y del proveedor |
Una frase semilla controla toda la cuenta. Usa una cuenta de prueba para este tutorial, pega una
frase semilla solo en software de desarrolladores en los que confíes y prefiere una clave autorizada
por tu billetera: casty init --fid <fid>, luego casty web y, en tu cuenta, “add a key with your wallet”.
El prompt de la frase semilla lee de la terminal sin eco. Con --mnemonic-stdin la frase llega en su
lugar desde una tubería, y el prompt de la contraseña sigue leyendo de la terminal. casty pone a cero
los bytes de la frase tras usarla; la cadena que se entrega a la biblioteca de derivación de claves, y
la clave que deriva, no se pueden borrar de la memoria en JavaScript.
CASTY_PASSPHRASE sustituye al prompt de la contraseña. Existe para las pruebas y pnpm demo; no la
uses para un almacén de claves que guarde una clave real.
Qué es accesible
Sección titulada «Qué es accesible»- En un host alquilado, el firewall abre SSH (22), la API HTTP (3381) y gRPC (3383) solo a
--allow-ip, tu propia dirección por defecto. Gossip (3382) está abierto a todos para que otros nodos puedan conectarse. Un host que ya tienes no recibe ningún firewall de casty. - statsd (8125/udp, 8126/tcp) y Grafana (3000) se publican solo en el loopback del host, statsd a
través de las propias variables
STATSD_PUBLISHdel archivo compose en.env, Grafana a través del override. La contraseña deadminde Grafana es la aleatoria que registra.env; ver no requiere iniciar sesión, tal como lo tiene elgrafana.inide Snapchain. - casty habla con tu nodo a través del túnel SSH en
127.0.0.1:3381. No llama a ninguna API de Farcaster alojada. Al registro público de fnames enfnames.farcaster.xyzsolo se le pregunta por un nombre que el nodo no conoce: un@nameal que sigues o que mencionas en un cast (--no-allow-fname-serverlo desactiva), que lees confeed --fidso que buscas encasty web, y el autor de un cast que nombras por su enlace de farcaster.xyz. A un RPC de OP Mainnet solo se le pregunta cuando pasas--op-rpc. casty webescucha en 127.0.0.1 salvo que--listennombre otra dirección, y cada petición a su API necesita su token. En un navegador y en un teléfono enumera cómo se protege la página, y qué cambia cuando un teléfono llega a ella por la red local.1-node.sh serve --domainabre la página a internet por HTTPS (80 y 443, abiertos con0-provision.sh --https);--tailscale, solo a tu tailnet. La página necesita entonces su token, envía HSTS y responde a una misma dirección como máximo 120 peticiones a la API por minuto. Desde cualquier red enumera lo que guarda el host.- Los casts de otras personas pueden contener secuencias de escape de terminal. casty quita los caracteres de control y las anulaciones bidireccionales antes de imprimirlos, y la página web inserta el texto de los casts como texto.
Si algo se filtra
Sección titulada «Si algo se filtra»- Una clave de aplicación:
casty key listmuestra lo que está registrado para tu fid. Revoca la clave concasty key revoke <key> --selfdesde una máquina que todavía la tenga, o con la frase semilla desde cualquier sitio. - La frase semilla: mueve el fid a una nueva dirección de custodia con una billetera en la que confíes y luego revoca todas las claves de aplicación.
- Un token de la nube: revócalo y luego busca en la cuenta servidores que no hayas creado tú.
- El token de casty web: detén
casty weby arráncalo de nuevo con--new-token. Todos los enlaces impresos antes dejan de funcionar. En el host del nodo: borra~/snapchain/casty/config/web-tokeny ejecutadocker compose restart casty. - El host del nodo: revoca la clave de aplicación con la frase semilla, borra
~/snapchain/castyy considera el host comprometido también para el nodo.
Cómo informar de un problema
Sección titulada «Cómo informar de un problema»Informa de las vulnerabilidades en privado a través de los avisos de seguridad del repositorio, no en
un issue público. El SECURITY.md del repositorio contiene la misma tabla.