Обновления безопасности и обновления стабильных релизов¶
Исправление ошибок безопасности в Ubuntu¶
Вступление¶
Исправление ошибок безопасности в Ubuntu в действительности не особо отличается от исправления обычных ошибок в Ubuntu, и предполагается, что вы уже знакомы с процессом исправления обычных ошибок. Чтобы продемонстрировать отличия, мы выполним обновление безопасности пакета dbus в Ubuntu 10.04 LTS (Lucid Lynx).
Получение исходного кода¶
В этом примере, как уже было сказано, мы собираемся внести исправления в пакет dbus в Ubuntu 10.04 LTS (Lucid Lynx). Сначала нам надо определить, какую версию пакета следует скачать. В этом нам может помочь rmadison:
$ rmadison dbus | grep lucid
dbus | 1.2.16-2ubuntu4 | lucid | source, amd64, i386
dbus | 1.2.16-2ubuntu4.1 | lucid-security | source, amd64, i386
dbus | 1.2.16-2ubuntu4.2 | lucid-updates | source, amd64, i386
Обычно следует выбрать самую последнюю версию для выпуска, в который вы хотите внести изменения, находящуюся не в -proposed или -backports. Поскольку мы обновляем dbus в Lucid, вам нужно скачать 1.2.16-2ubuntu4.2 из lucid-updates:
$ bzr branch ubuntu:lucid-updates/dbus
Создание патча¶
Теперь, когда мы имеем исходный пакет, мы должны сделать патч для исправления уязвимости. Вы можете использовать любой метод, подходящий для данного пакета, в том числе методы UDD, но в этом примере будем использовать edit-patch (из пакета ubuntu-dev-tools). edit-patch — это самый простой способ для исправления пакетов, работающий с любой системой патчей, которую вы можете себе представить.
Чтобы создать патч с помощью edit-patch:
$ cd dbus
$ edit-patch 99-fix-a-vulnerability
This will apply the existing patches and put the packaging in a temporary directory. Now edit the files needed to fix the vulnerability. Often upstream will have provided a patch so you can apply that patch:
$ patch -p1 < /home/user/dbus-vulnerability.diff
После внесения необходимых изменений просто нажмите Ctrl-D или наберите exit, чтобы покинуть временную командную оболочку.
Форматирование файла changelog и патчей¶
After applying your patches you will want to update the changelog. The dch command is used to edit the debian/changelog file and edit-patch will launch dch automatically after un-applying all the patches. If you are not using edit-patch, you can launch dch -i manually. Unlike with regular patches, you should use the following format (note the distribution name uses lucid-security since this is a security update for Lucid) for security updates:
dbus (1.2.16-2ubuntu4.3) lucid-security; urgency=low
* SECURITY UPDATE: [DESCRIBE VULNERABILITY HERE]
- debian/patches/99-fix-a-vulnerability.patch: [DESCRIBE CHANGES HERE]
- [CVE IDENTIFIER]
- [LINK TO UPSTREAM BUG OR SECURITY NOTICE]
- LP: #[BUG NUMBER]
...
Обновите свой патч для использования соответствующих тегов. Ваш патч должен содержать как минимум теги Origin, Description и Bug-Ubuntu. Например, отредактируйте debian/patches/99-fix-a-vulnerability.patch, чтобы он имел приблизительно следующие строки:
## Description: [DESCRIBE VULNERABILITY HERE]
## Origin/Author: [COMMIT ID, URL OR EMAIL ADDRESS OF AUTHOR]
## Bug: [UPSTREAM BUG URL]
## Bug-Ubuntu: https://launchpad.net/bugs/[BUG NUMBER]
Index: dbus-1.2.16/dbus/dbus-marshal-validate.c
...
Multiple vulnerabilities can be fixed in the same security upload; just be sure to use different patches for different vulnerabilities.
Проверка и отправка вашей работы¶
На этом этапе процесс такой же, как при исправлении обычных ошибок в Ubuntu. А именно, вам нужно:
- Выполнить сборку пакета и проверить, что он компилируется без ошибок и компилятор не выдаёт никаких дополнительных предупреждений
- Выполнить обновление с предыдущей версии пакета до новой версии
- Убедиться, что новый пакет закрывает уязвимость и не вносит никаких ухудшений
- Submit your work via a Launchpad merge proposal and file a Launchpad bug being sure to mark the bug as a security bug and to subscribe ubuntu-security-sponsors
Если это уязвимость в безопасности, о которой ещё не объявлено публично, то не отправляйте предложение слияния и убедитесь, что вы пометили свою ошибку, как приватную (private).
The filed bug should include a Test Case, i.e. a comment which clearly shows how to recreate the bug by running the old version then how to ensure the bug no longer exists in the new version.
The bug report should also confirm that the issue is fixed in Ubuntu versions newer than the one with the proposed fix (in the above example newer than Lucid). If the issue is not fixed in newer Ubuntu versions you should prepare updates for those versions too.
Обновления стабильного релиза¶
Мы также разрешаем вносить обновления в выпуски, в которых пакет содержит серьёзную ошибку, такую как значительная регрессия по сравнению с предыдущим выпуском или ошибка, которая может привести к потере данных. Из-за того, что такие изменения сами потенциально могут привести к появлению дополнительных ошибок, мы позволяем делать это только там, где изменения легко можно понять и проверить.
Процесс обновлений стабильного выпуска (Stable Release Updates или SRU) такой же, как и для исправлений ошибок безопасности, за исключением того, что нужно подписать на отчёт об ошибке команду ubuntu-sru.
Обновление попадёт в архив proposed (например, lucid-proposed), где нужно будет проверить, что он устраняет проблему и не создаёт никаких новых проблем. Через неделю, если сообщений о проблемах не поступало, оно может быть перемещено в updates.
Дополнительную информацию смотрите на вики-странице Stable Release Updates.