Уязвимость Dirty COW

Поделись знанием:
Перейти к: навигация, поиск

Уязвимость Dirty COW (CVE-2016-5195, от англ. dirty + copy-on-write — копирование при записи) — серьезная программная уязвимость в ядре Linux, существующая с 2007 года и исправленная в октябре 2016 года. С её помощью локальный пользователь может повысить свои привилегии из-за ошибки состязания (гонки) в реализации механизма копирования при записи (COW) для страниц памяти, помеченных флагом dirty (англ.) (измененная память).[1][2][3] Проблема возникает при одновременном вызове madvise(MADV_DONTNEED) и записи в страницу памяти, к которой пользователь не имеет доступа на изменение[4], при многочисленном повторении запросов происходит гонка и эксплоит получает право на изменение страницы, например, относящейся к привилегированному suid-файлу; процесс занимает не более нескольких секунд[5]. На октябрь 2016 года сообщается об активной эксплуатации уязвимости при взломах серверов.[3]

Несмотря на то, что ошибка повышения привилегий реализуется для локальных пользователей, удаленные злоумышленники могут использовать её в сочетании с другими эксплойтами, которые позволяют провести удаленное выполнение непривилегированного кода, такое сочетание приведет к полному взлому удаленной системы.[2] Использование уязвимости DirtyCOW само по себе не оставляет следов в системных журналах.[3][1]

Уязвимость получила обозначение CVE CVE-2016-5195, предварительно оценивается по шкале CVSS на 6.9-7.8 баллов из 10.[6] Ошибка присутствует в ядре с 2007 года (версия 2.6.22)[1] и может быть использована на большом числе дистрибутивов, в том числе на Android[7]. Эта уязвимость стала самой длительно существовавшей критической ошибкой в ядре Linux[8]. Лишь в единичных дистрибутивах (RHEL5/6) эксплуатация одного из стандартных эксплоитов невозможна из-за отключения интерфейса «proc mem»[9]. Линус Торвальдс признался, что уже делал попытки исправления этой гонки в августе 2005 года, однако этот патч был некачественным и почти сразу был отменён из-за проблем на архитектуре s390[10].

Эксплуатацию уязвимости обнаружил исследователь безопасности Phil Oester при анализе взлома одного из администрируемых им серверов. Благодаря записи всего HTTP-трафика на протяжении нескольких лет, ему удалось получить эксплоит и проанализировать его работу. Эксплоит был скомпилирован компилятором GCC версии 4.8 (вышел в 2013 году), что может свидетельствовать о том, что уязвимость успешно эксплуатируется уже на протяжении нескольких лет. Закрытое обсуждение и подготовка исправления произошли 13 октября[11][12]. 18 октября был внесен патч, исправляющий ошибку; однако при этом Линус не указал, что данное исправление является важным и устраняет уязвимость. Подобное сокрытие важной информации и проблемы в раскрытии уязвимостей лишь усложняют жизнь пользователей и дистрибьюторов, эта практика подверглась критике в LWN[13]. 19-20 октября информация об уязвимости была опубликована RedHat; также был запущен специальный сайт[11], рассказывающий об уязвимости и предлагающий различные эксплоиты, twitter-аккаунт и интернет-магазин по продаже футболок и сувениров с логотипом уязвимости.

Исправление уязвимости требует обновления ядра. Уязвимость была исправлена в ядрах версий 4.8, 4.7, 4.4 и других[14], исправление представляет собой добавление нового флага FOLL_COW (изменены 7 строк кода)[10]. Ряд дистрибутивов GNU/Linux, например, Debian, Ubuntu, RedHat и другие, уже объявили о выпуске исправленных пакетов ядра.[15] В то же время, существуют многочисленные уязвимые устройства и системы на кристалле, выпуск обновлений для которых закончен производителем и может быть невозможен сторонними лицами из-за проприетарных дополнений и нарушений GPL. Например, уязвимость может использоваться для получения прав суперпользователя практически на всех Android-устройствах,[16][17] с версией ОС до Android 6 включительно[18] и с ранними версиями Android 7.

