ALT Linux Team development discussions
 help / color / mirror / Atom feed
From: Paul Wolneykien <manowar@altlinux.org>
To: devel@lists.altlinux.org
Subject: Re: [devel] I: SharedLibsPolicy update (libjxl update)
Date: Wed, 28 Feb 2024 23:03:45 +0300
Message-ID: <20240228230345.774bacee@legato> (raw)
In-Reply-To: <238f71aefe90083c94d8f6b2e4664ee9@altlinux.ru>

В Wed, 28 Feb 2024 00:17:37 +0300
Vitaly Lipatov <lav@altlinux.ru> пишет:

> Anton Farygin писал(а) 23.2.24 12:56:
> ...
> > Думаю что надо добить SharedLibsPolicy до стадии утверждённой политики 
> > и внести проверки на обязательное соответствие policy в сборочную 
> > систему.  
> 
> Согласен, что для массово используемых (т.е. известных) библиотек это 
> просто необходимо, особенно когда они имеют внешних пользователей или 
> стали де факто частью Linux-системы.

  Мне кажется, что нужно более веское обоснование, чем "просто
необходимо". На вики, например, есть такое:

  https://www.altlinux.org/Shared_Libs_Policy_and_updates

  Процитирую. "При проблемах обновления с бранча на бранч возможность
точечных обновлений чрезвычайно расширяется" ... "Например, возможность
обновить один новый пакет foo, зависящий от libexiv2_77 не затронет другой
старый пакет bar, который зависит от старой версии libexiv2_11, которой уже
нет в новом репозитории, но еще есть в системе."

  Кажется, что SharedLibsPolicy должна решить проблему точечных
обновлений. Но с чем на самом деле сталкивается пользователь пакета
bar, решивший поставить foo из нового бранча? В 90% случаев блокер ---
это libc! Из-за того, что foo собран с новой libc, последнюю нужно
обновить, а это значит --- вынести всю или почти всю старую систему,
включая, конечно, и пакет bar. Так для чего заострять внимание на
частной зависимости от libexiv, когда это --- второстепенная проблема?

  В связи с этим, если у наших пользователей есть необходимость
использовать программы из старых бранчей, я бы подумал над тем,
как предоставить им возможность разворачивать старую базовую систему
(p7, p8, p9, ...) в chroot, ставить туда пакеты и запускать эти
программы "бесшовно", то есть на актуальном десктопе. Но это, очевидно,
тема отдельного обсуждения.

> ...
> Кажется, что основной критерий — это то, возможно ли одновременное 
> существование актуальных приложений, требующих разные версии библиотек.

  Предлагаю сперва разобраться, откуда берутся такие актуальные приложения
и почему мы должны считать их актуальными? Какие здесь возможные причины?

  Если у приложения просто "тормозной" апстрим, то по факту такой проект
почти наверняка неподдерживаемый. Можно ли считать его актуальным?

  Другой вариант: апстрим вполне живой, но он не поспевает за обновлением
библиотеки в Сизифе. На мой взгляд, такая ситуация может означать, что
мэйнтейнер библиотеки в Сизифе слишком торопится её обновлять: к примеру,
собирает development, а не stable версию. Но здесь уместно будет спросить,
а нужно ли так торопиться? Ведь сборка не утверждённой сообществом версии
известной, широко используемой библиотеки приносит с собой (кроме проблем с
совместимостью с приложениями) неизвестные уязвимости. Тут мы подходим к
самому главному.

  Если мы, как пишет Виталий ниже, идём к "необходимости присутствия
в системе всех ожидаемых ими [версий] библиотек (а это может быть и 5-7 лет
существования приложения)", то, очевидно, это будет система, в которой
собраны все известные CVE за 5--7 лет!

  Правда, есть такая штука, как security bugfixes. То есть возможен такой
случай, когда сосуществует несколько версий библиотеки и все эти версии
снабжаются исправлениями безопасности. На мой взгляд, это именно тот
_единственный_ случай, когда допустимо одновременное наличие нескольких
версий известной библиотеки. Однако этот случай также отличается от того,
что советует SharedLibsPolicy. Что на практике означает наличие
security bugfixes для разных версий библиотеки? Это означает, что
апстрим библиотеки, а не только её мэйнтейнер в Сизифе, _поддерживает_
несколько _стабильных_ версий библиотеки: к примеру, текущую и LTS.
Но поддержка многоверсионности такого типа означает, что в Сизифе должно
быть несколько "полноценных" пакетов с разной версией библиттеки:
"полноценных" --- значит, должно быть несколько исходных пакетов,
каждый для своей версии, которые регулярно обновляются. Если я правильно
понял SharedLibsPolicy, то она этого не требует (хотя и не противоречит).

  Так что основной критерий наличия нескольких не конфликтующих пакетов
