;(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

Alemã morre durante ação hacker a hospital em 1ª possível tragédia do tipo

Ataque hacker a hospital da Alemanha pode ser responsável por morte - Getty Images
Ataque hacker a hospital da Alemanha pode ser responsável por morte Imagem: Getty Images

Gabriel Francisco Ribeiro

De Tilt, em São Paulo

17/09/2020 17h55

Uma mulher morreu na Alemanha durante um ataque hacker a um hospital em Dusseldorf, no que pode ser a primeira tragédia do tipo ligada a um ciberataque. Ela chegou em estado grave de saúde ao local, mas não pode ser atendida por causa da queda dos sistemas.

Por causa do ataque, a Clínica Universitária de Dusseldorf não pode aceitar pacientes em emergência e a mulher, em estado grave de saúde, acabou sendo direcionada para um centro hospitalar que ficava a 32 quilômetros de distância na cidade vizinha de Wuppertal, de acordo com a agência de notícias AP.

O veículo de imprensa local RTL aponta que o alvo do ataque do tipo ransomware (em que hackers sequestraram sistemas e exigem uma quantia para liberar o) inicialmente não era o hospital, mas sim uma universidade próxima.

Após serem avisados pelas autoridades de que a ação paralisou um hospital, o ataque foi interrompido e os hackers enviaram uma chave digital para liberar o sistema. Nenhum suspeito foi detido até o momento.

O site norte-americano The Verge cita que essa é possivelmente a primeira vez que uma pessoa morre em decorrência de um ataque hacker a hospital no mundo, área que preocupa profissionais de cibersegurança.

Ataque afetou sistemas

De acordo com a AP, o ataque hacker causou a falha dos sistema de TI (tecnologia da informação) do hospital na última quinta (10). Investigações apontam que os responsáveis se aproveitaram de um ponto fraco em um "software adicional comercial amplamente utilizado".

Em consequência disso, os sistemas do hospital caíram e a instituição não pode mais ar dados, com pacientes em emergência sendo levados a outras localidades. As cirurgias já marcadas foram adiadas por causa da ação.

O hospital aponta que não houve um pedido de resgate concreto dos sistemas e que não há indicativos de que os dados estejam irremediavelmente perdidos. Os sistemas de TI do local estão sendo restaurados aos poucos.

Segundo autoridades, 30 servidores do hospital foram criptografados na última semana e não houve nenhuma carta em meio a eles pedindo por resgate. Em vez disso, uma carta foi endereçada para a Universidade Heinrich Heine, à qual o hospital é afiliado.

Uma investigação foi lançada e, se o redirecionamento para o outro hospital for considerado a causa da morte, a polícia pode tratar o ciberataque como um homicídio.

Entenda o ataque ransom

O ataque do tipo ransomware envolve o sequestro de um sistema, com os hacker pedindo um resgate - normalmente em bitcoins - para liberá-lo novamente. Ele afeta mais empresas e o mais famoso deles foi o WannaCry que atingiu dezenas de países simultaneamente em 2017 - na época, hospitais do Reino Unido foram afetados, mas não houve nenhuma morte diretamente ligada ao ataque.

Os alvos principais são as redes corporativas (26,2%), mas pequenos golpes viram uma coisa corriqueira entre os comerciantes e prestadores de serviços, como restaurantes.

Cerca de metade das empresas brasileiras já sofreu algum tipo de ataque do tipo, de acordo com pesquisa da Trend Micro divulgada em 2017, que ouviu cerca de 300 empresas no Brasil e mais de 200 em outros países latino-americanos. O país é o mais afetado na América Latina, segundo a Kaspersky.

Segundo os especialistas em segurança, 65% dos negócios atingidos em 2017 perderam o a todos ou quase todos seus arquivos. Pior, uma em cada seis empresas que pagaram pelo resgate nunca recuperou seus dados.

Um dos motivos para que o ataque tenha se popularizado: ele é fácil de acontecer, deixa a vítima refém, porque há bem pouco a fazer contra ele, e o retorno financeiro para o criminoso é rápido.

A crescente digitalização de serviços deixa várias áreas em risco - uma delas é hospitais, em que a internet é importante para serviços como radiologia e, claro, dados de pacientes.