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

Existe um tipo de hacker que se aproveita de bagunça e papéis para invadir

Hacker visual é especialista em bisbilhotar seus eletrônicos - Getty Images/iStockphoto
Hacker visual é especialista em bisbilhotar seus eletrônicos Imagem: Getty Images/iStockphoto

Rodrigo Lara

Colaboração para o UOL, em São Paulo

04/09/2018 04h00

Sabe aquela papelada que você deixa espalhada sobre a sua mesa de trabalho ou aqueles post-its com que supostamente contêm informações inofensivas? Eles são a deixa que um hacker visual precisa para obter informações bem mais valiosas. 

Quando falamos de hackers, logo imaginamos experts agindo de forma criminosas usando a internet para atacar computadores. O hacker visual, porém, rouba informações usando a visão --e não necessariamente tem conhecimento sobre invadir computadores. É alguém especializado em bisbilhotar.

O criminoso fica esperto nas informações que você expôe com pequenos vacilos, por exemplo: largando um documento na mesa, deixando a tela do computador com dados sensíveis à mostra ou grudando post-its em torno do PC (quem nunca?).

Duvida? Em 2016, o Instituto Ponemon, especializado em privacidade e segurança, fez uma experiência e tentou infiltrar uma pessoa em 46 empresas.

A meta desse "novo funcionário" era obter informações, observando e eventualmente tirando fotos da tela dos computadores de outros funcionários, roubando papéis com informações sensíveis que eram deixados sobre as mesas e espiando documentos que saíam de impressoras. Ele não tentaria se esconder dos demais trabalhadores da companhia. 

Resultado: 91% das 157 tentativas de hacking visual foram um sucesso.

Por meio delas, foram obtidas 613 informações distintas, incluindo dados de o, informações financeiras e documentos confidenciais.

Em 68% das vezes, ninguém sequer percebeu a atividade ilícita.

"Quando a gente fala de segurança, um dos pontos principais é dizer o quanto o ambiente de trabalho mudou", afirma Bruno Ortolani, gerente de categoria da HP Brasil:

O layout dos escritórios não é mais o mesmo, há muitas baias abertas e você praticamente trabalha onde o seu computador estiver, inclusive fora do escritório

Se o hacking visual pode fazer com que dados confidenciais de uma empresa sejam roubados, o mesmo vale para seus dados pessoais.

Imagine que você está em um ambiente público, como um aeroporto ou shopping, e resolve ar informações bancárias. 

Nada impede que alguém observe sua ação e sua digitação em um notebook ou smartphone, a fim de obter credenciais de o, por exemplo. Ou, ainda, tente visualizar as informações que aparecem na tela do dispositivo. 

Está seguro? Veja como ficar mais protegido online

Leia mais

Chega de bagunça

Algumas atitudes diminuem bastante a chance do criminoso obter sucesso. A primeira coisa é acabar com aquela bagunça sobre sua mesa, já que a chance de haver algum papel com informação confidencial ou adesivo com alguma senha perdido entre essas folhas é grande
 
Nunca tenha sua senha anotada em adesivos. Pode parecer óbvio, mas já vi diversos usuários que deixavam essa informação colada na borda de monitores

"O mesmo vale para deixar senhas anotadas em arquivos salvos no computador. O ideal, neste caso, é usar aplicativos que sejam cofres de senha, que armazenam a informação de forma criptografada", diz Ortolani.
 
E, na hora de jogar esses papéis fora, o ideal é picá-los antes de jogá-los na lixeira. 
 
Ortolani destaca que hoje em dia é comum que notebooks tenham leitor de digitais. "O primeiro o é garantir que seu equipamento não tenha apenas uma senha de o, mas também algum outro tipo de autenticação, como leitura de digitais ou reconhecimento facial". 
 
Ele aponta que um segundo fator de autenticação evita que alguém roube sua senha ao observar enquanto você digita. O mesmo vale para celulares com leitores de digitais, que permitem, entre outras coisas, destravamento e confirmação de transações bancárias, por exemplo. 
 
Nunca deixe seu dispositivo desbloqueado enquanto estiver longe dele. "Mesmo que você se ausente por pouco tempo, isso pode ser suficiente para alguém roubar informações", ressalta o especialista.
 
Por fim, considere utilizar meios para evitar que pessoas enxerguem a tela do seu computador. Já existem telas e películas anti-espiões.

Outra opções é usar produtos com a tecnologia de micropersiana, baseada na ciência óptica, que bloqueia a visão para quem está fora de um ângulo de 60º em relação a partir do centro da tela --os preços ficam na faixa dos R$ 200 e R$ 300.

Seja o método escolhido, é importante ficar atento, especialmente se você costuma trabalhar em locais públicos ou utiliza computadores nessa situação. Com essas atitudes simples, as chances de você ter problemas envolvendo hacking visual devem diminuir e muito. 

Fita adesiva na câmera? Sim, isso pode funcionar

UOL Notícias