{"id":24856,"date":"2020-01-16T17:31:52","date_gmt":"2020-01-16T15:31:52","guid":{"rendered":"https:\/\/www.kaspersky.nl\/blog\/?p=24856"},"modified":"2022-05-05T13:57:32","modified_gmt":"2022-05-05T11:57:32","slug":"36c3-pdf-digital-signature","status":"publish","type":"post","link":"https:\/\/www.kaspersky.nl\/blog\/36c3-pdf-digital-signature\/24856\/","title":{"rendered":"Kunt u digitale handtekeningen in pdf-bestanden vertrouwen?"},"content":{"rendered":"<p>Er bestaat bijna geen enkele overheidsinstelling die geen pdf-bestanden gebruikt. En die gebruiken vaak digitale handtekeningen om de authenticiteit van dit soort documenten te waarborgen. Bij het openen van een ondertekend bestand in welke pdf-viewer dan ook, toont het programma een vlaggetje dat aangeeft dat het document ondertekend is, door wie, en het biedt toegang tot het menu voor de validering van de handtekening.<\/p>\n<p>Een team van onderzoekers van verschillende Duitse universiteiten wilde de degelijkheid van zulke pdf-handtekeningen eens testen. Vladislav Mladenov van de Ruhr-Universit\u00e4t Bochum <a href=\"https:\/\/media.ccc.de\/v\/36c3-10832-how_to_break_pdfs\" target=\"_blank\" rel=\"noopener nofollow\">deelde de bevindingen van het team<\/a> tijdens het Chaos Communication Congress (36\u04213).<\/p>\n<p>De taak van de onderzoekers was eenvoudig: proberen om de inhoud van een ondertekend pdf-bestand te wijzigen zonder dat de handtekening daarbij ongeldig werd. In principe zouden cybercriminelen hetzelfde kunnen doen om valse informatie te verspreiden of schadelijke content aan een ondertekend bestand toe te voegen. Klanten die een ondertekend document van een bank ontvangen zijn tenslotte eerder geneigd om dit te vertrouwen en op links in het bestand te klikken.<\/p>\n<p>Het team selecteerde 22 populaire pdf-viewers voor verschillende platformen, en gingen systematisch te werk met de resultaten van hun experimenten.<\/p>\n<h2>Structuur van een pdf-bestand<\/h2>\n<p>llereerst bieden we wat meer informatie over het pdf-formaat. Elk bestand bestaat uit vier hoofdonderdelen: de header die de <img loading=\"lazy\" decoding=\"async\" class=\"size-full wp-image-24859 alignright\" src=\"https:\/\/media.kasperskydaily.com\/wp-content\/uploads\/sites\/99\/2020\/01\/16171606\/36C3-PDF-digital-signature-1.png\" alt=\"\" width=\"191\" height=\"279\">pdf-versie toont; de body (tekstinhoud) met de belangrijkste content die de gebruiker ziet; de Xref-sectie, een lijst die de voorwerpen in de tekstinhoud en hun locatie opsomt (voor het weergeven van de content); en de trailer, waar de pdf-viewers mee starten om het document te lezen. De trailer bevat twee belangrijke parameters die het programma vertellen waar er moet worden begonnen met het verwerken van het bestand, en waar de Xref-sectie begint.<\/p>\n<p>Er is een incrementele update-functie in het formaat ge\u00efntegreerd die de gebruiker in staat stelt om bijvoorbeeld een gedeelte van de tekst te markeren en opmerkingen toe te voegen. Vanuit een technisch oogpunt voegt deze functie nog drie secties toe: updates voor de body, een nieuwe Xref-lijst en een nieuwe trailer. Dat zorgt ervoor dat het inderdaad mogelijk is om te veranderen hoe de objecten door de gebruiker gezien worden, \u00e9n om nieuwe content toe te voegen. Eigenlijk is een digitale handtekening ook een incrementele update, waardoor er nog een element en daarbij de corresponderende secties aan het bestand worden toegevoegd.<\/p>\n<h2>Incremental saving attack (ISA)<\/h2>\n<p>erst probeerde het team om extra secties aan het bestand toe te voegen met een andere incrementele update met gebruik van<img loading=\"lazy\" decoding=\"async\" class=\"size-full wp-image-24860 alignright\" src=\"https:\/\/media.kasperskydaily.com\/wp-content\/uploads\/sites\/99\/2020\/01\/16172458\/36C3-PDF-digital-signature-2.png\" alt=\"\" width=\"198\" height=\"405\"> een teksteditor. Strikt gezien is dat geen aanval, want het team gebruikte simpelweg een functie die was ge\u00efmplementeerd door de makers van het formaat. Als een gebruiker een bestand opent dat op deze manier is gewijzigd, geeft de pdf-reader normaal gesproken een melding weer waarin staat dat de digitale handtekening geldig is, maar dat het document is gewijzigd. Niet het meest verhelderende bericht, vooral niet voor een onervaren gebruiker. En wat erger is: een van de pdf-viewers (LibreOffice) toonde dat bericht niet eens.<\/p>\n<p>Het volgende experiment omvatte het verwijderen van de laatste twee secties (dus het toevoegen van een update aan de body, maar niet de nieuwe Xref en trailer). Sommige applicaties weigerden om met zo\u2019n bestand te werken. Twee pdf-viewers zagen dat de secties ontbraken en voegden ze automatisch toe zonder de lezer op de hoogte te stellen van een wijziging in de inhoud. Drie andere slikten het bestand zonder enig bezwaar.<\/p>\n<p>Vervolgens vroegen de onderzoekers zich af wat er zou gebeuren als ze de digitale handtekening simpelweg zouden kopi\u00ebren naar hun eigen \u201chandmatige\u201d update. Daar vielen nog twee viewers voor: Foxit en MasterPDF.<\/p>\n<p>In het totaal bleken 11 van de 22 pdf-viewers kwetsbaar te zijn voor deze eenvoudige manipulaties. Bovendien toonden zes daarvan zelfs geen enkele tekenen van het feit dat het geopende document gewijzigd was. In de andere vijf gevallen moest de gebruiker naar het menu gaan om tekenen van manipulatie te onthullen, en daar handmatig kijken naar de geldigheid van de digitale handtekening; het eenvoudigweg openen van het bestand was niet voldoende.<\/p>\n<h2>Signature wrapping attack (SWA)<\/h2>\n<p>Het ondertekenen van een document voegt twee belangrijke velden als incrementele update aan de body toe: \/Contents, wat de <img loading=\"lazy\" decoding=\"async\" class=\"size-full wp-image-24861 alignright\" src=\"https:\/\/media.kasperskydaily.com\/wp-content\/uploads\/sites\/99\/2020\/01\/16172520\/36C3-PDF-digital-signature-3.png\" alt=\"\" width=\"186\" height=\"277\">handtekening bevat, en \/ByteRange, wat beschrijft wat er precies ondertekend is. In de laatste zitten vier parameters \u2014 om de start van het bestand te defini\u00ebren, het aantal bytes v\u00f3\u00f3r de handtekeningcode, een byte die bepaalt waar de handtekeningcode eindigt, en het aantal bytes na de handtekening \u2014 omdat de digitale handtekening een reeks tekens is die is gegenereerd door cryptografische middelen van de code van het pdf-document. De handtekening kan zichzelf natuurlijk niet ondertekenen, dus het gebied waar deze is opgeslagen, is uitgesloten van het handtekeningberekeningsproces.<\/p>\n<p>De onderzoekers probeerden om nog een \/ByteRange-veld vlak na de handtekening toe te voegen. De eerste twee waarden hierin bleven ongewijzigd, alleen het adres van het einde van de handtekeningcode werd aangepast. Het resultaat was het verschijnen van een extra spatie in het bestand waar schadelijke objecten konden worden toegevoegd, evenals de Xref-sectie die ze beschreef. In theorie zou de pdf-viewer, als het bestand correct zou worden gelezen, deze sectie niet bereiken. Maar 17 van de 22 applicaties waren kwetsbaar voor zo\u2019n aanval.<\/p>\n<p>\u00a0<\/p>\n<h2>Universal signature forgery (USF)<\/h2>\n<p>Voor de zekerheid besloot het onderzoeksteam de applicaties ook te testen op een standaard pentesting-truc waarbij er een poging wordt gedaan om de waarden van de velden in onjuiste waarden te veranderen of deze simpelweg te verwijderen. Tijdens het experimenteren met de \/Contents-sectie, bleek dat als er een echte handtekening werd vervangen met de waarde 0x00, twee van de viewers deze nog altijd valideerden.<\/p>\n<p>En wat als de handtekening met rust werd gelaten, maar de \/ByteRange-sectie (dus de informatie over wat er precies is ondertekend) verwijderd werd? Of er een nul werd ingevoegd in plaats van echte waarden? In beide gevallen waren er een aantal viewers die zo\u2019n handtekening alsnog valideerden.<\/p>\n<p>In het totaal bleek dat 4 van de 22 programma\u2019s implementatiefouten bevatten die benut zouden kunnen worden.<\/p>\n<p>De tabel met een samenvatting van de resultaten laat zien dat maar liefst 21 van de 22 pdf-viewers om de tuin geleid konden worden. Dat betekent dus dat het voor alle viewers behalve \u00e9\u00e9n mogelijk is om een pdf-bestand te cre\u00ebren dat schadelijke of onjuiste informatie bevat maar er wel geldig uitziet voor de gebruiker.<\/p>\n<div id=\"attachment_24862\" style=\"width: 628px\" class=\"wp-caption alignnone\"><a href=\"https:\/\/media.ccc.de\/v\/36c3-10832-how_to_break_pdfs\"><img loading=\"lazy\" decoding=\"async\" aria-describedby=\"caption-attachment-24862\" class=\"wp-image-24862 size-full\" src=\"https:\/\/media.kasperskydaily.com\/wp-content\/uploads\/sites\/99\/2020\/01\/16172549\/36C3-PDF-digital-signature-4.png\" alt=\"Overzichtstabel met kwetsbaarheden van pdf-viewers\" width=\"618\" height=\"383\"><\/a><p id=\"caption-attachment-24862\" class=\"wp-caption-text\">Overzichtstabel met kwetsbaarheden van pdf-viewers<\/p><\/div>\n<p>Grappig genoeg was de enige applicatie die niet voor de trucs van het onderzoeksteam viel Adobe Reader 9. Het probleem is dat deze reader gevoelig is voor een RCE-kwetsbaarheid en alleen door Linux-gebruikers wordt gebruikt, eenvoudigweg omdat het de laatste versie is die voor hen beschikbaar is.<\/p>\n<h2>Praktische conclusies<\/h2>\n<p>Welke praktische conclusies kunnen we uit deze bevindingen trekken? Ten eerste moet niemand blindelings digitale handtekeningen in pdf-bestanden vertrouwen. Als u ergens een groen vinkje ziet, wil die niet per se zeggen dat de handtekening geldig is.<\/p>\n<p>Ten tweede kan zelfs een ondertekend document een risico vormen. Dus zorg er v\u00f3\u00f3r het openen van online ontvangen bestanden of het klikken op links in deze bestanden voor dat u een <a href=\"https:\/\/www.kaspersky.nl\/small-to-medium-business-security?icid=nl_kdailyplacehold_acq_ona_smm__onl_b2b_kasperskydaily_wpplaceholder_______\" target=\"_blank\" rel=\"noopener\">betrouwbaar beveiligingssysteem<\/a> op uw computer hebt ge\u00efnstalleerd.<\/p>\n<input type=\"hidden\" class=\"category_for_banner\" value=\"kesb-trial\">\n<p>\u00a0<\/p>\n","protected":false},"excerpt":{"rendered":"<p>Onderzoekers proberen de inhoud van ondertekende pdf-bestanden te wijzigen zonder dat de handtekening ongeldig wordt.<\/p>\n","protected":false},"author":2706,"featured_media":24857,"comment_status":"closed","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"_acf_changed":false,"footnotes":""},"categories":[108,252,253],"tags":[655,331,330,628,680,679],"class_list":{"0":"post-24856","1":"post","2":"type-post","3":"status-publish","4":"format-standard","5":"has-post-thumbnail","7":"category-business","8":"category-enterprise","9":"category-smb","10":"tag-36c3","11":"tag-ccc","12":"tag-chaos-communication-congress","13":"tag-cryptografie","14":"tag-digitale-handtekening","15":"tag-pdf"},"hreflang":[{"hreflang":"nl","url":"https:\/\/www.kaspersky.nl\/blog\/36c3-pdf-digital-signature\/24856\/"},{"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":"pt-br","url":"https:\/\/www.kaspersky.com.br\/blog\/36c3-pdf-digital-signature\/13921\/"},{"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":"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.nl\/blog\/tag\/36c3\/","name":"36c3"},"_links":{"self":[{"href":"https:\/\/www.kaspersky.nl\/blog\/wp-json\/wp\/v2\/posts\/24856","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.kaspersky.nl\/blog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.kaspersky.nl\/blog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.kaspersky.nl\/blog\/wp-json\/wp\/v2\/users\/2706"}],"replies":[{"embeddable":true,"href":"https:\/\/www.kaspersky.nl\/blog\/wp-json\/wp\/v2\/comments?post=24856"}],"version-history":[{"count":2,"href":"https:\/\/www.kaspersky.nl\/blog\/wp-json\/wp\/v2\/posts\/24856\/revisions"}],"predecessor-version":[{"id":24864,"href":"https:\/\/www.kaspersky.nl\/blog\/wp-json\/wp\/v2\/posts\/24856\/revisions\/24864"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/www.kaspersky.nl\/blog\/wp-json\/wp\/v2\/media\/24857"}],"wp:attachment":[{"href":"https:\/\/www.kaspersky.nl\/blog\/wp-json\/wp\/v2\/media?parent=24856"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.kaspersky.nl\/blog\/wp-json\/wp\/v2\/categories?post=24856"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.kaspersky.nl\/blog\/wp-json\/wp\/v2\/tags?post=24856"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}