Установка патчей (обновлений, заплат) на OpenBSD 5.0

archive view archive save

openbsd Сложно недооценить важность своевременной установки обновлений (патчей), особенно если они критические. Список выпускаемых обновлений (патчей) можно найти по адресу: http://www.openbsd.org/errata50.html Процесс установки обновлений (патчей) на OpenBSD 5.0 описан в справке по адресу: http://www.openbsd.org/faq/faq10.html#Patches, а также в самом патче (обновлении).

На сегодняшний день в OpenBSD 5.0 найдена одна уязвимость в DNS сервере BIND 9, которая позволяет удённому нападающему осуществить DDOS атаку на DNS сервер:

  • http://www.openbsd.org/errata50.html
    001: RELIABILITY FIX: November 30, 2011 All architectures
    A vulnerability has been found in BIND's named server (CVE-2011-4313). An unidentified network event caused BIND 9 resolvers to cache an invalid record, subsequent queries for which could crash the resolvers with an assertion failure.
  • http://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2011-4313
    query.c in ISC BIND 9.0.x through 9.6.x, 9.4-ESV through 9.4-ESV-R5, 9.6-ESV through 9.6-ESV-R5, 9.7.0 through 9.7.4, 9.8.0 through 9.8.1, and 9.9.0a1 through 9.9.0b1 allows remote attackers to cause a denial of service (assertion failure and named exit) via unknown vectors related to recursive DNS queries, error logging, and the caching of an invalid record by the resolver.

Описание установки патча (обновления) можно найти внутри самого обновления (патча). Для начала создадим переменную окружения "CVSROOT" и получим исходные коды того ПО к которому выпущено обновление имхо без исходных кодов кина не будет!:

export CVSROOT=anoncvs@ftp5.eu.openbsd.org:/cvs
cd /usr
cvs checkout -P -rOPENBSD_5_0 src/usr.sbin/bind
cd src
ftp ftp://ftp.openbsd.org/pub/OpenBSD/patches/5.0/common/001_bind.patch
 
# patch -p0 < 001_bind.patch
Hmm...  Looks like a unified diff to me...
The text leading up to this was:
--------------------------
|Apply by doing:
|       cd /usr/src
|       patch -p0 < 001_bind.patch
|
|And then rebuild and install bind:
|       cd usr.sbin/bind
|       make -f Makefile.bsd-wrapper obj
|       make -f Makefile.bsd-wrapper depend
|       make -f Makefile.bsd-wrapper
|       make -f Makefile.bsd-wrapper install
|
|Index: usr.sbin/bind/bin/named/query.c
|===================================================================
|RCS file: /cvs/src/usr.sbin/bind/bin/named/query.c,v
|retrieving revision 1.8
|diff -u -p -r1.8 query.c
|--- usr.sbin/bind/bin/named/query.c    9 Dec 2007 13:39:42 -0000       1.8
|+++ usr.sbin/bind/bin/named/query.c    29 Nov 2011 13:39:58 -0000
--------------------------
Patching file usr.sbin/bind/bin/named/query.c using Plan A...
Reversed (or previously applied) patch detected!  Assume -R? [y] y
Hunk #1 succeeded at 1239.
Hunk #2 succeeded at 1284.
Hunk #3 succeeded at 1733.
Hmm...  The next patch looks like a unified diff to me...
The text leading up to this was:
--------------------------
|Index: usr.sbin/bind/lib/dns/rbtdb.c
|===================================================================
|RCS file: /cvs/src/usr.sbin/bind/lib/dns/rbtdb.c,v
|retrieving revision 1.6
|diff -u -p -r1.6 rbtdb.c
|--- usr.sbin/bind/lib/dns/rbtdb.c      9 Dec 2007 13:39:43 -0000       1.6
|+++ usr.sbin/bind/lib/dns/rbtdb.c      29 Nov 2011 13:39:58 -0000
--------------------------
Patching file usr.sbin/bind/lib/dns/rbtdb.c using Plan A...
Reversed (or previously applied) patch detected!  Assume -R? [y] y
Hunk #1 succeeded at 244.
Hunk #2 succeeded at 278.
Hunk #3 succeeded at 3648.
Hunk #4 succeeded at 4234.
done

После применения обновления (патча) переходим в каталог с исходниками пропатченой программы, в нашем случае это DNS сервер BIND для OpenBSD, собираем её и устанавливаем:

cd usr.sbin/bind
make -f Makefile.bsd-wrapper obj
    /usr/src/usr.sbin/bind/obj -> /usr/obj/usr.sbin/bind
make -f Makefile.bsd-wrapper depend
    Nothing here so far...
make -f Makefile.bsd-wrapper
    config.status: creating lib/isc/include/Makefile
    config.status: creating lib/isc/include/isc/Makefile
    config.status: creating lib/isc/include/isc/platform.h
    config.status: creating lib/isc/unix/Makefile
    config.status: creating lib/isc/unix/include/Makefile
    config.status: creating lib/isc/unix/include/isc/Makefile
    config.status: creating lib/isc/nls/Makefile
    config.status: creating lib/isc/nothreads/Makefile
    config.status: creating lib/isc/nothreads/include/Makefile
    config.status: creating lib/isc/nothreads/include/isc/Makefil
    config.status: creating lib/isc/x86_32/Makefile
    config.status: creating lib/isc/x86_32/include/Makefile
    config.status: creating lib/isc/x86_32/include/isc/Makefile
    config.status: creating lib/isccc/Makefile
    config.status: creating lib/isccc/include/Makefile
    config.status: creating lib/isccc/include/isccc/Makefile
    ..........
    making all in /usr/src/usr.sbin/bind/obj/doc
    making all in /usr/src/usr.sbin/bind/obj/doc/arm
    making all in /usr/src/usr.sbin/bind/obj/doc/misc
    making all in /usr/src/usr.sbin/bind/obj/doc/xsl
make -f Makefile.bsd-wrapper install
    ..........
    install -c -s  -o root -g bin -m 555  bin/check/named-checkconf /usr/sbin
    install -c -s  -o root -g bin -m 555  bin/check/named-checkzone /usr/sbin
    install -c -s  -o root -g bin -m 555  bin/dnssec/dnssec-keygen /usr/sbin
    install -c -s  -o root -g bin -m 555  bin/dnssec/dnssec-signzone /usr/sbin
    install -c -s  -o root -g bin -m 555  bin/dig/dig /usr/sbin
    install -c -s  -o root -g bin -m 555  bin/dig/host /usr/sbin
    install -c -s  -o root -g bin -m 555  bin/dig/nslookup /usr/sbin
    install -c -s  -o root -g bin -m 555  bin/named/named /usr/sbin
    install -c -s  -o root -g bin -m 555  bin/nsupdate/nsupdate /usr/sbin
    install -c -s  -o root -g bin -m 555  bin/rndc/rndc-confgen /usr/sbin
    install -c -s  -o root -g bin -m 555  bin/rndc/rndc /usr/sbin

Вот собственно и весь процесс установки патчей (заплат) на OpenBSD 5.0, увы бинарных патчей (обновлений) пока не выпускают так, что по сути установка патчей (заплат) на OpenBSD - это перекомпиляция отдельных модулей или программы в целом с предварительной правкой исходников. После завершения установки патчей (заплат) на OpenBSD исходный код можно удалить, но можно и оставить, а также можно получить полное дерево исходных кодов:

cd /usr; cvs checkout -P -rOPENBSD_5_0 src

Справку по работе с CVS можно получить по адресу: http://www.openbsd.org/anoncvs.html#starting

Автор: Олег Головский


Комментарии в блоге
Новое на форуме