Hadmut Danisch обратил внимание (http://www.opennet.me/base/linux/1157733572_6526.txt.html), что в архивах последних версий Linux ядра (например, 2.6.17.11) появилось несколько тысяч директорий и файлов открытых для всех пользователей на запись.Если учесть, что большое число людей разархивируют и пересобирают исходные тексты под пользователем root, подобный недосмотр позволит злоумышленнику, например, взломав типовое web-приложение, внедрить свой код в дерево исходных текстов и обеспечить его выполнение в случае перекомпиляции ядра.
URL: http://www.opennet.me/base/linux/1157733572_6526.txt.html
Новость: http://www.opennet.me/opennews/art.shtml?num=8311
Очень жаль что это так.
Конечно нормальный админ , при соблюдении минимальных мер предосторожности уменьшит вероятность использования такой уязвимости.
Тут конечно Генту, требующий по умолчанию для установки портов прав рута, подкачал.
А вообще такое деяние напоминает провокацию...
Писатели хреновы...
Кто вам сказал подобную чушь про Дженту? Там могут устанавливать порты пользователи, входящие в группу portage. Документацию не пробовали читать?
Бэдный Гентюуу - http://absurdopedia.wikia.com/wiki/Gentoo
Теперь ясно происхождение, некоторых Ваших реплик и откуда вы берете документацию по Unix'y.
А Вы случаем не автор? :))))
Олег, возможно я неясно выразил свою мысль, поэтому расспишу по пунктам:
1)При использовании стандартных ебуилдов после закачивания нового ядра (проверка контрольных сумм, пропатчивание и пр...) происходит его распаковка во временной директории - /var/tmp/portage/....
2) В момент работы системы ебуилдов с исходниками в системе регистрируется (совершенно легально) локальный пользователь.
3) Этот юзер , определив что во временной папке лежат исходники ядра и файлы имеют право на запись дописывает свой код в нужное место(не принципиально куда именно)
4)Ядро , откомпилившись правильно устанавливается.
А дальше все просто - зная что есть в коде ядерных бинарников локальный юзер может воздействовать на ядро - творить то, что ему нужно...
Если бы в сценариях установки (ebuild) стояла бы проверка прав доступа на запись в файлы ядра и установка нужных прав - проблем бы не было .
Этот вариант для взлома в данном случае подойдет?
Вот в чем был смысл моего негодования.
А слепой бездумный фанатизм - это для камикадзе.
>Олег, возможно я неясно выразил свою мысль, поэтому расспишу по пунктам:
>1)При использовании стандартных ебуилдов после закачивания нового ядра (проверка контрольных сумм, пропатчивание
>и пр...) происходит его распаковка во временной директории - /var/tmp/portage/....
>2) В момент работы системы ебуилдов с исходниками в системе регистрируется (совершенно
>легально) локальный пользователь.
>3) Этот юзер , определив что во временной папке лежат исходники ядра
>и файлы имеют право на запись дописывает свой код в нужное
>место(не принципиально куда именно)
>4)Ядро , откомпилившись правильно устанавливается.
>А дальше все просто - зная что есть в коде ядерных бинарников
>локальный юзер может воздействовать на ядро - творить то, что ему
>нужно...
>Если бы в сценариях установки (ebuild) стояла бы проверка прав доступа на
>запись в файлы ядра и установка нужных прав - проблем бы
>не было .
>Этот вариант для взлома в данном случае подойдет?
>Вот в чем был смысл моего негодования.
>А слепой бездумный фанатизм - это для камикадзе.А вы в курсе какие права у этой временной папки?
Исходники ядра в папке "work" во время распаковки/пропатчивания:(до, собственно, распаковки)
$ ls -l /var/tmp/portage/gentoo-sources-2.6.17-r7/
итого 16
drwxrwxr-x 2 root portage 4096 Сен 12 13:37 distdir
drwxrwsr-x 2 root portage 4096 Сен 12 13:37 homedir
drwxrwsr-x 3 root portage 4096 Сен 12 13:37 temp
drwx------ 3 root root 4096 Сен 12 13:37 work(в процессе)
$ ls -l /var/tmp/portage/gentoo-sources-2.6.17-r7/
итого 16
drwxrwxr-x 2 root portage 4096 Сен 12 13:37 distdir
drwxrwsr-x 2 root portage 4096 Сен 12 13:37 homedir
drwxrwsr-x 3 root portage 4096 Сен 12 13:39 temp
drwxr-xr-x 4 root root 4096 Сен 12 13:39 work(после)
$ ls -l /var/tmp/portage/gentoo-sources-2.6.17-r7/
итого 24
drwxr-xr-x 2 root root 4096 Сен 12 13:39 build-info
drwxrwxr-x 2 root portage 4096 Сен 12 13:37 distdir
drwxrwsr-x 2 root portage 4096 Сен 12 13:39 homedir
drwxr-xr-x 3 root root 4096 Сен 12 13:39 image
drwxrwsr-x 3 root portage 4096 Сен 12 13:39 temp
drwx------ 2 portage portage 4096 Сен 12 13:39 work
Олег, извиняюсь, но просто я подзабыл как и куда распаковывается ядро.
Ошибся с директорией , конечно же это /usr/src/linux
И вот если там есть файлы, доступные на запись - только тогда есть риск.
:)
erelesse@ergil ~ $ ls -la /usr/src/linux/
drwxr-xr-x 20 root root 4096 Сен 6 21:54 .
drwxr-xr-x 7 root root 4096 Сен 8 16:04 ..
drwxr-xr-x 26 root root 4096 Авг 30 12:53 arch
drwxr-xr-x 2 root root 4096 Сен 6 20:01 block
-rw-r--r-- 1 root root 41811 Сен 6 21:52 .config
-rw-r--r-- 1 root root 41872 Сен 6 19:30 .config.old
-rw-r--r-- 1 root root 18693 Авг 30 12:53 COPYING
-rw-r--r-- 1 root root 89536 Авг 30 12:53 CREDITS
drwxr-xr-x 2 root root 4096 Сен 6 20:01 crypto
drwxr-xr-x 56 root root 4096 Авг 30 12:53 Documentation
drwxr-xr-x 59 root root 4096 Сен 6 21:54 drivers
drwxr-xr-x 60 root root 8192 Сен 6 20:14 fs
-rw-r--r-- 1 root root 462 Авг 30 12:53 .gitignore
drwxr-xr-x 41 root root 4096 Сен 3 23:08 include
drwxr-xr-x 2 root root 4096 Сен 6 21:54 init
drwxr-xr-x 2 root root 4096 Сен 6 20:00 ipc
-rw-r--r-- 1 root root 1273 Авг 30 12:53 Kbuild
-rw-r--r-- 1 root root 6686 Сен 6 21:52 .kconfig.d
drwxr-xr-x 4 root root 4096 Сен 6 21:53 kernel
-rw-r--r-- 1 root root 21 Сен 6 21:53 .kernelrelease
drwxr-xr-x 5 root root 4096 Сен 6 20:13 lib
-rw-r--r-- 1 root root 70955 Авг 30 12:53 MAINTAINERS
-rw-r--r-- 1 root root 70835 Авг 30 12:53 MAINTAINERS.orig
-rw-r--r-- 1 root root 44707 Авг 30 12:53 Makefile
drwxr-xr-x 2 root root 4096 Сен 6 19:56 mm
-rw-r--r-- 1 root root 141768 Сен 6 20:13 Module.symvers
drwxr-xr-x 36 root root 4096 Сен 6 20:12 net
-rw-r--r-- 1 root root 52 Авг 30 12:53 patches.txt
-rw-r--r-- 1 root root 16538 Авг 30 12:53 README
-rw-r--r-- 1 root root 3065 Авг 30 12:53 REPORTING-BUGS
drwxr-xr-x 8 root root 4096 Сен 6 19:54 scripts
drwxr-xr-x 4 root root 4096 Сен 6 20:00 security
drwxr-xr-x 16 root root 4096 Сен 6 20:09 sound
-rw-r--r-- 1 root root 981514 Сен 6 21:54 System.map
-rw-r--r-- 1 root root 219937 Сен 6 21:54 .tmp_kallsyms1.o
-rw-r--r-- 1 root root 545 Сен 6 21:54 ..tmp_kallsyms1.o.cmd
-rw-r--r-- 1 root root 1283189 Сен 6 21:54 .tmp_kallsyms1.S
-rw-r--r-- 1 root root 219937 Сен 6 21:54 .tmp_kallsyms2.o
-rw-r--r-- 1 root root 545 Сен 6 21:54 ..tmp_kallsyms2.o.cmd
-rw-r--r-- 1 root root 1283189 Сен 6 21:54 .tmp_kallsyms2.S
-rw-r--r-- 1 root root 981514 Сен 6 21:54 .tmp_System.map
drwxr-xr-x 2 root root 4096 Сен 6 21:54 .tmp_versions
-rwxr-xr-x 1 root root 6333749 Сен 6 21:54 .tmp_vmlinux1
-rw-r--r-- 1 root root 634 Сен 6 21:54 ..tmp_vmlinux1.cmd
-rwxr-xr-x 1 root root 6550870 Сен 6 21:54 .tmp_vmlinux2
-rw-r--r-- 1 root root 650 Сен 6 21:54 ..tmp_vmlinux2.cmd
drwxr-xr-x 2 root root 4096 Сен 6 19:54 usr
-rw-r--r-- 1 root root 2 Сен 6 21:54 .version
-rwxr-xr-x 1 root root 6550870 Сен 6 21:54 vmlinux
-rw-r--r-- 1 root root 638 Сен 6 21:54 .vmlinux.cmd
erelesse@ergil ~ $ cat /etc/gentoo-release
Gentoo Base System version 1.12.4Что я в Gentoo делаю не так, что у меня все в порядке с правами на каталоги? Может Вы просто Дженту никогда не видели? :-S
Саботаж :)
--- PATCH ---tar -xvf linux-2.6.17.11.tar.bz2
cd linux-2.6.17.11
find . -type d -exec chmod 0700 '{}' \;
странно, что обратили внимание только сейчас, потому что распаковывается с запись. для всех оно уже давно. то есть так давно, что я уже и не удивляюсь (полгода-год?)
user@host: /usr/src$ find . -type d ! -perm -755
user@host: /usr/src$
Ваабще-то в Gentoo перед тем как собрать какой-либо пакет портаж проверяет контрольную сумму так что даже если вы и внедрите код в исходники код скомпилен не будет по причине несовпадения контрольной суммы
К ядру это не относиться...
>>> Emerging (1 of 1) sys-kernel/gentoo-sources-2.6.17-r7 to /
* genpatches-2.6.17-9.base.tar.bz2 MD5 ;-) ... [ ok ]
* genpatches-2.6.17-9.base.tar.bz2 RMD160 ;-) ... [ ok ]
* genpatches-2.6.17-9.base.tar.bz2 SHA1 ;-) ... [ ok ]
* genpatches-2.6.17-9.base.tar.bz2 SHA256 ;-) ... [ ok ]
* genpatches-2.6.17-9.base.tar.bz2 size ;-) ... [ ok ]
* linux-2.6.17.tar.bz2 MD5 ;-) ... [ ok ]
* linux-2.6.17.tar.bz2 RMD160 ;-) ... [ ok ]
* linux-2.6.17.tar.bz2 SHA1 ;-) ... [ ok ]
* linux-2.6.17.tar.bz2 SHA256 ;-) ... [ ok ]
* linux-2.6.17.tar.bz2 size ;-) ... [ ok ]
* genpatches-2.6.17-9.extras.tar.bz2 MD5 ;-) ... [ ok ]
* genpatches-2.6.17-9.extras.tar.bz2 RMD160 ;-) ... [ ok ]
* genpatches-2.6.17-9.extras.tar.bz2 SHA1 ;-) ... [ ok ]
* genpatches-2.6.17-9.extras.tar.bz2 SHA256 ;-) ... [ ok ]
* genpatches-2.6.17-9.extras.tar.bz2 size ;-) ... [ ok ]
* checking ebuild checksums ;-) ... [ ok ]
* checking auxfile checksums ;-) ... [ ok ]
* checking miscfile checksums ;-) ... [ ok ]
* checking linux-2.6.17.tar.bz2 ;-) ... [ ok ]
* checking genpatches-2.6.17-9.base.tar.bz2 ;-) ... [ ok ]
* checking genpatches-2.6.17-9.extras.tar.bz2 ;-) ... [ ok ]
>>> Unpacking source...
>>>> Emerging (1 of 1) sys-kernel/gentoo-sources-2.6.17-r7 to /
> * genpatches-2.6.17-9.base.tar.bz2 MD5 ;-) ...
> [ ok ]
> * genpatches-2.6.17-9.base.tar.bz2 RMD160 ;-) ...
[
>ok ]
> * genpatches-2.6.17-9.base.tar.bz2 SHA1 ;-) ...
> [ ok ]
> * genpatches-2.6.17-9.base.tar.bz2 SHA256 ;-) ...
> [
>ok ]
> * genpatches-2.6.17-9.base.tar.bz2 size ;-) ...
> [ ok ]
> * linux-2.6.17.tar.bz2 MD5 ;-) ...
> [ ok ]
> * linux-2.6.17.tar.bz2 RMD160 ;-) ...
>[ ok ]
> * linux-2.6.17.tar.bz2 SHA1 ;-) ...
> [ ok ]
> * linux-2.6.17.tar.bz2 SHA256 ;-) ...
>[ ok ]
> * linux-2.6.17.tar.bz2 size ;-) ...
> [ ok ]
> * genpatches-2.6.17-9.extras.tar.bz2 MD5 ;-) ...
>[ ok ]
> * genpatches-2.6.17-9.extras.tar.bz2 RMD160 ;-) ...
> [ ok ]
>
> * genpatches-2.6.17-9.extras.tar.bz2 SHA1 ;-) ...
> [
>ok ]
> * genpatches-2.6.17-9.extras.tar.bz2 SHA256 ;-) ...
> [ ok ]
>
> * genpatches-2.6.17-9.extras.tar.bz2 size ;-) ...
> [
>ok ]
> * checking ebuild checksums ;-) ...
> [ ok ]
> * checking auxfile checksums ;-) ...
> [ ok ]
> * checking miscfile checksums ;-) ...
> [ ok ]
> * checking linux-2.6.17.tar.bz2 ;-) ...
> [ ok
>]
> * checking genpatches-2.6.17-9.base.tar.bz2 ;-) ...
> [ ok ]
> * checking genpatches-2.6.17-9.extras.tar.bz2 ;-) ...
> [ ok ]
>>>> Unpacking source...
Круто.. и перед каждой сборкой ядра ты вызываешь emerge gentoo-sources?
[root@nest src]# find . -type d ! -perm -777 | wc
1657 1657 61018Гы %-)
а 755 дык не то малость.
у пингвинологов простому юзверу сетевые интерфейсы запрещено смотреть. секрет тайный, надо же. а исходники ядра на запись любому - пожалуйста :)) мудаки.
>у пингвинологов простому юзверу сетевые интерфейсы запрещено смотреть. секрет тайный, надо же.
>а исходники ядра на запись любому - пожалуйста :)) мудаки.
кто тебе сказал что нельзя смотреть??? что за чушь???
откуда трава-то ?????
Андруша, Вы небось ещё и компиляторы на досягаемых из тырнета системах с собственным ядром держите? Ну так некоторые этим не страдают-с.Про интерфейсы -- подробнее, что ли.
Я так понимаю, товаришь не знает, что определяет $PATH. В некоторых дистрибутивах у пользователей в $PATH отсутствуют sbin, а переопределить $PATH или вызвать /sbin/ifconfig ума может и нехватить.
>у пингвинологов простому юзверу сетевые интерфейсы запрещено смотреть. секрет тайный, надо же.
>а исходники ядра на запись любому - пожалуйста :)) мудаки.Учи матчасть, знаток
$ ifconfig
bash: ifconfig: command not found
$ whereis ifconfig
ifconfig: /sbin/ifconfig /usr/share/man/man8/ifconfig.8.bz2
$ /sbin/ifconfig
eth0 Link encap:Ethernet HWaddr 00:0B:CD:20:48:56
.........................
.........................
>>у пингвинологов простому юзверу сетевые интерфейсы запрещено смотреть. секрет тайный, надо же.
>>а исходники ядра на запись любому - пожалуйста :)) мудаки.
>
>Учи матчасть, знаток
>
>$ ifconfig
>bash: ifconfig: command not found
>$ whereis ifconfig
>ifconfig: /sbin/ifconfig /usr/share/man/man8/ifconfig.8.bz2
>$ /sbin/ifconfig
>eth0 Link encap:Ethernet HWaddr 00:0B:CD:20:48:56
>.........................
>.........................
lin@lin:~$ ifconfig
-bash: ifconfig: command not found
lin@lin:~$ whereis ifconfig
ifconfig: /sbin/ifconfig /usr/man/man8/ifconfig.8.gz /usr/share/man/man8/ifconfig.8.gz
lin@lin:~$ /sbin/ifconfig
Warning: cannot open /proc/net/dev (Permission denied). Limited output.
>>>у пингвинологов простому юзверу сетевые интерфейсы запрещено смотреть.
>lin@lin:~$ /sbin/ifconfig
>Warning: cannot open /proc/net/dev (Permission denied). Limited output.
И всё -- или там-таки ещё десяток строчек? (без RX/TX и коллизий)
М-да. Вот они, нетвозиксы. :-/
> в архивах последних версийПроснулись :)))
Это же еще с тех пор как на git перешли.
Обсуждалось давно и было рекомендовано тем, кто не знает, что такое permissions, использовать ключ --no-same-permissions.
Кстати, эта же история и в mysql сорсах и, наверняка, еще много где.
Доброе утро страна!
Очередное стало явным. Сколько же ещё таких фигней осталось :))
SELinux -> [селинукс] -> c'est 'linux'
cd /usr/src/linux
find . -type d -exec chmod 755 ';'
find . -type f -perm 777 -exec chmod 755 ';' #для скриптов
find . -type f ! -perm 755 -exec chmod 644 ';' #для обычных файлов
пардон, забыл {}
cd /usr/src/linux
find . -type d -exec chmod 755 {} ';'
find . -type f -perm 777 -exec chmod 755 {} ';' #для скриптов
find . -type f ! -perm 755 -exec chmod 644 {} ';' #для обычных файлов
Народ, а чё, chmod ga-w уже отменили? чё вы с 755/644/700 извращаетесь?
только -R забывать не надо
>только -R забывать не надо
В программировании не знаток, но если поставить -R - то рекурсивно изменятся все права в папках и подпапках на файлы и каталоги. -R - имхо не ставить.
Зависит от. Для того, чтобы снять разрешение на запись для всех в дереве исходников ядра - разумется, с -R. Собственно, я его не упомянул, поскольку проблема немного более глобальна - неправильно используется chmod, вместо изменения отдельных прав, правятся все права скопом. Что может создать больше проблем, чем разрешение права на запись в /usr/src/linux.