Перейти к содержимому

Фотография

Помогите определить в какую сторону двигатся?


  • Авторизуйтесь для ответа в теме
Сообщений в теме: 18

#1 Akeem

Akeem

    Новый участник

  • Members
  • Pip
  • 51 сообщений
  • ФИО:Зозуленко Алексей Николаевич
  • Город:Kiev/Ukraine

Отправлено 26 января 2007 - 16:48

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

Есть тема: "Тестирование програмного обеспечения. Выявления программных закладок."


У меня за полгода наработался некий материал. Я определил что такое программная закладка. Какие типи программных закладок существуют.

Также начал двигаться в сторону нахождения backdoors.
Также написал программу в которой присутствует такая закладка.

Теперь хотелось бы свести это в единое целое.
Какие тонкости я забыл или не учел. С чего бы вы как проффесиональные тестировщики начинали бы тестировать программу?

Может посоветуете ещё книги (желательно со ссылками на скачивание)
или статьи.

Буду вам очень благодарен.
  • 0
Главное находиться в гармонии с собой...

#2 Dmitry_NJ

Dmitry_NJ

    Консультант

  • Members
  • PipPipPipPipPipPip
  • 3 122 сообщений
  • ФИО:Дмитрий Шевченко
  • Город:New Jersey, USA

Отправлено 27 января 2007 - 00:50

Интересно стало - а что такое программная закладка? Не встречался что-то мне такой термин раньше.
  • 0
Дмитрий Шевченко

HP Software

#3 Akeem

Akeem

    Новый участник

  • Members
  • Pip
  • 51 сообщений
  • ФИО:Зозуленко Алексей Николаевич
  • Город:Kiev/Ukraine

Отправлено 27 января 2007 - 16:56

Вот некоторые определения. Первое относится к так называемым spyware.
Второе относится к теме.

программные закладки
Система предназначена для исключения несанкционированных модификаций (как случайных, так и злоумышленных) конфигурации технических средств ПЭВМ (РС), программной среды, обрабатываемой информации, обеспечивая при этом защиту ПЭВМ (РС) от внедрения ***программных закладок*** и вирусов.


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

-----------------------------------------------------------------------------------------------
Щас мои наработки состоят в том чтобы определять дырки в програмном обеспечении так называемые backdoors оставленные программистами нарочно.

Также могу сказать что основная работа происходит как тестирование "черного ящика". Мы не знаем структуру самой программы.

Есть мысли которые касаются тестового покрытия и тестировани ветвлений.

Сообщение отредактировал Akeem: 28 января 2007 - 13:30

  • 0
Главное находиться в гармонии с собой...

#4 Akeem

Akeem

    Новый участник

  • Members
  • Pip
  • 51 сообщений
  • ФИО:Зозуленко Алексей Николаевич
  • Город:Kiev/Ukraine

Отправлено 29 января 2007 - 09:56

Что никто не может помочь?
  • 0
Главное находиться в гармонии с собой...

#5 SALar

SALar

    Профессионал

  • Members
  • PipPipPipPipPipPip
  • 2 298 сообщений
  • Город:Москва


Отправлено 29 января 2007 - 11:10

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


Есть у меня серьезное подозрение, что выявить закладку методом черного ящика невозможно. Обычно, подобные вещи ищутся анализом кода. Очень неплохим подспорьем будут модульный тесты функциональнеости, желательно верхнего уровня. После прогона всего набора тестов поле поиска можно "несколько" сузить.
  • 0

-- 

Сергей Мартыненко

Блог 255 ступеней (байки для оруженосца)

facebook (Дети диаграммы Ганта)

ВебПосиделки клуба имени Френсиса Бэкона 

 


#6 Green

Green

    Профессионал

  • Members
  • PipPipPipPipPipPip
  • 1 233 сообщений
  • ФИО:Гринкевич Сергей
  • Город:Москва

Отправлено 29 января 2007 - 11:28

Вообще то, искать программные закладки методом "черного ящика" бесперспективно.

Давайте рассмотрим пример.

Разработчик, программировавший механизм парольного входа в программу, заложил возможность войти без проверки прав доступа при вводе слова "КОЗЕЛ" в качестве секретного. После входа в систему с данным паролем, пользователю предоставляется наивысший приоритет по чтению, копированию и редактированию всех данных.

Как можно выявить это методом "черного ящика"?

Никак!

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

Пример автоматизированного поиска закладки (самый простой вариант - не злобный).

В процессе отладки, программист записывал логи на свою машину и забыл изменить настройку при создании финальной версии продукта. В таком виде программа была установлена заказчику. В результате прога периодически пытается найти (в сети или в Инете) компьютер разработчика и скинуть туда лог (прямо как дитя :victory: ). Так сказать, несанкционированный трафик.

Метод выявления закладки - перед компиляцией финальной версии проводить поиск по ключевым словам (например, названия машин и серверов, участвующих в разработке, имена и фамилии разработчиков, а так же их родственников и любимых животных, какие-то ключевые слова и т.п.).
  • 0
Гринкевич Сергей

#7 rain

