aboutsummaryrefslogtreecommitdiffstats
path: root/russian/security/2020-GRUB-UEFI-SecureBoot/index.wml
blob: 9b76023dcf1b4bd56ea2c1c08c96050faca73b3a (plain) (blame)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
#use wml::debian::template title="Уязвимость GRUB2 UEFI SecureBoot — 'BootHole'"
#use wml::debian::translation-check translation="9c47c948da90cea57112872aa23f03da3a967d7b" maintainer="Lev Lamberov"

<p>
Разработчики Debian и других дистрибутивов сообщества Linux недавно
узнали о серьёзной проблеме в загрузчике GRUB2, позволяющей
злоумышленнику полностью обойти UEFI Secure Boot. Подробности
касательно этой проблемы описаны в
in <a href="$(HOME)/security/2020/dsa-4735">рекомендации по безопасности Debian
4735</a>. Цель настоящего документа состоит в объяснении последствий
данной уязвимости, а также того, какие шаги следует предпринять для её
исправления.
</p>

<ul>
  <li><b><a href="#what_is_SB">Общая информация: что такое UEFI Secure Boot?</a></b></li>
  <li><b><a href="#grub_bugs">Обнаружение многочисленных ошибок GRUB2</a></b></li>
  <li><b><a href="#linux_bugs">Обнаружение ошибок Linux</a></b></li>
  <li><b><a href="#revocations">Необходимость отзыва ключей для исправления цепочки Secure Boot</a></b></li>
  <li><b><a href="#revocation_problem">Каковы последствия отзыва ключей?</a></b></li>
  <li><b><a href="#package_updates">Обновлённые пакеты</a></b>
  <ul>
    <li><b><a href="#grub_updates">1. GRUB2</a></b></li>
    <li><b><a href="#linux_updates">2. Linux</a></b></li>
    <li><b><a href="#shim_updates">3. Shim</a></b></li>
    <li><b><a href="#fwupdate_updates">4. Fwupdate</a></b></li>
    <li><b><a href="#fwupd_updates">5. Fwupd</a></b></li>
  </ul></li>
  <li><b><a href="#buster_point_release">Редакция Debian 10.5 (<q>buster</q>),
        обновлённые установочные носители и <q>живые</q>
        образы</a></b></li>
  <li><b><a href="#more_info">Дополнительная информация</a></b></li>
</ul>

<h1><a name="what_is_SB">Общая информация: что такое UEFI Secure Boot?</a></h1>

<p>
UEFI Secure Boot (SB) представляет собой механизм проверки, гарантирующий что
запускаемый UEFI-микропрограммой компьютера код является доверенным. Он разработан
для защиты системы от вредоносного кода, загружаемого и исполняемого
достаточно рано в процессе старта и до загрузки операционной
системы.
</p>

<p>
SB работает с использованием криптографических контрольных сумм и подписей. Каждая
программа, загружаемая микропрограммой, содержит подпись и контрольную сумму.
Перед тем, как разрешить исполнение, микропрограмма выполняет проверку того, что
запускаемая программа является доверенной. Это осуществляется путём проверки контрольной
суммы и подписи. Если SB включён в системе, то любая попытка выполнить
недоверенную программу будет запрещена. Это позволяет предотвратить
запуск непредусмотренного / неавторизованного кода в UEFI-окружении.
</p>

<p>
Большинство оборудования с архитектурой x86 поставляется с завода с предустановленными
ключами Microsoft. Это означает, что микропрограмма в такой системе доверяет двоичным
файлам, подписанным Microsoft. Большинство современных систем поставляются с включённым
механизмом SB, по умолчанию они не запускают какой-либо неподписанный код. Однако
можно изменить настройки микропрограммы и либо отключить SB, либо
зарегистрировать дополнительные ключи.
</p>

