Усовершенствования во вредоносных скриптах

    Авторы вредоносных скриптов становятся всё изощрённее. По сообщениям от антивирусных компаний, они изучили и начинают активно применять новые трюки. Если раньше скрипты можно было легко обезвредить, просто поменяв переменную eval() на alert(), то теперь в скриптах используется переменная callee(), чтобы блокировать такие изменения. Хуже того, вирусописатели теперь используют информацию из document.referrer, document.location и location.href для декодирования скриптов, оптимизированных для конкретного сайта. Другими словами, эти скрипты будут запускаться только при определённых условиях, что делает их обнаружение довольно трудным.

    Такие скрипты, конечно, труднее анализировать. Но хорошая новость в том, что подобная практика сильно осложняет жизнь и самим злоумышленникам. Теперь им нужно создавать целый набор скриптов: каждый скрипт для отдельного реферрера, например.

    Специалисты SANS рекомендуют установить маленький 8-строковый патч для программы SpiderMonkey, который показывает все аргументы eval() перед их запуском на исполнение. На сегодняшний день это, возможно, самый лучший способ для поиска вредоносных скриптов.

    $/tmp/js/src$ diff jsobj.orig jsobj.c
    1256a1257
    > char *c;
    1366a1368,1372
    >
    > c = js_GetStringBytes(cx->runtime, str);
    > if (file && c) {
    > printf («File %s Line %i calls eval with the following parameter:\n%s\n\n»,file,line,c);
    > }
    AdBlock похитил этот баннер, но баннеры не зубы — отрастут

    Подробнее
    Реклама

    Комментарии 3

      0
      нефиг лазит по гадким сайтам, никакой патч не спасет от всех сайтов, которые хотят навредить юзеру.
      другое дело, если "левый код" подгружается в доверительном сайте, тогда то что используется callee, при грамотной реализации никак не помешает

      _eval = eval;
      eval = function(str){
      if (confirm("Выполнить?\n" + str)) _eval(str)
      }
        0
        ОЧЕНЬ любопытно про новые методы :-)
        чего только не придумают
          +3
          eval(), alert() и callee() это функции, а не переменные.

          Только полноправные пользователи могут оставлять комментарии. Войдите, пожалуйста.

          Самое читаемое