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

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

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

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

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

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

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

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

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

Классы возможностей(Mixin классы) C++
C++ Поиск. Последовательный поиск
C++ Поиск. Бинарный поиск
C++ Алгоритмы анализа программных кодов на выявление недекларированных возможностей
Поиск циклов в графе. Поиск центра взвешенного графа C++
C++ Поиск символа не могу переделать под поиск сочетания символов
Поиск пикселя и поиск изображения на экране C++
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
easybudda
Эксперт С++
9440 / 5463 / 925
Регистрация: 25.07.2009
Сообщений: 10,485
15.07.2011, 14:57     Поиск недекларированных возможностей #2
Цитата Сообщение от .::.DIMA.::. Посмотреть сообщение
Нужно определить, что программа не делает каких-нибудь действий, не описанных в документации...
...Поиск таких возможностей нужно автоматизировать
Это какой-то параноидальный AI получится
В качестве полу-автомата
Код
grep имя_нежелательной_функции исходный_код.срр
.::.DIMA.::.
143 / 143 / 4
Регистрация: 26.10.2008
Сообщений: 782
15.07.2011, 15:25  [ТС]     Поиск недекларированных возможностей #3
Это немного не то. grep выполнит поиск функций с заданным именем, но что эти функции делают неизвестно.
co6ak
Кошковед
407 / 500 / 29
Регистрация: 12.04.2010
Сообщений: 1,392
15.07.2011, 15:27     Поиск недекларированных возможностей #4
а как вобще ты представляешь работу такой софтины?
типо задаешь критерии "текстовый редактор" и он ищет, присутствует ли в нем редактор изображений, шифратор пароля и взаимодействие в БД?
.::.DIMA.::.
143 / 143 / 4
Регистрация: 26.10.2008
Сообщений: 782
15.07.2011, 15:45  [ТС]     Поиск недекларированных возможностей #5
Нет, например, построение графа функциональной программы.
mimicria
return (true);
1956 / 1093 / 91
Регистрация: 19.04.2011
Сообщений: 2,344
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 минут
Вот еще хорошая статейка, там сводная табличка есть с программными средствами
Deviaphan
Делаю внезапно и красиво
Эксперт C++
1286 / 1220 / 50
Регистрация: 22.03.2011
Сообщений: 3,744
15.07.2011, 16:31     Поиск недекларированных возможностей #7
Анализируешь все пакеты, передаваемые программой. Ставишь хуки на системные вызовы.
А вообще, никакой AI пока не даст 100% ответа о безопасности приложения. Антивирусы тому подтверждение.
mimicria
return (true);
1956 / 1093 / 91
Регистрация: 19.04.2011
Сообщений: 2,344
15.07.2011, 16:40     Поиск недекларированных возможностей #8
Собственно, подведу итог всему вышесказанному: никакая автоматизация не заменит ручного просмотра кода с полным пониманием того, что он делает. И потом проверкой на динамике в отладчике.
fasked
Эксперт С++
4933 / 2513 / 180
Регистрация: 07.10.2009
Сообщений: 4,311
Записей в блоге: 1
15.07.2011, 16:51     Поиск недекларированных возможностей #9
Сообщение было отмечено автором темы, экспертом или модератором как ответ
Цитата Сообщение от easybudda Посмотреть сообщение
Это какой-то параноидальный AI получится
Между тем российские органы предъявляют следующие требования к содержанию испытаний:

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

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

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

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

Цитата Сообщение от mimicria Посмотреть сообщение
Собственно, подведу итог всему вышесказанному: никакая автоматизация не заменит ручного просмотра кода с полным пониманием того, что он делает. И потом проверкой на динамике в отладчике.
Ну это понятно. Но код может быть очень дольшим. А автоматический анализ может явно предупредить о том, что в программе есть подозрительные действия.
mimicria
return (true);
1956 / 1093 / 91
Регистрация: 19.04.2011
Сообщений: 2,344
15.07.2011, 17:15     Поиск недекларированных возможностей #14
Цитата Сообщение от .::.DIMA.::. Посмотреть сообщение
А автоматический анализ может явно предупредить о том, что в программе есть подозрительные действия.
Автоматический анализ должен знать, что для программы является подозрительными действиями. Как вы ему об этом сообщите?
Deviaphan
Делаю внезапно и красиво
Эксперт C++
1286 / 1220 / 50
Регистрация: 22.03.2011
Сообщений: 3,744
15.07.2011, 17:17     Поиск недекларированных возможностей #15
Цитата Сообщение от .::.DIMA.::. Посмотреть сообщение
Блокировка опасных действий - это уже другой разговор
Я не сказал блокирование. Я сказал - перехват и анализ.
Отличить зашифрованный пароль от зашифрованного матерного стишка не возможно.
Выводы делай сам.)
.::.DIMA.::.
143 / 143 / 4
Регистрация: 26.10.2008
Сообщений: 782
15.07.2011, 17:44  [ТС]     Поиск недекларированных возможностей #16
Цитата Сообщение от mimicria Посмотреть сообщение
Автоматический анализ должен знать, что для программы является подозрительными действиями. Как вы ему об этом сообщите?
Это ещё один вопрос. Пока я ищу программное обеспечение (по возможности с открытым исходным котод), которое может найти неделарированные возможности.