<p>
Debian, как и многие другие операционные системы на основе Linux, использует программу,
называемую shim, для расширения доверия от микропрограммы до других программ,
которые нам требуется обезопасить в ходе ранней загрузки &mdash; это загрузчик GRUB2,
ядро Linux и инструменты обновления микропрограмм (fwupd и
fwupdate).
</p>

<h1><a name="grub_bugs">Обнаружение многочисленных ошибок GRUB2</a></h1>

<p>
К сожалению, в коде загрузчика GRUB2 для чтения и грамматического разбора
файла настроек (grub.cfg) была обнаружена серьёзная ошибка, которая
ломает цепочку доверия. Используя эту ошибку можно выйти из защищённого
окружения и загрузить неподписанные программы в ходе ранней загрузки.
Эта уязвимость была обнаружены исследователями Eclypsium и получила
название <b><a href="https://www.eclypsium.com/2020/07/29/theres-a-hole-in-the-boot/">BootHole</a></b>.
</p>

<p>
Вместо исправления одной этой ошибки разработчики решили провести
тщательный аудит исходного кода GRUB2. Было бы безответственно
исправить одну серьёзную уязвимость без поиска других ошибок!
Команда инженеров на протяжении нескольких недель работала над выявлением
и исправлением целого ряда проблем. Мы обнаружили несколько мест, где
выделенные буферы внутренней памяти могут быть переполнены при получении неожиданных
входных данных, несколько мест, где переполнение целых чисел в ходе математических
вычислений может приводить к проблемам, а также несколько мест, где память может
использоваться после её освобождения. Исправления всех этих ошибок были
распространены между участниками сообщества и протестированы.
</p>

<p>
Полный список проблем можно найти в <a href="$(HOME)/security/2020/dsa-4735">рекомендации
по безопасности Debian 4735</a>.
</p>


<h1><a name="linux_bugs">Обнаружение ошибок Linux</a></h1>

<p>
В ходе обсуждения уязвимостей в GRUB2, разработчики говорили и о двух возможностях
обхода защиты, которые недавно были обнаружены и исправлены Джейсоном Донефельдом (zx2c4)
(<a href="https://git.zx2c4.com/american-unsigned-language/tree/american-unsigned-language.sh">1</a>,
<a href="https://git.zx2c4.com/american-unsigned-language/tree/american-unsigned-language-2.sh">2</a>),
когда ядро Linux может позволить обойти Secure Boot. Обе уязвимости позволяют суперпользователю
заменить таблицы ACPI в заблокированной системе, когда это не должно быть разрешено. Исправления
этих проблем уже выпущены.
</p>

<h1><a name="revocations">Необходимость отзыва ключей для исправления цепочки Secure Boot</a></h1>

<p>
Очевидно, Debian и другие поставщики операционных систем <a
href="#package_updates">выпустят исправленные версии</a> GRUB2 и
Linux. Тем не менее на этом исправление проблем не завершается.
Злоумышленники всё ещё могут быть способны использовать предыдущие уязвимые
версии загрузчика и ядра, чтобы обойти Secure Boot.
</p>

<p>
Для предотвращения этого следующим шагом будет внесение сотрудниками Microsoft небезопасных
двоичных файлов в список блокировки, чтобы они не могли быть запущены при включённом SB.
Это достигается с помощью списка <b>DBX</b>, который является частью UEFI Secure Boot.
Все дистрибутивы Linux, поставляющие подписанные Microsoft копии shim,
должны предоставить подробную информацию о двоичных файлах или используемых ключах,
чтобы указанные действия были выполнены. Будет обновлён <a
href="https://uefi.org/revocationlistfile">UEFI-файл со списком отозванных ключей</a>,
обновление будет содержать предоставленную информацию. Позднее, <b>некоторый</b>
момент времени, системы начнут использовать этот обновлённый список и перестанут
запускать уязвимые двоичные файлы при использовании Secure Boot.
</p>

