Os PDFs de minha revista sumiram! E agora? - Estudo de caso

Hoje vamos abordar um problema recorrente que surge para resolvermos aqui na GeniusDesign. Tudo parece funcionar bem até que, sem mais nem menos, os PDFs de uma revista em OJS não carregam mais. A lista de edições e artigos continuam a aparecer normalmente, os links para os PDFs também, mas ao clicar no link/botão para visualização do PDF, simplesmente carrega uma página em branco e nada mais acontece. Nenhuma mensagem, nenhum sinal de erro ocorrido.

O problema, na verdade é simples, mas provém de uma causa muito grave. Se esse tipo de problema aconteceu com você, sinto informar: sua revista foi, provavelmente, violada. Algumas vulnerabilidades importantes estão presentes em todas as versões anteriores ao OJS 3.3.0-5, conforme relatamos neste post de abril/2021, data da última vulnerabilidade descoberta. Mesmo assim, no site da PKP a última versão que consta com notificação de falha de segurança, até a data de publicação deste post, é a 3.3.0.

Invasões no OJS

Quando um usuário mal intencionado - hacker - ou robô descobre uma vulnerabilidade na sua instalação OJS, ele é capaz de "injetar" arquivos maliciosos no seu sistema. Muitas vezes tais invasões ocorrem sem que os usuários da revista, ou mesmo o administrador da rede (servidor), percebam, pois não ocasionam nenhum problema no funcionamento normal da revista.

Alguns hackers iniciantes ou amadores gostam de "assinar" suas realizações deixando um arquivo anunciando que o site foi violado. Outros mais experientes não estão interessados nesse tipo de reconhecimento, mas querem utilizar a capacidade de processamento do seu servidor ou criar páginas de phishing para capturar dados confidenciais de vítimas.

Abaixo listamos quatro práticas ou situações que podem ocorrer em instalações OJS vulneráveis ou que tenham sofrido algum tipo de invasão.

  1. Phishing
  2. Edição de arquivos do sistema
  3. Cadastros spam
  4. Indisponibilidade de PDFs
    1. Estudo de caso
    2. A solução
    3. Desdobramentos

1. Phishing

O phishing é um tipo de crime em que o hacker hospeda no servidor do site invadido, páginas maliciosas que são idênticas a de serviços populares, como, por exemplo, a página inicial de um grande banco. Ao acessar a página falsa (phishing), a vítima acredita estar na página do banco ou serviço verdadeiro e fornece dados sensíveis, como login e senha de banco, informações de cartão de crédito e outros dados sigilosos. Os dados, uma vez submetidos, não vão para os serviços apresentados mas diretamente para o hacker.

Normalmente sites comprometidos que armazenam páginas de phishing são descobertos pelos buscadores, como o Google, que logam alertam os visitantes de que o site está corrompido. Tal prática é amplamente utilizada em emails, que se utilizam de assinaturas e conteúdo falsos - como de instituições públicas ou grandes empresas - para enviar um link malicioso a usuários.

2. Edição de arquivos do sistema

Com a capacidade de "injetar" arquivos no seu servidor/sistema, o hacker pode armazenar scripts que executam ações de escrita, edição e remoção de informações em arquivos existentes. Isso permite que muitos estragos sejam feitos no seu sistema, desde os mais simples, de baixo impacto, aos mais graves, que impossibilitam o funcionamento correto do OJS.

Algumas edições comuns que são feitas nos arquivos do sistema alteram os metadados de pesquisa das páginas do site, inserindo outras informações que não correspondem às informações reais da revista.

Exemplo de visualização dos metadados de pesquisa de uma revista em OJS 2 no Google.Exemplo de visualização dos metadados de pesquisa de uma revista em OJS 2 no Google.

3. Cadastros spam

A versão 2 do OJS oferece opções limitadas de segurança para o ambiente tecnológico que utilizamos hoje. O recurso de captcha, em que um desafio é apresentado ao usuário no momento do cadastro ou preenchimento de um formulário, é uma importante barreira para cadastros spam. É bem comum encontrar instalações em OJS 2 que possuem milhares de usuários cadastrados em sua base que jamais efetuaram um login ou submeteram um trabalho.

Tais cadastros são realizados por bots, robôs automáticos que cadastram-se automaticamente em sites de baixa segurança para publicar links de referência ou, quando possível, realizar inserts no servidor com arquivos maliciosos.

4. Indisponibilidade de PDFs

Como explicado no item 2 - Edição de arquivos do sistema, uma vez que uma invasão seja realizada em uma instalação OJS, o hacker consegue efetuar edições em arquivos e diretórios do sistema. Isso significa que ele poderá causar danos graves ou leves, todos perigosos para a integridade do sistema e dos dados.

No caso da indisponibilidade dos PDFs, o hacker poderá excluí-los do servidor, o que seria terrível para a sua revista, ou pode renomear o diretório de arquivos dos usuários da instalação OJS. Neste último caso, os PDFs continuam no servidor, poderém não são encontrados quando o link acessado pelo visitante tenta carregar o arquivo.

Estudo de caso

No arquivo de configuração do OJS há um campo identificado como files_dir, onde é indicado o diretório no servidor que receberá os arquivos transferidos pelos usuários do sistema: manuscritos em .DOC/.DOCX, arquivos finalizados em PDF e todo arquivo transferido durante as etapas do fluxo editorial.

