У меня нет ответа на вопрос «почему?» часть вашего вопроса, но инкрементное связывание используется начиная с Linux 0.97 (1 августа 1992 г. )по крайней мере:
OBJS= namei.o inode.o file.o dir.o misc.o fat.o
msdos.o: $(OBJS)
$(LD) -r -o msdos.o $(OBJS)
или
OBJS= bitmap.o freelists.o truncate.o namei.o inode.o \
file.o dir.o symlink.o blkdev.o chrdev.o fifo.o
ext.o: $(OBJS)
$(LD) -r -o ext.o $(OBJS)
https://github.com/mpe/linux-fullhistory/commit/e60feb868bfa9d248c71a1a3bdd8c2857f1d433d
Однако в этих древних коммитах не упоминается обоснование, поэтому вам, вероятно, придется спросить Линуса, почему именно это делается именно так, а не связывается все за один раз. Я подозреваю, что в основном это делается для того, чтобы система сборки была хорошо модульной, а не для одной гигантской строки ссылок, в которой перечислены все объекты.
Если вы хотите изменить это сейчас, вам придется представить действительно веские доводы, так как такое серьезное структурное изменение в системе сборки не будет сделано просто для развлечения.
В списке версий, которые вы просматриваете, представлены только версии sudo
, выпущенные самим проектом sudo
. Такие дистрибутивы, как Ubuntu, обычно добавляют исправления для устранения таких уязвимостей безопасности вместо обновления до последней версии sudo
.
Чтобы определить, затронута ли ваша версия, вам нужно просмотреть информацию о безопасности, предоставленную вашим дистрибутивом ; в этом случае соответствующим уведомлением является USN -4705 -1 , что указывает на то, что ваша версия исправлена.
Вы также можете посмотреть список изменений пакета в /usr/share/doc/sudo/changelog.Debian.gz
; здесь должны быть перечислены CVE, адресованные версией, установленной в настоящее время в вашей системе (, если таковые имеются):
* SECURITY UPDATE: dir existence issue via sudoedit race
- debian/patches/CVE-2021-23239.patch: fix potential directory existing
info leak in sudoedit in src/sudo_edit.c.
- CVE-2021-23239
* SECURITY UPDATE: heap-based buffer overflow
- debian/patches/CVE-2021-3156-pre1.patch: check lock record size in
plugins/sudoers/timestamp.c.
- debian/patches/CVE-2021-3156-pre2.patch: sanity check size when
converting the first record to TS_LOCKEXCL in
plugins/sudoers/timestamp.c.
- debian/patches/CVE-2021-3156-1.patch: reset valid_flags to
MODE_NONINTERACTIVE for sudoedit in src/parse_args.c.
- debian/patches/CVE-2021-3156-2.patch: add sudoedit flag checks in
plugin in plugins/sudoers/policy.c.
- debian/patches/CVE-2021-3156-3.patch: fix potential buffer overflow
when unescaping backslashes in plugins/sudoers/sudoers.c.
- debian/patches/CVE-2021-3156-4.patch: fix the memset offset when
converting a v1 timestamp to TS_LOCKEXCL in
plugins/sudoers/timestamp.c.
- debian/patches/CVE-2021-3156-5.patch: don't assume that argv is
allocated as a single flat buffer in src/parse_args.c.
- CVE-2021-3156
Согласноhttps://packages.ubuntu.com/bionic-updates/sudoвы используете пропатченную версию, которая больше не уязвима.