Segurança

Esta página diz tanto o que protegemos como o que não conseguimos proteger. Uma história de segurança a que falte a segunda parte leva o leitor a confundir uma lista com uma garantia.

Ponto de partida

Publicar um pacote é executar código no computador de cada engenheiro que o instala. Cada decisão de segurança deste produto foi primeiro pesada contra uma pergunta: esta alteração torna mais fácil publicar sem direito?

  • Os pacotes são assinados (ECDSA P-256)

    O ficheiro da assinatura viaja dentro do pacote. Assina um manifesto com as impressões dos ficheiros, o identificador do pacote e a versão — e não uma simples impressão do arquivo.

    Se só a impressão fosse assinada, um arquivo antigo corretamente assinado poderia ser apresentado sob um número de versão novo: a assinatura passaria a verificação, e o utilizador instalaria como «atualização» uma ferramenta com uma vulnerabilidade conhecida.

  • A chave privada NÃO fica no servidor

    O servidor apenas verifica. A assinatura acontece no computador de quem publica, com uma ferramenta própria.

    Se a chave ficasse no servidor, quem o tomasse poderia alterar um pacote e voltar a assiná-lo — o que tornaria a assinatura inútil.

  • O cliente também verifica

    A extensão no computador do engenheiro verifica a assinatura por si, e a lista de chaves de confiança que usa não vem do servidor.

    A assinatura existe precisamente porque não se pode acreditar no servidor pela palavra. Ir buscar a lista de confiança a esse mesmo servidor anularia em silêncio o pressuposto de partida.

  • Um registo de auditoria que não se apaga

    Cada publicação, cada mudança de direito e cada decisão de canal ficam escritas para sempre. Não existe, de propósito, nenhum caminho de alteração ou de eliminação, e a limpeza depois do prazo de guarda não lhe toca.

    «Como é que esta ferramenta veio aqui parar» pergunta-se normalmente meses depois. Nesse dia, um apontamento que pudesse ter sido apagado é um apontamento que nunca existiu.

  • Regra dos quatro olhos, opcional

    Subir uma versão para um canal mais largo pode exigir a aprovação de um segundo administrador, e quem pediu não pode aprovar o seu próprio pedido. Voltar atrás nunca exige aprovação.

    Por predefinição está desligada. Numa equipa de três pessoas, o obstáculo transforma-se em poucas semanas numa mensagem que se aprova sem ler; um controlo em que se acredita que protege sem proteger é pior do que controlo nenhum.

  • Desempacotar um arquivo é por si só uma superfície de ataque

    Os arquivos carregados são verificados quanto à saída da pasta (zip-slip) e quanto a bombas de desempacotamento, e o tamanho depois de desempacotar é limitado.

    Desempacotar um arquivo parece inofensivo. Um arquivo preparado de propósito pode escrever ficheiros fora da pasta de destino ou encher o disco do servidor.

  • Entrada sem palavra-passe

    Os utilizadores entram com um código de uso único enviado para o seu endereço. A sessão anda com um testemunho de vida curta; o testemunho de renovação nunca é visível para o código no navegador.

    Se não há cofre de palavras-passe para gerir, também não há base de palavras-passe que possa fugir. E reutilizar um testemunho de renovação já revogado é tratado como sinal de roubo: a sessão fecha-se.

  • Vê aquilo que instala

    A pasta de instalação contém uma lista de componentes legível por máquina (SBOM CycloneDX) e scripts de migração para as duas bases de dados.

    A sua equipa de informática tem de poder verificar o que chega ao servidor antes de chegar. Quando se anuncia uma vulnerabilidade numa dependência, «temo-la?» passa a ser uma pesquisa por ficheiros.

O que não conseguimos proteger

Isto não são falhas, são limites. Decorrem da estrutura, e afirmar o contrário seria falso.

  • Dois administradores a agir em conjunto. A regra dos quatro olhos trava um, não dois.
  • O administrador de sistema do servidor. Para quem tem acesso à base de dados e ao sistema de ficheiros, nenhum controlo ao nível da aplicação é obstáculo.
  • O posto onde está a chave de assinatura. A chave não está no servidor, mas está algures; se essa máquina cair, cai também a assinatura.
  • Comportamento malicioso escondido de propósito. A nossa inspeção dos pacotes é heurística e não afirmamos que apanhe código que procure esconder-se.
  • A fuga de dados. Uma ferramenta instalada trabalha com os direitos do próprio engenheiro e consegue ler tudo aquilo que eles alcançam. Isso é limitado pelos controlos do sistema operativo e da rede, não por este produto.
  • A segurança das suas cópias de segurança. A cópia da base de dados está nas suas mãos, e tudo o que está lá dentro vale exatamente o mesmo que o sistema vivo.

Comunicar uma vulnerabilidade

Se encontrou alguma, escreva-nos. Levamos as comunicações a sério, não afastamos do processo quem comunica, e dizemos-lhe quando sai a correção.

security@ypcad.com