с библиотекой, на мой взгляд --- это одновременная поддержка нескольких
версий в апстриме. Только в этом случае совершенно понятно, откуда
берутся _актуальные_ версии приложений, требующие разные версии библиотеки.
И только в этом случае можно надеяться на контролируемое число CVE.
И, кстати, только в этом случае не будет проблемы с конфигурационными
файлами (то, о чём написал Антон в другом письме).

  Теперь насчёт сторонних приложений:

> И если при наличии замкнутого репозитория долгое время удавалось это 
> обходить удалением пакетов, обновлением всех под новую версию (с 
> проблемами), то при наличии внешних пользователей к необходимости 
> присутствия в системе всех ожидаемых ими библиотек (а это может быть и 
> 5-7 лет существования приложения) стоит отнестись серьёзнее.
> Например, допускать одновременное существование в репозитории libssl1.1 
> и libssl3.

  Мне кажется относительно "внешних пользователей" библиотеки, то есть
к внешних программ, вполне можно задать те же вопросы, что и
относительно программ внутренних (сизифных). Почему они "запали" на
конкретную (старую) версию библиотеки? Что это означает в смысле CVE?
Должна ли программная платформа потворствовать этому? Не исключено,
конечно, что это мэйнтейнер библиотеки поторопился (собрал devel вместо
stable).

  Мне кажется, что для тех внешних программ, которые _хотят_ собираться
под нашу платформу, вполне логично использовать актуальные версии
библиотек. А для остальных, которых платформа как платформа не
интересует, и которые хотят чтобы "просто работало", вполне допустим,
мне кажется, подход Flatpack (то есть, все библиотеки носит с собой).
Понятно, что такое стороннее приложение, вместе со старыми версиями
библиотек, приносит и известные уязвимости. Но по крайней мере эти
старые библиотеки тогда не являются частью программной платформы.


  parent reply	other threads:[~2024-02-28 20:03 UTC|newest]

Thread overview: 19+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2024-02-23  9:56 Anton Farygin
2024-02-26  7:02 ` Ruslandh
2024-02-26 12:40 ` [devel] I: Cannot mix incompatible Qt library (6.6.1) with this library (6.6.2) Ruslandh
2024-02-26 17:14 ` [devel] I: SharedLibsPolicy update (libjxl update) Dmitry V. Levin
2024-02-27  7:19   ` Anton Farygin
2024-02-27 21:17 ` Vitaly Lipatov
2024-02-28  5:53   ` Anton Farygin
2024-02-28  6:14   ` [devel] I: SharedLibsPolicy update (openssl1.1 & openssl3) Anton Farygin
2024-02-28 20:03   ` Paul Wolneykien [this message]
2024-02-28 23:21     ` [devel] I: SharedLibsPolicy update (libjxl update) Dmitry V. Levin
2024-02-29  7:56     ` Sergey V Turchin
2024-02-29 10:46       ` Paul Wolneykien
2024-02-29 10:51         ` Sergey V Turchin
2024-03-01 10:54         ` Anton Farygin
2024-03-22 14:29 ` manowar
2024-03-22 14:54   ` Mikhail Efremov
2024-03-25 11:59     ` Sergey V Turchin
2024-03-22 15:26   ` Anton Farygin
2024-03-25 11:57     ` Sergey V Turchin

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=20240228230345.774bacee@legato \
    --to=manowar@altlinux.org \
    --cc=devel@lists.altlinux.org \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link

ALT Linux Team development discussions

This inbox may be cloned and mirrored by anyone:

	git clone --mirror http://lore.altlinux.org/devel/0 devel/git/0.git

	# If you have public-inbox 1.1+ installed, you may
	# initialize and index your mirror using the following commands:
	public-inbox-init -V2 devel devel/ http://lore.altlinux.org/devel \
		devel@altlinux.org devel@altlinux.ru devel@lists.altlinux.org devel@lists.altlinux.ru devel@linux.iplabs.ru mandrake-russian@linuxteam.iplabs.ru sisyphus@linuxteam.iplabs.ru
	public-inbox-index devel

Example config snippet for mirrors.
Newsgroup available over NNTP:
	nntp://lore.altlinux.org/org.altlinux.lists.devel


AGPL code for this site: git clone https://public-inbox.org/public-inbox.git