Напишите отзыв о статье "Уязвимость Dirty COW"



Примечания

  1. 1 2 3 [xakep.ru/2016/10/21/dirty-cow/ В ядре Linux устранена 0-day уязвимость Dirty COW, уже взятая на вооружение хакерами], xakep.ru (21 октября 2016). Проверено 22 октября 2016.
  2. 1 2 Goodin, Dan. [arstechnica.com/security/2016/10/most-serious-linux-privilege-escalation-bug-ever-is-under-active-exploit/ "Most serious" Linux privilege-escalation bug ever is under active exploit (updated)] (англ.), Ars Technica (20 October 2016). Проверено 21 октября 2016.
  3. 1 2 3 Vaughan-Nichols, Steven J. [www.zdnet.com/article/the-dirty-cow-linux-security-bug-moos/ The Dirty Cow Linux bug: A silly name for a serious problem]. Проверено 21 октября 2016.
  4. [access.redhat.com/security/vulnerabilities/2706661 Kernel Local Privilege Escalation — CVE-2016-5195] / Redhat
  5. [www.theregister.co.uk/2016/10/21/linux_privilege_escalation_hole/ Dirty COW explained: Get a moooo-ve on and patch Linux root hole], The Register (21 Oct 2016). Проверено 22 октября 2016.
  6. [access.redhat.com/security/vulnerabilities/2706661 Kernel Local Privilege Escalation - CVE-2016-5195 - Red Hat Customer Portal]. Проверено 21 октября 2016.
  7. Alex Hern. [www.theguardian.com/technology/2016/oct/21/dirty-cow-linux-vulnerability-found-after-nine-years 'Dirty Cow' Linux vulnerability found after nine years] (англ.), The Guardian (21 October 2016). Проверено 23 октября 2016.
  8. [outflux.net/blog/archives/2016/10/20/cve-2016-5195/ Security bug lifetime. CVE-2016-5195] (англ.). Kees Cook (10/20/2016). Проверено 23 октября 2016.
  9. [bugzilla.redhat.com/show_bug.cgi?id=1384344#c16 Bug 1384344 — CVE-2016-5195 kernel: mm: privilege escalation via MAP_PRIVATE COW breakage] / RedHat: «The in the wild exploit ..doesn’t work on Red Hat Enterprise Linux 5 and 6 … proc/self/mem is not writable on Red Hat Enterprise Linux 5 and 6.»
  10. 1 2 Linus Torvalds. [git.kernel.org/cgit/linux/kernel/git/torvalds/linux.git/commit/?id=19be0eaffa3ac7d8eb6784ad9bdbc7d67ed8e619 mm: remove gup_flags FOLL_WRITE games from __get_user_pages()] (англ.). 19be0eaffa3ac7d8eb6784ad9bdbc7d67ed8e619. Kernel.org GIT (18 October 2016). Проверено 22 октября 2016.
  11. 1 2 Graeme Burton. [www.v3.co.uk/v3-uk/news/2474845/linux-users-urged-to-protect-against-dirty-cow-security-flaw Linux users urged to protect against 'Dirty COW' security flaw. All Linux users should take this seriously, says security expert] (англ.), V3 (20 October 2016). Проверено 23 октября 2016.
  12. [www.openwall.com/lists/oss-security/2016/10/21/1 oss-security - CVE-2016-5195 "Dirty COW" Linux kernel privilege escalation vulnerability]
  13. [lwn.net/Articles/704231 Dirty COW and clean commit messages] / LWN, Jonathan Corbet, October 21, 2016  (платн.) (англ.)
  14. [www.securitylab.ru/news/484195.php В ядре Linux исправлена самая серьезная уязвимость повышения привилегий], securitylab.ru (21 Октября 2016). Проверено 22 октября 2016.
  15. [security-tracker.debian.org/tracker/CVE-2016-5195 CVE-2016-5195]. Проверено 21 октября 2016.
  16. [arstechnica.com/security/2016/10/android-phones-rooted-by-most-serious-linux-escalation-bug-ever/ Android phones rooted by “most serious” Linux escalation bug ever] (англ.), Ars Technica (October 24, 2016).
  17. [boingboing.net/2016/10/25/every-android-device-potential.html Every Android device potentially vulnerable to "most serious" Linux escalation attack, ever / Boing Boing]
  18. [www.securitylab.ru/news/484225.php Dirty COW затрагивает не только Linux, но и все версии Android]

Ссылки

  • [access.redhat.com/security/cve/cve-2016-5195 CVE-2016-5195] / Redhat
  • [cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2016-5195 CVE-2016-5195] в базе MITRE, ожидается раскрытие информации
  • [access.redhat.com/security/vulnerabilities/2706661 Kernel Local Privilege Escalation — CVE-2016-5195] / Redhat (англ.)
  • [lwn.net/Articles/704231 Dirty COW and clean commit messages] / LWN, Jonathan Corbet, October 21, 2016  (платн.) (англ.)
  • [github.com/dirtycow/dirtycow.github.io/wiki/VulnerabilityDetails VulnerabilityDetails] / Dirtycow, github (англ.)
  • [dirtycow.ninja Сайт об уязвимости]
  • [commons.wikimedia.org/wiki/File:DirtyCow.svg Логотип уязвимости] для печати на одежде и кружках.

Отрывок, характеризующий Уязвимость Dirty COW

Потом ей привели аббата a robe longue [в длинном платье], он исповедовал ее и отпустил ей грехи ее. На другой день ей принесли ящик, в котором было причастие, и оставили ей на дому для употребления. После нескольких дней Элен, к удовольствию своему, узнала, что она теперь вступила в истинную католическую церковь и что на днях сам папа узнает о ней и пришлет ей какую то бумагу.
Все, что делалось за это время вокруг нее и с нею, все это внимание, обращенное на нее столькими умными людьми и выражающееся в таких приятных, утонченных формах, и голубиная чистота, в которой она теперь находилась (она носила все это время белые платья с белыми лентами), – все это доставляло ей удовольствие; но из за этого удовольствия она ни на минуту не упускала своей цели. И как всегда бывает, что в деле хитрости глупый человек проводит более умных, она, поняв, что цель всех этих слов и хлопот состояла преимущественно в том, чтобы, обратив ее в католичество, взять с нее денег в пользу иезуитских учреждений {о чем ей делали намеки), Элен, прежде чем давать деньги, настаивала на том, чтобы над нею произвели те различные операции, которые бы освободили ее от мужа. В ее понятиях значение всякой религии состояло только в том, чтобы при удовлетворении человеческих желаний соблюдать известные приличия. И с этою целью она в одной из своих бесед с духовником настоятельно потребовала от него ответа на вопрос о том, в какой мере ее брак связывает ее.
Они сидели в гостиной у окна. Были сумерки. Из окна пахло цветами. Элен была в белом платье, просвечивающем на плечах и груди. Аббат, хорошо откормленный, а пухлой, гладко бритой бородой, приятным крепким ртом и белыми руками, сложенными кротко на коленях, сидел близко к Элен и с тонкой улыбкой на губах, мирно – восхищенным ее красотою взглядом смотрел изредка на ее лицо и излагал свой взгляд на занимавший их вопрос. Элен беспокойно улыбалась, глядела на его вьющиеся волоса, гладко выбритые чернеющие полные щеки и всякую минуту ждала нового оборота разговора. Но аббат, хотя, очевидно, и наслаждаясь красотой и близостью своей собеседницы, был увлечен мастерством своего дела.
Ход рассуждения руководителя совести был следующий. В неведении значения того, что вы предпринимали, вы дали обет брачной верности человеку, который, с своей стороны, вступив в брак и не веря в религиозное значение брака, совершил кощунство. Брак этот не имел двоякого значения, которое должен он иметь. Но несмотря на то, обет ваш связывал вас. Вы отступили от него. Что вы совершили этим? Peche veniel или peche mortel? [Грех простительный или грех смертный?] Peche veniel, потому что вы без дурного умысла совершили поступок. Ежели вы теперь, с целью иметь детей, вступили бы в новый брак, то грех ваш мог бы быть прощен. Но вопрос опять распадается надвое: первое…
– Но я думаю, – сказала вдруг соскучившаяся Элен с своей обворожительной улыбкой, – что я, вступив в истинную религию, не могу быть связана тем, что наложила на меня ложная религия.
Directeur de conscience [Блюститель совести] был изумлен этим постановленным перед ним с такою простотою Колумбовым яйцом. Он восхищен был неожиданной быстротой успехов своей ученицы, но не мог отказаться от своего трудами умственными построенного здания аргументов.
– Entendons nous, comtesse, [Разберем дело, графиня,] – сказал он с улыбкой и стал опровергать рассуждения своей духовной дочери.


Элен понимала, что дело было очень просто и легко с духовной точки зрения, но что ее руководители делали затруднения только потому, что они опасались, каким образом светская власть посмотрит на это дело.
И вследствие этого Элен решила, что надо было в обществе подготовить это дело. Она вызвала ревность старика вельможи и сказала ему то же, что первому искателю, то есть поставила вопрос так, что единственное средство получить права на нее состояло в том, чтобы жениться на ней. Старое важное лицо первую минуту было так же поражено этим предложением выйти замуж от живого мужа, как и первое молодое лицо; но непоколебимая уверенность Элен в том, что это так же просто и естественно, как и выход девушки замуж, подействовала и на него. Ежели бы заметны были хоть малейшие признаки колебания, стыда или скрытности в самой Элен, то дело бы ее, несомненно, было проиграно; но не только не было этих признаков скрытности и стыда, но, напротив, она с простотой и добродушной наивностью рассказывала своим близким друзьям (а это был весь Петербург), что ей сделали предложение и принц и вельможа и что она любит обоих и боится огорчить того и другого.
По Петербургу мгновенно распространился слух не о том, что Элен хочет развестись с своим мужем (ежели бы распространился этот слух, очень многие восстали бы против такого незаконного намерения), но прямо распространился слух о том, что несчастная, интересная Элен находится в недоуменье о том, за кого из двух ей выйти замуж. Вопрос уже не состоял в том, в какой степени это возможно, а только в том, какая партия выгоднее и как двор посмотрит на это. Были действительно некоторые закоснелые люди, не умевшие подняться на высоту вопроса и видевшие в этом замысле поругание таинства брака; но таких было мало, и они молчали, большинство же интересовалось вопросами о счастии, которое постигло Элен, и какой выбор лучше. О том же, хорошо ли или дурно выходить от живого мужа замуж, не говорили, потому что вопрос этот, очевидно, был уже решенный для людей поумнее нас с вами (как говорили) и усомниться в правильности решения вопроса значило рисковать выказать свою глупость и неумение жить в свете.
Одна только Марья Дмитриевна Ахросимова, приезжавшая в это лето в Петербург для свидания с одним из своих сыновей, позволила себе прямо выразить свое, противное общественному, мнение. Встретив Элен на бале, Марья Дмитриевна остановила ее посередине залы и при общем молчании своим грубым голосом сказала ей:
– У вас тут от живого мужа замуж выходить стали. Ты, может, думаешь, что ты это новенькое выдумала? Упредили, матушка. Уж давно выдумано. Во всех…… так то делают. – И с этими словами Марья Дмитриевна с привычным грозным жестом, засучивая свои широкие рукава и строго оглядываясь, прошла через комнату.
На Марью Дмитриевну, хотя и боялись ее, смотрели в Петербурге как на шутиху и потому из слов, сказанных ею, заметили только грубое слово и шепотом повторяли его друг другу, предполагая, что в этом слове заключалась вся соль сказанного.
Князь Василий, последнее время особенно часто забывавший то, что он говорил, и повторявший по сотне раз одно и то же, говорил всякий раз, когда ему случалось видеть свою дочь.