{"id":13921,"date":"2020-01-29T18:37:25","date_gmt":"2020-01-29T21:37:25","guid":{"rendered":"https:\/\/www.kaspersky.com.br\/blog\/?p=13921"},"modified":"2020-01-29T18:37:25","modified_gmt":"2020-01-29T21:37:25","slug":"36c3-pdf-digital-signature","status":"publish","type":"post","link":"https:\/\/www.kaspersky.com.br\/blog\/36c3-pdf-digital-signature\/13921\/","title":{"rendered":"Devemos confiar nas assinaturas digitais em arquivos PDF?"},"content":{"rendered":"<p>Quase todas as empresas ou ag\u00eancias governamentais utilizam arquivos PDF -geralmente com assinaturas digitais para garantir a autenticidade. Quando voc\u00ea abre um arquivo assinado em qualquer visualizador de PDF, o programa exibe um sinalizador indicando por quem o documento est\u00e1 assinado, e fornece acesso ao menu de valida\u00e7\u00e3o.<\/p>\n<p>Assim, uma equipe de pesquisadores de v\u00e1rias universidades alem\u00e3s decidiu testar a seguran\u00e7a das assinaturas em PDF. Vladislav Mladenov, do Ruhr-Universit\u00e4t Bochum, <a href=\"https:\/\/media.ccc.de\/v\/36c3-10832-how_to_break_pdfs\" target=\"_blank\" rel=\"noopener nofollow\">compartilhou as descobertas da equipe<\/a> durante apresenta\u00e7\u00e3o no Chaos Communication Congress (36\u04213)<\/p>\n<p>A tarefa dos pesquisadores era simples: modificar o conte\u00fado de um documento PDF assinado sem invalidar a assinatura. Na teoria, os cibercriminosos poderiam fazer o mesmo para transmitir informa\u00e7\u00f5es falsas ou adicionar conte\u00fado malicioso a um arquivo autenticado. Afinal, os clientes que recebem um documento assinado de um banco, por exemplo, provavelmente confiam nele e clicam em qualquer link.<\/p>\n<p>A equipe selecionou 22 visualizadores de PDF mais populares, para v\u00e1rias plataformas, e forneceu a eles os resultados de seus experimentos.<\/p>\n<h2>Estrutura do arquivo PDF<\/h2>\n<div id=\"attachment_13923\" style=\"width: 201px\" class=\"wp-caption alignright\"><img decoding=\"async\" aria-describedby=\"caption-attachment-13923\" class=\"wp-image-13923 size-full\" src=\"https:\/\/media.kasperskydaily.com\/wp-content\/uploads\/sites\/94\/2020\/01\/29183122\/36C3-PDF-digital-signature-1.png\" alt=\"Estrutura de arquivo em PDF. Cabe\u00e7alho, Corpo, Tabela Xref e Trailer; Atualiza\u00e7\u00f5es no Corpo, Tabela Xref e Trailer. Todos protegidos por assinatura.\" width=\"191\" height=\"279\"><p id=\"caption-attachment-13923\" class=\"wp-caption-text\">Estrutura de arquivo em PDF. Cabe\u00e7alho, Corpo, Tabela Xref e Trailer; Atualiza\u00e7\u00f5es no Corpo, Tabela Xref e Trailer. Todos protegidos por assinatura.<\/p><\/div>\n<p>Primeiro, fa\u00e7amos uma introdu\u00e7\u00e3o sobre o formato PDF. Cada arquivo consiste em quatro partes principais: o cabe\u00e7alho (Header, em ingl\u00eas), que mostra a vers\u00e3o PDF; o corpo (Body), que mostra o conte\u00fado principal visto pelo usu\u00e1rio; a se\u00e7\u00e3o Xref, um diret\u00f3rio que lista os objetos dentro do corpo do arquivo e seus locais (para exibi\u00e7\u00e3o do conte\u00fado); e o <em>trailer<\/em>, que \u00e9 onde os leitores de PDF come\u00e7am a ler o documento. O <em>trailer<\/em> cont\u00e9m dois par\u00e2metros importantes que informam ao programa por onde come\u00e7ar o processamento do arquivo e onde a se\u00e7\u00e3o Xref come\u00e7a.<\/p>\n<p>Uma fun\u00e7\u00e3o de atualiza\u00e7\u00e3o integrada ao formato permite ao usu\u00e1rio, por exemplo, destacar parte do texto e deixar coment\u00e1rios. Do ponto de vista t\u00e9cnico, a fun\u00e7\u00e3o adiciona mais tr\u00eas se\u00e7\u00f5es: atualiza\u00e7\u00f5es para o corpo do arquivo, um novo diret\u00f3rio Xref e um novo <em>trailer<\/em>. Isso efetivamente torna poss\u00edvel alterar a maneira como os objetos s\u00e3o vistos pelo usu\u00e1rio e adicionar novo conte\u00fado. Em ess\u00eancia, uma assinatura digital tamb\u00e9m \u00e9 uma atualiza\u00e7\u00e3o adicional, adicionando outro elemento e as se\u00e7\u00f5es correspondentes ao arquivo.<\/p>\n<h2>Ataque ISA (Incremental saving attack)<\/h2>\n<div id=\"attachment_13924\" style=\"width: 208px\" class=\"wp-caption alignright\"><img decoding=\"async\" aria-describedby=\"caption-attachment-13924\" class=\"wp-image-13924 size-full\" src=\"https:\/\/media.kasperskydaily.com\/wp-content\/uploads\/sites\/94\/2020\/01\/29183325\/36C3-PDF-digital-signature-2.png\" alt=\"Adicionando uma atualiza\u00e7\u00e3o.\" width=\"198\" height=\"405\"><p id=\"caption-attachment-13924\" class=\"wp-caption-text\">Adicionando uma atualiza\u00e7\u00e3o.<\/p><\/div>\n<p>Primeiro, a equipe tentou adicionar se\u00e7\u00f5es extras ao arquivo com outra atualiza\u00e7\u00e3o incremental, usando um editor de texto. A rigor, isso n\u00e3o \u00e9 um ataque \u2013 a equipe simplesmente usou uma fun\u00e7\u00e3o implementada pelos desenvolvedores do formato. Quando um usu\u00e1rio abre um arquivo que foi modificado dessa maneira, o leitor de PDF geralmente exibe uma mensagem informando que a assinatura digital \u00e9 v\u00e1lida, mas o documento foi modificado. N\u00e3o \u00e9 a mensagem mais esclarecedora, especialmente n\u00e3o para um usu\u00e1rio inexperiente. Pior que isso: um dos visualizadores de PDF (LibreOffice) nem exibiu a mensagem.<\/p>\n<p>O pr\u00f3ximo experimento envolveu a remo\u00e7\u00e3o das duas se\u00e7\u00f5es finais (ou seja, a adi\u00e7\u00e3o de uma atualiza\u00e7\u00e3o ao corpo, mas n\u00e3o o novo Xref e o trailer). Alguns aplicativos se recusaram a trabalhar com esse arquivo. Dois visualizadores de PDF detectaram que as se\u00e7\u00f5es estavam ausentes e as adicionaram automaticamente sem notificar o leitor sobre uma altera\u00e7\u00e3o no conte\u00fado. Tr\u00eas outros carregaram o arquivo sem nenhuma obje\u00e7\u00e3o.<\/p>\n<p>Em seguida, os pesquisadores se perguntaram o que aconteceria se eles simplesmente copiassem a assinatura digital em sua pr\u00f3pria atualiza\u00e7\u00e3o \u201cmanual\u201d. Outros dois leitores ca\u00edram nessa \u2013 o Foxit e o MasterPDF.<\/p>\n<p>No total, 11 dos 22 leitores de PDF mostraram-se vulner\u00e1veis \u200b\u200ba essas simples manipula\u00e7\u00f5es. Al\u00e9m disso, seis deles n\u00e3o mostraram absolutamente nenhum sinal de que o documento aberto para visualiza\u00e7\u00e3o havia sido modificado. Nos outros cinco casos, para revelar qualquer sinal de manipula\u00e7\u00e3o, o usu\u00e1rio teve que entrar no menu e verificar a validade da assinatura digital manualmente; simplesmente abrir o arquivo n\u00e3o era suficiente para mostrar a falha.<\/p>\n<h2>Ataque SWA (Signature wrapping attack)<\/h2>\n<div id=\"attachment_13925\" style=\"width: 196px\" class=\"wp-caption alignright\"><img decoding=\"async\" aria-describedby=\"caption-attachment-13925\" class=\"wp-image-13925 size-full\" src=\"https:\/\/media.kasperskydaily.com\/wp-content\/uploads\/sites\/94\/2020\/01\/29183446\/36C3-PDF-digital-signature-3.png\" alt=\"Adicionando uma assinatura digital\" width=\"186\" height=\"277\"><p id=\"caption-attachment-13925\" class=\"wp-caption-text\">Adicionando uma assinatura digital<\/p><\/div>\n<p>Ao assinar um documento, dois campos importantes s\u00e3o adicionados como uma atualiza\u00e7\u00e3o adicional ao corpo do arquivo: \/Conte\u00fado (Contents), que cont\u00e9m a assinatura, e \/ByteRange, que descreve exatamente o que foi assinado. Neste \u00faltimo, existem quatro par\u00e2metros (que definem o in\u00edcio do arquivo, o n\u00famero de bytes antes do c\u00f3digo da assinatura, um byte que determina onde o c\u00f3digo da assinatura termina e o n\u00famero de bytes ap\u00f3s a assinatura) porque a assinatura digital \u00e9 uma sequ\u00eancia de caracteres gerado por meios criptogr\u00e1ficos a partir do c\u00f3digo do documento PDF. Naturalmente, a assinatura n\u00e3o pode assinar-se sozinha, portanto, a \u00e1rea onde est\u00e1 armazenada \u00e9 exclu\u00edda do processo de c\u00e1lculo da assinatura.<\/p>\n<p>Os pesquisadores tentaram adicionar outro campo \/ByteRange imediatamente ap\u00f3s a assinatura. Os dois primeiros valores permaneceram inalterados, apenas o endere\u00e7o do final do c\u00f3digo de assinatura foi alterado. O resultado foi o aparecimento de um espa\u00e7o adicional no arquivo, permitindo a adi\u00e7\u00e3o de objetos maliciosos, bem como a se\u00e7\u00e3o Xref que os descreve. Na teoria, se o arquivo fosse lido corretamente, o visualizador de PDF simplesmente n\u00e3o chegaria a esta se\u00e7\u00e3o. No entanto, 17 dos 22 aplicativos estavam vulner\u00e1veis \u200b\u200ba esse ataque.<\/p>\n<h2>Falsifica\u00e7\u00e3o de assinaturas universais (USF)<\/h2>\n<p>Para maior precis\u00e3o, o time de pesquisadores tamb\u00e9m decidiu realizar um teste de estresse nos aplicativos contra um truque conhecido, onde \u00e9 realizada uma tentativa de substituir os valores dos campos com informa\u00e7\u00f5es incorretas, ou simplesmente delet\u00e1-los. Quando o experimento \u00e9 feito na se\u00e7\u00e3o de conte\u00fados, descobriu-se que, se a assinatura verdadeira fosse substitu\u00edda por \u201c0x00\u201d, dois programas de leitura ainda assim validavam o documento.<\/p>\n<p>E se a assinatura for deixada no devido lugar, mas a se\u00e7\u00e3o \/ByteRange (que \u00e9 a informa\u00e7\u00e3o sobre o que voc\u00ea assinou exatamente) fosse deletada? Ou um espa\u00e7o em branco fosse inserido no lugar dos dados reais? Em ambos os casos, alguns programas validaram a assinatura mesmo assim.<\/p>\n<p>No total, foram encontrados erros de implementa\u00e7\u00e3o que poderiam ser explorados em 4 dos 22 programas.<\/p>\n<p>A tabela abaixo \u00e9 um resumo que mostrar que nada menos do que 21 dos 22 leitores de PDF poderiam ser enganados. Ou seja, para todos exceto um, \u00e9 poss\u00edvel criar um arquivo PDF com conte\u00fado malicioso ou informa\u00e7\u00e3o falsa que pode parecer v\u00e1lido para o usu\u00e1rio.<\/p>\n<p><img decoding=\"async\" class=\"aligncenter size-full wp-image-13926\" src=\"https:\/\/media.kasperskydaily.com\/wp-content\/uploads\/sites\/94\/2020\/01\/29183550\/36C3-PDF-digital-signature-4.png\" alt=\"\" width=\"618\" height=\"383\"><\/p>\n<p><em>Tabela resumo das vulnerabilidades dos leitores de PDF. <\/em><a href=\"https:\/\/media.ccc.de\/v\/36c3-10832-how_to_break_pdfs\" target=\"_blank\" rel=\"noopener nofollow\"><em>Fonte<\/em><\/a><\/p>\n<p>Curiosamente, o \u00fanico aplicativo que n\u00e3o caiu em nenhum dos truques dos pesquisadores foi o Adobe Reader 9. O problema \u00e9 que ele \u00e9 suscet\u00edvel a uma vulnerabilidade do RCE e \u00e9 usado apenas pelos usu\u00e1rios do Linux, simplesmente porque \u00e9 a vers\u00e3o mais recente dispon\u00edvel para sistema operacional.<\/p>\n<h2>Conclus\u00f5es pr\u00e1ticas<\/h2>\n<p>Quais conclus\u00f5es pr\u00e1ticas podemos tirar de tudo isso? Em primeiro lugar, ningu\u00e9m deve confiar cegamente em assinaturas digitais em PDFs. Se voc\u00ea ver uma marca verde de verifica\u00e7\u00e3o em algum lugar, aquilo n\u00e3o necessariamente significa que \u00e9 uma assinatura v\u00e1lida.<\/p>\n<p>Em segundo lugar, mesmo um documento assinado pode representar um risco. Ent\u00e3o, antes de abrir qualquer arquivo recebido online ou de clicar em quaisquer links contido neles, esteja certo que voc\u00ea tem uma <a href=\"https:\/\/www.kaspersky.com.br\/small-to-medium-business-security?icid=br_kdailyplacehold_acq_ona_smm__onl_b2b_kasperskydaily_wpplaceholder_______\" target=\"_blank\" rel=\"noopener\">solu\u00e7\u00e3o de seguran\u00e7a confi\u00e1vel<\/a> instalada em seu computador.<br>\n<input type=\"hidden\" class=\"category_for_banner\" value=\"kesb-trial\"><\/p>\n","protected":false},"excerpt":{"rendered":"<p>Pesquisadores tentam modificar os conte\u00fados de um arquivo PDF assinado sem invalidar a assinatura<\/p>\n","protected":false},"author":61,"featured_media":13922,"comment_status":"closed","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"_acf_changed":false,"footnotes":""},"categories":[1119,1655],"tags":[2113,2118,1185,1392,1483,108,2117],"class_list":{"0":"post-13921","1":"post","2":"type-post","3":"status-publish","4":"format-standard","5":"has-post-thumbnail","7":"category-business","8":"category-enterprise","9":"tag-36c3","10":"tag-assinatura-digital","11":"tag-business","12":"tag-ccc","13":"tag-chaos-communication-congress","14":"tag-criptografia","15":"tag-pdf"},"hreflang":[{"hreflang":"pt-br","url":"https:\/\/www.kaspersky.com.br\/blog\/36c3-pdf-digital-signature\/13921\/"},{"hreflang":"en-in","url":"https:\/\/www.kaspersky.co.in\/blog\/36c3-pdf-digital-signature\/18382\/"},{"hreflang":"en-ae","url":"https:\/\/me-en.kaspersky.com\/blog\/36c3-pdf-digital-signature\/15256\/"},{"hreflang":"ar","url":"https:\/\/me.kaspersky.com\/blog\/36c3-pdf-digital-signature\/7402\/"},{"hreflang":"en-us","url":"https:\/\/usa.kaspersky.com\/blog\/36c3-pdf-digital-signature\/20142\/"},{"hreflang":"en-gb","url":"https:\/\/www.kaspersky.co.uk\/blog\/36c3-pdf-digital-signature\/18443\/"},{"hreflang":"es-mx","url":"https:\/\/latam.kaspersky.com\/blog\/36c3-pdf-digital-signature\/16892\/"},{"hreflang":"es","url":"https:\/\/www.kaspersky.es\/blog\/36c3-pdf-digital-signature\/20888\/"},{"hreflang":"it","url":"https:\/\/www.kaspersky.it\/blog\/36c3-pdf-digital-signature\/19665\/"},{"hreflang":"ru","url":"https:\/\/www.kaspersky.ru\/blog\/36c3-pdf-digital-signature\/26041\/"},{"hreflang":"tr","url":"https:\/\/www.kaspersky.com.tr\/blog\/36c3-pdf-digital-signature\/7543\/"},{"hreflang":"x-default","url":"https:\/\/www.kaspersky.com\/blog\/36c3-pdf-digital-signature\/32073\/"},{"hreflang":"pl","url":"https:\/\/plblog.kaspersky.com\/36c3-pdf-digital-signature\/12666\/"},{"hreflang":"de","url":"https:\/\/www.kaspersky.de\/blog\/36c3-pdf-digital-signature\/21928\/"},{"hreflang":"zh","url":"https:\/\/www.kaspersky.com.cn\/blog\/36c3-pdf-digital-signature\/10635\/"},{"hreflang":"ja","url":"https:\/\/blog.kaspersky.co.jp\/36c3-pdf-digital-signature\/26709\/"},{"hreflang":"nl","url":"https:\/\/www.kaspersky.nl\/blog\/36c3-pdf-digital-signature\/24856\/"},{"hreflang":"ru-kz","url":"https:\/\/blog.kaspersky.kz\/36c3-pdf-digital-signature\/20827\/"},{"hreflang":"en-au","url":"https:\/\/www.kaspersky.com.au\/blog\/36c3-pdf-digital-signature\/25667\/"},{"hreflang":"en-za","url":"https:\/\/www.kaspersky.co.za\/blog\/36c3-pdf-digital-signature\/25498\/"}],"acf":[],"banners":"","maintag":{"url":"https:\/\/www.kaspersky.com.br\/blog\/tag\/business\/","name":"Business"},"_links":{"self":[{"href":"https:\/\/www.kaspersky.com.br\/blog\/wp-json\/wp\/v2\/posts\/13921","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.kaspersky.com.br\/blog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.kaspersky.com.br\/blog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.kaspersky.com.br\/blog\/wp-json\/wp\/v2\/users\/61"}],"replies":[{"embeddable":true,"href":"https:\/\/www.kaspersky.com.br\/blog\/wp-json\/wp\/v2\/comments?post=13921"}],"version-history":[{"count":1,"href":"https:\/\/www.kaspersky.com.br\/blog\/wp-json\/wp\/v2\/posts\/13921\/revisions"}],"predecessor-version":[{"id":13927,"href":"https:\/\/www.kaspersky.com.br\/blog\/wp-json\/wp\/v2\/posts\/13921\/revisions\/13927"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/www.kaspersky.com.br\/blog\/wp-json\/wp\/v2\/media\/13922"}],"wp:attachment":[{"href":"https:\/\/www.kaspersky.com.br\/blog\/wp-json\/wp\/v2\/media?parent=13921"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.kaspersky.com.br\/blog\/wp-json\/wp\/v2\/categories?post=13921"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.kaspersky.com.br\/blog\/wp-json\/wp\/v2\/tags?post=13921"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}