среда, 7 декабря 2011 г.

Обзор книги «A Bug Hunter’s Diary»

Не так давно появилась в продаже англоязычная версия  достаточно любопытной книги «A Bug Hunter’s Diary», изданной издательством No Starch Press. 

"Give a man an exploit and you make him a hacker for a day; teach a man to exploit bugs and you make him a hacker for a lifetime." - Felix 'FX' Lindner, Head of Recurity Labs / Phenoelit


В последнее время получается так, что книги именно этого издательства чаще всего попадают на мою книжную полку (The Tangled Web, Metasploit, IDA Pro Book). Собственно, чем же меня заинтересовала эта книга, ответ достаточно прост: я давно уже искал книгу для студентов.  Требования к книге  были довольно просты, она должна была бы разъяснять методы эксплуатации уязвимостей не на каких-то надуманных искусственных  примерах и при этом позволяла бы людям не искушенным в этом вопросе ознакомиться с предметной областью. A Bug Hunter’s Diary оказалась именно той книгой, что я искал в качестве дополнительной литературы и которую я мог бы рекомендовать моим студентам. Автор книги Tobias Klein, выстроил ее таким образом, что она постепенно переходит к более сложным темам и  при этом рассматриваются уязвимости в реальных программных продуктах, которые известны многим и пользуются популярностью. Но сразу стоит сказать, что книга рассчитана на людей не искушённых с темой поиска уязвимостей и их эксплуатации, здесь вы не найдете новых методик обхода DEP/ASLR или руководство по использованию ROP.


Отдельно стоит отметить живую манеру изложения, выбранную автором для этой достаточно не простой темы. При этом все описанные в книге уязвимости были не просто случайным выбором, а были найдены самим автором. Tobias Klein прошел весь жизненный цикл для каждой из описанных уязвимостей, от их обнаружения, до работы с вендором по ее закрытию. Еще одной интересной особенностью данной книги, является ширина охвата различных операционных систем, так в книге можно встретить Linux, BSD, iOS и ¬¬Windows. Опять же речь не идет о подробном исчерпывающем руководстве по особенностям эксплуатации для каждой их перечисленных систем. Автор рассматривает лишь уязвимые приложения для этих систем, но при рассмотрении процесса эксплуатации, также затрагиваются некоторые особенности для каждой из них.  Итак, давайте теперь пробежимся поподробней о том, что собственно вас ожидает внутри.

Chapter 1: Bug Hunting
Первая глава дает некоторый экскурс в предметную область и готовит читателя к погружению в процесс эксплуатации уязвимостей.

Каждая из последующих глав делится на следующие логические части:

  • Vulnerability Discovery - подробное описание уязвимости 
  • Exploitation - возможные пути эксплуатации и описание процесса написания эксплойта 
  • Vulnerability Remediation - описание возможных способов предотвращения рассмотренной уязвимости 
  • Lessons Learned - полезная информация для разработчиков, как противодействовать подобного рода уязвимостям
  • Addendum - информация по закрытию этой уязвимости со стороны вендора с описанием и трекингом основных моментов взаимодействия
Chapter 2: Back to the ’90s
Эта глава полностью доступна для ознакомления и доступна на сайте издательства. В этой главе рассматривается уязвимость (CVE-2008-4654) для  VLC version 0.9.4. На ее примере демонстрируется процесс поиска уязвимостей в программах работающих со сложными форматами данных и их последующей эксплуатацией.

Chapter 3: Escape from the WWW Zone
Приводится довольно старая уязвимость (CVE-2008-568) для OpenSolaris, на примере которой рассматривается целый класс уязвимостей "NULL pointer dereference".

Chapter 4: NULL Pointer FTW
Рассматривается еще один типа эксплуатации "NULL pointer dereference", на примере уязвимости (CVE-2009-0385) в FFmpeg.
Chapter 5: Browse and You’re Owned
Здесь автор переходит к теме поиска уязвимостей в ActiveX компонентах, на примере переполнения стека (CVE-2008-3558.) в WebEx. 

Chapter 6: One Kernel to Rule Them All
Еще один пример эксплуатации (CVE-2008-1625) на уровне ядра, в этот раз используется небезопасная функция memcpy() и нет проверки корректности данных. А в качестве подопытного выступает  антивирус Avast и его драйвер Aavmker4.sys.

Chapter 7: A Bug Older Than 4.4BSD
Опять ядерная уязвимость (CVE-2007-4686) и на этот раз в ядре OS X. Опять IOCTL и некорректные входные данные.

Chapter 8: The Ringtone Massacre
А вот это одна и самых интересных уязвимостей (CVE-2010-0036) в этой книге, так как речь идет о iOS. Здесь проводится небольшой практический экскурс в мутационные фаззеры и их использование для поиска уязвимостей.

Appendix A: Hints for Hunting
Небольшой экскурс в различные типы уязвимостей рассмотренных в книге и в методы их эксплуатации.

Appendix B: Debugging
Курс молодого бойца по использованию отладчиков WinDbg и GDB.

Исходный код всех эксплойтов рассмотренных в книге и видео демонстрации их работы можно найти на сайте автора.

Для тех кто дочитал до этого места у меня есть сюрприз в виде специального кода «MATROSOVBLOGS», который дает вам 30% скидку на покупку любых книг (в том числе и электронных) на сайте издательства No Starch Press до конца января 2012 года. На мой взгляд,  «A Bug Hunter’s Diary» будет полезна не только специалистам в области ИБ, которые решили овладеть данной темой, но и программистам, которые пишут промышленный код и хотят избежать появления в нем ошибок, которые могут привести к печальным последствиям.