rain

    Активный участник

  • Members
  • PipPip
  • 87 сообщений
  • ФИО:Anna
  • Город:Amsterdam, Kiev


Отправлено 29 января 2007 - 13:53

Не знаю, насколько поможет, но близко по теме :)
Hunting Security Bugs
  • 0

#8 EJik

EJik

    Новый участник

  • Members
  • Pip
  • 16 сообщений
  • Город:Санкт-Петербург

Отправлено 29 января 2007 - 13:56

Если не ошибаюсь, то на osp.ru была статья (вроде называлась, Закон "о мертвом коде"), в которой говорилось, что поиск программных закладок относится к алгоритмически неразрешимым задачам. Там приводились имена двух ученых, которые доказали это математически. Но смысл сводится к тому, что когда мы ищем троянский конь, то мы не знаем, что искать (в отличии например поиска вирусов, когда мы ищем по известной сигнатуре).
Да и вообще на сайте "Открытые системы" были статьи по верификации и аттестации ПО. Посмотрите, может поможет.
  • 0
Евгений Лувсандугар. "Петер-Сервис"

#9 Akeem

Akeem

    Новый участник

  • Members
  • Pip
  • 51 сообщений
  • ФИО:Зозуленко Алексей Николаевич
  • Город:Kiev/Ukraine

Отправлено 29 января 2007 - 19:08

Спасибо! Вы мне очень помогли! Каждому по +1.

Вопрос: А можно придумать такой тест совмещающий в себе как элементы black box так и элементы white box?

Например: если программная закладка зарыта в какой нибуть ДЛЛ или любой другой динамически подключаемой библиотеке. Можно ведь отследить такие библиотеки и когда они подключаются?
  • 0
Главное находиться в гармонии с собой...

#10 SALar

SALar

    Профессионал

  • Members
  • PipPipPipPipPipPip
  • 2 298 сообщений
  • Город:Москва


Отправлено 30 января 2007 - 09:48

Вопрос: А можно придумать такой тест совмещающий в себе как элементы black box так и элементы white box?

Просмотр сообщения

Не думаю.

Например: если программная закладка зарыта в какой нибуть ДЛЛ или любой другой динамически подключаемой библиотеке. Можно ведь отследить такие библиотеки и когда они подключаются?

Просмотр сообщения

И?

1. Определение того, какая длл в какой момент подключается никак не помогает. Особенно если у вас нет экспертного предположения о точке входа.

2. Знание длл это уже не черный ящик. Черный ящик - вы не знаете ничего. Даже того, какая это операционка.
  • 0

-- 

Сергей Мартыненко

Блог 255 ступеней (байки для оруженосца)

facebook (Дети диаграммы Ганта)

ВебПосиделки клуба имени Френсиса Бэкона 

 


#11 SALar

SALar

    Профессионал

  • Members
  • PipPipPipPipPipPip
  • 2 298 сообщений
  • Город:Москва


Отправлено 30 января 2007 - 09:54

С чего бы вы как проффесиональные тестировщики начинали бы тестировать программу?

Просмотр сообщения

Предположим, мы ищем только закладки.

Первый вопрос: "Где я могу найти спецификацию тестов?"
Второй: "Где взять модульные тесты, написанные по этой спецификации?"

Если чего то из этого не хватает - лопатьте код. Все.
  • 0

-- 

Сергей Мартыненко

Блог 255 ступеней (байки для оруженосца)

facebook (Дети диаграммы Ганта)

ВебПосиделки клуба имени Френсиса Бэкона 

 


#12 EJik

EJik

    Новый участник

  • Members
  • Pip
  • 16 сообщений
  • Город:Санкт-Петербург

Отправлено 30 января 2007 - 10:46

Мне кажется, что поиск программных закладок методом черного ящика дело абсолютно бесперспективное. Как мне кажется (с высоты моего пока очень небольшого опыта =)))) "black box" это тестирование поведения системы, т.е. когда мы знаем как система должна себя вести при определенных воздействиях/условиях.

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

Как пример можно привести программу "hello world" в которую будет добавлена строка типа: "если сегодня 25 марта 2007 года, <что-то сделать>". В этом случае, такую закладку "black box" тестированием не обнаружить.

Остается только анализ кода.
  • 0
Евгений Лувсандугар. "Петер-Сервис"

#13 Akeem

Akeem

    Новый участник

  • Members
  • Pip
  • 51 сообщений
  • ФИО:Зозуленко Алексей Николаевич
  • Город:Kiev/Ukraine

Отправлено 30 января 2007 - 18:31

Хорошо я с вами согласен. Что метод "черного ящика" не даст никакого результата.

Но в тоже время анализ кода не разумное решение. Тут уже говорилось про операционки с 47 млн. строк кода. Вы сможете проверить столько кода за разумное время? Думаю это не реально.

Я вижу некий огонек:
Мы берем программу и отслеживаем в ней все подключаемые библиотеки. Потом мы можем проверить каждую библиотеку по отдельности. Думаю это можно сделать. утверждать не буду, я не эксперт в тестировании.
И если библиотека вызывает подозрение просить предоставить код этой библиотеки. При этом нам не придется проверять все N млн\тис. строк кода. Достаточно проверить только один модуль.

На счет точек входа: мы ведь можем попросить программиста эти точки указать. Или не можем?


Первый вопрос: "Где я могу найти спецификацию тестов?"
Второй: "Где взять модульные тесты, написанные по этой спецификации?"

Вот на эти два вопроса нужно и ответить. Придумать такое решение чтобы процедура была эффективной.

Правда можно попытаться разработать такие тесты которые соответствуют спецификации продукта.

Как пример можно привести программу "hello world" в которую будет добавлена строка типа: "если сегодня 25 марта 2007 года, <что-то сделать>". В этом случае, такую закладку "black box" тестированием не обнаружить.

А ты уверен что эта программа попадает в определение что приводилось ранее? Те что закладку в программе можно назвать программной закладкой?

лопатьте код

Это нереальная задача при современном развитии ИТ.
  • 0
Главное находиться в гармонии с собой...

#14 Clauster

Clauster

    Профессионал

  • Members
  • PipPipPipPipPipPip
  • 1 913 сообщений
  • ФИО:Худобородов Валерий
  • Город:Espoo

Отправлено 30 января 2007 - 20:37

На счет точек входа: мы ведь можем попросить программиста эти точки указать. Или не можем?

Просмотр сообщения

Ага, заодно можно попросить указать и на закладки.
  • 0

#15 EJik

EJik

    Новый участник

  • Members
  • Pip
  • 16 сообщений
  • Город:Санкт-Петербург

Отправлено 31 января 2007 - 08:03

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

Просмотр сообщения

Следовательно, закладка в программе (типа той что я привел в своем примере), превращает программу в программную закладку по Вашему определению (т.е. становится вредоносной программой, которая по опред. событию (в примере дате) наносит ущерб (удаляет папку)). Так что мой пример вполне адекватен :acute:

Я вижу некий огонек:
Мы берем программу и отслеживаем в ней все подключаемые библиотеки. Потом мы можем проверить каждую библиотеку по отдельности. Думаю это можно сделать. утверждать не буду, я не эксперт в тестировании.
И если библиотека вызывает подозрение просить предоставить код этой библиотеки. При этом нам не придется проверять все N млн\тис. строк кода. Достаточно проверить только один модуль.

А если вредоносный код, делающий программу "программной закладкой", находится не в подключаемой библиотеке, а в самой программе?
  • 0
Евгений Лувсандугар. "Петер-Сервис"

#16 Green

Green

    Профессионал

  • Members
  • PipPipPipPipPipPip
  • 1 233 сообщений
  • ФИО:Гринкевич Сергей
  • Город:Москва

Отправлено 31 января 2007 - 10:06

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

Просмотр сообщения


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

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

Так что приведенное определение не отражает всей сути проблемы.
  • 0
Гринкевич Сергей

#17 Akeem

Akeem

    Новый участник

  • Members
  • Pip
  • 51 сообщений
  • ФИО:Зозуленко Алексей Николаевич
  • Город:Kiev/Ukraine

Отправлено 03 февраля 2007 - 16:28

Ага, заодно можно попросить указать и на закладки.

А почему бы и нет. А потом сказать Project Manager"у!

А если вредоносный код, делающий программу "программной закладкой", находится не в подключаемой библиотеке, а в самой программе?

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

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

А можно привести более корректное определение 2програмной закладки".
То что я навел я нашел в инете. Все остальное выкидает на определение spyware.

================================
Кстате. Есть пример того что компания оставляла в проргамме некий доступ к администрированию. А потом по этой лазейке удалённо настраивала эту проргамму. в пользовательськой документации об этой возможности небыло ни слова. Другими словами конечным пользовательям не сказали что проргамма может администрироватся удалённо.

В определение проргаммной закладки также может входить понятие недокументированой функции. Хотя при разработке часто получается что некоторые фукнции тех-писатель не успевает документировать. Те здесь также тонкое место. Считать недокументированые функции проргамными закладками или не считать?
  • 0
Главное находиться в гармонии с собой...

#18 Clauster

Clauster

    Профессионал

  • Members
  • PipPipPipPipPipPip
  • 1 913 сообщений
  • ФИО:Худобородов Валерий
  • Город:Espoo

Отправлено 05 февраля 2007 - 06:17

Как тут уже было отмечено, единственный реальный способ обнаружения - постоянный code review и контроль изменений. Остальное дорого настолько, что становится бессмысленным.
  • 0

#19 Akeem

Akeem

    Новый участник

  • Members
  • Pip
  • 51 сообщений
  • ФИО:Зозуленко Алексей Николаевич
  • Город:Kiev/Ukraine

Отправлено 05 февраля 2007 - 11:28

Я вот немного ещё больше углубился в изучении этой темы, учитывая ваши замечания и пришел к тому что даный вопрос довольно тесно связан с QA.
Я правильно определил тематику? Это в том случае что тестирование и QA рассматривается как не одно и тоже.
  • 0
Главное находиться в гармонии с собой...


Количество пользователей, читающих эту тему: 0

0 пользователей, 0 гостей, 0 анонимных