Помогите определить в какую сторону двигатся?
#1
Отправлено 26 января 2007 - 16:48
Есть тема: "Тестирование програмного обеспечения. Выявления программных закладок."
У меня за полгода наработался некий материал. Я определил что такое программная закладка. Какие типи программных закладок существуют.
Также начал двигаться в сторону нахождения backdoors.
Также написал программу в которой присутствует такая закладка.
Теперь хотелось бы свести это в единое целое.
Какие тонкости я забыл или не учел. С чего бы вы как проффесиональные тестировщики начинали бы тестировать программу?
Может посоветуете ещё книги (желательно со ссылками на скачивание)
или статьи.
Буду вам очень благодарен.
#2
Отправлено 27 января 2007 - 00:50
#3
Отправлено 27 января 2007 - 16:56
Второе относится к теме.
программные закладки
Система предназначена для исключения несанкционированных модификаций (как случайных, так и злоумышленных) конфигурации технических средств ПЭВМ (РС), программной среды, обрабатываемой информации, обеспечивая при этом защиту ПЭВМ (РС) от внедрения ***программных закладок*** и вирусов.
Программные закладки – вредоносные программы, не имеющие механизма размножения, срабатывающие после определенного события, вызванного пользователем и (или) операционной системой (приложением), и наносящие при этом ущерб системным и (или) пользовательским ресурсам.
-----------------------------------------------------------------------------------------------
Щас мои наработки состоят в том чтобы определять дырки в програмном обеспечении так называемые backdoors оставленные программистами нарочно.
Также могу сказать что основная работа происходит как тестирование "черного ящика". Мы не знаем структуру самой программы.
Есть мысли которые касаются тестового покрытия и тестировани ветвлений.
Сообщение отредактировал Akeem: 28 января 2007 - 13:30
#4
Отправлено 29 января 2007 - 09:56
#5
Отправлено 29 января 2007 - 11:10
Есть у меня серьезное подозрение, что выявить закладку методом черного ящика невозможно. Обычно, подобные вещи ищутся анализом кода. Очень неплохим подспорьем будут модульный тесты функциональнеости, желательно верхнего уровня. После прогона всего набора тестов поле поиска можно "несколько" сузить.
--
Сергей Мартыненко
Блог 255 ступеней (байки для оруженосца)
facebook (Дети диаграммы Ганта)
ВебПосиделки клуба имени Френсиса Бэкона
#6
Отправлено 29 января 2007 - 11:28
Давайте рассмотрим пример.
Разработчик, программировавший механизм парольного входа в программу, заложил возможность войти без проверки прав доступа при вводе слова "КОЗЕЛ" в качестве секретного. После входа в систему с данным паролем, пользователю предоставляется наивысший приоритет по чтению, копированию и редактированию всех данных.
Как можно выявить это методом "черного ящика"?
Никак!
Существует только один способ выявления закладок - ревью кода. Его можно делать ручками, а можно - программным способом. Первый медленный, но надежный (зависит от квалификации и навыков контролера). Второй быстрый, но выдает большой процент ложных срабатываний, так как настроить алгоритм поиска того, не знаю чего очень сложно.
Пример автоматизированного поиска закладки (самый простой вариант - не злобный).
В процессе отладки, программист записывал логи на свою машину и забыл изменить настройку при создании финальной версии продукта. В таком виде программа была установлена заказчику. В результате прога периодически пытается найти (в сети или в Инете) компьютер разработчика и скинуть туда лог (прямо как дитя ). Так сказать, несанкционированный трафик.
Метод выявления закладки - перед компиляцией финальной версии проводить поиск по ключевым словам (например, названия машин и серверов, участвующих в разработке, имена и фамилии разработчиков, а так же их родственников и любимых животных, какие-то ключевые слова и т.п.).
#7
Отправлено 29 января 2007 - 13:53
#8
Отправлено 29 января 2007 - 13:56
Да и вообще на сайте "Открытые системы" были статьи по верификации и аттестации ПО. Посмотрите, может поможет.
#9
Отправлено 29 января 2007 - 19:08
Вопрос: А можно придумать такой тест совмещающий в себе как элементы black box так и элементы white box?
Например: если программная закладка зарыта в какой нибуть ДЛЛ или любой другой динамически подключаемой библиотеке. Можно ведь отследить такие библиотеки и когда они подключаются?
#10
Отправлено 30 января 2007 - 09:48
Не думаю.Вопрос: А можно придумать такой тест совмещающий в себе как элементы black box так и элементы white box?
И?Например: если программная закладка зарыта в какой нибуть ДЛЛ или любой другой динамически подключаемой библиотеке. Можно ведь отследить такие библиотеки и когда они подключаются?
1. Определение того, какая длл в какой момент подключается никак не помогает. Особенно если у вас нет экспертного предположения о точке входа.
2. Знание длл это уже не черный ящик. Черный ящик - вы не знаете ничего. Даже того, какая это операционка.
--
Сергей Мартыненко
Блог 255 ступеней (байки для оруженосца)
facebook (Дети диаграммы Ганта)
ВебПосиделки клуба имени Френсиса Бэкона
#11
Отправлено 30 января 2007 - 09:54
Предположим, мы ищем только закладки.С чего бы вы как проффесиональные тестировщики начинали бы тестировать программу?
Первый вопрос: "Где я могу найти спецификацию тестов?"
Второй: "Где взять модульные тесты, написанные по этой спецификации?"
Если чего то из этого не хватает - лопатьте код. Все.
--
Сергей Мартыненко
Блог 255 ступеней (байки для оруженосца)
facebook (Дети диаграммы Ганта)
ВебПосиделки клуба имени Френсиса Бэкона
#12
Отправлено 30 января 2007 - 10:46
В случае же поиска закладок мы изначально не ведаем, как поведет себя система, и какие усилия для этого надо приложить.
Как пример можно привести программу "hello world" в которую будет добавлена строка типа: "если сегодня 25 марта 2007 года, <что-то сделать>". В этом случае, такую закладку "black box" тестированием не обнаружить.
Остается только анализ кода.
#13
Отправлено 30 января 2007 - 18:31
Но в тоже время анализ кода не разумное решение. Тут уже говорилось про операционки с 47 млн. строк кода. Вы сможете проверить столько кода за разумное время? Думаю это не реально.
Я вижу некий огонек:
Мы берем программу и отслеживаем в ней все подключаемые библиотеки. Потом мы можем проверить каждую библиотеку по отдельности. Думаю это можно сделать. утверждать не буду, я не эксперт в тестировании.
И если библиотека вызывает подозрение просить предоставить код этой библиотеки. При этом нам не придется проверять все N млн\тис. строк кода. Достаточно проверить только один модуль.
На счет точек входа: мы ведь можем попросить программиста эти точки указать. Или не можем?
Вот на эти два вопроса нужно и ответить. Придумать такое решение чтобы процедура была эффективной.Первый вопрос: "Где я могу найти спецификацию тестов?"
Второй: "Где взять модульные тесты, написанные по этой спецификации?"
Правда можно попытаться разработать такие тесты которые соответствуют спецификации продукта.
А ты уверен что эта программа попадает в определение что приводилось ранее? Те что закладку в программе можно назвать программной закладкой?Как пример можно привести программу "hello world" в которую будет добавлена строка типа: "если сегодня 25 марта 2007 года, <что-то сделать>". В этом случае, такую закладку "black box" тестированием не обнаружить.
Это нереальная задача при современном развитии ИТ.лопатьте код
#15
Отправлено 31 января 2007 - 08:03
Следовательно, закладка в программе (типа той что я привел в своем примере), превращает программу в программную закладку по Вашему определению (т.е. становится вредоносной программой, которая по опред. событию (в примере дате) наносит ущерб (удаляет папку)). Так что мой пример вполне адекватенПрограммные закладки – вредоносные программы, не имеющие механизма размножения, срабатывающие после определенного события, вызванного пользователем и (или) операционной системой (приложением), и наносящие при этом ущерб системным и (или) пользовательским ресурсам.
А если вредоносный код, делающий программу "программной закладкой", находится не в подключаемой библиотеке, а в самой программе?Я вижу некий огонек:
Мы берем программу и отслеживаем в ней все подключаемые библиотеки. Потом мы можем проверить каждую библиотеку по отдельности. Думаю это можно сделать. утверждать не буду, я не эксперт в тестировании.
И если библиотека вызывает подозрение просить предоставить код этой библиотеки. При этом нам не придется проверять все N млн\тис. строк кода. Достаточно проверить только один модуль.
#16
Отправлено 31 января 2007 - 10:06
Программные закладки – вредоносные программы, не имеющие механизма размножения, срабатывающие после определенного события, вызванного пользователем и (или) операционной системой (приложением), и наносящие при этом ущерб системным и (или) пользовательским ресурсам.
Кстати, определение не вполне корректно. Программная закладка может и не быть вредоносной (с точки зрения кода), т.е. она может не наносить ущерб системе или пользовательским ресурсам.
К примеру, если пользуясь программной закладкой программист получил незаслуженные преференции и смог прочитать то, что ему не преднозначалось, то он не нанес никакого ущерба ни системным, ни пользовательским ресурсам. Но конфиденциальность информации нарушена и здесь нужно говорить о нарушениях другого рода, нежели ущерб ресурсам.
Так что приведенное определение не отражает всей сути проблемы.
#17
Отправлено 03 февраля 2007 - 16:28
А почему бы и нет. А потом сказать Project Manager"у!Ага, заодно можно попросить указать и на закладки.
Ну тогда скорее всего обращать внимание на тестовое покрытие кода. Так вероятнее всего можно попробывать определить програмную закладку.А если вредоносный код, делающий программу "программной закладкой", находится не в подключаемой библиотеке, а в самой программе?
Или можно пробывать тестирование ветвлений. проходить все ветви проргаммы.
Хотя такого полностью сделать нельзя.
А можно привести более корректное определение 2програмной закладки".Кстати, определение не вполне корректно. Программная закладка может и не быть вредоносной (с точки зрения кода), т.е. она может не наносить ущерб системе или пользовательским ресурсам.
То что я навел я нашел в инете. Все остальное выкидает на определение spyware.
================================
Кстате. Есть пример того что компания оставляла в проргамме некий доступ к администрированию. А потом по этой лазейке удалённо настраивала эту проргамму. в пользовательськой документации об этой возможности небыло ни слова. Другими словами конечным пользовательям не сказали что проргамма может администрироватся удалённо.
В определение проргаммной закладки также может входить понятие недокументированой функции. Хотя при разработке часто получается что некоторые фукнции тех-писатель не успевает документировать. Те здесь также тонкое место. Считать недокументированые функции проргамными закладками или не считать?
#19
Отправлено 05 февраля 2007 - 11:28
Я правильно определил тематику? Это в том случае что тестирование и QA рассматривается как не одно и тоже.
Количество пользователей, читающих эту тему: 0
0 пользователей, 0 гостей, 0 анонимных