Обходим ограничения sv_pure 1 в Source играх

В данной статье мы подробно рассмотрим уязвимость, при помощи которой можно делать замену любых «защищённых» sv_pure 1 текстур.

Введение

Как известно, существуют так называемые «легальные читы», которые включают в себя модели, видимые через стены, прозрачные текстуры и т.д. Легальными данные читы называются из-за того, что за их использование игрок не может быть забанен системой VAC, поэтому они достаточно популярны среди нечестных игроков всех уровней.

Для защиты от подобного применяется штатная функция sv_pure. На большинстве серверов она установлена в значение 1, т.е. запрещено всё, кроме файлов из белого списка. Нестандартные текстуры и модели могут быть загружены на клиенте только если они расположены в каталоге из белого списка.

Белый список

Рассмотрим белый список игр Team Fortress 2 и Counter-Strike: Source по умолчанию:

whitelist
{
        //
        // Allow custom player models.
        //
        models\player\...           any
        materials\models\player\... any

        //
        // Allow custom spray decals.
        //
        materials\temp\...          any
        materials\vgui\logos\...    any
        materials\vgui\logos\ui\... any
}

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

Описание уязвимости

Сама уязвимость заключается в том, что игра на движке Source при подключении к серверу проверяет только файлы моделей/текстур на наличие их в белом списке. Манифесты при этом можно изменять как и сколько угодно без каких-либо последствий.

Эксплуатируем уязвимость

Выполним следующие шаги строго по порядку:

  1. создадим каталоги /tf/custom/exp_test/materials/temp/, /tf/custom/exp_test/materials/models/;
  2. перейдём в каталог /tf/custom/exp_test/materials/models/ и скопируем туда *.vmt файлы (манифесты) нужных текстур/моделей;
  3. в /tf/custom/exp_test/materials/temp/ поместим изменённые файлы текстур;
  4. откроем манифест и изменим значение переменной $basetexture так, чтобы оно указывало на наш заменённый файл текстуры внутри temp. Сохраним изменения;
  5. повторяем шаги нужное число раз.

Защита от уязвимости

В настоящее время единственной возможностью защититься от игроков с текстурами, видимыми через стены, можно только с помощью установки на сервере sv_pure 2. Это заблокирует любые нестандартные модели и текстуры с полной проверкой контрольных сумм.

Внимание! При использовании sv_pure 2 перестанут работать любые нестандартные звуки, модели, текстуры (если они есть на сервере), а также спреи игроков.

Уязвимость уже активно эксплуатируется игроками, т.к. существует готовый эксплойт-пак на неё. Я по понятным причинам не буду выкладывать ссылки на него здесь.

Примеры эксплуатации уязвимости

Скриншоты сделаны пользователем _w0lf на сервере с sv_pure 1 и взяты с его страницы:

Карта pl_badwater, респаун Красных
Карта pl_badwater, респаун Красных
Карта pl_badwater, респаун Синих
Карта pl_badwater, респаун Синих

12 комментариев к записи

  1. То-то я смотрю у некоторых игроков на известных серверах так внезапно «вырос» скилл… Надеюсь, Valve исправят это безобразие как можно скорее.

  2. Сергей :

    Если я уберу строку materials\temp\… из вайтлиста это решит проблему?

    Конечно нет. Файлы разместят в том, который на вашем сервере в белом списке. Получить белый список сервера проще простого.

  3. V1TSK :

    Jevix :
    Дыру собираются исправлять?

    Ответ на этот вопрос может дать только Гейб.

    А им на мыло о баге ты написал?

  4. Ахаха — поржал. Кто-то еще бегает с этими убогими моделями в то время как можно купить легальный мультихак?

  5. подскажите что я делаю не так.В C:\Program Files (x86)\Steam\SteamApps\common\Counter-Strike Source\cstrike Создаю папку custom в ней папку exp_test в ней materials и в ней создаю 2 папки temp и models в models кидаю vmt а в temp сами текстуры..но ничего не работает…если просто кинуть эти текстуры в папку материал с ботами то все работает..а если по этой схеме то нет…помогите

Добавить комментарий

Ваш e-mail не будет опубликован. Обязательные поля помечены *