Смотрим на высыхание краски: Как я залил игру в Steam Store безо всякого одобрения со стороны Valve
Планировал ли я попасться? Конечно!
Если вы посещали домашнюю страницу Steam в воскресенье вечером, вы могли заметить новую игру: «Смотрим на высыхание краски». Это событие послужило причиной оживлённых дискуссий на форуме, где пользователи обсуждали потерю компанией Valve контроля качества в сервисе Steam Greenlight. Однако эта игра никогда не попадала в Greenlight. Я даже не платил $100, чтобы публиковать там игры.
Мне кажется, что Greenlight – хорошая платформа для независимых разработчиков, рекламирующих свои игры, и хочу извиниться перед всеми разработчиками, кого я мог оскорбить. Это был всего лишь розыгрыш, а также проверка моей теории, которую я пытался донести до Valve в течение нескольких месяцев – возможность разместить в Steam любую игру так, чтобы Valve даже не увидела её. Все уязвимости уже исправлены, и данное руководство имеет лишь историческую ценность. К слову, игра не имеет отношения к протесту по поводу цензуры в кино.
Получаем учётную запись Steamworks
Моё небольшое расследование всей этой истории началось с получения доступа к Steamworks. Не буду рассказывать как и почему у меня появился доступ, но я не использовал никакие уязвимости ни форумов, ни Greenlight, и не общался ни с кем из Valve. Раскрывать эти детали я не буду, и не просите.
В общем, получил я доступ к Steamworks (внутренней платформе Valve для размещения игр в Steam, редактирования ачивок, DRM, мультиплеера и т.п.), и после этого мне пришла идея поискать уязвимости. Приближалось 1 апреля и я решил использовать эту возможность, чтобы опубликовать безымянное приложение и привлечь внимание Valve к проблеме.
Опущу описание создания 45-секундного симулятора высыхания краски в RPG Maker, поскольку тут и гордиться нечем, да и неважно это.
Получаем одобрение Steam Trading Cards
Естественно, что это была бы за игра без карточек Steam? Я понаделал в фотошопе карточек для шуточного набора. Но разве Valve не должна просматривать карточки, эмотиконы и фоны перед выпуском?
На странице у статуса есть несколько первоначальных вариантов:
А что там в исходниках?
Интересно, что отслеживается как сессия, так и ID учётной записи редактора. Попробуем поменять ID на какой-нибудь такой, который может принадлежать сотруднику Valve (допустим, на 1), изменим значение селекта на несуществующее и посмотрим, не получим ли мы в ответ другую форму.
Занятно – подменный «последний редактор» действительно оказался сотрудником. А если мы снова сохраним эту форму со значением «Released»?
Что же произошло? Когда я отправил неправильный запрос, сервер вернул мне полный список вариантов с их значениями. Я увидел, что у Released значение равно 5. Тогда я обновил форму, чтобы вернуть свой editor_accountid, и поменял значение селекта на 5. И сервер принял команду, будто она исходит от разработчика, карточки которого уже одобрили. Сервер не проверил – одобрены ли уже карточки кем-то из Valve, и просто поменял их статус.
Процесс одобрения в Valve
У компании есть трёхэтапный процесс размещения чего-либо в Steam. Во-первых, вы отправляете свою страницу магазина на осмотр, затем – финальный билд игры, а затем вам предоставляют возможность её зарелизить.
Релиз игры
Сайт Steamworks в основном использует AJAX. JS-код не обфусцирован и виден всем (кто авторизован в Steamworks). Я нашёл интересную функцию “ReleaseGame(appid, data)”. Судя по всему, она делала типичный AJAX-запрос и делала релиз игры.
Вызов функции ReleaseGame с параметрами 445730 (мой appid) и пустыми данными выдал мне статус 403. Просмотрев другие функции, я увидел, что почти все они добавляют значение в JSON-запрос под названием sessionid – этот id мы видели раньше, когда релизили наши карточки.
Итого, вызываем ReleaseGame(445730, { ‘sessionid’: ‘my_session_id’):
Идём в магазин Steam
Иехууу! Признаюсь, я вообще-то хотел, чтобы игра появилась в разделе «выходит 1 апреля», и не показывалась на сайте до пятницы – а она появилась сразу в разделе новинок. И конечно я хотел узнать, как далеко по пути релиза игры можно зайти – но решил, что лучше ей не появляться в списке игр, доступных для покупки.
Я связался с Valve, которые уже исправили эту уязвимость.
Из всего этого я вынес, что при работе с пользовательским контентом не нужно делать два разных статуса «готова к обзору» и «одобрена». Вместо этого можно выдавать некий тикет, обозначающий, что игра на одобрении, и не менять статус на «одобрена», пока существует тикет. Или просто не разрешать пользователям менять статус на «одобрена».
¯\_(ツ)_/¯
Источник: https://habrahabr.ru/post/280644/
Подробнее
STEAM* STORE COMMUNITY RUBY ABOUT SUPPORT Featured Items Games ▼ Software ▼ Hardware ▼ Videos ▼ News All Games Sports Games Watch paint dry Watch paint dry watch paint dry: the game Following Not Interested I N LIBRARY Watch paint dry is already in your Steam library 2.0 hrs last two weeks / 2.2 hrs on record Install Steam Play Now £ Instal Steam 59 35 freddysmod ▼ £0.00 admin ▼ WISH LIST (28) For YOU ▼ Community Hub I watch paint dry: the game A puzzle-sports game where you watch paint dry. User reviews Positive 11 reviews) Release Date: 1 Apr, 2016 Popular user-defined tags for this product: Simulation Casual Singleplayer Tags you've applied to this product: + Add your own tags View Your Queue О
You've been invited to the Steamworks Developer Program i@steam powered, com > Trouble viewing this message7 Clck here STEAM' You've been invited to the Steamworks Developer Program Your application 'untitled app' has been invited to be distributed via Steam. To continue, you will need to complete the necessary digital paperwork to sign up as a new Steamworks Partner or to add this application to your existing Steamworks Partner account. Before you get started, you may want to check out this page of frequently asked questions https-/'partnersteamoames com.'documentation/welr-ome You'll be asked to provide some information on the company or individual that will be signing the agreements, the associated payment and tax information as applicable and then to sign the necessary Distribution Agreement
Release State: Ready for Review ▼ I Not ready Ready for Review Not ready due to edits Change Notes:
form id="communityitem_edit_form method= POST enctype= multipart/form-data <input type="hidden" name="sessionid" value <input type="hidden" name="MAX_FILE_SIZE" value=M8388608"> cinput type="hidden" name=,,action" value="edit"> <input type="hidden" name="item[class]" value="l"> <input type="hidden" name="item[type]" value="l"> <input type="hidden" name="iteгтl[editoг_accountid],, value="594^We > ▼ <div class=''subsection'’> ▼ div class newformrow <div class="formlabel">Release State:</div> ▼ <div class="formdata"> ►<select name="item[item_release_state]" id="item[item_release_state]" c
There were errors saving changes: Last editor .!...... (f Steam Trading Cards - Series informati Edit the settings here to configure the state of your tra you've changed in the changeNotes field About Review and Release When you are ready for your trading cards to be revie for review of your trading cards to be completed. Once return to this page to set your cards live. Release State: Released
Changes saved. Return to Item list Last editor . (Ruby) Steam Trading Cards - Series informati Edit the settings here to configure the state of your tra you've changed in the changeNotes field About Review and Release When you are ready for your trading cards to be revie for review of your trading cards to be completed. Once return to this page to set your cards live. Release State: Released
function ReleaseGame|(appid, data^ { jQuery.ajax({ dataType: "json", url: 'https: //partner. steamgames. com/| type: 'POST', data: data, success: function(data) {
function Updatel { rgChanges // ensure session ID is present if ( !( 'sessionid' in rgChanges ) ) { rgChanges[ 'sessionid' ] = g_sessionID; > $D.ajax({ url: 'https://partner.steamgames.com/i cache: false, type: "POST”, data: rgChanges, )
Release date: Mar 27, 2016 @ 12:56pm (?) App Release State: Released (?)
Featured items Games Software ▼ Hardware ~ Videos ЛИ Games Sports Games Watch paint dry Watch paint dry IN LBRARV Watch paint dry is already in your Steam library For You - Community Hub watch paint dry: the game A puzzle-sports game where you watch paint dry. ser revie.- Positive reviews) Release Date 1 Apr, 2016 Popular user-defined tags for this product Psychological Horror Merries Simulation Nudity + Tags you've applied to this product: + Add your own tags View Your Queue «=0
geek,Прикольные гаджеты. Научный, инженерный и айтишный юмор,geek новости,Valve,Steam,Стим,Игры
"Смотреть на то как краска сохнет - и то веселее" ну или как то так.
"