bash
. В идеале надо дождаться исправления проблемы разработчиками, но серьёзность проблемы к ожиданию не располагает, сегодня подменим уязвимый бинарник bash
на безопасный. Ср также аналогичный вариант от blog4avatar - как всё сделать самому в джейле. В целях безопасности советую мне не верить, а сделать самому, но для ленивых - ссылки на бинарник bash и патченный mfsroot.gz. 943 сборка, которой я и пользуюсь.NB Настоятельно советую в этом месте сохранить конфиг nas4free System|Backup/Restore.
1) Как писал ранее, новый bash собран в chroot. А лежит бинарник в /usr/local/bin (а не, как я по недомыслию полагал, в
Входим в chroot, архивируем правильный бинарник, кладём его туда, откуда можно взять с виндовой
nas4free ~/ root~$ finch chroot
finch: chrooting to "/mnt/Pool/Finch".
nas4free // root^> cd /usr/local/bin
nas4free bin/ root^> bash -version
GNU bash, version 4.3.27(0)-release (amd64-portbld-freebsd9.2)
(...)
nas4free bin/ root^> tar cvf bash_4.3.27.tar bash
a bash
nas4free bin/ root^> exit
logout
nas4free ~/ root~$ cp -a /mnt/Pool/Finch/usr/local/bin/bash_4.3.2 7.tar /mnt/Pool/Media/
Вот этот tar архив. (Кстати, за сутки версия уже сменилась - с 4.3.26 на 4.3.27 - ещё одна веская причина собирать самому)
2) Если у нас full инсталляция nas4free - то достаточно просто подменить бинарник в хост системе (НЕ в джейле и НЕ в chroot)
если он у вас скачан как (к примеру) /mnt/Pool/Media/bash_4.3.27.tar
nas4free ~/ root~$ cd /usr/local/
bin
nas4free bin/ root~$ bash -version
GNU bash, version 4.2.45(0)-release (amd64-portbld-freebsd9.2)
nas4free bin/ root~$
tar -xvf /mnt/Pool/Media/bash_4.3.27.tar
x bash
nas4free bin/ root~$
reboot
А для embedded варианта путь к цели сложнее. Создадим временную папку, скопируем туда gz образ embedded nas4free и разархивируем его
mkdir /mnt/Pool/tmp
cp -a /cf/mfsroot.gz /mnt/Pool/tmp/
cd /mnt/Pool/tmp/
gunzip mfsroot.gz
Теперь монтируем образ как диск, подменяем бинарник bash, убираем за собой и зазиповываем образ
mdconfig -a -t vnode -f /mnt/Pool/tmp/mfsroot -u 5
mkdir /md
mount /dev/md5 /md
rm /md/usr/local/bin/bash
cp -a /mnt/Pool/Finch/usr/local/bin/bash /md/usr/local/bin
cd /
umount /md
mdconfig -d -u md5
gzip -9 /mnt/Pool/tmp/mfsroot
Теперь надо вернуть mfsroot.gz на место - но /cf смонтирована только для чтения. Поэтому смотрим на каком устройстве /cf смонтирована
mount
/dev/md0 on / (ufs, local)
devfs on /dev (devfs, local, multilabel)
/dev/da8s1a on /cf (ufs, local, read-only)
procfs on /proc (procfs, local)
(...)
видим, что это - /dev/da8s1a. У ВАС БУДЕТ ДРУГОЕ ИМЯ!
Перемонтируем этот раздел для записи, удаляем старый mfsroot.gz, копируем новый, перегружаем nas
mount -uw /dev/da8s1a
rm /cf/mfsroot.gz
cp -a /mnt/Pool/tmp/mfsroot.gz /cf/
reboot
После перезагрузки смотрим версию bash
nas4free ~/ root~$ bash -version
GNU bash, version 4.3.27(0)-release (amd64-portbld-freebsd9.2)
Ура, получилось (я для проверки все команды писал здесь, а потом копипастил в командную строку - опечаток не должно быть). Если же не стартует - то вы налажали где-то. Не страшно. Ставим на флешку nas4free по новой, накатываем сохранённый конфиг. Мы вернулись в исходное положение.