Главная страница
Навигация по странице:

  • Ордена Трудового Красного Знамени федеральное государственное бюджетное образовательное учреждение высшего образования

  • Цель работы Изучить основные принципы обнаружения уязвимостей «нулевого дня» в программном обеспечении.Теоретическая часть

  • Лар. Горинова М. лр4. Обнаружение уязвимостей в программном обеспечении


    Скачать 144.53 Kb.
    НазваниеОбнаружение уязвимостей в программном обеспечении
    Дата12.12.2022
    Размер144.53 Kb.
    Формат файлаdocx
    Имя файлаГоринова М. лр4.docx
    ТипЛабораторная работа
    #840495

    Министерство цифрового развития, связи и массовых коммуникаций

    Российской Федерации

    Ордена Трудового Красного Знамени федеральное государственное бюджетное

    образовательное учреждение высшего образования

    «Московский технический университет связи и информатики»

    _____________________________________________________________

    Кафедра Информационной безопасности

    ЛАБОРАТОРНАЯ РАБОТА №4

    по дисциплине

    МЕТОДЫ И СРЕДСТВА ЗАЩИТЫ ИНФОРМАЦИИ В КОМПЬЮТЕРНЫХ СЕТЯХ

    на тему:

    «Обнаружение уязвимостей в программном обеспечении»

    Выполнил: ст. гр. БПЗ1901 Вяткин М.А.

    Проверил: Раковский Д.И.
    Москва, 2022

    Цель работы

    Изучить основные принципы обнаружения уязвимостей «нулевого дня» в программном обеспечении.

    Теоретическая часть

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

    Ход работы

    Исходные данные для разработки прототипа программы.

    Таблица 1 – Исходные данные

    Вариант

    Тема

    3

    Игра «Крестики-нолики»

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

    Листинг 1. Код программы

    board = list(range(1,10))

    def draw_board(board):
    print ("-" * 13)
    for i in range(3):
    print ("|", board[0+i*3], "|", board[1+i*3], "|", board[2+i*3], "|")
    print ("-" * 13)

    def take_input(player_token):
    valid = False
    while not valid:
    player_answer = input("Куда поставим " + player_token+"? ")
    try:
    player_answer = int(player_answer)
    except:
    print ("Некорректный ввод. Вы уверены, что ввели число?")
    continue
    if player_answer >= 1 and player_answer <= 9:
    if (str(board[player_answer-1]) not in "XO"):
    board[player_answer-1] = player_token
    valid = True
    else:
    print ("Эта клеточка уже занята")
    # else:
    # print ("
    Некорректныйввод. Введитечислоот 1 до 9 чтобыпоходить.")

    def check_win(board):
    win_coord = ((0,1,2),(3,4,5),(6,7,8),(0,3,6),(1,4,7),(2,5,8),(0,4,8),(2,4,6))
    for each in win_coord:
    if board[each[0]] == board[each[1]] == board[each[2]]:
    return board[each[0]]
    return False

    def main(board):
    counter = 0
    win = False
    while not win:
    draw_board(board)
    if counter % 2 == 0:
    take_input("X")
    else:
    take_input("O")
    counter += 1
    if counter > 4:
    tmp = check_win(board)
    if tmp:
    print (tmp, "выиграл!")
    win = True
    break
    if counter == 9:
    print ("Ничья!")
    break
    draw_board(board)

    main(board)


    Для проверки программы одним из методов обнаружения уязвимостей нулевого дня является напишем фаззинг.

    Листинг 2. Код функции фаззинга

    import random as rand
    import sys
    def mainfazz():
    while True:
    a = rand.randint(-200, 200)
    b = rand.randint(-200, 200)
    c = rand.randint(-200, 200)
    print(a,b,c)
    main(a,b,c)
    if __name__ == "__mainfazz__":
    main()


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



    Рисунок 4. Результат работы программы



    Рисунок 5. Исключение

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

    Вывод

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


    написать администратору сайта