From 92ebce7ff4daee52e912fc13f73227661c0a1fa7 Mon Sep 17 00:00:00 2001 From: Poltern <2363951+Poltern@users.noreply.github.com> Date: Fri, 15 Sep 2023 21:53:49 +0500 Subject: [PATCH 1/3] Glibc: Fix CVE-2023-4806 --- chapter01/changelog.xml | 20 ++++++++++++++++++++ chapter01/whatsnew.xml | 27 ++++++--------------------- chapter03/patches.xml | 6 +++--- chapter08/glibc.xml | 17 +++-------------- patches.ent | 6 +++--- 5 files changed, 35 insertions(+), 41 deletions(-) diff --git a/chapter01/changelog.xml b/chapter01/changelog.xml index 4d0188b..e855144 100644 --- a/chapter01/changelog.xml +++ b/chapter01/changelog.xml @@ -39,6 +39,26 @@ appropriate for the entry or if needed the entire day's listitem. --> + + 2023-09-13 + + + [xry111] - Fix CVE-2023-4806 for Glibc-2.38. Fixes + #5347. + + + + + + 2023-09-12 + + + [xry111] - Fix CVE-2023-4527 for Glibc-2.38. Fixes + #5346. + + + + 2023-09-07 diff --git a/chapter01/whatsnew.xml b/chapter01/whatsnew.xml index c24b2b4..149fcfb 100644 --- a/chapter01/whatsnew.xml +++ b/chapter01/whatsnew.xml @@ -286,35 +286,20 @@ Добавлены: - + + &glibc-upstream-fixes-patch; + - - - Удалены: - diff --git a/chapter03/patches.xml b/chapter03/patches.xml index 2f8f7de..ed378e7 100644 --- a/chapter03/patches.xml +++ b/chapter03/patches.xml @@ -77,10 +77,10 @@ --> - Glibc Memalign Patch - &glibc-memalign-patch-size;: + Glibc Upstream Fixes Patch - &glibc-upstream-fixes-patch-size;: - Ссылка на загрузку: - Контрольная сумма MD5: &glibc-memalign-patch-md5; + Ссылка на загрузку: + Контрольная сумма MD5: &glibc-upstream-fixes-patch-md5; diff --git a/chapter08/glibc.xml b/chapter08/glibc.xml index 30afbcb..d6308b2 100644 --- a/chapter08/glibc.xml +++ b/chapter08/glibc.xml @@ -50,21 +50,10 @@ patch -Np1 -i ../&glibc-fhs-patch; - Теперь исправьте регрессию, из-за которой функция posix_memalign() в некоторых - условиях работала очень медленно: + Теперь исправьте две уязвимости безопасности и регрессию, из-за которой функция + posix_memalign() в некоторых условиях работает очень медленно: -patch -Np1 -i ../&glibc-memalign-patch; - - - Затем устраните уязвимость безопасности, которую можно использовать, когда в - /etc/resolv.conf применяется параметр : - -sed \ - -E "/__res_context_search/\ - {N;N;s/(search \(([^,]*,){6}[^,]*)NULL/\1\&alt_dns_packet_buffer/}" \ - -i resolv/nss_dns/dns-host.c +patch -Np1 -i ../&glibc-upstream-fixes-patch; Документация Glibc рекомендует выполнять компиляцию в отдельном каталоге: diff --git a/patches.ent b/patches.ent index 16f7cbd..828c439 100644 --- a/patches.ent +++ b/patches.ent @@ -14,9 +14,9 @@ - - - + + + From a6549d00b07e88731e03da6c47a6898171345d89 Mon Sep 17 00:00:00 2001 From: Poltern <2363951+Poltern@users.noreply.github.com> Date: Fri, 15 Sep 2023 22:48:37 +0500 Subject: [PATCH 2/3] systemd: Use NSS modules provided by systemd in nsswitch.conf It allows a simplification to /etc/hosts. Also correct some info about FQDN in both sysv and systemd. --- chapter08/glibc.xml | 20 +++++++++++++++- chapter09/network.xml | 19 ++++++++++----- chapter09/networkd.xml | 54 +++++++++++++++++++----------------------- 3 files changed, 56 insertions(+), 37 deletions(-) diff --git a/chapter08/glibc.xml b/chapter08/glibc.xml index d6308b2..35f49d7 100644 --- a/chapter08/glibc.xml +++ b/chapter08/glibc.xml @@ -311,7 +311,7 @@ localedef -i ja_JP -f SHIFT_JIS ja_JP.SJIS 2> /dev/null || trueСоздайте новый фай /etc/nsswitch.conf, выполнив следующие действия: -cat > /etc/nsswitch.conf << "EOF" +cat > /etc/nsswitch.conf << "EOF" # Begin /etc/nsswitch.conf passwd: files @@ -326,6 +326,24 @@ services: files ethers: files rpc: files +# End /etc/nsswitch.conf +EOF + +cat > /etc/nsswitch.conf << "EOF" +# Begin /etc/nsswitch.conf + +passwd: files systemd +group: files systemd +shadow: files systemd + +hosts: mymachines resolve [!UNAVAIL=return] files myhostname dns +networks: files + +protocols: files +services: files +ethers: files +rpc: files + # End /etc/nsswitch.conf EOF diff --git a/chapter09/network.xml b/chapter09/network.xml index f056cb9..9070aaf 100644 --- a/chapter09/network.xml +++ b/chapter09/network.xml @@ -161,8 +161,9 @@ EOF /etc/hosts - Укажите IP-адрес, полное доменное имя (FQDN) и возможные псевдонимы для использования в - файле /etc/hosts. Синтаксис строки: + Выберите полное доменное имя (FQDN) и возможные псевдонимы для использования в файле + /etc/hosts. Если вы используете статические IP-адреса, вам также необходимо + определиться с IP-адресом. Синтаксис для записи в файле hosts следующий: IP_address myhost.example.org aliases @@ -177,11 +178,17 @@ EOF x может быть любым числом в диапазоне 16-31. y может быть любым числом в диапазоне 0-255. - Правильный IP адрес может быть 192.168.1.1. Правильный FQDN для этого IP - адреса может быть lfs.example.org. + Правильным IP адресом в локальной сети может быть 192.168.1.1. - Даже если сетевая карта не используется, всё равно требуется указание полного доменного - имени. Это необходимо для правильной работы некоторых программ. + Если компьютер должен быть виден в Интернете, действительным полным доменным + именем может быть само имя домена или строка, полученная путем объединения префикса + (часто имени хоста) и домена с помощью символа .. Кроме того, вам + необходимо обратиться к администратору домена, чтобы связать полное доменное имя и + ваш общедоступный IP-адрес. + + Даже если компьютер не виден из Интернета, полное доменное имя все равно необходимо + для правильной работы некоторых программ, таких как MTA. Для этих целей можно использовать + специальное полное доменное имя localhost.localdomain. Создайте файл /etc/hosts, выполнив команду: diff --git a/chapter09/networkd.xml b/chapter09/networkd.xml index b6c66ef..10c1818 100644 --- a/chapter09/networkd.xml +++ b/chapter09/networkd.xml @@ -276,7 +276,8 @@ EOF Если компьютер не должен быть виден в Интернете (т. е. нет зарегистрированного домена и действительного блока назначенных IP-адресов—у большинства пользователей этого нет), - убедитесь, что IP-адрес находится в диапазоне внутренних сетевых IP-адресов. Допустимые диапазоны: + убедитесь, что IP-адрес находится в диапазоне внутренних сетевых IP-адресов. Допустимые + диапазоны: Диапазон адресов локальной сети Стандартный префикс 10.0.0.1 - 10.255.255.254 8 @@ -285,53 +286,46 @@ EOF x может быть любым числом в диапазоне 16-31. y может быть любым числом в диапазоне 0-255. - Правильный IP адрес может быть 192.168.1.1. Правильный FQDN для этого IP - адреса может быть lfs.example.org. + Правильным IP адресом в локальной сети может быть 192.168.1.1. - Даже если сетевая карта не используется, всё равно требуется указание полного доменного - имени. Это необходимо для правильной работы некоторых программ. + Если компьютер должен быть виден в Интернете, действительным полным доменным + именем может быть само имя домена или строка, полученная путем объединения префикса + (часто имени хоста) и домена с помощью символа .. Кроме того, вам + необходимо обратиться к администратору домена, чтобы связать полное доменное имя и + ваш общедоступный IP-адрес. - + Даже если компьютер не виден из Интернета, полное доменное имя все равно необходимо + для правильной работы некоторых программ, таких как MTA. Для этих целей можно использовать + специальное полное доменное имя localhost.localdomain. Создайте файл /etc/hosts, выполнив команду: cat > /etc/hosts << "EOF" # Begin /etc/hosts -127.0.0.1 localhost.localdomain localhost -127.0.1.1 <FQDN> <HOSTNAME> -<192.168.0.2> <FQDN> <HOSTNAME> [alias1] [alias2] ... -::1 localhost ip6-localhost ip6-loopback +<192.168.0.2> <FQDN> [alias1] [alias2] ... +::1 ip6-localhost ip6-loopback ff02::1 ip6-allnodes ff02::2 ip6-allrouters # End /etc/hosts EOF - Значения <192.168.0.2>, - <FQDN>, и - <HOSTNAME> должны быть изменены на необходимые в + Значения <192.168.0.2> и + <FQDN> должны быть изменены на необходимые в соответствии требованиями сети (если имеется IP-адрес выданный сетевым/системным администратором и машина подключена к существующей сети). Необязательные параметры могут быть опущены, а строку <192.168.0.2> можно опустить, если вы используете подключение, - настроенное с помощью DHCP или автоматической настройки IPv6. + настроенное с помощью DHCP или автоматической настройки IPv6, или используя + localhost.localdomain в качестве полного доменного имени. - Запись ::1 является IPv6-аналогом 127.0.0.1 и представляет loopback-интерфейс IPv6. - 127.0.1.1 — это зарезервированная специально для FQDN запись. + /etc/hostname не содержит записей для + localhost, localhost.localdomain или имени хоста + (без домена), поскольку они обрабатываются модулем NSS + myhostname, прочтите справочную страницу + nss-myhostname(8) для получения подробной информации. + + Запись ::1 является IPv6-аналогом 127.0.0.1 и представляет loopback-интерфейс IPv6. From d3d3bbf9fbe85f94c9304aef508624f3e6e646d7 Mon Sep 17 00:00:00 2001 From: Poltern <2363951+Poltern@users.noreply.github.com> Date: Fri, 15 Sep 2023 22:49:46 +0500 Subject: [PATCH 3/3] libstdc++: Remove one more .la file --- chapter05/libstdc++.xml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/chapter05/libstdc++.xml b/chapter05/libstdc++.xml index a13b1cd..ab795da 100644 --- a/chapter05/libstdc++.xml +++ b/chapter05/libstdc++.xml @@ -119,7 +119,7 @@ cd build Удалите архивные файлы libtool, поскольку они потенциально опасны при кросс-компиляции: -rm -v $LFS/usr/lib/lib{stdc++,stdc++fs,supc++}.la +rm -v $LFS/usr/lib/lib{stdc++{,exp,fs},supc++}.la