<p>
<i>Точный</i> срок развёртывания этого изменения пока не ясен.
В какой-то момент поставщики BIOS/UEFI добавят новый список отозванных ключей в новые сборки
микропрограмм для нового оборудования. Microsoft <b>может</b>
выпустить обновления для существующих систем через Windows Update. Некоторые
дистрибутивы Linux также могут выпустить обновления через свои собственные
системы обновления безопасности. Debian <b>пока</b> этого не сделал, но мы
собираемся сделать это в будущем.
</p>

<h1><a name="revocation_problem">Каковы последствия отзыва ключей?</a></h1>

<p>
Большинство поставщиков с недоверием относятся к автоматическому применению
обновлений, которые отзывают ключи, используемые для Secure Boot. Существующие
наборы ПО могут неожиданно перестать загружаться при включённом SB, если
пользователь также не установил требуемые обновления ПО. Двойная
загрузка систем Windows/Linux тоже может неожиданно прекратить загрузку
Linux. Конечно же, старые установочные образы и <q>живые</q> тоже перестанут
загружаться, что потенциально усложнит восстановление систем.
</p>

<p>
Имеются два очевидных способа исправления незагружающейся системы:
</p>

<ul>
  <li>Перезагрузиться в режиме <q>восстановления</q>,
    используя <a href="#buster_point_release">более новые установочные носители</a>,
    и применить необходимые обновления; или</li>
  <li>Временно отключить Secure Boot для получения доступа к системе,
    применить обновления, а затем заново включить SB.</li>
</ul>

<p>
Оба пути могут вначале показаться простыми, однако каждый из них потребует
некоторого количества времени, особенно от пользователей нескольких систем.
Кроме того, помните, что для включения или отключения
Secure Boot требуется непосредственный доступ к машине. Обычно
<b>нельзя</b> изменить эту настройку извне системы настройки микропрограммы
компьютера. Удалённые серверные машины могут потребовать специального
обращения по этой самой причине.
</p>

<p>
По этим причинам настоятельно рекомендуется, чтобы <b>все</b> пользователи
Debian установили все <a href="#package_updates">рекомендованные обновления</a> для
своих систем как можно скорее. Это позволит снизить вероятность возникновения
проблем в будущем.
</p>

<h1><a name="package_updates">Обновлённые пакеты</a></h1>

<p>
<b>ВНИМАНИЕ:</b> системы, использующие Debian 9 (<q>stretch</q>) и более ранние
выпуски <b>необязательно</b> получат соответствующие обновления, поскольку Debian 10
(<q>buster</q>) является первым выпуском Debian, включающим поддержку UEFI
Secure Boot.
</p>

<p>Были обновлены подписанные версии всех пакетов, даже если никакие
другие изменения не требовались. Debian пришлось создать новый ключ/сертификат
для подписывания собственных пакетов, поддерживающих Secure Boot. Старый сертификат
был помечен как <q>Debian Secure Boot Signer</q> (отпечаток ключа
<code>f156d24f5d4e775da0e6a9111f074cfce701939d688c64dba093f97753434f2c</code>);
новый сертификат помечен как <q>Debian Secure Boot Signer 2020</q>
(<code>3a91a54f9f46a720fe5bbd2390538ba557da0c2ed5286f5351fe04fff254ec31</code>). </p>

<p>
В Debian имеются пять пакетов с исходным кодом, которые будут обновлены
в связи с изменениями UEFI Secure Boot:
</p>

<h2><a name="grub_updates">1. GRUB2</a></h2>

<p>
Обновлённые версии Debian-пакетов GRUB2 доступны уже сейчас в архиве
debian-security для стабильного выпуска Debian 10
(<q>buster</q>). Исправленные версии очень скоро появятся в обычном архиве Debian
для разрабатываемых версий Debian (нестабильного и тестируемого).
</p>

<h2><a name="linux_updates">2. Linux</a></h2>

