Skip to content
KitploitKITPLOIT
HerramientasExploitsBlog
Log in
Enviar
HerramientasExploitsBlog
Enviar

¡Herramientas de Hacking, PenTest y Ciberseguridad para tu Arsenal de Seguridad!

Kitploit es un directorio de herramientas de hacking, ciberseguridad y pentesting. Descubre las últimas actualizaciones de proyectos para encontrar vulnerabilidades, analizar sistemas, automatizar pruebas y fortalecer tu seguridad.

FeedsContactoPrivacidad© 2026 Kitploit

Directorio de Herramientas

Categorías

Ver todas las categorías
Loading categories
atproto — Fork de la implementación de referencia del Protocolo AT con AppView optimizado para rendimiento, indexador de firehose basado en Rust, almacenamiento en caché Redis y características comunitarias para redes sociales autoalojadas a escala. | Kitploit
Herramientas/GitHubGitHub/blacksky-algorithms/atproto
Seguridad de Infraestructura en la NubeAuditoría de ConfiguraciónDetección de SecretosGestión de Identidad y Acceso (IAM)AutenticaciónMala ConfiguraciónSeguridad de APIsSeguridad de Bases de Datos
Análisis de Registros
GitHubblacksky-algorithms/atproto

atproto

Fork de la implementación de referencia del Protocolo AT con AppView optimizado para rendimiento, indexador de firehose basado en Rust, almacenamiento en caché Redis y características comunitarias para redes sociales autoalojadas a escala.

Ver Repositorio
94316hace 14 díasRevisado por Kitploit

Más Populares

Ver todos →

Descubre las herramientas más usadas por nuestra comunidad.

Explora todas las herramientas

Explora nuestra colección de herramientas

Ver todas las herramientas →
Compartir

Blacksky AppView

Esta es una bifurcación (fork) de Blacksky de la implementación de referencia del AT Protocol de Bluesky Social PBC. Impulsa el AppView en api.blacksky.community.

Publicamos esto por transparencia y para que otras comunidades puedan beneficiarse del trabajo. Este repositorio no acepta contribuciones, issues ni PRs. Si desea la implementación canónica de atproto, use bluesky-social/atproto.

¿Qué hay de diferente?

Todos los cambios están en packages/bsky (lógica de AppView), services/bsky (configuración de ejecución) y una migración personalizada. Todo lo demás es upstream.

¿Por qué no el consumidor de firehose integrado?

El dataplane upstream incluye un consumidor de firehose TypeScript (subscription.ts) que indexa eventos directamente. Lo reemplazamos con rsky-wintermute, un indexador Rust, por varias razones:

  • Rendimiento a escala: El consumidor TypeScript procesa eventos secuencialmente. A escala de red (~1,000 eventos/segundo, 18.5 mil millones de registros totales), una reindexación completa a ~90 registros/segundo tomaría 6.5 años. Wintermute apunta a 10,000+ registros/segundo con procesamiento de colas en paralelo.
  • Arquitectura de reindexación: Wintermute separa la indexación en vivo de la reindexación en colas independientes (firehose_live, firehose_backfill, repo_backfill, labels). Los eventos en vivo nunca se bloquean por el trabajo de reindexación.
  • Herramientas operativas: Wintermute incluye utilidades para indexación directa de cuentas específicas, importación masiva del directorio PLC, reproducción de flujos de etiquetas, reparación de referencias de blobs y gestión de colas, todo necesario al iniciar un AppView desde cero.

El dataplane y el AppView de este repositorio siguen funcionando tal cual. Leen de la base de datos PostgreSQL que escribe wintermute. Simplemente no iniciamos la suscripción de firehose integrada.

Correcciones de rendimiento y operativas

Estas son ampliamente útiles para cualquiera que aloje su propio AppView a escala.

Optimización de consultas LATERAL JOIN (packages/bsky/src/data-plane/server/routes/feeds.ts)

  • getTimeline y getListFeed reescritos con LATERAL JOIN de PostgreSQL para forzar el uso de índices por usuario en lugar de escaneos completos de tabla. Mejora importante para usuarios que siguen a miles de cuentas.

Capa de caché Redis (packages/bsky/src/data-plane/server/cache/)

  • Perfiles de actores (TTL 60s), registros (5m), contadores de interacción (30s), metadatos de publicaciones (5m)
  • Reduce la carga de la base de datos bajo tráfico de producción
  • Problema conocido: La caché de actores tiene un error de serialización de timestamps de protobuf donde los objetos Timestamp pierden su método .toDate() después de un round-trip JSON a través de Redis, causando una hidratación de perfil incompleta en aciertos de caché. Actualmente ejecutamos con la caché Redis deshabilitada. La solución es serializar los timestamps como cadenas ISO al escribir en caché y reconstruirlos al leer.

