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

Atualize já! Bug em leitor de digitais de Galaxy S10 e Note 10 é corrigido

Galaxy S10: novos aparelhos da família de smartphones top da Samsung - Gabriel Francisco Ribeiro/UOL
Galaxy S10: novos aparelhos da família de smartphones top da Samsung Imagem: Gabriel Francisco Ribeiro/UOL

De Tilt, em São Paulo

24/10/2019 11h18

A Samsung começou a distribuir nesta quinta-feira (24) uma atualização para os aparelhos Galaxy S10, Galaxy S10+, Galaxy Note 10 e Galaxy Note 10+. O objetivo é corrigir uma falha de segurança que permitia que os dispositivos fossem desbloqueados com a digital de qualquer pessoa.

O problema acontecia quando determinados tipos de película eram aplicados ao aparelho. O leitor de digitais reconhecia o padrão dessas películas como uma digital, de forma que qualquer indivíduo que tentasse desbloquear o dispositivo com o seu dedo receberia a mesma leitura.

A falha só atingiu os aparelhos com leitor ultrassônico —então o Galaxy S10e, que inclui um sensor óptico na lateral, ficou de fora.

Após a instalação da atualização, a empresa recomenda registrar novamente as digitais, desta vez sem um protetor na tela.

Entenda o caso

Como qualquer um de nós faria, a britânica Lisa Neilson comprou uma película para proteger o seu celular novinho, um Galaxy S10. Mas descobriu que, por causa disso, qualquer um poderia desbloquear seu aparelho. Sem querer, Lisa expôs uma falha de segurança muito séria em um dos melhores celulares do mercado. O S10, como muitos celulares mais modernos, tem o sensor de reconhecimento de impressão digital, que desbloqueia a tela, localizado sob o vidro do visor.

Segundo o jornal "The Sun", após Lisa instalar uma película de gel no aparelho, comprada no Ebay, e cadastrar as impressões digitais do polegar da mão direita, ela descobriu que poderia destravar o aparelho com o polegar da outra mão, mesmo sem ter cadastrado as impressões desse dedo na lista de autorização do smartphone.

Ela pediu para Wes, seu marido, tentar destravar o aparelho e ele conseguiu fazer isso com os polegares de ambas as mãos. E nada garante que outra pessoa não faria o mesmo sem ela saber.

Considerando que a biometria é algo que diversos aplicativos utilizam como camada definitiva de segurança, como é o caso de apps de alguns bancos, essa é uma falha de segurança considerável.

A "relação conturbada" entre o Galaxy S10 e as populares películas de proteção de tela não é algo recente.

Antes do lançamento havia informações de que a tecnologia usada pela Samsung --exclusiva, que usa ondas ultrassônicas para fazer a varredura da tela e a leitura do relevo da pele do dedo-- não se dava bem com películas. Tanto que o S10 vem de fábrica com uma película plástica específica.

Até então, ao menos, a informação era de que o sistema não funcionaria caso uma película --seja de vidro ou gel-- estivesse instalada. Mas ninguém disse que esse ório inutilizaria completamente o sistema de segurança do aparelho.

O que fazer?

Além de atualizar o celular, a Samsung disse ao Tilt que os donos de Galaxy S10 devem entrar em contato pelos números 4004-0000 (capitais e grandes centros) e 0800-124-421 para sanar dúvidas ou ter o e adequado para realizar o da versão de software mais recente.

Tecnologias como a criptografia de dados —os iPhones já tem a opção ativada por padrão, enquanto no Android é possível ar a opção indo até Configurações> Segurança > Criptografia e credenciais - e a autenticação de dois fatores adicionam camadas extras de segurança e devem ser usados.

Há aplicativos para Android e iOS que permitem colocar senhas para ar os demais apps. As opções são variadas, mas eles seriam uma garantia que, mesmo com o celular destravado, somente a pessoa dona do aparelho pudesse ar apps de redes sociais, bancos etc.

SIGA TILT NAS REDES SOCIAIS