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

FBI lidera investigação sobre hack do Twitter; veja o que sabemos até agora

Estúdio Rebimboca/UOL
Imagem: Estúdio Rebimboca/UOL

Mirthyani Bezerra

Colaboração para Tilt

17/07/2020 13h28

Sem tempo, irmão

  • FBI lidera investigação federal sobre ataque hacker, diz Reuters
  • Na quarta-feira, Twitter sofreu a pior falha de segurança de sua história
  • Contas de políticos como Joe Biden e Barack Obama foram invadidas
  • Twitter afirma que investiga caso e que proverá atualizações quando as tiver
  • Existem indícios de que crime de "troca de cartão SIM" tenha sido usado

O FBI está liderando uma investigação federal sobre o ataque hacker sofrido pelo Twitter. A informação foi dada à agência Reuters, nesta quinta-feira (16), por duas fontes familiarizadas com a situação.

Na quarta (15), a rede social sofreu a pior falha de segurança de sua história —um problema que permitiu que criminosos tivessem o a contas de celebridades, políticos e empresários. Dentre as contas hackeadas estavam a do presidenciável norte-americano Joe Biden e do bilionário Bill Gates. O ataque parece ter sido uma fraude envolvendo bitcoin.

Anteriormente, o FBI havia dito: "Estamos cientes do incidente de segurança de hoje envolvendo várias contas do Twitter pertencentes a pessoas de grande importância. As contas parecem ter sido comprometidas para perpetuar uma fraude de criptomoedas".

Segundo o Twitter, os hackers do ataque tinham cerca de 130 alvos. A instabilidade durou horas e a empresa afirmou que a falha só aconteceu porque funcionários da rede social foram enganados ou coagidos.

"Detectamos o que acreditamos ser um ataque coordenado de engenharia social por pessoas que miraram com sucesso em alguns de nossos funcionários com o a sistemas internos e ferramentas", declarou a empresa.

Em postagem feita na quinta-feira, o Twitter afirma que investiga o caso e que proverá atualizações quando as tiver.

As pistas sobre o ataque

Os primeiros sinais públicos de que algo estava errado no Twitter apareceram por volta das 16h da quarta-feira (15h), no horário de Brasília, quando o Binance, uma conta para a troca de criptomoedas, tuitou uma mensagem dizendo que tinha parceria com a falsa entidade "CryptoForHealth" para devolver 5.000 bitcoin à comunidade, com um link onde as pessoas poderiam doar ou enviar dinheiro.

Minutos depois, tuítes parecidos surgiram em outras contas parecidas com a Binance, e nas contas de Biden, do fundador da Amazon, Jeff Bezos, do ex-presidente dos EUA Barack Obama, do executivo-chefe da Tesla, Elon Musk, entre outras personalidades. Uma análise da carteira do BTC promovida por muitos dos perfis hackeados do Twitter mostra que a conta processou 383 transações e recebeu quase 13 bitcoins - o equivalente a R$ 626 mil.

No seu blog, Brian Krebs, jornalista especializado em crimes cibernéticos, aponta haver fortes indícios de que o ataque foi cometido por especialistas em sequestrar contas de mídias sociais por meio de "SIM swap" (troca de cartão telefônico). Esta prática envolve subornar, hackear ou coagir funcionários de empresas de telefonia móvel e mídia social para que forneçam o à conta de um alvo, desabilitando o cartão telefônico e o religando em um novo que esteja na mão dos criminosos.

Citando uma fonte não identificada que trabalha com segurança em uma das maiores operadoras de telefonia móvel dos EUA, Krebs diz que um dos envolvidos com o grupo é um jovem de 21 anos do (Reino Unido), que esteve anteriormente envolvido no hack da conta do cofundador do Twitter Jack Dorsey, no ano ado.

Segundo Krebs, existe uma comunidade online de sequestradores de perfis e, nos dias que antecederam o ataque ao Twitter, havia sinais de que alguns deles estavam oferecendo alterar um endereço de email associado a qualquer conta da plataforma como serviço.

Em uma publicação no OGs (fórum dedicado ao sequestro de contas), um usuário chamado "Chaewon" anunciou que poderia alterar o endereço de email vinculado a qualquer conta do Twitter por US$ 250 (cerca de R$ 1.340 reais) e fornecer o direto a contas entre US$ 2.000 (R$ 10,7 mil) e US$ 3.000 (R$ 16 mil) cada uma.

Consequências

A invasão em massa de contas do Twitter de políticos, bilionários e empresas levantou o debate sobre a segurança da rede social favorita de chefes de Estado. As consequências para os atingidos, até agora, foram limitadas porque o Twitter reagiu rapidamente desativando as contas e limitando as possibilidades de compartilhar mensagens suspeitas.

A "sorte" do Twitter, nesse caso, é que os hackers buscaram apenas um lucro rápido, além de chamar a atenção para o tamanho da operação. Mas o problema poderia ter sido mais grave se eles tivessem intenções políticas.

Nesse caso, não há como se proteger porque o ataque que afetou o Twitter, caso isso seja de fato confirmado, ocorreu devido a uma falha humana dentro da própria plataforma. Até onde se sabe, os dispositivos de segurança da plataforma não foram comprometidos.