Aplicación del lado del servidor de preferencias de notificaciones (packages/bsky/src/api/app/bsky/notification/listNotifications.ts)

  • Cuando el cliente no especifica reasons, el servidor aplica las preferencias de notificaciones guardadas del usuario. Sin esto, las preferencias solo se aplican del lado del cliente y no tienen efecto.

Corrección de clave de firma obsoleta en verificador de autenticación (packages/bsky/src/auth-verifier.ts)

  • En reintento de verificación JWT (forceRefresh), omite la caché de identidad en memoria del dataplane y resuelve el documento DID directamente desde el directorio PLC. Soluciona fallos de autenticación después de la migración de cuentas donde la clave de firma rota pero la caché mantiene la clave antigua.

Sanitización JSON (packages/bsky/src/data-plane/server/routes/records.ts)

  • Elimina bytes nulos (\u0000) y caracteres de control de los registros almacenados antes del análisis JSON. Estos son válidos según RFC 8259 pero rechazados por JSON.parse() de Node.js, lo que provoca fallos silenciosos de rowToRecord en el dataplane que se manifiestan como publicaciones faltantes.

Publicaciones comunitarias (específico de Blacksky)

Infraestructura para publicaciones comunitarias privadas que residen en el AppView en lugar de PDS individuales. Específico de cómo funciona Blacksky, pero podría servir como referencia para otras comunidades.

  • Espacio de nombres de lexicon personalizado community.blacksky.feed.* con endpoints para enviar, obtener, eliminar, timeline y vistas de hilos
  • Tabla separada community_post (migración: 20260202T120000000Z-add-community-post.ts)
  • Control de membresía en la capa de dataplane y API
  • Integración con getPostThreadV2 para hilos mixtos de publicaciones estándar y comunitarias
  • Requiere una base de datos de membresía separada (BLACKSKY_MEMBERSHIP_DB_URL)

Arquitectura

Bluesky Relay (bsky.network)
     |
     v
rsky-wintermute -----> PostgreSQL 17 <----- Palomar
  (indexador Rust)         |                (búsqueda Go)
  - consumidor firehose    |                     |
  - reindexador            |                     v
  - indexador de etiquetas |               OpenSearch
  - indexador directo      |
                            v
                    bsky-dataplane (gRPC :2585) <--- Redis (opcional)
                            |
                            v
                    bsky-appview (HTTP :2584)
                            |
                            v
                    Proxy inverso (Caddy/nginx)

Resumen de componentes

ComponenteFuentePropósito
rsky-wintermuteblacksky-algorithms/rskyIndexador de firehose en Rust: consume eventos, reindexa repositorios, indexa registros en PostgreSQL
rsky-relayblacksky-algorithms/rskyRelay del AT Protocol para recibir etiquetas de moderación de servicios etiquetadores
rsky-videoblacksky-algorithms/rskyServicio de subida de vídeo: transcode vía Bunny Stream CDN, sube referencias de blobs a los PDS de los usuarios
bsky-dataplaneEste repositorio (services/bsky)Capa de datos gRPC sobre PostgreSQL
bsky-appviewEste repositorio (services/bsky)Servidor API HTTP para endpoints XRPC de app.bsky.*
Palomarblacksky-algorithms/indigoBúsqueda de texto completo: indexa perfiles y publicaciones en OpenSearch con potenciación por número de seguidores
palomar-syncblacksky-algorithms/rskySincroniza conteos de seguidores y puntuaciones PageRank desde PostgreSQL a OpenSearch

rsky-wintermute en detalle

Wintermute es un servicio monolítico en Rust con cuatro rutas de procesamiento paralelo:

  • Ingester: Se conecta al firehose de bsky.network vía WebSocket, escribe eventos en colas Fjall (almacén clave-valor incrustado)
  • Indexer: Lee de las colas, analiza registros, escribe en PostgreSQL con ON CONFLICT para idempotencia
  • Backfiller: Obtiene archivos CAR completos de repositorios desde los PDS, desempaqueta registros en la cola de reindexación
  • Label indexer: Se suscribe a flujos WebSocket de etiquetadores, procesa eventos de creación/negación de etiquetas
Descargar herramienta