JustCyber

Cyber Range OT/ICS

Cenários de subestação, SCADA e distribuição para treinar ataque e defesa de rede industrial, com objetivos, pontuação e ranking.

É a Cyber Arena aplicada ao chão de fábrica. Três cenários publicados hoje: reconhecimento Modbus e manipulação de setpoint numa subestação (modo ataque), defesa de SCADA sobre DNP3 numa distribuidora (modo defesa) e exercício blue contra red em IEC 61850 (modo blue_red). Cada cenário traz enunciado em Markdown e objetivos com id, título, descrição longa e pontos, e a soma dos objetivos tem de bater com os pontos declarados do cenário — isso é validado no catálogo.

O catálogo de cenários é global da plataforma: vive em código, é semeado numa tabela sem tenant_id e não tem rota de escrita. O aluno abre uma sessão sobre um cenário, marca objetivos cumpridos e o serviço pontua de forma determinística e idempotente. Progresso por cenário, ranking do tenant e certificação por trilha derivam disso. O acesso é premium: exige assinatura ativa e, se houver lista de planos configurada por variável de ambiente, que o plano ativo esteja nela.

A pontuação nunca depende de IA. A avaliação por IA existe como camada opcional que comenta o desempenho, marcada como rascunho, proibida de revelar gabarito, e devolve nulo quando o gateway está indisponível. O vocabulário OT (tipo de planta, protocolos) é importado do OT Sentinel, não redefinido — o mesmo Modbus significa a mesma coisa nos dois produtos.

O que faz hoje

Capacidades em operação

Cada item corresponde a funcionalidade que existe no código e é alcançável por um usuário com o escopo correto.

  • Catálogo de cenários filtrável

    Filtro por tipo de planta, dificuldade e modo, todos validados contra vocabulário fechado. O campo completed é derivado do progresso do próprio usuário e o número de objetivos é agregado na mesma consulta, sem laço de queries.

  • Detalhe do cenário

    Enunciado em Markdown, lista de objetivos com id, título, descrição e pontos, e os pontos já obtidos pelo aluno. Objetivo sem descrição sai como nulo, não como texto genérico.

  • Gate premium por assinatura

    O gate incide na CRIAÇÃO DE SESSÃO: sem assinatura ativa, 402; com lista de planos premium configurada e plano fora dela, 402 com código próprio; lista vazia libera com assinatura ativa (degradação declarada). Navegar o catálogo, ver progresso, ranking e certificações NÃO passa por esse gate — ali quem barra é só o escopo de RBAC.

  • Ciclo de sessão

    Criar (201, com Idempotency-Key e rate-limit), listar as próprias sessões, ver detalhe e encerrar. O encerramento é idempotente: sessão já finalizada volta como está.

  • Conclusão de objetivo com scoring determinístico

    Repetir o mesmo objetivo não repontua. Objetivo que não pertence ao cenário da sessão dá 422. Sessão que não está ativa dá 409. Os pontos vêm de uma função pura sobre os objetivos do cenário.

  • Progresso com denominador real

    Cada linha traz objetivos cumpridos sobre o total de objetivos do cenário, agregado no mesmo JOIN. Cenário fora do catálogo devolve zero como total, e a tela não tem denominador para inventar.

  • Leaderboard do tenant

    Agrega pontos, cenários concluídos e certificações por usuário numa única consulta, com rank atribuído pela função pura reusada da Cyber Arena.

  • Certificação por trilha OT

    Trilhas ot_attack, ot_defense e ot_blue_red derivadas do modo do cenário. Credencial opaca com prefixo JC-OTRANGE, emitida uma única vez por trilha; corrida concorrente é absorvida sem duplicar.

  • Avaliação por IA (rascunho)

    Comenta o desempenho no cenário em português, nunca revela gabarito, roda com rate-limit por IP e tenant e devolve 200 com avaliação nula se a IA cair.

  • Auditoria append-only

    Pedido de provisionamento, conclusão de objetivo, encerramento e concessão de certificação gravam em audit_log na mesma transação. O evento gravado casa com o estado durável: encerrar manualmente registra completed com o motivo terminated, sem inventar status fora do CHECK do banco.

O que fica com você

Entregáveis

  • Catálogo de cenários OT com enunciado, objetivos e pontos
  • Registro de progresso por cenário e por objetivo, com total de pontos
  • Ranking do tenant por pontos e cenários concluídos
  • Certificacao de trilha OT com credencial opaca, visivel para o proprio titular dentro da organizacao (nao ha rota de conferencia por terceiros)

O que este módulo não faz

Não há simulador. A sessão nasce em provisioning e enfileira o evento otrange.session.provision no outbox, mas nenhum consumidor existe no repositório (o relay do outbox não roteia esse tópico) e nenhum código escreve o status running nem preenche sim_ref. Na prática a sessão só sai de provisioning quando o próprio aluno a encerra, indo para completed. Não existe ambiente Modbus, DNP3 ou IEC 61850 provisionado por sessão: o aluno resolve o cenário fora da plataforma e marca os objetivos à mão, e não há verificação de que o objetivo foi de fato cumprido. O catálogo tem três cenários, um por modo, enquanto os limiares de certificação exigem três cenários de ataque, dois de defesa e dois de blue/red — com o conteúdo atual nenhuma certificação pode ser emitida. Não há rota de escrita de cenário: o único writer da tabela global é o seed da plataforma. A avaliação por IA existe na API mas não tem chamador no front. A criação de sessão não cobra crédito por sessão; o modelo é assinatura.

Declaramos o limite porque software de segurança que promete tudo não é auditável. Se o que falta aqui é o que você precisa, o serviço consultivo cobre — ou dizemos que não cobre.

Conecta com

  • OT Sentinel (vocabulário de tipo de planta e protocolos)
  • Cyber Arena BR (escala de pontos e função de ranking)
  • Billing (leitura de assinatura ativa e plano)
  • Outbox transacional (evento de provisionamento, sem consumidor)
  • Gateway de IA da plataforma

Controle de acesso

O acesso é concedido por escopo, não por perfil genérico. Quem só precisa ler não recebe permissão de escrita, e a barreira é o banco de dados, não a interface.

  • otrange:scenario:read
  • otrange:session:read
  • otrange:session:manage
  • otrange:progress:read
  • otrange:cert:read
Cyber Range OT/ICS

Quer ver funcionando?

Demonstração com dado do seu ambiente, não com base de exemplo. É a única forma de saber se serve.