Продукты «Хакера»

  • Свежий печатный выпуск

    Свежий печатный выпуск

    20+ лучших статей квартала. 240 страниц

    2000 ₽ + доставка СДЭК

    Заказать журнал
  • Годовая подписка на Xakep.ru -40%, успей сэкономить!

    Годовая подписка на Xakep.ru

    Полный доступ к крутым статьям и архиву

    6000 ₽ / год

    Подписаться
  • Вход в тему пентеста от Хакера

    Вход в тему пентеста от Хакера

    Статьи, видеоуроки и задачи. Разработано Хакером

    7000 ₽ - доступ навсегда

    Купить курс
  • Спецвыпуск Хакера  №4. Лучшее за 2021-2022

    Спецвыпуск Хакера №4. Лучшее за 2021-2022

    22 статьи. 240 страниц. Автоматизируем Burp +

    2000 ₽ + доставка СДЭК

    Заказать журнал

В популярном игровом клиенте Steam под Linux обнаружен опасный баг. Если переместить папку, то при определённых условиях клиент Steam удаляет все поддиректории и файлы в пользовательском каталоге.

Пострадавший пользователь переместил папку Steam, вероятно, по причине того, что игровой клиент при инсталляции не позволяет выбрать адрес и устанавливается в жёстко определённый каталог. Видимо, с этим связаны последующие деструктивные действия.

Пользователь хотел обойти ограничение Steam, используя символическую ссылку с нового каталога на старый. С другими программами такой вариант проходит, но Steam повёл себя совершенно негуманно. Юзеру под ником keyvin особенно не повезло, потому что он лишился ещё и файлов на внешнем накопителе объёмом 3 терабайта.

Другие пользователи подтвердили факт глючной работы Steam под Linux. Например, пользователь d00fy рассказал, что только что лишился всей директории Home, когда запустил steam.sh с параметром STEAM_DEBUG=1.

Один из пользователей Github нашёл предполагаемую ошибку в скрипте. Похоже, при перемещении каталога указанная функция возвращает пустое значение, так что rm -rf "$STEAMROOT/" приравнивается к rm -rf "/"

Фрагмент скрипта

# figure out the absolute path to the script being run a bit
# non-obvious, the ${0%/*} pulls the path out of $0, cd's into the
# specified directory, then uses $PWD to figure out where that
# directory lives - and all this in a subshell, so we don't affect
# $PWD

STEAMROOT="$(cd "${0%/*}" && echo $PWD)"
STEAMDATA="$STEAMROOT"

Как известно, параметр -rf означает удаление файлов и каталогов без требования подтверждения на каждую операцию удаления.

  • Подпишись на наc в Telegram!

    Только важные новости и лучшие статьи

    Подписаться

  • Подписаться
    Уведомить о
    12 комментариев
    Старые
    Новые Популярные
    Межтекстовые Отзывы
    Посмотреть все комментарии