Форум программистов, компьютерный форум CyberForum.ru
Наши страницы

С++ для начинающих

Войти
Регистрация
Восстановить пароль
 
 
Рейтинг: Рейтинг темы: голосов - 30, средняя оценка - 4.77
.::.DIMA.::.
143 / 143 / 4
Регистрация: 26.10.2008
Сообщений: 782
#1

Поиск недекларированных возможностей - C++

15.07.2011, 14:31. Просмотров 4003. Ответов 22
Метки нет (Все метки)

Например, есть исходный код какой-либо программы, написанной на C++. Нужно определить, что программа не делает каких-нибудь действий, не описанных в документации, например, не отсылает пароли куда-нибудь или что-нибудь другое.

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

Делается это или статически: когда анализируется исходный код программы, или динамически: когда программа выполняется, а её действия контролируются.

Есть ли какие-нибудь проекты, выполняющие такой поиск (жедательно с открытым исходным кодом)?
0
Лучшие ответы (1)
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
15.07.2011, 14:31
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Поиск недекларированных возможностей (C++):

Алгоритмы анализа программных кодов на выявление недекларированных возможностей - C++
Помогите пожалуйсто. Необходим материал (литература, ссылки на исходные тексты анализаторов кодов) по алгоритмам анализа программных кодов...

Книга с описанием возможностей С++1х и/или boost - C++
Есть ли брошюрный сборник с описаниями последних стандартов? Может, случилось так, что про boost даже выпустили книжку-документацию? Если...

Десять возможностей C++11, которые должен использовать каждый C++ разработчик - C++
Обсуждаем статью: http://habrahabr.ru/post/182920/ Надо же этот раздел немного оживить :) Я, естественно, не участвую. ^_^

Класс "Вектор", меню для демонстрации его возможностей - C++
Ребят, помоги разобраться с переменными, не могу сообразить. Там в классе конструктор со встроенными параметрами для 1-го вектора... и 2-ой...

Классы возможностей(Mixin классы) - C++
Не могу понять смысла использования mixin классов( это класс в котором есть только методы и нет членов-данных) Т.е. к примеру у нас...

Исследование ПО на отсутствие недекларированных возможностей - Разработка ПО
Подскажите, какие фирмы занимаются исследованием ПО на наличие недекларированных возможностей. Желательно в Омске, но можно и в...

Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
easybudda
Модератор
Эксперт CЭксперт С++
9625 / 5573 / 947
Регистрация: 25.07.2009
Сообщений: 10,708
15.07.2011, 14:57 #2
Цитата Сообщение от .::.DIMA.::. Посмотреть сообщение
Нужно определить, что программа не делает каких-нибудь действий, не описанных в документации...
...Поиск таких возможностей нужно автоматизировать
Это какой-то параноидальный AI получится
В качестве полу-автомата
Код
grep имя_нежелательной_функции исходный_код.срр
0
.::.DIMA.::.
143 / 143 / 4
Регистрация: 26.10.2008
Сообщений: 782
15.07.2011, 15:25  [ТС] #3
Это немного не то. grep выполнит поиск функций с заданным именем, но что эти функции делают неизвестно.
0
co6ak
Кошковед
407 / 500 / 29
Регистрация: 12.04.2010
Сообщений: 1,392
15.07.2011, 15:27 #4
а как вобще ты представляешь работу такой софтины?
типо задаешь критерии "текстовый редактор" и он ищет, присутствует ли в нем редактор изображений, шифратор пароля и взаимодействие в БД?
0
.::.DIMA.::.
143 / 143 / 4
Регистрация: 26.10.2008
Сообщений: 782
15.07.2011, 15:45  [ТС] #5
Нет, например, построение графа функциональной программы.
0
mimicria
return (true);
1957 / 1094 / 91
Регистрация: 19.04.2011
Сообщений: 2,345
15.07.2011, 16:28 #6
Цитата Сообщение от .::.DIMA.::. Посмотреть сообщение
Нет, например, построение графа функциональной программы.
Для анализа ПО на НДВ есть куча специализированных инструментов, надо лишь выбрать нужные, например по этапам:
1) Фиксация - md5/фикс
2) Парсеры - SourceNavigator/АИСТ/Columbus Can/Understand
3) Поиск синтаксически опасных конструкций - FlawFinder
4) Профилировка и тест покрытия - cgprof/covtool/gcc
5) Графопостроители - Shrimp/Rigi/dot/WinGraph

Добавлено через 12 минут
Вот еще хорошая статейка, там сводная табличка есть с программными средствами
2
Deviaphan
Делаю внезапно и красиво
Эксперт C++
1287 / 1221 / 50
Регистрация: 22.03.2011
Сообщений: 3,744
15.07.2011, 16:31 #7
Анализируешь все пакеты, передаваемые программой. Ставишь хуки на системные вызовы.
А вообще, никакой AI пока не даст 100% ответа о безопасности приложения. Антивирусы тому подтверждение.
0
mimicria
return (true);
1957 / 1094 / 91
Регистрация: 19.04.2011
Сообщений: 2,345
15.07.2011, 16:40 #8
Собственно, подведу итог всему вышесказанному: никакая автоматизация не заменит ручного просмотра кода с полным пониманием того, что он делает. И потом проверкой на динамике в отладчике.
0
fasked
Эксперт С++
4936 / 2516 / 180
Регистрация: 07.10.2009
Сообщений: 4,311
Записей в блоге: 1
15.07.2011, 16:51 #9
Лучший ответ Сообщение было отмечено автором темы, экспертом или модератором как ответ
Цитата Сообщение от easybudda Посмотреть сообщение
Это какой-то параноидальный AI получится
Между тем российские органы предъявляют следующие требования к содержанию испытаний:

Статический анализ исходных текстов программ
  • Контроль полноты и отсутствия избыточности исходных текстов
  • Контроль соответствия исходных текстов ПО его объектному (загрузочному) коду
  • Контроль связей функциональных объектов по управлению
  • Контроль связей функциональных объектов по информации
  • Контроль информационных объектов
  • Контроль наличия заданных конструкций в исходных текстах
  • Формирование перечня маршрутов выполнения функциональных объектов
  • Анализ критических маршрутов выполнения функциональных объектов
  • Анализ алгоритма работы функциональных объектов на основе блок-схем, диаграмм и т. п., построенных по исходным текстам контролируемого ПО

Динамический анализ исходных текстов программ
  • Контроль выполнения функциональных объектов
  • Сопоставление фактических маршрутов выполнения функциональных объектов и маршрутов, построенных в процессе проведения статического анализа

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

Из всего этого в автоматизированном режиме я могу представить только построение блок-схем.
3
Deviaphan
Делаю внезапно и красиво
Эксперт C++
1287 / 1221 / 50
Регистрация: 22.03.2011
Сообщений: 3,744
15.07.2011, 16:56 #10
Цитата Сообщение от fasked Посмотреть сообщение
Контроль полноты и отсутствия избыточности исходных текстов
Интересно, как это возможно?
Индийский код не пройдёт.)))
0
mimicria
return (true);
1957 / 1094 / 91
Регистрация: 19.04.2011
Сообщений: 2,345
15.07.2011, 17:01 #11
Цитата Сообщение от Deviaphan Посмотреть сообщение
Интересно, как это возможно?
Индийский код не пройдёт.)))
Полнота и отсутствие избыточности на самом деле проверяются очень просто.
Если исходный проект компилируется и работает - он полон.
А анализаторы типа Understand выдают список неспользуемых функций - если он пуст - избыточности нет.
0
Deviaphan
Делаю внезапно и красиво
Эксперт C++
1287 / 1221 / 50
Регистрация: 22.03.2011
Сообщений: 3,744
15.07.2011, 17:04 #12
Цитата Сообщение от mimicria Посмотреть сообщение
Если исходный проект компилируется и работает - он полон.
Т.е. это понятие "избыточности" и "полноты" только для органов.)
0
.::.DIMA.::.
143 / 143 / 4
Регистрация: 26.10.2008
Сообщений: 782
15.07.2011, 17:11  [ТС] #13
Цитата Сообщение от Deviaphan Посмотреть сообщение
Анализируешь все пакеты, передаваемые программой. Ставишь хуки на системные вызовы.
А вообще, никакой AI пока не даст 100% ответа о безопасности приложения. Антивирусы тому подтверждение.
Системные вызовы допустимы, и другие действия тоже допустимы, если они, конечно же делают то, что должны делать. Блокировка опасных действий - это уже другой разговор.

Цитата Сообщение от mimicria Посмотреть сообщение
Собственно, подведу итог всему вышесказанному: никакая автоматизация не заменит ручного просмотра кода с полным пониманием того, что он делает. И потом проверкой на динамике в отладчике.
Ну это понятно. Но код может быть очень дольшим. А автоматический анализ может явно предупредить о том, что в программе есть подозрительные действия.
0
mimicria
return (true);
1957 / 1094 / 91
Регистрация: 19.04.2011
Сообщений: 2,345
15.07.2011, 17:15 #14
Цитата Сообщение от .::.DIMA.::. Посмотреть сообщение
А автоматический анализ может явно предупредить о том, что в программе есть подозрительные действия.
Автоматический анализ должен знать, что для программы является подозрительными действиями. Как вы ему об этом сообщите?
0
Deviaphan
Делаю внезапно и красиво
Эксперт C++
1287 / 1221 / 50
Регистрация: 22.03.2011
Сообщений: 3,744
15.07.2011, 17:17 #15
Цитата Сообщение от .::.DIMA.::. Посмотреть сообщение
Блокировка опасных действий - это уже другой разговор
Я не сказал блокирование. Я сказал - перехват и анализ.
Отличить зашифрованный пароль от зашифрованного матерного стишка не возможно.
Выводы делай сам.)
0
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
15.07.2011, 17:17
Привет! Вот еще темы с ответами:

Оценка возможностей - Python
Доброго время суток, у меня такой вопрос. у меня тема дипломной работы создание соц сети, и дали ссылку на джанго, кто нибудь может сказать...

Расширение возможностей QlineEdit - C++ Qt
Не знал как правильно назвать тему, да и возможно то что я хочу провернуть делается даже не с QLineEdit. В общем к делу :) к Как то в...

Автокомплит для возможностей C++11 - C++ Qt
Как сделать, чтоб QtCreator поддерживал автокомплит для возможностей C++11 и старше, например std::unordered_set он "не видит".

Клиенты специальных возможностей - Visual C++
Как я понимаю клиенты спец возможностей для объектов- это всякие менеджеры отрисовки, поиска и тп, а не подскажите как называются эти...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
Yandex
Объявления
15.07.2011, 17:17
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru