LINUX.ORG.RU
ФорумTalks

Выявление потенциально опасных конструкций в исходном коде.

 , , , ,


0

2

Какими способами вы оптимизируете свой исходный код, чтобы при сканировании через антивирусы он не принимал ваш софт за малвар?

Какие конструкции, которые могут быть восприняты антивирусным анализатором как недекларированнные, подозрительные и т.д., вам известны и для всех ли вы нашли более безобидную альтернативу?

Как сделать код максимально прозрачным для антивирусного детектирования (особенно эвристиками), не увеличивая вероятность нахождения в нем уязвимостей, при этом защитить его целостность и удобочитаемость?

Мне в дипломной работе нужно разработать какой-то набор рекомендаций для разработчиков по улучшению и оптимизации исходного кода с точки зрения его безопасности.

П.С. Стоит ли мне сменить тему диплома и, если да, то в каком направлении копать?

Перемещено tazhate из general


Лично мое мнение, что работа антивиря зависит от поведения софтинки, а не её кода. Поэтому это немного бессмысленно.

tazhate ★★★★★ ()
Ответ на: комментарий от blahq

то есть главное чтоб экзешник не вызвал подозрений?

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

Но это лишь мое мнение. Посмотрим, что общественность скажет.

tazhate ★★★★★ ()
Ответ на: комментарий от SEV

месяц назад 23 из 46 антивирей ругнулись, мда. интересный тест, спасибо! а по части рекомендаций разработчикам?

по части кода, например: -функции с прологами и эпилогами -работа со стеком выше ebp (как с локальными переменными) -вызов api как call:ds xxxxx (где xxxxx - адрес в iat)? или в целом, архитектуры?

blahq ()

Рекомендация только одна - подписывать код сертификатом выданным каким нибудь VeriSign. У нас был случай, наша софтина, из за пары технологий ухода от отладки (для усложнения взлома) была принята за вирус Symantec-ом. Symantec сказали подписать надо, и будет счастье, так и произошло. (К смеху сказать, сам Symantec этой нашей софтиной и пользуется, пока правда только триалом)

qrck ★★ ()
Ответ на: комментарий от qrck

а symantec как-то проверяет экзешники, которые подписываются их сертификатами? как я понимаю, сертификаты просто обеспечивают целостность кода до и после подписи, а что внутри, всем, в общем-то, плевать.

This does not guarantee that the code itself can be trusted, only that it was signed by a specific legal entity. A hacker could still get a code signing certificate and sign a virus but he will be legally accountable for it.

blahq ()

Какими способами вы оптимизируете свой исходный код, чтобы при сканировании через антивирусы он не принимал ваш софт за малвар?

это невозможно. это параноидальное дерьмо(а точнее авира) буквально неделю назад приняло текстовый файл содержащий заголовки страниц разделённые табуляциями за трояна. о чём дальше можно говорить.

invy ★★★★★ ()
Последнее исправление: invy (всего исправлений: 1)

Если у тебя честный софт, то и подпиши его каким-нибудь trusted сертификатом и распространяй дальше, сколько хочешь.

DELIRIUM ☆☆☆☆☆ ()
Ответ на: комментарий от tazhate

Лично мое мнение, что работа антивиря зависит от поведения софтинки, а не её кода.

Пользуюсь антивирем, у него время от времени случаются ложные срабатывания. Причём срабатывает, как правило, или на самописный софт (под оффтоп, ессна), или на свободные компиляторы (семейство gcc и некоторые ассемблеры).

По сабжу: где-то попадался сабжевый ГОСТ, ещё советский.

Deleted ()
Ответ на: комментарий от invy

это параноидальное дерьмо(а точнее авира) буквально неделю назад приняло текстовый файл содержащий заголовки страниц разделённые табуляциями за трояна.

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

Sadler ★★★ ()
Ответ на: комментарий от DELIRIUM

вопрос в том, что trusted certificate является таковым, если корневые серты этого паблишера установлены у юзера на машине, и когда тот же паблишер выдал подпись софту разработчика. По сути они сам код не смотрят даже, просто шифруют подпись, потом все, что они делают в качестве верификации - считают контрольную сумму

blahq ()
Ответ на: комментарий от Sadler

я бы им вообще не пользовался, да на работе политика такая что надо :)

invy ★★★★★ ()

Тему диплома меняй, если не хочешь понаписать какой-то хни столько-то страниц и забить на это дело.
Иначе идешь на wasm.ru, самые длинные треды берешь, редактируешь литературно и после этого фигачишь в диплом как основную часть. Введение и заключение за 5 лет писать научили?

trex6 ★★★★★ ()
Ответ на: комментарий от tazhate

то он будет спрашивать, разрешать ли что либо программе или нет.

Вот за это не любят проактивку Comodo. По отзывам, «надо чтобы антивирус всё сам решал за пользователя».

SEV ()

Мне в дипломной работе нужно разработать какой-то набор рекомендаций для разработчиков по улучшению и оптимизации исходного кода с точки зрения его безопасности.

Поскольку всё равно читать не будет никто, напиши, что целесообразно писать код на суахили.

Miguel ★★★★★ ()

Вот интересно было бы, для начала, выявить потенциально опасные конструкции в таком коде:

#include <stdio.h>

int main(void)
    {
    char buf[1024];
    char *s;
    int i;

    while(fgets(buf, sizeof(buf), stdin))
        if('{'==buf[0])
            break;
    i=1;
    while(fgets(buf, sizeof(buf), stdin))
        {
        if('}'==buf[0])
            break;
        for(s=buf; *s!=0; ++s)
            {
            if(','==*s)
                {
                *s=0;
                printf("#define %s %d\n", buf, i);
                ++i;
                break;
                }
            }
        }

    return 0;
    }

Этот маленький велосипедик используется при сборке cdslow для генерации числовых идентификаторов строк. В один прекрасный момент эта программа, которая никак не распространяется и присутсвтует исключительно на моём компе, стала опознаваться дрвебом как вирус, уж не помню какой именно.

После отправки запроса, дрвебовцы свои базы поправили (это заняло совсем немного времени, запрос отправлен в октябре 2009, базы исправлены в августе 2010 :) ).

Но что же всё-таки в этой программе такого подозрительного?

cdslow ()
Ответ на: комментарий от Miguel

мне санскрит больше нравится, он аутентичнее, что ли.

в практической части так или иначе придется использовать листинги скриптов на асме

blahq ()
Ответ на: комментарий от blahq

мне санскрит больше нравится, он аутентичнее, что ли.

Ну, фломастеры разные...

скриптов на асме

You've made my day.

Miguel ★★★★★ ()
Ответ на: комментарий от blahq

Сертификат и цифровая подпись не только обеспечиваею целостность содержимого, но и гарантируют что данное содержимое было выпущено такой то конкретной компанией, с таким то конкретным адресом, юр лицом, итп, и как следствие, если в файле какой вредоносный код найдется, всегда известно, кого судить или кому бить морду.

qrck ★★ ()
Последнее исправление: qrck (всего исправлений: 1)
Ответ на: комментарий от blahq

This does not guarantee that the code itself can be trusted, only that it was signed by a specific legal entity. A hacker could still get a code signing certificate and sign a virus but he will be legally accountable for it.

The only thing, hacker will have to provide his real name, real address, as well as the evidence confirming that address and name are correct. It would be easy to jail him after he uses certificate for hacking purpose :-)

qrck ★★ ()

Какие конструкции, которые могут быть восприняты антивирусным анализатором как недекларированнные, подозрительные и т.д., вам известны и для всех ли вы нашли более безобидную альтернативу?

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

Как сделать код максимально прозрачным для антивирусного детектирования (особенно эвристиками), не увеличивая вероятность нахождения в нем уязвимостей, при этом защитить его целостность и удобочитаемость?

т.е. такой код, что вроде все нормально и прилично но уязвимость найти не удается, а она есть (синдром сурка)?

Мне в дипломной работе нужно разработать какой-то набор рекомендаций для разработчиков по улучшению и оптимизации исходного кода с точки зрения его безопасности.

Пиши мантру: opensource, git, github, signed packages (digest/checksum/hash...), copyleft...

swwwfactory ★★ ()

Компилер ресурсов в VS2005 заворачивает некоторые bmp'шки так, что бинарник потом определяется как с вирусом.

UVV ★★★★★ ()
Ответ на: комментарий от blahq

говнокод он тоже детектит

откуда такие фантазии?

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

И ответа на

buffer overflow

в каком месте?

я всё ещё не наблюдаю.

cdslow ()

Какими способами вы оптимизируете свой исходный код, чтобы при сканировании через антивирусы он не принимал ваш софт за малвар?

Лучшая оптимизация - не писать под винду.

Siado ★★★★★ ()
Ответ на: комментарий от blahq

http://www.youtube.com/watch?v=kcbIhjzDNh8 смотри

Название видео «Уязвимости переполнения кучи», к показанному приемеру кода отношения иметь не может, в коде используется только стек (не считая внутренностей библиотечных функций, которые отношения к делу не имеют). Смотреть не стал, предпочитаю информацию в читаемом виде.

Жду указание на место кода с переполнением.

cdslow ()

Забудь про ассемблерные вставки и прочие извращения на этой почве, типа

char bytes[] = {звесь какой-то корректный или не очень шибко умный машинный код в виде байтов};
int ret = ((int(*)())bytes)();

windows, безопасность

Меняй быстро тему например.

nanoolinux ★★★★ ()

неужели для диплома не нашлось темы поинтереснее? рисёча всякого же завались

jcd ★★★★★ ()
Ответ на: комментарий от tazhate

Автор топика ставит неправильные вопросы.

Мне в дипломной работе нужно разработать какой-то набор рекомендаций для разработчиков по улучшению и оптимизации исходного кода с точки зрения его безопасности.

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

Shaman007 ★★★★★ ()
Ответ на: комментарий от nanoolinux

безопасность в 8? у них в MSE только сигнатурный поиск, ни эвристиков (хотя я вообще начинаю сомневаться, что они существуют), ни эмулятора песочницы, ммм для веба есть фильтр SmartScreen, который раньше только в IE был, а теперь прикручен к браундмаузеру виндовз...неинтересно

blahq ()
Ответ на: комментарий от Shaman007

мне как раз не надо код, мне нужны примеры из опыта разработчиков, допустим, они писали софтину, сканили ее через вирусскан, и какие-то антивирусы ругались на совершенно безобидные экзешники, может быть они сами считали контрольную сумму заголовка итд итп и дизассемблировали (ну а вдруг и это умеют), и понимали что именно в неоткомпиленном коде зацепило антивирус.

blahq ()
Ответ на: комментарий от Shaman007

Автор топика ставит неправильные вопросы.

А что ты ожидал от женщины.

tazhate ★★★★★ ()

тему менять уже поздно. но, инфы достаточно, особенно всякой воды, например, вот что микрософт (да, я знаю что это ЛОР) пишут об инспекции кода:

При проверке кода может быть предоставлен не только список проблем безопасности, но и дополнительная полезная информация. По возможности специалисты по проверке также должны указать объем проверенного кода, уровень знания определенных областей кода и общие рекомендации по очистке и переработке кода. Проверка кода также предоставляет уникальные возможности для обогащения организационных знаний, повышения осведомленности о безопасности и улучшения эффективности средств безопасности. И последнее, но определенно не менее важное, группы разработчиков могут использовать результаты проверки кода для приоритезации будущих действий по обеспечению безопасности продуктов.
Мы гарантируем, что система безопасности любого программного обеспечения имеет уязвимости, хотя природа и практические последствия этих уязвимостей со временем изменяются. Автоматизированные средства безопасности могут обнаруживать все большее число ошибок кода, но некоторые уязвимые места все равно будут пропущены (не обнаружены или скрыты за большим количеством положительных результатов). Анализ исходного кода вручную не может заменить эти проверенные инструменты, но часто может быть успешно интегрирован с ними.
Проверка кода вручную является дорогостоящей, трудной и сильно зависит от опыта и работы участников. Однако во многих случаях такая проверка необходима для обеспечения приемлемого уровня осведомленности о безопасности продукта или его критических компонентах. Опытный специалист по проверке по-прежнему может обнаружить ошибки, пропущенные автоматизированными средствами. До тех пор, пока человек является причиной проблем безопасности, он также должен быть частью решения.

blahq ()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.