Цитата Сообщение от Deviaphan Посмотреть сообщение
Я не сказал блокирование. Я сказал - перехват и анализ.
Отличить зашифрованный пароль от зашифрованного матерного стишка не возможно.
Выводы делай сам.)
Блокировка - частный случай перехвата и анализа =)
fasked
Эксперт С++
4933 / 2513 / 180
Регистрация: 07.10.2009
Сообщений: 4,311
Записей в блоге: 1
17.07.2011, 13:17     Поиск недекларированных возможностей #17
Цитата Сообщение от mimicria Посмотреть сообщение
Если исходный проект компилируется и работает - он полон.
Я бы сказал, если в исходном коде присутствуют такие функции/методы, которые выполняют предъявленный в техническом задании функционал в полном объеме.
Если есть функции/методы, которые выполняют какие-либо другие действия (кроме тех, что обозначены в ТЗ), то код признается избыточным.

Цитата Сообщение от Deviaphan Посмотреть сообщение
Т.е. это понятие "избыточности" и "полноты" только для органов.
Ну это с какой стороны посмотреть. Если избыточность или полнота волнует заказчика, то почему бы и нет. У органов в этом случае просто несколько иные цели.
ValeryLaptev
Эксперт С++
1035 / 814 / 48
Регистрация: 30.04.2011
Сообщений: 1,658
17.07.2011, 13:26     Поиск недекларированных возможностей #18
Цитата Сообщение от .::.DIMA.::. Посмотреть сообщение
Например, есть исходный код какой-либо программы, написанной на C++. ...
Есть ли какие-нибудь проекты, выполняющие такой поиск (жедательно с открытым исходным кодом)?
Поищи материалы Андрея Карпова про теме Статистический анализ кода. Они ищут на предмет тонких ошибок. Возможно, их идеи и методы тебе тоже сгодятся. Хотя бы частично.
Для начала - вот: http://lib.custis.ru/%D0%A1%D1%82%D0...0%B2,_ADD-2011)
Еще по тегу PVS-studio поищи: http://www.viva64.com/ru/a/0007/
fasked
Эксперт С++
4933 / 2513 / 180
Регистрация: 07.10.2009
Сообщений: 4,311
Записей в блоге: 1
17.07.2011, 13:33     Поиск недекларированных возможностей #19
ValeryLaptev, НДВ это не ошибки программиста. И статистический анализ тоже не поможет в их поиске.
Недекларированные возможности - функциональные возможности ПО, не описанные или не соответствующие описанным в документации, при использовании которых возможно нарушение конфиденциальности, доступности или целостности обрабатываемой информации.
Реализацией недекларированных возможностей, в частности, являются программные закладки.
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
17.07.2011, 13:49     Поиск недекларированных возможностей
Еще ссылки по теме:

C++ Класс "Вектор", меню для демонстрации его возможностей
Поиск числа в двумерном массиве (бинарный поиск) C++
Книга с описанием возможностей С++1х и/или boost C++
Реализовать поиск заданного файла в древе каталогов и поиск указанной информации в этом файле C++

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

Или воспользуйтесь поиском по форуму:
ValeryLaptev
Эксперт С++
1035 / 814 / 48
Регистрация: 30.04.2011
Сообщений: 1,658
17.07.2011, 13:49     Поиск недекларированных возможностей #20
fasked, а я и не говорю, что ошибки. Но чтобы что-то искать, надо сначала определиться, что именно. Карпов со-товарищи сначала анализировали тонны кода на предмет ТОНКИХ ошибок. Нетривиальных, которые не видны сразу. Вот такой же анализ кода, только для своих нужд, нужно и вам проделать.
А почитать Карпова со-товарищи просто полезно и помимо всего прочего...
Yandex
Объявления
17.07.2011, 13:49     Поиск недекларированных возможностей
Ответ Создать тему
Опции темы

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