Категория > Новости > Дробью в PDF. Редактируем подписанный файл PDF, не ломая подписи - «Новости»

Дробью в PDF. Редактируем подписанный файл PDF, не ломая подписи - «Новости»


24-03-2021, 00:01. Автор: Валентина
32000-2.

info


PDF вклю­чает в себя часть фун­кций язы­ка PostScript. Мож­но тран­сли­ровать PDF в PostScript. Есть прин­теры, которые уме­ют самос­тоятель­но интер­пре­тиро­вать PDF в PostScript.



В пер­вом приб­лижении струк­тура самого докумен­та PDF не очень слож­ная. Файл сос­тоит из сле­дующих эле­мен­тов:



  • за­голо­вок (header);

  • те­ло фай­ла (body);

  • таб­лица перек­рес­тных ссы­лок (cross-reference table);

  • блок поис­ка таб­лиц объ­ектов и ссы­лок (trailer).


Дробью в PDF. Редактируем подписанный файл PDF, не ломая подписи - «Новости»
Струк­тура PDF-фор­мата

За­голо­вок — это всег­да самая пер­вая стро­ка фай­ла, которая опре­деля­ет номер спе­цифи­кации.


За­голо­вок PDF

Те­ло содер­жит ссыл­ки на объ­екты. К ним отно­сят­ся стра­ницы, изоб­ражения, шриф­ты. Ком­мента­рии могут рас­полагать­ся во всем PDF-фай­ле. Их син­таксис сов­пада­ет с син­такси­сом ком­мента­риев в PostScript, начина­ются они с сим­вола % и закан­чива­ются сим­волом кон­ца стро­ки.


В таб­лице хра­нит­ся информа­ция об объ­ектах в фай­ле: эта таб­лица сос­тоит из раз­делов, количес­тво которых зависит от чис­ла объ­ектов, добав­ленных в файл. Trailer помога­ет прог­рамме, откры­вающей файл, находить таб­лицу перек­рес­тных ссы­лок и спе­циаль­ные объ­екты. К сло­ву, при­ложе­ния дол­жны читать PDF-файл с кон­ца.


Чем даль­ше в лес, тем боль­ше дров: за струк­турой фор­мата «пря­чет­ся» так называ­емая струк­тура пуб­ликации.


Струк­тура пуб­ликации

Уг­лублять­ся в эти деб­ри мы не будем, дос­таточ­но знать, что текст внут­ри докумен­та сжат и во внут­реннос­тях фай­ла его уви­деть не получит­ся. Вот как, нап­ример, выг­лядит гла­ва из кни­ги в фор­мате PDF, если попытать­ся прос­мотреть ее как прос­той тек­сто­вый файл.


Со­дер­жание PDF с точ­ки зре­ния компь­юте­ра 

Атака


Сна­чала давай раз­берем­ся с уяз­вимостью. Пред­ста­вим, что у нас есть Али­са (под­писыва­ет документ) и Боб (получа­ет под­писан­ный Али­сой документ) и, естес­твен­но, сам документ. Али­са сво­им сер­тифика­том под­писала документ и отпра­вила его Бобу. Боб уве­рен в том, что документ под­линный, так как он с под­писью. Но вот что будет, если документ готови­ла не Али­са (она толь­ко под­писала) и отправ­ляла тоже не она? Ата­ка с под­меной содер­жимого под­писан­ного докумен­та обыч­но про­исхо­дит в три эта­па.



  1. Ха­кер готовит документ, в котором при­сутс­тву­ет так называ­емое теневое содер­жимое. Это мож­но срав­нить с пус­тым лис­том в сши­том догово­ре, куда мож­но добавить фраг­мент пос­ле под­писания.

  2. Ха­кер отправ­ляет этот документ Али­се. Али­са под­писыва­ет его и отправ­ляет обратно хакеру. Хакер меня­ет содер­жимое докумен­та так, что­бы не сло­мать под­пись.

  3. Ха­кер отправ­ляет изме­нен­ный документ Бобу. Боб уве­рен в том, что документ нас­тоящий, и обра­баты­вает его.


О сущес­тво­вании этой уяз­вимос­ти упо­мина­лось еще в 2012 году, ког­да PDF соот­ветс­тво­вал спе­цифи­кации ISO 19005-3. Одна­ко пос­ле выхода новой вер­сии фор­мата хакеры про­вели оче­ред­ное иссле­дова­ние и прив­лекли вни­мание ком­паний, раз­рабаты­вающих прог­рам­мное обес­печение для работы с PDF.


