Registo de alterações — PrestaWard Snapshot
0.1.8
- O painel está dividido em separadores (Resumo, Alterações, Tarefas, Verificações, Configuração e Registos de atividade) e apenas tem em conta o separador que está aberto, pelo que abre mais rapidamente em lojas de grande dimensão. O painel de suporte da GO ON Agency tem a sua própria aba, «Suporte», sempre a última, e a secção Integrity fica no final de todas as abas.
- Resumo mínimo: a linha de base atual, a última comparação e o seu resultado, uma ação principal e, no máximo, uma linha com as tarefas em curso ou o alerta mais importante (alterações pendentes de revisão, pastas novas ou já não abrangidas que exigem uma nova linha de base, uma janela de manutenção por encerrar, um cron que nunca foi executado ou está atrasado, cópias de segurança na raiz do site). Se houver mais alertas, a linha acrescenta «e mais N».
- Separador «Tarefas»: a tarefa em curso é apresentada como um cartão com as suas fases (descobrir, calcular impressões digitais, validar, comparar ou publicar, atestação), contador de ficheiros, tempo decorrido, última atualização e quem a executa (Back Office, cron ou linha de comandos). Uma tarefa que requer o processo de linha de comandos aparece a âmbar, com o motivo descrito em linguagem clara e o comando exato acompanhado de um botão para o copiar; no navegador, não dispõe de botão para retomar.
- Histórico de tarefas de 90 dias numa única tabela (tipo, origem, funcionário, início, duração, estado, resultado e avisos) com filtros por tipo, estado e datas, bem como paginação, em vez do limite anterior das últimas 20 tarefas ou 7 dias. O resultado de uma comparação remete para as alterações detetadas e uma verificação dos ficheiros do núcleo remete para o separador «Verificações».
- Detalhes de cada tarefa: cronologia, ficheiros, memória máxima, hash da política, linha de base e comparação com links, avisos com pastas de exemplo, uma mensagem de erro traduzida caso tenha falhado e download do diagnóstico. Quando os detalhes dos ficheiros da tarefa concluída são eliminados, é mantido um resumo (contagens de alertas com pastas de exemplo e pastas não totalmente abrangidas) e a página indica que os detalhes foram eliminados.
- A cobertura por categoria passa para o final da secção «Alterações»; as verificações da loja (cópias de segurança, ficheiros do núcleo, auditoria de configuração e estado dos módulos) ficam agrupadas na secção «Verificações»; e os ajustes de e-mail, cron, política de análise, janela de manutenção e armazenamento encontram-se na secção «Configuração».
- A auditoria à configuração de segurança passa a incluir 14 verificações. Novidades: reforço de segurança do PHP (allow_url_include e expose_php), pastas de controlo de versões e ficheiros de ambiente (.git, .svn, .hg, .env e variantes) na raiz do site e dentro de módulos e temas, chaves de serviço web com permissão de escrita em vários recursos (apenas se conta o número de chaves existentes; nunca se lê nem se mostra uma chave), verificação do endereço IP do cookie e contas inativas que mantêm o perfil SuperAdmin (apenas são contadas, sem nomes nem endereços). Cada um destes casos tem uma explicação e uma solução, e o que não é possível ler é indicado como «não verificado». Os ficheiros .git, .svn e .env na raiz do site passam da verificação dos ficheiros de instalação e das cópias para a nova verificação, para que não sejam contados duas vezes.
- Heurísticas de skimmer de cartões para JavaScript: o código JavaScript novo ou alterado do tema ativo e dos módulos de pagamento é igualmente analisado à procura de três sinais: código que lê o número, a data de validade ou o código de segurança e envia dados para outro site (risco elevado), dados enviados para outro site a partir do código do pedido ou do pagamento (requer revisão) e código muito ofuscado junto ao código do pedido ou do pagamento (requer revisão). Os endereços da própria loja, as plataformas de pagamento e, no caso dos sinais mais fracos, os servidores de análise conhecidos não são considerados como outro site. Uma coincidência constitui um motivo para analisar o ficheiro, não uma prova de comprometimento, e um endereço que o código constrói durante a sua execução não é detetado.
- Orçamento de volume multimédia: cada linha de base e comparação contabiliza, para cada pasta multimédia (img, upload, uploads e download), os ficheiros e os bytes já analisados, sem aceder a mais ficheiros nem guardar dados por ficheiro. A secção «Verificações» apresenta o total por pasta, o aumento em relação à linha de base e se um limite foi excedido. A secção «Configuração» tem três limites: número máximo de ficheiros, tamanho máximo em GB e aumento máximo em relação à linha de base em percentagem (50 % por predefinição; 0 desativa um limite). Um limite ultrapassado aparece no Resumo e no e-mail de alerta, que também é enviado quando nenhum ficheiro sofreu alterações suficientes para, por si só, provocar essa ultrapassagem.
- O limite de monitorização visível: uma análise lê, no máximo, 250 000 nomes nas pastas excluídas, e as pastas subsequentes eram registadas como não abrangidas, mas apenas eram apresentadas na tarefa. Agora, aparecem como uma linha de alerta no Resumo e um aviso em Verificações com o número de pastas não monitorizadas, e o volume multimédia é assinalado como parcial se tiver sido medido abaixo desse limite.
- Corrige o facto de a ligação com o Integrity se deteriorar no Back Office no contexto «todas as lojas» ou quando uma loja diferente da primeira apresentava o teste de inscrição: a loja ligada passava para o estado «inscrição pendente» e o teste não podia ser assinado. A identidade da instalação é agora lida como uma unidade a partir do âmbito global (ou da loja onde está guardada) em qualquer contexto; a atualização transfere para o âmbito global uma identidade guardada numa loja sem a regenerar e, caso não seja possível lê-la, o estado do Integrity mantém-se inalterado.
- Novo: barra de filtros comum. A revisão de alterações e o histórico de tarefas utilizam-na: os seletores estão distribuídos numa grelha de largura igual, a barra de pesquisa e o botão «Filtrar» encontram-se na mesma linha e as ações secundárias, como exportar a auditoria em CSV, ficam alinhadas à direita. Anteriormente, os filtros estavam amontoados e os botões sobrepunham-se.
- Os e-mails de alerta, de resumo de manutenção e de teste apresentam o logótipo da sua loja no cabeçalho (com o nome da loja como texto alternativo) e um rodapé comum com o logótipo da GO ON Agency e a assinatura «PrestaWard by GO ON Agency», sem links nem endereços de contacto. O logótipo do rodapé é um ficheiro do próprio módulo disponibilizado a partir da sua loja.
- Corrige o problema de o assunto dos e-mails conter o nome da loja duas vezes.
- Aspecto unificado do painel nos quatro módulos PrestaWard: cabeçalhos de secção, cartões de formulário com bordas neutras e blocos expansíveis comuns, estatísticas numa única linha e um logótipo da GO ON Agency de maiores dimensões no cabeçalho. O botão principal passa a ter uma cor sólida da marca, sem gradiente.
- Corrige o facto de, no PrestaShop 9, o tema de administração apresentar os separadores sublinhados como ligações e os títulos das secções em maiúsculas. Os estilos comuns neutralizam este efeito apenas no painel do PrestaWard, pelo que o PrestaShop 1.7 e 8 mantêm o aspeto anterior.
- Corrige o facto de, no PrestaShop 1.7, a folha de estilos do módulo ser rejeitada ao registar-se com o número da versão no endereço. Agora, o ficheiro é verificado e registado sem parâmetros, de modo a que o novo aspeto apareça nas versões 1.7, 8 e 9.
- Corrige o fato de, não PrestaShop 9, as ações do painel (os pedidos de tarefas e o download do relatório de suporte, bem como a sincronização com o Integrity) verificarem o token de segurança através de um método que o PrestaShop 9 não utiliza, o que poderia levar à sua rejeição. Agora a validação é efetuada através do serviço do PrestaShop 9; no PrestaShop 1.7 e 8, a verificação mantém-se inalterada.
- Quando a ligação ao Integrity não puder ser atualizada nesse momento, o painel apresenta uma única mensagem: a ligação guardada continua válida e será tentada novamente de forma automática. Os rótulos de todos os separadores estão traduzidos para os nove idiomas.
- O cabeçalho do produto volta a apresentar o logótipo da GO ON Agency e a assinatura «PrestaWard by GO ON Agency», sem hiperligações. O formato da linha de base, os bytes do manifesto e o contrato com a Integrity API não sofrem alterações; a atualização adiciona colunas (duas à tabela de tarefas e as relativas ao volume multimédia por pasta, tarefa e linha de base).
0.1.7
- Analisa o código suspeito dos ficheiros PHP e JavaScript novos ou modificados (até 512 KB cada) à procura de padrões característicos de web shells e de código ofuscado, e explica o resultado em linguagem clara. Uma correspondência significa «verifique este ficheiro», não uma prova de ataque; um ficheiro sem correspondências não é considerado seguro, e um que exceda o limite é marcado como parcialmente verificado.
- Deteta imagens disfarçadas (com cabeçalho incorreto ou com código PHP no interior) em todas as pastas: incluídas, excluídas e, dentro de um limite de tempo e tamanho, pastas voláteis como img/tmp, que a análise ainda não percorreu.
- Atribui um nível de risco a cada alteração (elevado, requer revisão ou baixo), visível e filtrável na revisão de alterações e incluído no ficheiro CSV de auditoria e nos e-mails de alerta.
- Agrupe as atualizações de módulos e temas num único elemento, indicando a versão anterior e a nova. O código PHP alterado no âmbito de uma atualização detetada apresenta baixo risco e já não gera e-mails de alerta. Requer uma linha de base criada com esta versão.
- Novo painel de ficheiros do núcleo: compara-os com a lista oficial de somas de verificação da sua versão do PrestaShop, em lotes que podem ser retomados. Uma diferença não constitui prova de uma intrusão; se a lista não existir ou não puder ser descarregada, o painel indica que o núcleo não foi verificado e nunca o apresenta como tendo sido aprovado.
- Nova auditoria à configuração de segurança com uma pontuação de 0 a 100 (modo de depuração, pasta de administração, permissões de configuração, pastas de instalação, cópias de segurança e ficheiros compactados na raiz do site, versão do PHP, HTTPS e erros de PHP visíveis, entre outros aspetos). Cada ponto inclui uma explicação e uma solução; o que não for possível verificar é indicado como «não verificado» e não é pontuado.
- Avisa de um cron que nunca foi executado e, com um alerta específico, das pastas e cópias de segurança dos módulos que se encontrem na raiz do site.
- As novas instalações excluem, por predefinição, as cópias de segurança dos módulos e a pasta de downloads. Nas instalações existentes, essas exclusões são apresentadas no painel e só se aplicam se as ativar, o que cria uma nova linha de base.
- Janela de manutenção de 1 a 4 horas: silencia os e-mails de alerta, mas continua a registar as alterações e, ao encerrar, envia um resumo agrupado com as ações «Aceitar estas alterações» ou «Dispensar». A opção «Aceitar» apenas as marca como revistas; o Snapshot nunca cria uma linha de base por si só.
- Quando a cobertura da análise aumenta entre versões, os ficheiros das pastas que a linha de base anterior não abrangia são reportados como nova cobertura e não como milhares de ficheiros adicionados com alertas críticos.
- A revisão de alterações funciona com resultados de grande dimensão: paginação com salto para a página, resumo agrupado por pasta, estado e risco, e alterações pendentes de linhas de base anteriores marcadas como substituídas.
- Reduz o tempo de criação da linha de base e de validação de diretórios em lojas de grande dimensão com tarefas anteriores retidas (minutos em vez de dezenas de minutos) e elimina, em lotes limitados, as linhas temporárias das tarefas concluídas.
- Corrige vários avisos: O Snapshot já não deteta os seus próprios ficheiros como alterações de alto risco; o ficheiro padrão de Proteção do PrestaShop index.php já não é marcado como executável suspeito; «Alterações recentes» apresenta os totais da última comparação e, após a criação de uma linha de base, o painel já não apresenta a comparação anterior como atual.
- O Back Office indica «A processar a partir da consola» enquanto o processo da consola está a decorrer; atualizar a página após clicar num botão já não o reenvia e um início rejeitado indica qual a tarefa que está em curso. O processo da consola apresenta uma breve linha de progresso em vez de uma por cada passo.
- Coerência do Back Office: o painel de tarefas e os seus botões têm o mesmo aspeto que o resto do painel, e as mensagens de estado do cron e do registo de atividades são apresentadas no idioma do Back Office nos nove idiomas.
- O painel de suporte e diagnóstico é colocado imediatamente antes da secção Integrity, tal como nos restantes módulos PrestaWard, e, no contexto «todas as lojas», já não desaparece: indica que é necessário selecionar uma loja.
- As folhas de estilo são carregadas com a versão do módulo, pelo que o novo aspeto aparece após a atualização, sem necessidade de esvaziar a cache do navegador.
- Sincroniza com o Integrity sempre que abrir o painel, através de um pedido em segundo plano que nunca atrasa a página e, no máximo, uma vez por minuto por loja.
0.1.6
- Um link simbólico já não interrompe a verificação: é ignorado sem ser seguido nem ter a sua impressão digital calculada (não fazendo, portanto, parte da linha de base) e é indicado no painel, com um alerta quando aponta para fora da loja ou para um destino inexistente.
- Descarta, durante a análise, os ficheiros que não podem fazer parte do manifesto.
- Nunca percorre as pastas voláteis do PrestaShop (img/tmp e as caches de recursos combinados do tema), que são regeneradas constantemente e podem interromper uma análise com directory_changed.
- Aplica as exclusões antes de aceder a cada pasta: as pastas excluídas deixam de fazer parte da análise de integridade e são apenas monitorizadas à procura de ficheiros executáveis, numa verificação separada que nunca interrompe a tarefa e que está limitada a 250 000 nomes por tarefa.
- Volta a analisar até três vezes uma pasta incluída que sofre alterações durante a análise. Se continuar a sofrer alterações, as pastas do núcleo, da configuração, da administração, dos módulos de gateway de pagamento e do tema ativo interrompem a tarefa como anteriormente; as restantes são ignoradas com um alerta e a tarefa é concluída.
- O cron processa vários lotes consecutivos por chamada (até cerca de 20 segundos) e notifica com o estado cli_required e a resposta HTTP 409 quando uma tarefa requer o processo de linha de comandos. Uma ferramenta de monitorização que considere como falha qualquer resposta diferente de 2xx irá assinalá-la, como seria de esperar. Esse processo é executado manualmente pelo administrador do servidor: o módulo nunca o inicia por si próprio.
- Reforça o bloqueio que impede execuções simultâneas do cron, mesmo que as duas primeiras execuções coincidam.
- Transfira os ficheiros temporários do manifesto para um diretório privado dentro das lojas, compatível com o open_basedir e com a limpeza do diretório temporário do sistema. No Nginx, é aconselhável bloquear o acesso a var/prestaward-snapshot/.
- Deteta tabelas que não utilizam o InnoDB, apresenta uma mensagem clara nos nove idiomas e converte as tabelas do módulo durante a atualização, registando cada conversão.
- Adiciona um painel de verificação de estado no Back Office, só de leitura: pasta privada de preparação, motor de armazenamento da base de dados, frequência do cron e tarefas à espera do processo da linha de comandos.
- Corrige os totais do relatório de tarefas: as ligações são contabilizadas separadamente dos ficheiros excluídos.
- Cada módulo é analisado uma única vez, no âmbito dos pagamentos ou no dos módulos, de modo que um módulo que não seja uma gateway de pagamento e que sofra alterações durante a análise já não interrompe a tarefa.
- Se uma tarefa não conseguir abranger totalmente uma pasta, o instantâneo é apresentado com cobertura parcial e a comparação marca os ficheiros dessas pastas como «não verificados», em vez de eliminados.
- O painel de tarefas indica as pastas afetadas por cada tipo de alerta e o que fazer, nos nove idiomas. A desinstalação elimina também as tabelas de tarefas.
- PrestaShop 9: o processo de linha de comandos e o cron já não apresentam erros ao confundir a pasta «admin-api» do núcleo com a do Back Office.
- Quando o processo da linha de comandos falha, termina com uma linha de diagnóstico com um código de motivo fixo, sem caminhos nem mensagens internas.
- Reduz o custo da análise em lojas com muitos ficheiros.
- PHP 7.1 e 7.2: a inscrição, a atestação e o heartbeat do Integrity já não são interrompidos devido a um erro de sintaxe.
- Corrige a atualização a partir da versão 0.1.5, quando falta a tabela de instantâneos.
- Validado em ambiente de laboratório no PrestaShop 1.7, 8 e 9, incluindo um teste com 300 000 ficheiros que se alteram durante a análise.
0.1.5
- Restaura as tentativas automáticas de atestação do Integrity, os heartbeats pendentes e a retenção após as respostas do cron assíncrono. A manutenção é executada em lotes limitados e coordenada separadamente dos avanços da verificação.
- Se uma linha de base anterior incluía várias pastas de administração, a próxima comparação pode apresentar entradas adicionais: verifique as diferenças e crie uma nova linha de base quando for o caso, sem apagar automaticamente a anterior.
- Permite nomes de ficheiros válidos com pontos consecutivos e mantém a proteção contra caminhos inseguros.
- Conserva todos os ficheiros das pastas de administração adicionais, sem os confundir com os do Back Office ativo.
- Guarda o progresso das linhas de base e das comparações para poder continuar após fechar o painel ou interromper um pedido.
- Processa e verifica ficheiros em lotes; os resultados só são apresentados após a conclusão da tarefa e a última linha de base válida é mantida caso o processo seja cancelado ou falhe.
- Corrige a comparação dos ficheiros de administração com linhas de base anteriores e mantém as pastas excluídas desmarcadas.
- Adiciona um relatório de diagnóstico descarregável para ser anexado manualmente a um pedido de suporte, sem enviar dados automaticamente. Só pode ser descarregado por um funcionário com permissão de edição e com uma loja selecionada, e não inclui caminhos, conteúdo de ficheiros nem credenciais.
- Completa os estados do painel, os avisos e os modelos de alertas em nove idiomas.
- Conserve as correções de inscrição e atualização da versão 0.1.4.
0.1.4
- Corrige erros de inscrição do Integrity no PrestaShop 9 e mantém a inscrição existente ao atualizar lojas sem a funcionalidade multiloja.
- Restaura as tentativas automáticas de inscrição e regista a causa real das falhas.
- Atualiza o design comum do Back Office e adiciona informações sobre o tratamento de dados.
- Ajusta os formatos de números e de duração ao idioma do administrador e traduz os estados e as etiquetas do painel.
- Corrige o avanço da versão instalada durante a atualização.
- Prepara o pacote AFL-3.0 para Addons: remove o verificador de atualizações e calcula a identidade a partir dos ficheiros instalados.
0.1.3
- Patch de segurança: a verificação abrange agora toda a instalação do PrestaShop, incluindo as pastas
override, src, vendor, upload, download, img, js e os ficheiros na raiz.
- Patch de segurança: os ficheiros com relevância para a segurança são sempre monitorizados, independentemente da sua extensão.
- Patch de segurança: reforça a verificação das atestações remotas e interrompe as tentativas automáticas quando a chave de registo da loja é alterada.
0.1.2
- Heartbeat automático sem cron, ativado de forma não bloqueante pelo tráfego normal das lojas.
- O pedido do navegador permanece no mesmo domínio e as credenciais do Integrity são utilizadas exclusivamente no servidor.
- Bloqueio por loja, intervalo de seis horas e tempo de espera após falhas para evitar duplicados.
- A sincronização manual do Integrity também atualiza a presença da instalação.
0.1.1
- Heartbeat da Integrity e monitorização do estado do cron.
- Hashing incremental seguro com revisão completa periódica e âmbitos críticos sempre recalculados.
- Classificação de alterações de rotina, suspeitas e críticas.
- Filtros, paginação, revisão com notas e exportação CSV de auditoria.
- Diferenças de metadados sem armazenamento de conteúdo e retenção com limpeza protegida.
- Painel de controlo visualmente alinhado com o ecossistema PrestaWard.
0.1.0
- Registo automático e não bloqueante na PrestaWard Integrity API.
- Fila local com novas tentativas para atestar cada manifesto sem enviar ficheiros nem conteúdo.
- Recibos remotos assinados, encadeados e verificados dentro da loja.
- Estado da ligação e da entrega visível a partir do Painel de Controlo.
0.0.9
- Ligações de ajuda contextual a partir dos campos de configuração para o guia público.
- Guia público reorganizado por objetivo e campo, com explicações práticas sobre cada ajuste.
- Foi eliminada da configuração a apresentação redundante da origem das atualizações.
0.0.8
- Exclusões configuráveis por nome exato e caminho relativo, com política imutável e hash SHA-256.
- É obrigatória a pré-visualização antes de ativar uma política e criar a sua nova linha de base.
- Bloqueio de comparações entre políticas diferentes.
- Monitorização não configurável de executáveis e ficheiros de configuração dentro de zonas excluídas.
- Deteção limitada de cabeçalhos PHP e interpretadores perigosos em ficheiros com extensões enganosas.
- Validação completa no PrestaShop 1.7, 8 e 9, incluindo um teste misto com 100 000 ficheiros.
0.0.7
- A identificação completa do produto e do módulo técnico foi renomeada para PrestaWard Snapshot.
- Acesso inicial restrito ao perfil de administrador.
- Autorização explícita de perfis adicionais através das permissões nativas do PrestaShop.
- Separação de leitura, criação de instantâneos e configuração através das permissões READ, CREATE e UPDATE.
- Ocultação de configurações, tokens de cron e ações sensíveis para perfis de leitura apenas.
- Documentação esclarecida: o módulo supervisiona a integridade, mas não armazena nem restaura cópias de segurança.
0.0.6
- Links para produtos, guias, fornecedores e suporte que permanecem ativos após uma instalação limpa.
- Atualização de metadados a partir do manifesto público.
- Logótipos da GO ON Agency com links no Back Office e nos e-mails.
- URL alternativa visível em e-mails em HTML e em texto simples.
- Ação de e-mail de teste e ferramentas de lançamento reproduzíveis.
0.0.5
- Carregamento automático do controlador legado corrigido.
- Acesso transferido para a secção raiz PrestaWard Snapshot.
0.0.4
- Menu do Back Office clicável.
- Validação completa do ciclo completo de instalação e desinstalação.
0.0.3
- Contexto explícito de loja múltipla.
- Compatibilidade com propriedades dinâmicas no PHP 8.5.
0.0.2
- Funções de autorização e permissões de acesso explícitas.
0.0.1
- Linha de base, comparação, alertas, cron, registos, verificação de atualizações e painel inicial.