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

Sabia que roteador pega vírus? Saiba se proteger antes que seja tarde

Freepik
Imagem: Freepik

Rodrigo Lara

Colaboração para Tilt

06/03/2020 04h00

A ameaça não é só no computador ou no celular. O seu roteador de internet pode estar infectado por um vírus. A lista de possíveis infecções de roteadores é grande e pode incluir vários tipos de malware. Há solução, claro, mas antes é preciso entender o problema.

Mas como é possível um roteador receber vírus? Qualquer sistema computacional pode, em tese, ser adulterado ou receber programas estranhos instalados para fins maliciosos. Até mesmo a entrada da nossa web.

"Isso vale especialmente se considerarmos de uns 20 anos para cá, quando as memórias flash começaram a ser lugar comum em quase que qualquer dispositivo de menor porte, como roteadores", diz o professor Paulo Lício de Geus, do Instituto de Computação da Universidade Estadual de Campinas (Unicamp).

De forma geral, o intuito de um ataque do tipo gira em torno do roubo de dados do usuário. Como o roteador funciona como um "portão" que gerencia as conexões de diversos aparelhos com a internet, o seu comprometimento representa um enorme risco para todos que o usam para ar a rede.

Tipicamente, os ataques a roteadores são usados como ferramenta para ataques DDoS (negação de serviço distribuída). Eles servem para controlar muitos aparelhos, que enviam ao mesmo tempo enormes quantidades de dados a sites com a finalidade de derrubá-los.

"Mas, mais recentemente, os ataques começaram a se especializar em quebrar privacidade do usuário doméstico, tentando obter dados privados nos os a servidores externos", afirma De Geus.

Para alcançar o objetivo de roubar dados —senhas, por exemplo—, os hackers adotam várias técnicas diferentes. Uma delas consiste em alterar o endereço DNS do roteador, fazendo com que, ao digitar o endereço de um site como o do seu banco, por exemplo, ele leve você a um site falso.

"Outros adicionam anúncios, redirecionam pesquisas ou tentam baixar programas, tentando se aproveitar de usuários mais desatentos. Há alguns ainda que interrompem o o à internet ou até mesmo corrompem o sistema operacional do roteador, deixando-o inoperante", diz Rudolf Buhler, professor de Engenharia Elétrica do Centro Universitário FEI.

Os especialistas apontam que ataques do tipo não ocorrem com tanta frequência. Mas, quando acontecem, a extensão dos danos é enorme. "Em 2018, por exemplo, foi descoberto um caso onde pelo menos 500 mil roteadores em 54 países foram infectados", afirma Buhler.

Roteador, wi-fi, banda larga, espelho, internet - Getty Images/iStockphoto - Getty Images/iStockphoto
Imagem: Getty Images/iStockphoto

Como descobrir e evitar?

O maior problema é que roteadores infectados funcionam normalmente a maior parte do tempo. Desta forma, usuários pouco atentos dificilmente perceberão mudanças no funcionamento dos seus aparelhos. Mas, há alguns detalhes que, se observados, podem denunciar um ataque do tipo.

Em alguns casos, é possível notar diferença no tempo de carregamento de determinados sites. Se eles são usados sempre, mas um dia acabam tendo uma página inválida como resposta —ou, ainda, a presença de anúncios inapropriados, como banners de conteúdo pornográfico— é porque tem algo estranho.

Uma boa olhada no de controle do seu roteador (o o varia de acordo com o modelo) também pode ajudar a identificar uma possível infecção. Para isso, vale consultar o manual do roteador ou o telefone de atendimento da marca dele.

"O recomendado é verificar qual servidor DNS o roteador está utilizando. Se você encontrar o número '0.0.0.0' está tudo bem, o seu roteador está utilizando o servidor do seu provedor de internet. Outros servidores legítimos existentes são os do Google, identificados por '8.8.8.8' e '8.8.4.4', ou do OpenDNS, com números '208.67.222.222' e '208.67.220.220'", afirma Buhler.

E não precisa se desesperar caso você descubra que o seu roteador, de fato, está com problemas. A solução é fácil. O primeiro o é fazer o "reset" do roteador para as configurações de fábrica. Em seguida, será preciso atualizar o aparelho. Novamente, vale recorrer ao manual ou a um atendente da fabricante.

"Uma atualização do firmware quase sempre limpará o dispositivo de qualquer coisa pré-existente, tanto firmware quanto eventual malware", diz De Geus.

Depois dessa limpeza e da atualização, o ideal é dar uma boa reforçada na segurança do seu roteador, começando pela troca da senha de o à rede por uma nova e exclusiva. Não sabe por onde começar? Então siga essas dicas e garanta que o seu roteador e seus dados estejam longe das mãos de criminosos.

SIGA TILT NAS REDES SOCIAIS