No caso abaixo, à esquerda, vemos a estrutura de diretórios da instalação OJS 2. O diretório files, em destaque cinza, corresponde ao local informado no arquivo de configuração, em files_dir. Aqui já temos uma prática não recomendada, que é a utilização de um diretório no mesmo diretório raiz do sistema. O correto é que este diretório de arquivos esteja um diretório acima, não acessível via http.

Estrutura do diretório de arquivos do usuário no OJS (files_dir)Estrutura do diretório de arquivos do usuário no OJS (files_dir)

Ao lado direito, vemos 4 subdiretórios: journals, journalskem, site, temp:

  • journals: este diretório armazenará diversos outros subdiretórios nomeados numericamente, correspondentes a cada periódico cadastrado no sistema. Assim, o primeiro periódico criado na instalação OJS receberá o número (ID) 1, o segundo = 2, terceiro = 3 e assim sucessivamente;
  • site: este diretório não é padrão do sistema; neste caso, foi criado pelo hacker para inclusão de arquivos suspeitos;
    Conteúdo do diretório "site": 100 arquivos suspeitos nas mais diversas extensões.Conteúdo do diretório "site": 100 arquivos suspeitos nas mais diversas extensões.
  • temp: diretório temporário do sistema para armazenamento de arquivos diversos necessários para a execução das funções dinâmicas do sistema.

Repare que não citei acima o diretório jourlaskem. Isso porque, neste caso estudado, o diretório jourlaskem foi uma cópia do diretório journals, que continha todos os artigos da revista.

Estrutura do diretório "journals".Estrutura do diretório "journals".

Estrutura do diretório "journalskem".

Repare nas imagens acima que o diretório journals contem subdiretórios numerados do 959 ao 999. Isso significa que nele estão contidos os arquivos transferidos pelos usuários nas submissões de número de identificação (ID) correspondentes.

A demanda que recebemos, neste caso, foi de que os artigos antigos da revista não exibiam mais os PDFs. O problema, depois de identificado, é óbvio: ao tentar acessar um artigo de ID inferior a 959, como de número 3, por exemplo, o sistema não encontrava o PDF seu correspondente pois não estava mais localizado no diretório files/journals/1/articles/3. O mesmo acontecia com qualquer artigo publicado com ID entre 1 e 958.

Todos os arquivos PDF dos artigos anteriores ao 959 estavam no diretório journalskem, que foi renomeado por alguma invasor. Depois desta alteração feita pelo hacker, a revista ainda recebeu novas submissões (a partir do 959) que recriou o diretório journals, armazenando os arquivos transferidos no local correto. Os arquivos antigos, no entanto, acabaram ficando perdidos em um diretório que não constava nas configurações do sistema.

Além de renomear o diretório original "journals", o invasor criou um novo subdiretório nomeado "journalskem" e inseriu diversos outros arquivos suspeitos.Além de renomear o diretório original "journals", o invasor criou um novo subdiretório nomeado "journalskem" e inseriu diversos outros arquivos suspeitos.

Repare ainda que além de ter renomeado o diretório original dos journals, o invasor ainda criou um novo subdiretório de mesmo nome e transferiu diversos arquivos suspeitos que poderiam gerar consequências diversas, desde a sobrecarga do armazenamento no servidor a questões jurídicas no caso de conteúdos de cunho criminoso.

A solução

A solução, neste caso, passou pela remoção dos arquivos suspeitos, scan com antivírus nos diretórios e arquivos do sistema e a reorganização do diretório files/journals/1/articles para que todos os arquivos PDFs dos artigos cadastrados na revista estivessem novamente acessíveis. Também movemos o diretório files da raiz do OJS para um nível acima e atualizamos a localização em files_dir.

Desdobramentos

Tais ações resolveram a questão da disponibilidade dos PDFs no site, mas outros problemas decorrentes foram identificados posteriormente. O OJS trabalha com diversas tabelas no banco de dados que armazenam diferentes conjuntos de informações relacionadas aos artigos, por exemplo, tabelas de usuários, submissões, pareceres, arquivos, etc. Quando uma informação é modificada indevidamente no banco de dados, sem a devida atualização dos dados dependentes, o sistema fica com uma "ponta solta", podendo apresentar mal funcionamento no carregamento de informações específicas dos artigos. E o buraco pode ser mais fundo...


A melhor maneira de evitar tais problemas é manter a sua instalação OJS atualizada. Não precisa realizar, necessariamente, a atualização do sistema para cada novo release, mas ter atenção especial nas atualizações que possuem correções de segurança. Uma ou duas atualizações por ano garantirão o seu sistema seguro, com melhorias nas funcionalidades existentes e a disponibilidade de novas funcionalidades que são implementadas pela equipe de desenvolvimento do Public Knowledge Project.

Cadastre-se em nosso informativo para ficar por dentro dos textos que publicamos em nosso blog.

Favor habilitar seu javascript para enviar este formulário

Atualizado em Terça, 01 Março 2022 23:47
Eugênio Telles

Eugênio Telles

Eugênio Telles é publicitário pós-graduado em Marketing Digital pela ESPM-RJ, fundador e diretor executivo da GeniusDesign e consultor OJS há mais de 10 anos.

Somos uma editora especializada em OJS e periódicos científicos

O Blog Periódico Eletrônico é mantido pela GeniusDesign, uma editora especializada em Open Journal System, dedicada a oferecer soluções tecnológicas, operacionais e editoriais para periódicos científicos.

Fiocruz
Revista Abralin
Sesi Sp Editora
Cadlin
Farmanguinhos
Associação Brasileira de Criminalística
Blog Periódico Eletrônico

Peletron - Periódico Eletrônico

CNPJ: 27.339.106/0001-70