;(function() { window.createMeasureObserver = (measureName) => { var markPrefix = `_uol-measure-${measureName}-${new Date().getTime()}`; performance.mark(`${markPrefix}-start`); return { end: function() { performance.mark(`${markPrefix}-end`); performance.measure(`uol-measure-${measureName}`, `${markPrefix}-start`, `${markPrefix}-end`); performance.clearMarks(`${markPrefix}-start`); performance.clearMarks(`${markPrefix}-end`); } } }; /** * Gerenciador de eventos */ window.gevent = { stack: [], RUN_ONCE: true, on: function(name, callback, once) { this.stack.push([name, callback, !!once]); }, emit: function(name, args) { for (var i = this.stack.length, item; i--;) { item = this.stack[i]; if (item[0] === name) { item[1](args); if (item[2]) { this.stack.splice(i, 1); } } } } }; var runningSearch = false; var hadAnEvent = true; var elementsToWatch = window.elementsToWatch = new Map(); var innerHeight = window.innerHeight; // timestamp da última rodada do requestAnimationFrame // É usado para limitar a procura por elementos visíveis. var lastAnimationTS = 0; // verifica se elemento está no viewport do usuário var isElementInViewport = function(el) { var rect = el.getBoundingClientRect(); var clientHeight = window.innerHeight || document.documentElement.clientHeight; // renderizando antes, evitando troca de conteúdo visível no chartbeat-related-content if(el.className.includes('related-content-front')) return true; // garante que usa ao mínimo 280px de margem para fazer o lazyload var margin = clientHeight + Math.max(280, clientHeight * 0.2); // se a base do componente está acima da altura da tela do usuário, está oculto if(rect.bottom < 0 && rect.bottom > margin * -1) { return false; } // se o topo do elemento está abaixo da altura da tela do usuário, está oculto if(rect.top > margin) { return false; } // se a posição do topo é negativa, verifica se a altura dele ainda // compensa o que já foi scrollado if(rect.top < 0 && rect.height + rect.top < 0) { return false; } return true; }; var asynxNextFreeTime = () => { return new Promise((resolve) => { if(window.requestIdleCallback) { window.requestIdleCallback(resolve, { timeout: 5000, }); } else { window.requestAnimationFrame(resolve); } }); }; var asyncValidateIfElIsInViewPort = function(promise, el) { return promise.then(() => { if(el) { if(isElementInViewport(el) == true) { const cb = elementsToWatch.get(el); // remove da lista para não ser disparado novamente elementsToWatch.delete(el); cb(); } } }).then(asynxNextFreeTime); }; // inicia o fluxo de procura de elementos procurados var look = function() { if(window.requestIdleCallback) { window.requestIdleCallback(findByVisibleElements, { timeout: 5000, }); } else { window.requestAnimationFrame(findByVisibleElements); } }; var findByVisibleElements = function(ts) { var elapsedSinceLast = ts - lastAnimationTS; // se não teve nenhum evento que possa alterar a página if(hadAnEvent == false) { return look(); } if(elementsToWatch.size == 0) { return look(); } if(runningSearch == true) { return look(); } // procura por elementos visíveis apenas 5x/seg if(elapsedSinceLast < 1000/5) { return look(); } // atualiza o último ts lastAnimationTS = ts; // reseta status de scroll para não entrar novamente aqui hadAnEvent = false; // indica que está rodando a procura por elementos no viewport runningSearch = true; const done = Array.from(elementsToWatch.keys()).reduce(asyncValidateIfElIsInViewPort, Promise.resolve()); // obtém todos os elementos que podem ter view contabilizados //elementsToWatch.forEach(function(cb, el) { // if(isElementInViewport(el) == true) { // // remove da lista para não ser disparado novamente // elementsToWatch.delete(el); // cb(el); // } //}); done.then(function() { runningSearch = false; }); // reinicia o fluxo de procura look(); }; /** * Quando o elemento `el` entrar no viewport (-20%), cb será disparado. */ window.lazyload = function(el, cb) { if(el.nodeType != Node.ELEMENT_NODE) { throw new Error("element parameter should be a Element Node"); } if(typeof cb !== 'function') { throw new Error("callback parameter should be a Function"); } elementsToWatch.set(el, cb); } var setEvent = function() { hadAnEvent = true; }; window.addEventListener('scroll', setEvent, { capture: true, ive: true }); window.addEventListener('click', setEvent, { ive: true }); window.addEventListener('resize', setEvent, { ive: true }); window.addEventListener('load', setEvent, { once: true, ive: true }); window.addEventListener('DOMContentLoaded', setEvent, { once: true, ive: true }); window.gevent.on('allJSLoadedAndCreated', setEvent, window.gevent.RUN_ONCE); // inicia a validação look(); })();
  • AssineUOL
Topo

STJ confirma que hacker criptografou dados, mas processos têm backup

Sede do STJ (Superior Tribunal de Justiça), em Brasília - Kleyton Amorim/UOL
Sede do STJ (Superior Tribunal de Justiça), em Brasília Imagem: Kleyton Amorim/UOL

Lucas Carvalho

De Tilt, em São Paulo

05/11/2020 16h29Atualizada em 05/11/2020 20h43

O Superior Tribunal de Justiça (STJ) confirmou nesta quinta-feira (5) ter sido alvo de um ataque hacker que criptografou dados e forçou o tribunal a suspender sessões e tirar seu site do ar. Mas o ataque não atingiu a cópia de segurança (backup) dos arquivos, preservando os processos bloqueados.

Na última terça-feira (3), o STJ identificou "um vírus estava circulando na rede de informática do tribunal". Como medida de precaução, o o do tribunal à internet foi derrubado, "o que implicou no cancelamento das sessões de julgamento e impossibilitou o funcionamento dos sistemas de informática e de telefonia da Corte".

Desde então, a equipe de tecnologia do STJ vem trabalhando para recuperar os arquivos criptografados, incluindo a ajuda do Centro de Defesa Cibernética do Exército Brasileiro, da Microsoft e de outras empresas que prestam serviços de tecnologia para a corte.

"O STJ esclarece que o ataque hacker bloqueou, temporariamente, com o uso de criptografia, o o aos dados, os quais, todavia, estão preservados nos sistemas de backup do tribunal. Permanecem íntegras as informações referentes aos processos judiciais, contas de e-mails e contratos istrativos, mantendo-se inalterados os compromissos financeiros do tribunal, inclusive quanto à sua folha de pagamento", afirmou o tribunal em nota compartilhada com Tilt.

A previsão do STJ é de que os trabalhos voltem ao normal na próxima terça-feira (10).

STF e TSE reforçam segurança

O Supremo Tribunal Federal (STF) e o Tribunal Superior Eleitoral (TSE) informaram nesta quinta-feira (5) que reforçaram seus sistemas internos de segurança da informação após o ataque hacker que fez o Superior Tribunal de Justiça (STJ) tirar seu site do ar e paralisar trabalhos até a próxima segunda-feira (9).

A Secretaria de Tecnologia da Informação do STF informou, em nota, que "não detectou qualquer anormalidade no sistema do Tribunal até este momento", mas, mesmo assim, diante do ataque sofrido pelo STJ, "enrijeceu os protocolos de segurança".

"Em razão de ataque cibernético realizado contra o Superior Tribunal de Justiça, bem como da tentativa de ataques a outros órgãos e da proximidade do pleito eleitoral, o Tribunal Superior Eleitoral informa que foram intensificados todos os procedimentos de segurança nos sistemas internos e externos da Corte", informou o TSE em nota.

Ataque ao STJ

O STJ informou o ataque hacker na terça-feira (3), mas só tirou seu site do ar na quarta. Em regime de plantão, o tribunal só está atendendo urgências, como:

  • Pedidos de habeas corpus;
  • Mandados de segurança;
  • Suspensão de execução de liminar;
  • Comunicação de prisão em flagrante;
  • Decretação de prisão preventiva para casos que tenham origem na instância superior.
Site do STJ fora do ar - Reprodução/Tilt - Reprodução/Tilt
Fora do ar, site do STJ exibe apenas esta mensagem
Imagem: Reprodução/Tilt

De acordo com o site O Bastidor, do jornalista Diego Escosteguy, citando uma fonte anônima próxima ao caso, o STJ foi vítima de um ataque de ransomware. A suspeita vem de um bilhete publicado pelo site, que teria sido deixado pelos hackers como um arquivo de texto encontrado nos sistemas do STJ. O invasor teria cobrado um resgate em dinheiro em troca do desbloqueio dos arquivos.

Nesse tipo de invasão, um programa malicioso "sequestra" o o a todos os arquivos no sistema, tornando-os iníveis por meio de criptografia.

Procurada por Tilt, a assessoria de imprensa do STJ primeiramente não confirmou a informação de que os sistemas da corte foram alvo de ransomware, mas em seguida reiterou dizendo que os dados foram criptografados.

Ataque na Saúde

Outro ciberataque também teria atingido o Ministério da Saúde, embora a invasão ainda não tenha sido confirmada pelo órgão. Técnicos da pasta, ouvidos pela reportagem do UOL, afirmaram que as máquinas estão danificadas com vírus e que acreditam ser ataque de hackers.

Em nota divulgada à imprensa, a assessoria do ministério diz que o departamento de tecnologia investiga uma "inconsistência" e que os serviços a usuários externos não foram prejudicados, mas não confirma o ataque hacker ou qualquer ligação com o problema enfrentado pelo STJ.

Além disso, o o à internet, contas de email e telefones fixos deixaram de funcionar para servidores do ministério.

Ataque ao governo do DF

Todos os sites do Governo do Distrito Federal estão fora do ar nesta quinta-feira (5). Em nota, a Secretaria de Economia do Distrito Federal (Seec) identificou, por meio da Subsecretaria de Tecnologia (Sutic), uma tentativa de ataque de hackers aos sistemas.

Segundo a pasta, os servidores ficaram indisponíveis por volta das 10h e não há previsão de retorno. A Polícia Civil do Distrito Federal (PCDF) já foi acionada, mas o departamento de tecnologia da secretaria não confirmou qualquer ligação com os casos na Saúde e no STJ.