Уязвимости в Steam позволяли перехватывать данные и похищать аккаунты

Игровая платформа Steam исправила в своем клиенте уязвимости в шифровании, позволявшие перехватывать передаваемые по сети данные, а также похищать учетные записи и пароли в незашифрованном виде. Исследователь Натаниэль Тейс (Nathaniel Theis) сообщил об обнаруженных уязвимостях компании Valve в конце прошлого года и теперь, спустя несколько месяцев, раскрыл подробности о них.

По словам Тейса, ему удалось перехватить данные, пересылаемые в сообщениях CMsgClientLogon (предназначены для идентификации пользователя). В сообщениях содержится информация об учетных записях, в том числе имя аккаунта, пароль, логин и sha_sentryfile – поле, позволяющее идентифицировать компьютер пользователя с помощью инструмента SteamGuard.

Первые несколько попыток Тейса получить эти данные с помощью разработанного им PoC-кода оказались безуспешными, однако в итоге исследователь все-таки смог перехватить информацию. Он осуществил атаку повторного воспроизведения (replay-атаку) для подключенного к Steam пользователя (в данном случае специально созданной Тейсом тестовой учетной записи) и расшифровал сессию.

В используемом Steam шифровании исследователь обнаружил несколько уязвимостей, одна из которых позволяла похищать данные. Проблема была связана с тем, что библиотека CryptoPP не проверяет подлинность дополнения (padding). Тейс осуществил атаку «padding oracle», добавив к концу зашифрованного текста блоки, и получил ответ от сервера Steam.

Помимо прочего, исследователю удалось осуществить атаку «человек посередине» для перехвата сеанса. Данная атака потребовала значительных усилий, поскольку поддельное сообщение приводило к завершению сеанса и установлению нового. По его словам, для осуществления атаки у хакера должен быть доступ к сетевому подключению жертвы, возможность изменять (а не только читать) пакеты в процессе передачи и большой запас времени (возможно, до нескольких дней).