Есть три спо­соба изме­нить содер­жимое уже под­писан­ного докумен­та: скры­тие, замена, а так­же скры­тие и замена.


 

Скрытие


Ре­зуль­татом этой ата­ки будет сок­рытие какого‑либо кон­тента за видимым содер­жимым фай­ла. Как толь­ко хакер получа­ет под­писан­ный Али­сой документ, он манипу­лиру­ет докумен­том таким обра­зом, что видимый слой боль­ше не отоб­ража­ется в при­ложе­нии прос­мотра. При­чем теперь уже ранее невиди­мые объ­екты ста­новят­ся вид­ны в PDF-фай­ле.


 

Замена


Ос­новная идея вари­анта «Замена» — добавить в под­писан­ный документ новые объ­екты, которые счи­тают­ся без­вред­ными, но нап­рямую вли­яют на пред­став­ление содер­жимого. Нап­ример, опре­деле­ние шриф­тов нап­рямую не меня­ет содер­жимое. Одна­ко это вли­яет на вид отоб­ража­емо­го кон­тента и дела­ет воз­можной замену цифр или сим­волов.


Эта ата­ка нацеле­на на инте­рак­тивные фор­мы. Фор­мы под­держи­вают раз­личные мас­ки вво­да (нап­ример, тек­сто­вые поля, тек­сто­вые области, перек­лючате­ли и кноп­ки выбора), где поль­зовате­ли динами­чес­ки вво­дят новое содер­жимое и сох­раня­ют его в докумен­те. Фор­мы так­же могут иметь зна­чения по умол­чанию, которые при необ­ходимос­ти мож­но изме­нить.


Ха­кер готовит файл, в котором опре­деля­ется шрифт, и его опи­сание вклю­чает­ся в документ. Пос­ле под­писания докумен­та зло­умыш­ленни­ки добав­ляют новое опи­сание шриф­та и переза­писы­вают пре­дыду­щее. Пос­коль­ку опре­деле­ние новых шриф­тов счи­тает­ся безобид­ным, при­ложе­ния, про­веря­ющие под­пись, не показы­вают никаких пре­дуп­режде­ний о вне­сен­ных изме­нени­ях.


 

Скрытие и замена


В вари­анте ата­ки «Скры­тие и замена» PDF-файл содер­жит вто­рой скры­тый документ с дру­гим содер­жимым. Так как Али­са не может уви­деть скры­тое содер­жимое, она под­писыва­ет документ. Пос­ле под­писания хакер получа­ет файл и добав­ляет толь­ко новую таб­лицу внеш­них ссы­лок и трей­лер. В таб­лице внеш­них ссы­лок про­исхо­дит лишь одно изме­нение: ссыл­ка на опи­сание.


Дру­гими сло­вами, хакер соз­дает файл PDF, содер­жащий два объ­екта с одним и тем же иден­тифика­тором, но раз­ным содер­жани­ем. Пос­коль­ку вклю­чение таб­лицы xref, ука­зыва­ющей на уже опре­делен­ный объ­ект в под­писан­ной области, счи­тает­ся без­вред­ным, никаких пре­дуп­режде­ний о вне­сен­ных хакером изме­нени­ях не пос­тупа­ет, и про­вер­ка под­писи про­ходит успешно. Тем не менее Боб и Али­са видят раз­ный кон­тент в одном и том же фай­ле.


Этот вари­ант ата­ки наибо­лее мощ­ный, так как поз­воля­ет изме­нить все содер­жимое докумен­та. Хакер может соз­дать теневой документ, вли­яющий на отоб­ражение каж­дой стра­ницы или даже на общее количес­тво стра­ниц, а так­же на каж­дый содер­жащий­ся в фай­ле объ­ект.


В то же вре­мя этот вари­ант самый «шат­кий», так как при под­писании могут быть уда­лены неис­поль­зуемые объ­екты, в том чис­ле — теневые. Кро­ме того, ска­нер безопас­ности может обна­ружить боль­шое количес­тво лиш­них незадей­ство­ван­ных объ­ектов и выдать пре­дуп­режде­ние.



Перейти обратно к новости