Это, по большей части, рекламный пост, поскольку он первый в нашем блоге. После первого знакомства мы будем писать здесь об архитектуре защитных систем, антивирусных алгоритмах и интерфейсах.
В 2012 году мы решили создать самый удобный инструмент для защиты и борьбы с вирусами на сайтах и вот, сегодня этот проект вырос в сервис, о котором нам не стыдно рассказать.
Не секрет, что поражение сайта вирусом не сулит ничего хорошего его владельцу, а проблема устранения и предотвращения заражения сайтов с каждым годом становится все актуальнее. Решать проблему заражения приходится, в большинстве случаев, веб-мастеру.
Именно для таких веб-мастеров мы и создали сервис Вирусдай, который не только экономит время при поиске вредоносного кода и устранении заражения сайтов, а часто позволяет забыть о подобных проблемах. Достаточно лишь довериться антивирусному автомату и фаерволу.
Что такое Вирусдай
Вирусдай — это облачный антивирус для сайтов и фаервол, позволяющий автоматически лечить сайты от вирусов, защищать от повторных заражений, атак, XSS/SQL инъекций и подозрительной активности.
Сервис предназначен для веб-мастеров, веб-студий, SEO-специалистов и владельцев сайтов, которые предпочитают тратить минимум времени (или не тратить вовсе) и сил на поиск и устранение источников и последствий заражения.
Вирусдай находит и устраняет в автоматическом режиме вредоносный код в PHP, HTML, JS, системных файлах и файлах, замаскированных под изображения, причем после лечения работоспособность ресурса пользователя сохраняется. Сервис может работать сразу со множеством сайтов пользователя и не требует установки или настройки.
Вирусдай комфортный
Простой в использовании
Для начала работы необходимо просто добавить новый сайт в список на сервисе и синхронизовать его. Для этого предлагается скачать и разместить уникальный для каждого пользователя *.PHP файл в корневом каталоге сайта. Остальное сервис сделает сам, а вы просто можете контролировать процессы и управлять всем через панель.
Автоматически устраняет вредоносный код
Антивирус позволяет не только находить вредоносный код, но и устранять его в автоматическом режиме. При этом Вирусдай может не только удалять файлы целиком, а способен аккуратно вырезать фрагменты вредоносного кода, сохраняя работоспособность ресурса.
Не оставляет своих пользователей наедине с проблемой
Бывают случаи, когда Вирусдай не может справиться с найденным заражением в автоматическом режиме. Однако, и здесь сервис не бросит вас одних. Во-первых, можно воспользоваться встроенным редактором, в котором найденный фрагмент кода будет наглядно выделен и самостоятельно принять решение об удалении нужного куска. Во-вторых, вы можете попросить техподдержку сервиса проанализировать найденную угрозу и устранить ее.
Защита в один клик
Для снижения вероятности повторного заражения сайта и последствий от атак Вирусдай позволяет одним кликом установить фаервол на сайт. Данные о результатах его работы выводятся в панели управления соответствующего сайта на сервисе. Фаервол входит в стандартный набор функционала сервиса Вирусдай.
Ящик с инструментами
Мы постарались создать на сервисе удобное пространство для веб-мастеров и расширили основные функции антивируса и фаервола дополнительными инструментами: менеджером файлов, редактором файлов и списком исключений. Расскажем теперь про все чуть более подробно.
Вся работа с сайтами на сервисе ведется из списка, в который вы можете добавить неограниченное их количество и определить для каждого интервал автоматических проверок и прочие настройки (автоматическое лечение, исключения и т.д.). Также, отсюда можно запускать проверку сайтов и делать быстрые настройки.
Для перехода к работе с инструментами каждого сайта достаточно просто кликнуть по нужному блоку в списке,- откроется панель инструментов нужного ресурса.
1. Антивирус
В разделе антивируса отображается подробная информация о пораженных и вылеченных файлах, ошибках, их количестве и времени проверок. Последняя/текущая операция отображается в большом блоке антивируса в верхней части страницы. Статус сайта имеет цветовое кодирование. Красный — обнаружены угрозы. Желтый — ошибка синхронизации. Переключатель автоматического лечения находится здесь же (в дополнении к обязательному присутствию в общем списке настроек сайта). В случае, если автоматическое лечение включено — найденные угрозы будут автоматически устранены при проверке сайта.
Вирусдай может устранять не все обнаруженные им угрозы в автоматическом режиме. Антивирус не лечит обнаруженные Подозрения, а обнаруженные Заражения бывают излечимыми в автоматическом режиме или нет. Это объясняется тем, что не всегда можно гарантированно сформулировать правила определения точного фрагмента вредоносного кода, при удалении которого работоспособность ресурса сохранится.
Даже в таком случае вы можете посмотреть найденный вредоносный код (код подсвечивается) в редакторе файлов (в который можно перейти из отчета о проверке/лечении) и устранить его вручную или запросить решение проблемы у службы поддержки.
При автоматическом лечении всегда сохраняется резервная копия изменяемых (или удаляемых) антивирусом файлов. Восстановить файл на состояние «до лечения» возможно из редактора файлов, перейдя в него из отчета.
Кроме того, Вирусдай отслеживает нахождение сайта в черных списках Google и Yandex Safe Browsing. Такая возможность позволяет быть уверенным в успешности проведенного лечения.
В случае, если сайт после лечения не пропадает из черных списков (и Вирусдай не может найти угроз) вам будет предложено обратиться в техподдержку сервиса, где данным вопросом займутся специалисты отдела антивирусных баз (в дальнейшем мы усовершенствуем данный сценарий и исключим необходимость писать запрос по этому поводу).
2. Список исключений
Для игнорирования определенных файлов сайта при проверке мы внедрили список исключений, в который можно добавить файл как из отчета о сканировании/лечении, так и из менеджера файлов.
3. Менеджер файлов
Для удобства (особенно, если сайты находятся физически на разных серверах) мы сделали встроенный менеджер файлов, который можно использовать для получения наглядной картины заражения (маркеры пораженных каталогов/файлов отображаются в файловой структуре).
Из менеджера файлов (как и из любого отчета о проверке/лечении) можно перейти к просмотру непосредственно любого файла ресурса во встроенном редакторе файлов.
4. Редактор файлов
В редакторе файлов можно своими глазами посмотреть на найденный вредоносный код и произвести быструю правку контента самостоятельно. Вредоносный код при просмотре файла в редакторе будет подсвечен.
Здесь же доступно изменение прав на файл и восстановление из резервной копии, создаваемой автоматически при лечении.
5. Фаервол
Единственным инструментом, который сегодня все еще находится на стадии отладки и тестирования является фаервол, который мы включили в основной функционал сервиса. Он доступен сегодня для сайтов на системах управления Joomla, WordPress, Drupal, DLE, Bitrix, ModX, Yii framework, Opencart, NetCat, CS.Cart, AmiroCMS, HOSTCms и Magento и способен снижать вероятность успешности DoS атак, XSS/SQL инъекций и загрузки подозрительных файлов.
Фаервол автоматически устанавливается на сайт при переключении свитчера во включенное положение. Все данные о работе фаервола выводятся в панели сайта.
Откуда алмазы?
Мы убеждены в том, что хороший сервис должен быть платным, поскольку качество требует постоянного вложения серьезных ресурсов. Поэтому Вирусдай — это платный сервис. Проверять любое количество ваших сайтов (в том числе по расписанию) он позволяет бесплатно. Платными являются услуги лечения и защиты. В то же время цена использования сервиса настолько ниже стоимости услуг, предлагаемых сегодня на рынке, что нам даже неудобно здесь о ней писать. Кроме того, у нас существует несколько партнерских программ, делающих использование сервиса еще более интересным.
Антивирусная база
С самого начала мы понимали, что автоматическое лечение — это, прежде всего, качественные правила детектирования. Мало просто обнаружить присутствие вредоносного кода, его нужно удалить так, чтобы работоспособность ресурса не была нарушена. Очень большое внимание мы уделяем именно этому аспекту сервиса. Сегодня антивирусная база пополняется нашим отделом антивирусных баз, а также использует несколько сторонних SDK. Кроме того, любой пользователь сервиса может прислать нам найденный им вредоносный код для анализа и, возможно, на его основе будет создано соответствующее правило детектирования/устранения.
Что будет завтра
Сервис Вирусдай предоставляет свои услуги не только веб-мастерам. Для поисковых систем, интернет-компаний и крупных веб-проектов мы создали сервис поверхностной проверки сайтов на наличие угроз Вирусдай.Бот. Сервис доступен посредством API и позволяет бегло проверить HTML и JS файлы сайта, доступные «снаружи» на наличие заражений и, кроме того, проводит поведенческий анализ, например, устанавливая присутствие мобильного редиректа.
Также, сегодня на мощностях одного из хостинг-провайдеров проводится тестирование серверного антивируса Вирусдай.Сервер, который мы создали в результате исследовательской работы. Пока это еще прототип, но, вероятно, Вирусдай.Сервер превратится в полноценный продукт уже в этом году.
Мы каждый день работаем над усовершенствованием существующего сервиса. Ежедневно в него вносится множество изменений, по большей части скрытых от глаз пользователей, но влияющих на эффективность его работы. Раз в неделю мы вносим изменения в интерфейс, оптимизируя сценарии взаимодействия с ним. Нам предстоит сделать еще очень многое, но это лишь вдохновляет нас.
Теперь, когда мы представили вам сервис, сможем в следующем посте рассказать о его архитектуре.
Комментарии (104)
monolithed
03.06.2015 13:36+6Для этого предлагается скачать и разместить уникальный для каждого пользователя *.PHP файл в корневом каталоге сайта.
Пока похоже на добровольное размещение эксплоита.Bibainet
03.06.2015 13:41-2Обратиться напрямую к этому файлу и выполнить вредоносные действия на сайте не получится, так как сервис имеет несколько степеней защиты, включая проверку цифровых подписей при каждом запросе к файлу. В следующих постах мы подробнее расскажем об архитектуре сервиса.
monolithed
03.06.2015 13:58+9Какие гарантии, что атака не будет производится через вас?
edogs
03.06.2015 21:04+4Более того, сам «вирусдай» в меру его подключения к куче сайтов, становится крайне привлекательным для разного рода хакеров (конкурентов, инсайдеров, 3-рд парти, черных сеошников и т.д.), просто уже в меру того, что «хакнул одного — хакнул всех».
Эдакий «ключ от всех дверей».
Ненене.GEOgraf
03.06.2015 21:14-4Поверьте, мы тоже всё это понимаем. И поэтому постарались сделать удобный и безопасный инструмент для наших пользователей, который имеет несколько степеней защиты на каждом этапе взаимодействия между сервером-клиентом и Вирусдай.
Bibainet
03.06.2015 13:52+6Кроме того, устанавливая скачанные из интернета малоизвестные компоненты для CMS мало кто задумывается о том, что в них так же могут быть эксплойты. Часто эти компоненты обфусцированы и что они делают на самом деле, сказать сложно. Код всех наших загружаемых файлов открыт.
Urvin
03.06.2015 15:48+3Того, кто качает малоизвестные компоненты для CMS, меньше всего волнует их завирусованность.
maximw
03.06.2015 17:41+2Код загружаемых файлов открыт, но обфусцирован, по крайней мере «файл синхронизации». Зачем?
Bibainet
03.06.2015 17:46-10Обфускация — это сознательное запутывание кода. В файле синхронизации просто убраны пробелы и переносы строк в целях уменьшения его объема.
maximw
03.06.2015 17:48+8Вы свой файл синхронизации видели?
И это я еще бьютифайером прошелся.
это не обфускация?<?php /**version:16,date:2015-05-28**/ return ((list($e, $rr, $rd, $_, $pv) = array( 0, NULL, NULL, '', PHP_VERSION )) && (list($iv, $fv, $ii, $gt, $df, $dd, $is, $ig, $ia, $tz, $vc, $st, $sl, $ss, $sp, $tr, $pd, $sr, $sc, $tm, $pf, $bh, $zi, $zd, $be, $bd, $bq, $im, $in, $aw, $wr, $ic, $uf, $bn, $dn, $if, $id, $ir, $iw, $md, $fg, $fp, $cm) = explode(':', 'intval:floatval:is_numeric:gettype:define:defined:ini_set:ini_get:ini_get_all:date_default_timezone_set:version_compare:is_string:strlen:substr:strpos:strtr:str_pad:str_repeat:strcmp:trim:sprintf:bin2hex:gzinflate:gzdeflate:base64_encode:base64_decode:http_build_query:implode:in_array:array_walk:array_walk_recursive:is_callable:create_function:basename:dirname:is_file:is_dir:is_readable:is_writable:mkdir:file_get_contents:file_put_contents:chmod')) || ($e = 103) && 0) && ($vc($pv, '5.2', '>=') || ($e = 113) && 0) && ($ig('allow_url_fopen') && ((!$ig($_ = 'magic_quotes_runtime')) || ($is($_, 0) !== FALSE)) && ((!($iv($ig('mbstring.func_overload')) & 3)) || mb_internal_encoding('8bit')) && (ini_set('arg_separator.output', '&') || 1) || ($e = 100) && 0) && (@$tz('UTC') || 1) && ($ig('magic_quotes_gpc') && ($_ = $uf('&$v,$i', '$v=stripslashes($v);')) && $wr($_GET, $_) && $wr($_COOKIE, $_) || 1) && ($df('SVC_CVER', 16) && $df('SVC_CKEY', 'yhtQ49n2US53h653') && $df('SVC_HOST', 'cdn.virusdie.ru/') && $df('SVC_USERAGENT', "Mozilla/5.0\x20(compatible)\x20S.D.S.\x20Network\x20client/" . SVC_CVER) && ($is('user_agent', SVC_USERAGENT) || 1) && $df('SVC_HOSTLINK', 'http://' . SVC_HOST) && $df('SVC_SUBPATH', isset($_SERVER['SCRIPT_NAME']) ? ($in($dn($_SERVER['SCRIPT_NAME']) , array( '/', '\\', '.' )) ? '' : rtrim(strtr($dn($_SERVER['SCRIPT_NAME']) , array( '\\' => '/' )) , '/')) : '') && $df('SVC_CFILE', $bn(__FILE__)) && $df('SVC_CDIR', $tm($dd('PATHINFO_FILENAME') ? pathinfo(SVC_CFILE, PATHINFO_FILENAME) : $ss(SVC_CFILE, 0, strrpos(SVC_CFILE, '.')))) && $df('SVC_CCACHE', SVC_CDIR . '/cache') && $df('SVC_CRESTORE', SVC_CDIR . '/restore') && $df('SVC_CBACKUPS', SVC_CDIR . '/backups') && $df('SVC_CUSERINIT', SVC_CDIR . '/userinit.php') && $df('SVC_CTIME', time()) && $df('SVC_CGZIP', $iv($ic($zi))) && $df('ERR_' . 'SVC', 900) && $df('SVC_CHOST', isset($_SERVER['SERVER_NAME']) && $sl($_SERVER['SERVER_NAME']) ? $_SERVER['SERVER_NAME'] : (isset($_SERVER['HTTP_HOST']) && $sl($_SERVER['HTTP_HOST']) ? $_SERVER['HTTP_HOST'] : $_SERVER['SERVER_ADDR'])) && $df('SVC_UID', $tm(isset($_GET['svcuid']) ? $_GET['svcuid'] . '' : (isset($_COOKIE['svcuid']) ? $_COOKIE['svcuid'] . '' : ''))) && $df('SVC_KEY', $tm(isset($_GET['svckey']) ? $_GET['svckey'] . '' : (isset($_COOKIE['svckey']) ? $_COOKIE['svckey'] . '' : ''))) && $df('SVC_MAC', $tm(isset($_GET['svcmac']) ? $_GET['svcmac'] . '' : (isset($_COOKIE['svcmac']) ? $_COOKIE['svcmac'] . '' : ''))) && $df('SVC_DBI', $tm(isset($_GET['svcdbi']) ? $_GET['svcdbi'] . '' : (isset($_COOKIE['svcdbi']) ? $_COOKIE['svcdbi'] . '' : ''))) && $df('SVC_SVC', isset($_GET['svc']) ? $tm($tr($_GET['svc'] . '', '\\/.:?*', $sr('_', 6))) : '') && $df('SVC_CRC', isset($_GET['crc']) && ($sl($_GET['crc']) == 8) ? $_GET['crc'] . '' : '') && $df('SVC_CLV', isset($_GET['clv']) ? abs($iv($_GET['clv'])) : 0) && $df('SVC_CTR', isset($_GET['ctr']) ? $tm($_GET['ctr'] . '') : '') && $df('SVC_DBG', isset($_GET['dbg']) ? min(3, abs($iv($_GET['dbg']))) : 0) && $df('SVC_SID', isset($_GET['sid']) ? $iv($_GET['sid']) : 0) && $df('SVC_MD5', md5($im(':', array( SVC_SVC, SVC_CRC, SVC_UID, SVC_KEY, SVC_DBI, SVC_CVER, SVC_CKEY, SVC_HOST, SVC_SID )))) && $df('SVC_MACDATA', $im(':', array( SVC_SVC, SVC_CRC, SVC_UID, SVC_KEY, SVC_CTR ))) && $df('SVC_CPHP', SVC_CCACHE . '/svc-' . SVC_SVC . '-' . SVC_MD5 . '.php') && $df('SVC_CSVCCACHE', SVC_CCACHE . '/' . SVC_SVC) && $df('SVC_BETATEST', isset($_GET['svcbetatest'])) && $df('SVC_QBASE', $bq(array( 'svcuid' => SVC_UID, 'svckey' => SVC_KEY, 'ctr' => SVC_CTR, 'cfn' => SVC_CFILE, 'clv' => SVC_CVER, 'php' => $fv($pv) , 'clz' => SVC_CGZIP, 'ref' => SVC_CHOST, 'sid' => SVC_SID ))) && $df('SVC_QCDN', SVC_HOSTLINK . 'cdn/?' . SVC_QBASE . '&' . $bq(array( 'svc' => SVC_SVC, 'crc' => SVC_CRC ))) && $df('SVC_QAPI', SVC_HOSTLINK . 'api/') && $df('SVC_QDATA', SVC_HOSTLINK . 'data/') && $df('SVC_QDATASVC', SVC_HOSTLINK . 'data/' . SVC_SVC . '/') && $df('SVC_QUPD', SVC_HOSTLINK . 'update/?' . SVC_QBASE . '&' . $bq(array( 'fmt' => 'update' ))) && $df('SVC_QSPLASH', SVC_HOSTLINK . 'splash/?' . $bq(array( 'ref' => SVC_CHOST, 'cfn' => SVC_CFILE ))) || ($e = 104) && 0) && (($svcContextOptions = array( 'http' => array( 'method' => 'GET', 'header' => $im("\r\n", array( 'Accept:*' . '/' . '*', 'Connection:Close', 'Referer:http://' . SVC_CHOST . '/' . SVC_CFILE, 'User-agent:' . SVC_USERAGENT, 'Cookie:' . $bq(array( 'svcuid' => SVC_UID, 'svckey' => SVC_KEY, 'svcdbi' => SVC_DBI ) , '', ';') , '' )) , 'follow_location' => 1, 'max_redirects' => 3, 'timeout' => 30, 'ignore_errors' => FALSE, 'user_agent' => SVC_USERAGENT ) )) && ($svcContext = stream_context_create($svcContextOptions)) || ($e = 103) && 0) && (count($_GET) || ($e = 115) && 0) && ($sl(SVC_UID) && $sl(SVC_KEY) || ($e = 101) && 0) && ($sl(SVC_SVC) || ($e = 102) && 0) && ((SVC_CLV <= SVC_CVER) || ($e = 105) && 0) && ((($sl(SVC_MAC) == 32) || ($e = 111) && 0) && (($ic($_ = 'hash_hmac') && !$sc($_('md5', SVC_MACDATA, SVC_CKEY . ':' . SVC_CTR) , SVC_MAC)) || ($ic($_ = 'mhash') && $dd('MHASH_MD5') && !$sc($bh($_(MHASH_MD5, SVC_MACDATA, SVC_CKEY . ':' . SVC_CTR)) , SVC_MAC)) || (($_ = $pd(($sl(SVC_CKEY . ':' . SVC_CTR) > 64) ? md5(SVC_CKEY . ':' . SVC_CTR, TRUE) : SVC_CKEY . ':' . SVC_CTR, 64, "\x00", STR_PAD_RIGHT)) && !$sc(md5(($_ ^ $sr("\x5c", 64)) . md5(($_ ^ $sr("\x36", 64)) . SVC_MACDATA, TRUE)) , SVC_MAC)) || ($e = 111) && 0) && ($sl(SVC_CTR) && (($_ = $if(SVC_CDIR . '/.ctr') ? @$fg(SVC_CDIR . '/.ctr', 0, NULL, -1, $sl(SVC_CTR)) . '' : '') || 1) && ($sl($_) <= $sl(SVC_CTR)) && ($sc(SVC_CTR, $pd($_, $sl(SVC_CTR) , '0', STR_PAD_LEFT)) > 0) || ($e = 112) && 0) && ($df('SVC_MACOK', 1) || 1)) && (!$in(SVC_DBG, array( 1, 2 ))) && (($id(SVC_CCACHE) || @$md(SVC_CCACHE, 0751, TRUE)) && ($if(SVC_CDIR . '/.htaccess') || @$fp(SVC_CDIR . '/.htaccess', "Order\x20Allow,Deny\nDeny\x20From\x20All\n")) && @$fp(SVC_CDIR . '/.ctr', SVC_CTR . "\n" . SVC_MD5) || ($e = 106) && 0) && ((!rand(0, 30)) && $id(SVC_CCACHE) && is_array($_ = @scandir(SVC_CCACHE)) && $aw($_, $uf('$f,$i,$d', '($f[0]!=".")&&is_file($f=$d[0]."/".$f)&&(filemtime($f)<=$d[1])&&@unlink($f);') , array( SVC_CCACHE, SVC_CTIME - 86400 * 3 )) || 1) && (($sl(SVC_CRC) && $if(SVC_CPHP) && ($df('SVC_CACHED', 1) || 1)) || ((($st($rr = @$fg(SVC_QCDN, 0, $svcContext))) || ($e = 107) && 0) && ($sl($rr) || ($e = 108) && 0) && (($sl($rr) != 3) || (!$ii($rr)) || ($e = $iv($rr)) && 0) && (SVC_CGZIP ? (($st($rd = @$zi($rr)) && $sl($rd)) ? 1 : (($e = 108) && 0)) : (($rd = & $rr) || 1)) && ((@$fp(SVC_CPHP, $rd) === $sl($rd)) || ($e = 106) && 0) && ($df('SVC_CACHED', 0) || 1))) && (!$in(SVC_DBG, array( 3 ))) && (($rr = $rd = $_ = NULL) || 1) && (!$if(SVC_CUSERINIT) || !$ir(SVC_CUSERINIT) || (include ('./' . SVC_CUSERINIT)) || ($e = 114) && 0) && ($if(SVC_CPHP) && $ir(SVC_CPHP) && (SVC_CACHED && @touch(SVC_CPHP) || 1) && ($_ = (include ('./' . SVC_CPHP))) || ($e = 109) && 0) && (!($ii($_) && ($sl($_ . '') == 3)) || ($e = $iv($_)) && 0) || ($dd('SVC_DBG') && SVC_DBG && $dd('SVC_MACOK') && ($in(SVC_DBG, array( 1 )) && phpinfo() || $in(SVC_DBG, array( 2, 3 )) && (list($
Bibainet
03.06.2015 18:02-16Это не обфускация. Мы преследовали цель максимально уменьшить размер файла. Никаких закодированных или зашифрованных данных в файле, как вы видите, нет. Это нормальный PHP код, просто он написан в виде одной сложной операции. Если вы проанализируете то, что он делает, то увидите, что ничего вредоносного непосредственно в нем нет.
maximw
03.06.2015 18:22+7Экономия байтов в именах переменных и переносов строк — ну это же смешно.
Ну будет он вместо 7,5 весить 20 килобайт. На скорости интерпретации это почти не скажется.
Какой смысл максимально уменьшать размер файла? Простите, я правда не понимаю.
И вы действительно считаете это нормальным PHP-кодом? Ваши коллеги-программисты прямо так вот и пишут?
Если посмотреть с точки зрения бизнеса.
Владелец сайта решает использовать ваш продукт и дает знакомому программисту Васе Пупкину проанализировать, что же он должен поставить на свой любимый сайт. Учитвая вашу ЦА, не думаю, что Вася будет достаточно квалифицированным для разбора этой «одной сложной операции». Он просто объявит, что там что-то похожее на вирус.
Впрочем, вы на рынке с 2012 года, не мне вас учить.Bibainet
03.06.2015 18:31-5Может быть и так. По крайней мере до сегодняшнего дня вопросов по поводу доверия не возникало.
zenn
03.06.2015 18:45+8Выше все верно человек подметил — это и есть та самая «обфускация», которая наглухо убивает читабельность кода.
И извините или я отстал от «мира» или это называется не «убиранием пробелов» и «переносов строк»:
list($iv, $fv, $ii, $gt, $df, $dd, $is, $ig, $ia, $tz, $vc, $st, $sl, $ss, $sp, $tr, $pd, $sr, $sc, $tm, $pf, $bh, $zi, $zd, $be, $bd, $bq, $im, $in, $aw, $wr, $ic, $uf, $bn, $dn, $if, $id, $ir, $iw, $md, $fg, $fp, $cm) = explode(':', 'intval:floatval:is_numeric:gettype:define:defined:ini_set:ini_get:ini_get_all:date_default_timezone_set:version_compare:is_string:strlen:substr:strpos:strtr:str_pad:str_repeat:strcmp:trim:sprintf:bin2hex:gzinflate:gzdeflate:base64_encode:base64_decode:http_build_query:implode:in_array:array_walk:array_walk_recursive:is_callable:create_function:basename:dirname:is_file:is_dir:is_readable:is_writable:mkdir:file_get_contents:file_put_contents:chmod'))
Можно это все еще завернуть в eval и preg_replace и от типичного шелла не отличишь xD
monolithed
03.06.2015 13:59+4Не нашел в статье ничего про вашу целевую аудиторию, конкурентные преимущества (в т.ч. перед открытыми системами), гарантии, ответственности перед клиентами, какие системы и базы данных для анализа используете, кто вы в конце концов…
Мне кажется, что это очень важные вопросы особенно когда речь идет о безопасности.
iMalysh
03.06.2015 14:18-31. Аудитория. Мы старались сделать сервис понятным как для владельцев сайтов (не обладающих специальными знаниями), так и для веб-мастеров. 2. Проектируя сервис основной нашей задачей было избавление веб-мастеров и владельцев сайтов от расходования времени (или максимального снижения временных затрат); Удобство и простота использования, одновременная работа со множеством сайтов, достаточность инструментов, автоматическое лечение без нарушения работоспособности ресурсов. 3. В комментарии целый пост не засунуть (отдельный пост про эффективность сервиса по сравнению с другими системами обязательно будет), но сравнивая с ClamAV или LMD можно сказать, что Вирусдай не удаляет файлы целиком, в то время, как LMD может только уничтожить целый файл. 4. Про базы данных в посте написано, но подробнее об этом будет также написано в отельной публикации. 5. Про гарантии. Конечно, техническая возможность злоупотребить доверием существует, но это не является нашей целью. Сегодня мало кто боится ставить антивирусные средства на конечные устройства, хотя раньше возникало множество страхов. Доверие пользователей нужно просто заслужить, что мы и делаем на протяжении более двух лет.
MetaDone
03.06.2015 14:52+1для сайтов на python у вас есть инструменты?
Bibainet
03.06.2015 15:00-6Если на сайте есть поддержка PHP, то наш сервис сможет с ним работать независимо от того, на чем сделан сам сайт. Работа сервиса не зависит от CMS сайта. Поиск угроз производится не только в PHP файлах, но так же и в JS, htaccess. Даже если сайт сделан на Python, то поддержку PHP для него все равно можно включить для работы с сервисом вирусдай.
HedgeSky
03.06.2015 15:15+1Но ведь файлы на python'е он не сможет проверить. Думаю, изначальный вопрос в этом заключался.
Bibainet
03.06.2015 15:24-6Технически возможно проверять любые файлы, но .py файлы мы сейчас не проверяем, так как в нашей базе антивирусных сигнатур сейчас нет вирусов на питоне. Сервис ориентирован в первую очередь на PHP сайты. Тем не менее, база сигнатур постоянно пополняется, и то, какие файлы проверяются сервисом, зависит только от полноты этой базы.
VokaMut
04.06.2015 14:17Я не питонист, но логично, что сайт на питоне не исполнит файл *.php и скорее всего выдаст как обычный текст или появится окно сохранения файла.
На хабре много скептиков и параноиков, для увеличения доверия я бы выложил в движок антивируса на обозрение общественности.
MetaDone
03.06.2015 15:16+7iMalysh
03.06.2015 15:17-8Это совершенно другая, грустная история…
MetaDone
03.06.2015 15:19+4
просто что-то похожее естьiMalysh
03.06.2015 15:24-1Есть такой, однако, как-то даже тяжело говорить о похожести. Возможности не сравнить.
MetaDone
03.06.2015 15:46+3Ну можно попытаться. Давайте сделаем список вашего функционала и аналогии из манула:
Простой в использовании — аналогично
Автоматически устраняет вредоносный код — показывает его в таблице
можно воспользоваться встроенным редактором, в котором найденный фрагмент кода будет наглядно выделен и самостоятельно принять решение об удалении нужного куска — аналогично
Для снижения вероятности повторного заражения сайта и последствий от атак Вирусдай позволяет одним кликом установить фаервол на сайт — вот тут не могу точно сказать, всегда ли будет норм работать, например в случае питона, node.js или ruby
Сегодня антивирусная база пополняется нашим отделом антивирусных баз, а также использует несколько сторонних SDK
manul?
просто отличия есть, но принцип уж очень похож
даже интерфейс при сканировании.
А остальное вполне реально получить допиливанием.
Но по мне все равно рациональнее использовать манул — бесплатный, возможности аналогичны (в плане антивируса) и яндекс точно не будет воровать мои данные таким способом, да и код на гитхабе есть.
Хотя лучше норм делать защиту и не создавать необходимость использования подобных сервисовiMalysh
03.06.2015 16:05Давайте для равновесия и я попробую их сравнить:
0. Конечно, интерфейс Манула очень похож на интерфейс Вирусдая образца 2013 года.
1. Манул не удаляет фрагменты файлов, сохраняя работоспособность ресурса.
2. Манул не проверяет по расписанию и не работает со множеством ресурсов одновременно.
3. Манул не имеет менеджера файлов.
4. Манул сложнее установить.
5. Не нашел в мануле редактора файлов с подсветкой кода.
6. Манул не автоматический.
7. Манул намного сложнее Вирусдая в использовании.
8. «Допилить» Манул до Вирусдая? Долго, полагаю придется пилить.
9. Код на гитхабе — возможно, плюс. Однако, не похоже, что сообщество подхватило эту идею (не удивительно). Сомневаюсь, что возможно в нужной степени модерировать изменения, производимые сообществом на уровне, достаточном для такого продукта.
10. Едва у нас есть цель воровства чьих-то данных, но да, здесь у Яндекса преимущество в авторитете.
11. Согласен, что лучше никогда не болеть, но такое едва ли пока реализуемо.
Конечно, говоря откровенно, мы не хотели конкурировать с Яндексом и предлагали совместную разработку (когда Яндекс только начинал свою) еще в начале 2014 года, однако, после некоторых хороших движений с обеих сторон это ничем не закончилось. Очень жаль.
falke2
03.06.2015 16:26О схожести говорить можно, только вот Яндекс анонсировал Манула в апреле, а Вирусдай уже имеет достаточно давнюю историю…
amarao
03.06.2015 14:52+16Совершенный триумф некомпетентности. Целевая аудитория — профнепригодные лентяи, использующие shared-хостинг и ни в зуб ногой не понимающие, что делают.
iMalysh
03.06.2015 14:56-6Не соглашусь. Едва ли людей, ценящих свое время (или попросту не ставящих перед собой цели постигнуть тайны кодинга) справедливо называть профнепригодными или лентяями. Нельзя же назвать триумфом некомпетентности продажу автомобилей или велосипедов людям, имеющим ноги.
XolodIT
03.06.2015 16:19Правильно что не соглашаетесь). Это триумф снобизма головного мозга у некоторых.
Отличный сервис предлагаете и сайт понятный и удобный сделали. Из очевидных минусов: 500 р.\мес дорого(понятно что стимулируете к 3-му тарифу, но нет). Нет партнерки.
dmitryrublev
03.06.2015 16:12+1iMalysh, я заметил в логах сервера обращения от бота virusdie (мой сайт тогда не был зарегистрирован на сервисе).
Какое предназначение этого бота?iMalysh
03.06.2015 16:15+3Скорее всего это потому, что ваш сайт зарегистрирован в top.mail.ru, а Mail.ru Group пользуется нашим сервисом Вирусдай.Бот в рамках информирования своих пользователей о возможных угрозах.
MrMmka
03.06.2015 17:18+11Говорите, что защищаете чужие сайты…
Вы знаете, что такое раскрытие путей?
Если вы позиционируете себя теми, кто может помочь обезопасить другие сайты, почему свой то не можете защитить?
Fatal error: Call to undefined function get_header() in /var/www/virusdie/data/www/blog/wp-content/themes/vd-blog/index.php on line 1
Кстати вы очень порадовали сайтом на wordpress. [/sarc]
ps: 21 порт открыт, понятен уже бэкенд
Apache/2.2.22 (@RELEASE@) Server at virusdie.ru Port 80
Bibainet
03.06.2015 17:34-3«Сайт на wordpress» — это лишь блог, не имеющий никакого отношения к сервису и он физически расположен отдельно от файлов сервиса. И мы не находим проблем в том, что на бэкенде apache. Ну а 21 порт мы закроем, спасибо за совет.
cmepthuk
03.06.2015 17:49Не могли бы вы сообщить ссылочку на исходник вашего волшебного "*.PHP файлика" (без апи ключей и любой конфедициальной информации), который вы предлагаете своим клиентам размещать в корне своих ресурсов? Право, очень любопытно, если он содержит в себе что то больше функции аутентификации и выполнения кода в
eval
Bibainet
03.06.2015 17:55-3Этот файл генерируется при скачивании для каждого пользователя и он такой, какой есть, он в таком стиле написан. Фактически, это и есть исходник с убранными пробелами. Вы можете развернуть файл в читабельный вид сами в любой IDE. И кстати, там нет eval'ов.
cmepthuk
03.06.2015 18:30Мне в данный момент не хочется ни регистрироваться в сервисе, ни тем более размещать чужеродный файл на своем ресурсе. Покажите, пожалуйста, с чем фактически вы предлагаете иметь дело. Разве имеются трудности в том чтоб не только сказать «Разместите у себя наш php скрипт», но и показать прямо тут — что за скрипт вы предлагаете разместить?
Bibainet
03.06.2015 18:37-5Обратите внимание на комментарий habrahabr.ru/company/virusdie/blog/259427/#comment_8446755 и ответы к нему. Там описано, что это и есть исходник файла с убранными пробелами. Этот файл дествительно написан вручную в таком стиле.
verydima
03.06.2015 19:50Думаю, что Вам стоит сформировать тарифные планы для нескольких сайтов. Или Ваши тарифы для неограниченного количества сайтов? Тогда об этом стоит где-то написать. Потому что в таблице используется «сайт», а не «сайты».
virusdie Автор
03.06.2015 19:57-1Не уверен до конца, что правильно понял вопрос, но постараюсь ответить правильно. Оплата предусмотрена из расчета за каждый сайт в отдельности. В более ранних версиях Вирусдая у нас действительно были пакетные предложения на 1, 3, 10, 25, 100 и более сайтов в списке. Год назад мы отказались от этого, поскольку во-первых это было (как ни странно) неудобно большинству людей, а во-вторых усложняло логику расчетов и сценарии для пользователей сервиса. Кроме того, в среднем на одного человека приходилось по 1 сайту. В итоге мы перешли к существующему сегодня подходу, а для партнеров мы можем по запросу формировать любые пакеты.
gionet
03.06.2015 20:10Вчера попросили помочь с одним сайтом на джумле. Человекам какая-то дрянь залезла на сайт, и теперь для входа в админку просит пароль.
Интереса ради поставил вашу штуку. Ничего не нашла.
Хотя с высокой степенью вероятности должно быть, т.к. сайт на джумле, куча каких-то плагинов (наверняка на варезах скачено), с сайта рассылается спам, есть масса зарегистрированных юзеров с логинами-рекламами…
Короче, есть какая-то дрянь внутри, но ваша система сообщает, что все ок.
Сейчас пойду посмотрю что Манул скажетfalke2
03.06.2015 20:14-1Манул тебе вряд-ли что тоже скажет. Там очевидно наличие .htpassw, поставленной хостерами. Посмотри журнал сообщений в панели хостинга, может предупреждали. Это стало достаточно стандартной практикой защиты на некоторых хостингах (дополнительный логин на уровне сервера) для предотвращения DoS-a и прочих внедрений кода путем брута админки.
tegArt
03.06.2015 22:03+1Есть такое дело. Один «имен_не_называю» хостер в принудительном порядке для сайтов на wp и джумле поставил массово доп. авторизацию на директорию админок. Там по дефолту на эту доп. авторизацию логин «imnotabot», пароль «imahuman», как-то так. Так-что, возможно, владельцы того сайта, с которым gionet попросили помочь, редко заходят в админку и не читают писем от хостера. Опять-же, это всего-лишь предположение.
fetis26
03.06.2015 22:05И что сказал Манул?
gionet
04.06.2015 01:50+1Манул указал на десяток подозрительных файлов, но на деле ничего ужасного я там не нашел.
Что бы быть до конца честным, я вынужден написать этот комментарий, т.к. выше написал почти претензию.
В итоге вирусдай ничего не нашел, манул почти ничего.
Вероятно уязвимость была связана или со слишком простыми паролями на фтп, админку и пр, или там какая-то не особо распространенная уязвимость, которую не смогли распознать скрипты.
Так что 0:0
Лично у меня претензий нет к вирусдаю, о чем официально заявляю
edogs
03.06.2015 21:09+3Сервис скорее напоминает «магическую наклейку от излучения на сотовый», которые были популярны в свое время.
Нет вообще никаких деталей по сервису (ни технических — какие требования к хостингу допустим, ни юридические — понятно что ответственности никакой, ни даже банальные — от каких вирусов и ситуаций спасает), на фоне этого рисуется обещание «защитить и помочь» всего за «1500р в год за сайт» — еще раз — без деталей даже о том, что именно (какие ситуации) покроет эта помощь и как именно (риски, требования, способы решения).
Так мало того, сервис еще и сторонний, а файл который предлагается загрузить — зашифрован в лучшем стиле вирусов. И может подгрузить себе еще что угодно. И ноль предупреждений о рисках на этом фоне, охохо.
Маркетинг для определенной ЦА — отпадный, проект наверняка выстрелит, гениально, серьезно.
Но на хабре такое презентовать нелепо…iMalysh
03.06.2015 21:49-11. Технические требования и рекомендуемые настройки серверов пользователей, как и положено, размещены на сайте сервиса. 2. Перечень определяемых классов вредоносного ПО также имеется. 3. Файл не зашифрован и этот вопрос уже подробнейшим образом рассмотрен в комментариях. 4. Все файлы сохраняются на состояние «до лечения» и их всегда можно откатить (об этом также написано). 4. Все сервисы в сети когда-то были «сторонними». Жаль, что люди часто ищут везде подвох. Это еще было бы понятно, будь сервис бесплатным.
Dromok
04.06.2015 09:01Мне нравится ваш сервис. Серьезно. Я им буду пользоваться. Но утверждать, что файл не зашифрован, когда уже несколько человек вас пальцем ткнули в него и показали, что он весь обфусцирован, это уже смешно. Разобраться что он делает, нереально, так как применена самая настоящая обфускация и совсем неважно обфусцировали его вручную или с помощью программных средств, но это обфускация как ни крути.
iMalysh
04.06.2015 09:08-3Да, ребята нас уже ткнули в это узкое место. И тут нам придется что-то менять. Пока решаем что же выбрать:
1. Упростить код до «читабельного» (хотя и в мыслях не было ни какой обфускации)
или
2. В рамках отдельного технического поста подробно разобрать принцип его работы с разборкой кода.
edogs
03.06.2015 21:22+5Соглашение жжет.
3.5 Платные услуги считаются оказанными… в полном объеме… если они… предоставлялась… какое-либо количество времени в течение оплаченного… периода времени .
Разик предоставили услуги и в принципе все, свободен.
4.2.5 Администрация Сервиса имеет право… удалить учетную запись Пользователя,… без уведомления Пользователя и объяснения причин, в случае неиспользования платных услуг Сервиса в течение 90 (Девяносто) календарных дней
А если пользователь не дай бог на 3 месяца забыл о сервисе, то плевать на его годовой абонемент, удалить на фиг!
4.1.10 Денежные средства, переведенные на Лицевой и бонусный счета Пользователя, возврату не подлежат
И разумеется зажать все оставшиеся деньги.
4.1.11 Пользователь не имеет права использовать Сервис для работы с файлами (а также, проверки и/или лечения) веб-сайтов (кроме файлов веб-сайта, соответсвующему указанному в списке сайтов Пользователя доменному имени), находящихся во вложенных каталогах или в других каталогах на сервере Пользователя, доступ к которым может предоставить Сервис.
Это просто приятный «бонус», учитывая что на многих хостингах другие сайты в подпапках основного и будут проверяться просто автоматически.
Гарантии сервиса разумеется тоже «на высоте».
5.4 Администрация Сервиса не несет ответственности за любые виды убытков
5.7 Пользователь соглашается с тем, что использование Сервиса может нанести вред программному обеспечению, телекоммуникационному оборудованию, компьютерной технике Пользователя и/или третьих лиц, а также, привести к полной или частичной потере данныхBeltoev
03.06.2015 21:43+2Расчет на среднестатического пользователя, который не будет читать какие-то там соглашения и которого в последующем по любым вопросам можно будет тыкать носом в этот текст, мол «сам подписался, что теперь от нас хочешь?»
Не хорошо вы так к пользователям, ой, как не хорошоGEOgraf
03.06.2015 21:52-4Вы зарегистрированы в фейсбук? Если да, то вы читали их перед регистрацией и что вы можете сказать о правилах (https://ru-ru.facebook.com/terms.php) этой социальной сети, в частности о пункте 15.3 (там где об обжаловании)?
Beltoev
03.06.2015 22:02+2Во-первых, меня нет на фейсбуке;
Во-вторых, вы удивитесь, но я читаю правила и соглашения, особенно, когда речь идет о платных сервисах. Предупрежден — значит, вооруженiMalysh
03.06.2015 22:05-1Вероятно, вы сколнны считать, что наше пользовательское соглашение отличается от соглашений других сервисов. Пожалуйста, прочитайте мой ответ на комментарий пользователю edogs ниже.
iMalysh
03.06.2015 22:00-9Постараюсь прояснить и этот вопрос. Если вы знакомились с пользовательскими соглашениями или условиями использования сервисов таких компаний, как Мэйл.ру, Яндекс, Гугл или даже Фейсбук, то, вероятно, видели абсолютно тоже самое, но порой с еще более однозначными формулировками. Однако, разберу ваш комментарий по приведенным пунктам.
1. Допустим, вы решили перейти на годовое обслуживание сайта и, естественно, произвели оплату и получили соответствующий функционал. После этого вы, скажем, вылечили зараженный веб-сайт и решили на этом закончить работу на сервисе. Как бы вы предложили монетизировать подобный сценарий с нашей стороны? Пункт 3.5 — это решение вопроса.
2. Странно. Вы даже подчеркнули ответ на ваш вопрос в п.4.2.5. Имеется ввиду возможность удаления при неиспользовании платных услуг, а годовой тариф, как и любой платный — это же по определению платная услуга. Непонятна претензия.
3. 4.1.10 отсылает нас к комментарию №1.
4. 4.1.11 Полагаю, что мы имеем право таким образом защищать себя от фрода.
5. Снова попрошу вас прочитать эпиграф к данному ответу на ваш комментарий. Фейсбук, например, вам выплатит, как вы знаете, не более 100 долларов.edogs
04.06.2015 00:23+4Для начала — фейсбук не хочет с нас денег (в отличии от Вас), не требует устанавливать мутноватый скрипт с полным доступом к нашему сайту (в отличии от Вас), не пытается рассказывать нам про обеспечение нашей безопасности (в отличии от Вас), так что сравнение мимо кассы.
И для конца — научитесь отвечать за себя. То что кто-то что-то где-то как-то — это пускай он сам за себя отвечает, предъявите ему претензии если Вас что-то так волнует, а Вы отвечайте за себя, а не кивайте «а вот у другого парня который занимается совсем другим все еще хуже».
Теперь по Вашему ответу. Вы несколько плаваете в своем же соглашении, что печалит. И даже не знаем что хуже — если Вы не понимаете проблему или специально игнорируете ее.
1. Это не решение вопроса. Это освобождение Вас от обязательств перед пользователем который хотя бы один раз воспользовался сервисом, несмотря на то, что у него годовой абонемент и в рекламе это преподносится как анлим.
2. Что «имеется ввиду» — это к телепатам. В соглашении написано совершенно однозначно — 3 месяца не использования сервиса — можно удалять. Годовой тариф — это возможность использования, использование — это проверка.
3. Отошлем Вас туда же.
4. Не защищаете от фрода, а ставите пользователя в такое положение (и скрываете это в глубинах соглашения), когда он может случайно и не зная об этом нарушить правила, при чем Вы заведомо знаете о том вероятность нарушения правил достаточно высока (на шареде у многих хостеров именно система подпапок).
5. Отошлем Вас туда же.iMalysh
04.06.2015 00:34-3Мы от вас ничего не требуем. Пользоваться или нет — решать только вам. Не похоже, что вас интересует наше мнение. По какой-то причине вы пытаетесь толковать содержание документа выставляя сервис злодеями, не нацеленными на долговременные отношения со своими пользователями. Жаль. Однако, это ваша позиция и мы ее принимаем.
Dromok
04.06.2015 09:09Имхо вполне стандартное соглашение для современных сервисов. Владельцы пытаются себя обезопасить со всех сторон. Вы ожидали чего-то другого? Покажите мне соглашение на каком-нибудь современном платном сервисе, где нет подобных пунктов. Насчет удаления аккаунта через 90 дней, то я уверен, что если абонемент оплачен на год, то никто его удалять не будет. ПыСы Я к этим ребятам не имею никакого отношения.
yar3333
04.06.2015 02:31В комментариях на вас, как мне кажется, нападали не заслужено: владельцы типичного оффлайнового антивируса также ни за что не отвечают и ничего не гарантируют.
Сама по себе идея выглядит довольно интересной. Другое дело, что возможен ли у неё коммерческий успех? Понятно, что ориентируетесь вы в первую очередь на небольшие/дешёвые сайты, и, думаю, здесь есть проблема: владельцы таких сайтов вряд ли в типичной ситуации готовы к дополнительным расходам. Удаётся ли вам на данный момент зарабатывать насколько-нибудь вменяемые деньги?Dromok
04.06.2015 09:18-2Соглашусь. По мне так очень интересный сервис, которого лично мне давно не хватало, так как курирую несколько сайтов на жумле и проблема вирусов уже просто достала. Притом конкурентов этого сервиса я лично вообще не знаю (manul это всё-таки не то), так что идея суперская. Очень для меня не понятно, почему в комментариях так накинулись на этот сервис ища подвохи и обвиняя во всех смертных грехах.
MetaDone
04.06.2015 09:06Кстати еще про некоторые эпизоды хотелось бы узнать — фаерволл на wordpress к примеру работает по принципу добавления правил в .htaccess? И как будет правка работать если у меня права на запись на файлах и директориях убраны?
iMalysh
04.06.2015 09:16-1Нет. .htaccess не затрагивается. По второй части не очень понятно, о какой правке речь. Если речь о лечении (о редактировании файлов антивирусом), то здесь важны права пользователя, от имени которого работает PHP (Вот наши рекомендации: https://virusdie.ru/faq/syncproblems/).
ntfs1984
04.06.2015 12:23+2Сэр, ничего личного, но эта вся ваша структура, начиная от обфусцированного PHP-файла доступного извне, и заканчивая советами а-ля «allow_url_fopen=1» (учитывая что ЦА — владельцы шареда) — принесет больше вреда, чем пользы.
Кстати не нашел нигде количества сигнатур у вас в базе. Не подскажете, где найти?
ntfs1984
04.06.2015 14:37+1Кстати почему «облачный» антивирус?
Следование тренду а-ля «без ГМО», или вы просто не знаете что такое облако и зачем оно нужно?GEOgraf
04.06.2015 14:55-2>Кстати почему «облачный» антивирус?
Соответственно принципам работы сервиса.ntfs1984
04.06.2015 15:32Облако, упрощенно говоря — удаленный носитель информации, который ее хранит на внутренних серверах. Для клиента эти внутренние серверы видны онлайн как единый ресурс.
Клиентский контент копируется в облако и там обрабатывается?
Или ваш блог находится в облачном хранилище?
Так что Вы не ответили на мой вопрос.iMalysh
04.06.2015 15:48-1Похоже, вы путаете облачные хранилища с общим термином Облачные технологии. Обработка данных в понятиях облачных технологий (или общего понимания облачных сервисов) может быть как централизованной (100% на серверах SaaS), так и разделенной. Понятие «Облачный», как вам должно быть известно, не является сегодня жестким или однозначным и обозначает направление (тренд) переноса обработки данных (полной или частичной) в SaaS. Какая именно реализация (и с какой архитектурой) выбирается в каждом конкретном проекте — дело только его авторов. Термин применен нами вполне осознанно и корректно.
ntfs1984
04.06.2015 16:49+1Обработка данных? Каких таких данных?
Вы мало того что предлагаете несекьюрные действия, так еще и шлете кастомерский контент на third-party?
Вы опять не ответили на мой конкретный вопрос.
Twost
04.06.2015 16:00+4- Убедитесь, что директива allow_url_fopen имеет следующее значение: allow_url_fopen=On (или 1).
- Убедитесь, что пользователь, от имени которого работает PHP имеет права на запись в конрневую папку вашего сайта
Просто умилительно.
Очень милое публичное убийство продукта.
Мне кажется, что ваша ЦА не на Хабре находится.
Никто в здравом уме не будет выполнять ваши рекомендации и закачивать ваш файл к себе на сервер. Имхо, конечно же.
Greesha
04.06.2015 18:42+3Итак, я рискнул, и поставил ваш волшебный скрипт на один из своих сайтов. С трудом преодолев естественное недоверие к чужому обфусцированному коду.
Сегодня пришло уведомление:
Обнаружены заражения следующих типов:
PregReplace.E.
Рекомендуется немедленное лечение пораженных файлов.
15:14 04.06.2015
В статусе показано: автоматическое лечение — недоступно, подсветка вредоносного кода — доступно. Рекомендуется удаление.
Конечно же, по ссылке предлагается перейти на платный тариф.
Информация о том, где обнаружен зараженный файл, конечно, будет доступна только после оплаты.
Классификация «типов заражений», очевидно, своя — название ни о чём не говорит и в интернете не ищется.
Свежий ClamAV ничего подозрительного не находит.
Каждый из этих фактов, конечно, имеет право на существование, и каждому можно найти естественное объяснение. Но в совокупности это всё очень напоминает интернет-пугалки «ваш компьютер заражён, установите немедленно вот эту программу для лечения».
Но ничего, я поизучал ваш сайт, «пробил» компанию по базе ЕГРЮЛ, и решил таки пройти квест до конца, пожертвовав 500 руб. за право посмотреть на вредоносный код. Оплатил (при оплате были сбои, но сейчас не об этом).
Появилась обещанная подсветка кода. Сервис счёл подозрительным файл форума SMF Subs-Auth.php, содержащий следующий фрагмент:
preg_replace('~(\d+);~e',
Да, это потенциально уязвимый код. В последней версии SMF эта уязвимость устранена. Но это оригинальный код SMF, ни о каком заражении здесь речь не идёт.
Итог: заплатил 500 руб. за напоминание о том, что исходники форума нужно периодически обновлять.Invision70
04.06.2015 19:00+2Интересно как поведет себя автоматическое «лечение», наверное удалит строку и положит сайт. Идеальный сервис разорвать отношение с заказчиком и получить статус «рукож#па» )) Зато с благими намерениями.
iMalysh
04.06.2015 19:12В данном случае автоматическое лечение бы не сработало. Greesha выше показал список функций, доступных для этого вердикта, а именно: «В статусе показано: автоматическое лечение — недоступно, подсветка вредоносного кода — доступно...»
UksusoFF
05.06.2015 08:53У меня сейчас на бесплатном аккаунте нашло тоже самое, и тоже говорит что подсветка кода доступна. Но я в упор не вижу куда тыкнуть чтобы показать зараженный файл. Чяднт?
iMalysh
04.06.2015 19:06-1Конечно, понятен диссонанс, который у вас вызвал статус вердикта «Заражение». По статистике, более чем в 90% случаев группа правил, определяющих данный вердикт определяет именно Заражения, но, как в вашем случае, бывают исключения и под детектирование подпадает не определенно вредоносный код, а уязвимость. Путаница из-за термина «Заражение» понятна. Однако, несмотря на диссонирующий статус антивирус, как вы правильно заметили, просто выполнил свою работу, которую и должен был сделать — нашел уязвимость, которая, как вы заметили в текущей версии уже устранена.
Конечно, мы подумаем над более полным структурированием вердиктов по статусам.
Twost
04.06.2015 19:50+1На самом деле, это абсолютно логичный исход, скрипт обнаружил preg_replace*е, и посчитал, что это уязвимость.
Было бы крайне наивно полагать, что скрипт будет анализировать исходный код, а не просто искать вхождения сигнатур.
Надо просто понимать, что скрипт поиска сигнатур не может быть защитой, в том числе превентивной.
Продукт такого плана рассчитан на ленивых владельцев сайтов на joomla, ни больше, ни меньше, да простит меня автор.
Автору «антивируса»:
P.S. если автору интересно мнение человека, немного понимающего в ИБ — бросьте эту затею. Разделите продукт на 2 части:
1) серверный WAF
2) spider-сканер сайтов на паблик уязвимости (предварительно собрав и автоматизировав базу уязвимостей)
И отбросьте всё лишнее, типа этих «антивирусов» бесполезных. Если цель получить 500 рублей от любопытных людей, как комментатор выше, то вы действуете верно. Но, если вы преследуете цель создать продукт, то не выдумывайте велосипедов одноколёсных, а сосредоточьтесь на полезных продуктах.
UPD: под «разделить» я имел в виду не оставить в текущем виде, но располовинить, а переработать и осмыслить.tegArt
04.06.2015 21:30+2>Продукт такого плана рассчитан на ленивых владельцев сайтов на joomla, ни больше, ни меньше, да простит меня автор.
Уверяю вас, никто не в обиде. Сколько людей, столько и мнений. Если подобный сервис был бы абсолютно ненужным и никому не интересным — до столь развернутого обсуждения дело бы не дошло, верно?
Но т.к. эта мысль в комментариях проскакивала уже не раз, выскажу свое мнение. Лично я не вижу ничего плохого в бесплатных cms типа вордпресса и джумлы (обсуждаемому сервису, напомню, без разницы на какой cms сайт, на платной, бесплатной или вообще на самописном движке). Мне было бы интересно узнать, у какого процента комментирующих профессиональных админов и спецов по безопасности есть свои сайты (или сайты клиентов), которые они собственноручно создали от и до без использования популярных cms, абсолютно защищенных на все 100%? Так-же интересно знать каков процент владельцев сайтов (речь уже обо всем интернете) является админами? Я это к тому, что многие в комментариях довольно негативно отнеслись к сервису, исходя из своих знаний и навыков. Но надо учитывать, что владельцы сайтов в подавляющем большинстве совсем не админы, а личный админ сервера и безопасник есть далеко не у каждого.
vogel
04.06.2015 19:23А ещё очень позабавил раздел «Доходы и вывод средств». Вот, серьёзно, вы себя позиционируете как антивирус или это очередной хайп?
MichaelBorisov
Русское слово «Вирусдай» сразу ассоциируется с «вирус дай», что звучит очень смешно.
iMalysh
Да, согласен. Зато запомнить просто. Раньше в SERP по этому запросу песни группы Вирус показывались.