<p>
Обновлённые версии Debian-пакетов linux доступны уже сейчас через
buster-proposed-updates для стабильного выпуска Debian 10 (<q>buster</q>)
и будут включены в готовящуюся редакцию 10.5. Новые пакеты
также находятся в архиве Debian для разрабатываемых версий
Debian (нестабильного и тестируемого). Мы надеемся, что исправленные пакеты
будут вскоре загружены в buster-backports.
</p>

<h2><a name="shim_updates">3. Shim</a></h2>

<p>
Учитывая механизм управления ключами Secure Boot в Debian, Debian
<b>не</b> требуется отзывать существующие и подписанные Microsoft
пакеты shim. Тем не менее подписанные версии пакетов shim-helper
необходимо собрать заново с использованием нового ключа.
</p>

<p>
Обновлённые версии Debian-пакетов shim доступны уже сейчас через
buster-proposed-updates для стабильного выпуска Debian 10 (<q>buster</q>)
и будут включены в готовящуюся редакцию 10.5. Новые пакеты
также находятся в архиве Debian для разрабатываемых версий
Debian (нестабильного и тестируемого).
</p>

<h2><a name="fwupdate_updates">4. Fwupdate</a></h2>

<p>
Обновлённые версии Debian-пакетов fwupdate доступны уже сейчас через
buster-proposed-updates для стабильного выпуска Debian 10 (<q>buster</q>)
и будут включены в готовящуюся редакцию 10.5. Пакет fwupdate уже был
удалён из нестабильного и тестируемого выпусков в связи с его заменой
на пакет fwupd.
</p>

<h2><a name="fwupd_updates">5. Fwupd</a></h2>

<p>
Обновлённые версии Debian-пакетов fwupd доступны уже сейчас через
buster-proposed-updates для стабильного выпуска Debian 10 (<q>buster</q>)
и будут включены в готовящуюся редакцию 10.5. Новые пакеты
также находятся в архиве Debian для разрабатываемых версий
Debian (нестабильного и тестируемого).
</p>

<h1><a name="buster_point_release">Редакция Debian 10.5 (<q>buster</q>),
обновлённые установочные носители и <q>живые</q> образы</a></h1>

<p>
Все описанные здесь обновления планируется включить в редакцию
Debian 10.5 (<q>buster</q>), который будет выпущен 1 августа 2020 года.
Таким образом, пользователям, которым нужны установочные и <q>живые</q>
образы Debian следует выбирать 10.5. В будущем более ранние образы могут
не работать с Secure Boot, так как будет выполнен отзыв ключей.
</p>

<h1><a name="more_info">Дополнительная информация</a></h1>

<p>
Дополнительную информацию о настройке UEFI Secure Boot в Debian
можно найти в вики Debian по адресу <a href="https://wiki.debian.org/SecureBoot">\
https://wiki.debian.org/SecureBoot</a>.</p>

<p>
Другие ресурсы по данной теме:
</p>

<ul>
  <li><a href="https://www.eclypsium.com/2020/07/29/theres-a-hole-in-the-boot/">Статья Eclypsium
      <q>BootHole</q></a>, описывающая обнаруженные уязвимости</li>
  <li><a href="https://portal.msrc.microsoft.com/en-US/security-guidance/advisory/ADV200011">Руководство
      Microsoft по решению пробем обхода безопасности в GRUB</a></li>
  <li><a href="https://wiki.ubuntu.com/SecurityTeam/KnowledgeBase/GRUB2SecureBootBypass">Статья
      в базе знаний Ubuntu</a></li>
  <li><a href="https://access.redhat.com/security/vulnerabilities/grub2bootloader">Статья
      об уязвимости от Red Hat</a></li>
  <li><a href="https://www.suse.com/c/suse-addresses-grub2-secure-boot-issue/">Статья
      об уязвимости от SUSE</a></li>
</ul>

© 2014-2024 Faster IT GmbH | imprint | privacy policy