Угроза избыточного выделения оперативной памяти
При обработке информации на уровне ПУ возможна реализация следующих УБИ:
угрозы информации, обрабатываемой в технических средствах ПУ;
угрозы НСД в ПУ связаны с действиями нарушителей, имеющих доступ к ПУ. Кроме этого, источниками угроз НСД к информации в ПУ могут быть нарушители с различным потенциалом, а также аппаратные закладки и вредоносные программы;
угрозы преднамеренного искажения системного времени в компонентах ИСУЭ.
В ПУ возможны уязвимости в микропрограммном обеспечении, уязвимости, связанные с используемыми протоколами передачи данных, уязвимости, в связи с возможностью наличия аппаратных закладок, уязвимости связанные с недостатками организации ТЗИ от НСД, уязвимости вСЗИ.
В ПУ в соответствии с используемыми технологиями, объектами воздействия, уязвимостями возможны следующие угрозы из Банка данных угроз безопасности информации ФСТЭК России:
УБИ.006: Угроза внедрения кода или данных;
УБИ.007: Угроза воздействия на программы с высокими привилегиями;
УБИ.008: Угроза восстановления и/или повторного использования аутентификационной информации;
УБИ.012: Угроза деструктивного изменения конфигурации/среды окружения программ;
УБИ.014: Угроза длительного удержания вычислительных ресурсов пользователями;
УБИ.015: Угроза доступа к защищаемым файлам с использованием обходного пути;
УБИ.019: Угроза заражения DNS-кеша;
УБИ.022: Угроза избыточного выделения оперативной памяти;
УБИ.023: Угроза изменения компонентов информационной; (автоматизированной) системы;
УБИ.025: Угроза изменения системных и глобальных переменных;
УБИ.026: Угроза искажения XML-схемы;
УБИ.027: Угроза искажения вводимой и выводимой на периферийные устройства информации;
УБИ.028: Угроза использования альтернативных путей доступа к ресурсам
УБИ.030: Угроза использования информации дентификации/аутентификации, заданной по умолчанию;
УБИ.031: Угроза использования механизмов авторизации для повышения привилегий;
УБИ.033: Угроза использования слабостей кодирования входных данных;
УБИ.034: Угроза использования слабостей протоколов сетевого/локального обмена данными;
УБИ.035: Угроза использования слабых криптографических алгоритмов BIOS;
УБИ.036: Угроза исследования механизмов работы программы;
УБИ.037: Угроза исследования приложения через отчеты об ошибках;
УБИ.049: Угроза нарушения целостности данных кеша;
УБИ.061: Угроза некорректного задания структуры данных транзакции;
УБИ.063: Угроза некорректного использования функционала программного и аппаратного обеспечения;
УБИ.069 : Угроза неправомерных действий в каналах связи;
Указанная угроза может быть нейтрализована без применения СКЗИ.
УБИ.067: Угроза неправомерного ознакомления с защищаемой информацией;
УБИ.083 : Угроза несанкционированного доступа к системе по беспроводным каналам;
Указанная угроза может быть нейтрализована без применения СКЗИ.
УБИ.086: Угроза несанкционированного изменения аутентификационной информации;
УБИ.088: Угроза несанкционированного копирования защищаемой информации;
УБИ.089: Угроза несанкционированного редактирования реестра;
УБИ.090: Угроза несанкционированного создания учетной записи пользователя;
УБИ.091: Угроза несанкционированного удаления защищаемой информации;
УБИ.092: Угроза несанкционированного удаленного внеполосного доступа к аппаратным средствам;
УБИ.093: Угроза несанкционированного управления буфером;
УБИ.094: Угроза несанкционированного управления синхронизацией и состоянием;
УБИ.095: Угроза несанкционированного управления указателями;
УБИ.098: Угроза обнаружения открытых портов и идентификации привязанных к ним сетевых служб;
УБИ.099: Угроза обнаружения хостов;
УБИ.100: Угроза обхода некорректно настроенных механизмов аутентификации;
УБИ.102: Угроза опосредованного управления группой программ через совместно используемые данные;
УБИ.103: Угроза определения типов объектов защиты;
УБИ.104: Угроза определения топологии вычислительной сети;
УБИ.107: Угроза отключения контрольных датчиков;
УБИ.109: Угроза перебора всех настроек и параметров приложения;
УБИ.111: Угроза передачи данных по скрытым каналам;
УБИ.113: Угроза перезагрузки аппаратных и программно-аппаратных средств вычислительной техники;
УБИ.114: Угроза переполнения целочисленных переменных;
УБИ.115: Угроза перехвата вводимой и выводимой на периферийные устройства информации
УБИ.116: Угроза перехвата данных, передаваемых по вычислительной сети;
УБИ.117: Угроза перехвата привилегированного потока;
УБИ.118: Угроза перехвата привилегированного процесса;
УБИ.120: Угроза перехвата управления средой виртуализации;
УБИ.121: Угроза повреждения системного реестра;
УБИ.122: Угроза повышения привилегий;
УБИ.124: Угроза подделки записей журнала регистрации событий;
УБИ.127: Угроза подмены действия пользователя путем обмана;
УБИ.128: Угроза подмены доверенного пользователя;
УБИ.130: Угроза подмены содержимого сетевых ресурсов;
УБИ.131: Угроза подмены субъекта сетевого доступа;
УБИ.132: Угроза получения предварительной информации об объекте защиты;
УБИ.139: Угроза преодоления физической защиты;
УБИ.140: Угроза приведения системы в состояние "отказ в обслуживании";
УБИ.143: Угроза программного выведения из строя средств хранения, обработки и (или) ввода/вывода/передачи информации;
УБИ.145: Угроза пропуска проверки целостности программного обеспечения;
УБИ.148: Угроза, сбоя автоматического управления системой разграничения доступа хранилища больших данных;
УБИ.149: Угроза, сбоя обработки специальным образом измененных файлов;
УБИ.152: Угроза удаления аутентификационной информации;
УБИ.153: Угроза усиления воздействия на вычислительные ресурсы пользователей при помощи сторонних серверов;
УБИ.155: Угроза утраты вычислительных ресурсов;
УБИ.156: Угроза утраты носителей информации;
УБИ.157: Угроза физического выведения из строя средств хранения, обработки и (или) ввода/вывода/передачи информации;
УБИ.160: Угроза хищения средств хранения, обработки и (или) ввода/вывода/передачи информации;
УБИ.162: Угроза эксплуатации цифровой подписи программного кода
УБИ.163: Угроза перехвата исключения/сигнала из привилегированного блока функций;
УБИ.165: Угроза включения в проект не достоверно испытанных компонентов;
УБИ.166: Угроза внедрения системной избыточности;
УБИ.169: Угроза наличия механизмов разработчика;
УБИ.170: Угроза неправомерного шифрования информации;
УБИ.171: Угроза скрытного включения вычислительного устройства в состав бот-сети;
УБИ.177: Угроза неподтвержденного ввода данных оператором в систему, связанную с безопасностью;
УБИ.178: Угроза несанкционированного использования системных и сетевых утилит;
УБИ.179: Угроза несанкционированной модификации защищаемой информации;
УБИ.180: Угроза отказа подсистемы обеспечения температурного режима;
УБИ.181: Угроза перехвата одноразовых паролей в режиме реального времени;
УБИ.182: Угроза физического устаревания аппаратных компонентов;
УБИ.183: Угроза перехвата управления автоматизированной системой управления технологическими процессами;
УБИ.185: Угроза несанкционированного изменения параметров настройки средств защиты информации;
УБИ.187: Угроза несанкционированного воздействия на средство защиты информации;
УБИ.188: Угроза подмены программного обеспечения;
УБИ.189: Угроза маскирования действий вредоносного кода;
УБИ.191: Угроза внедрения вредоносного кода в дистрибутив программного обеспечения;
УБИ.192: Угроза использования уязвимых версий программного обеспечения;
УБИ.193: Угроза утечки информации за счет применения вредоносным программным обеспечением алгоритмов шифрования трафика;
УБИ.195: Угроза удаленного запуска вредоносного кода в обход механизмов защиты операционной системы;
УБИ.198: Угроза скрытной регистрации вредоносной программой учетных записей администраторов;
УБИ.203: Угроза утечки информации с неподключенных к сети Интернет компьютеров;
УБИ.204: Угроза несанкционированного изменения вредоносной программой значений параметров программируемых логических контроллеров
УБИ.205: Угроза нарушения работы компьютера и блокирования доступа к его данным из-за некорректной работы установленных на нем средств защиты;
УБИ.208: Угроза нецелевого использования вычислительных ресурсов средства вычислительной техники;
УБИ.209: Угроза несанкционированного доступа к защищаемой памяти ядра процессора;
УБИ.210: Угроза нарушения работы информационной системы, вызванного обновлением используемого в ней программного обеспечения;
УБИ.212: Угроза перехвата управления информационной системой;
УБИ.213: Угроза обхода многофакторной аутентификации;
УБИ.214: Угроза несвоевременного выявления и реагирования компонентами информационной (автоматизированной) системы (в том числе средствами защиты информации) на события безопасности информации;
УБИ.217: Угроза использования скомпрометированного доверенного источника обновлений программного обеспечения.
Обоснование неприменимости угроз к ПУ в связи с отсутствием технологий представлено в таблице 4.
Таблица 4. Обоснование неприменимости угроз к ПУ в связи с отсутствием технологий.
Файл "2.Модель угроз" внутри архива находится в папке "Разработка профиля защиты персональных данных в информационной системе с технологией беспроводного доступа". Документ из архива "Разработка профиля защиты персональных данных в информационной системе с технологией беспроводного доступа", который расположен в категории " ". Всё это находится в предмете "дипломы и вкр" из раздела "", которые можно найти в файловом архиве ДВГУПС. Не смотря на прямую связь этого архива с ДВГУПС, его также можно найти и в других разделах. .
Онлайн просмотр документа "3. Модель угроз"
Война без конца
Пройдёт ещё немало времени до того, как будет написан качественный ИИ, способный разгрести завалы кривого кода. А пока приходится бороться с утечками памяти проверенными методами: с бубном, плетью и багрепортом. Или наращивать объёмы и не замечать этих самых утечек. Конечно, иметь на борту 16, 32 или даже 64 гига быстрой оперативки – это хорошо, и у Kingston всегда найдётся подходящее решение. Важно помнить, что кривому софту любой объём не помеха – просто с хорошим запасом оперативной памяти он дольше проработает без проблем.
Есть интересные примеры утечек памяти в системе? Пишите в комментах – всем будет интересно.
Файл "3. Модель угроз" внутри архива находится в папке "Разработка профиля защиты информации в сегменте информационной системы телекоммуникационной компании". Документ из архива "Разработка профиля защиты информации в сегменте информационной системы телекоммуникационной компании", который расположен в категории " ". Всё это находится в предмете "дипломы и вкр" из раздела "", которые можно найти в файловом архиве ДВГУПС. Не смотря на прямую связь этого архива с ДВГУПС, его также можно найти и в других разделах. .
Текст 9 страницы из документа "2.Модель угроз"
Результат реализации угрозы безопасности информации определяется воздействием угрозы на каждое свойство безопасности информации (конфиденциальность, целостность, доступность) в отдельности.
При обработке в информационной системе двух и более видов информации воздействие на конфиденциальность, целостность, доступность определяется отдельно для каждого вида информации (k, …, m), содержащейся в МИС экспертной группой.
Степень возможного ущерба от реализации угрозы безопасности информации определяется степенью негативных последствий от нарушения конфиденциальности, целостности или доступности каждого вида информации, содержащейся в информационной системе.
Степень негативных последствий от нарушения конфиденциальности, целостности или доступности информации определяется для каждого вида ущерба, зависит от целей и задач, решаемых информационной системой, и может иметь разные значения для разных обладателей информации и операторов. В качестве единой шкалы измерения степени негативных последствий принимаются значения «незначительные » , «умеренные » и «существенные » негативные последствия, в свою очередь степень ущерба определяется как «высокая » , «средняя » или «низкая » в зависимости от показателей степени негативных последствий.
Результат определения степени возможного ущерба от реализации угроз безопасности информации в «ИСПДн отдела бухгалтерского учета и отчетности » представлены в таблице 6.3.
Таблица 6.3 – Степень возможного ущерба от реализации угроз безопасности информации в «ИСПДн отдела бухгалтерского учета и отчетности »
ПДн (Сведения о фактах, событиях и обстоятельствах частной жизни гражданина, позволяющие идентифицировать его личность)
Оперативной памяти много не бывает: любой доступный объём достаточен лишь «до поры, до времени», а там найдётся, куда его применить. Хорошо, когда это действительно полезные задачи. Работа. Игры. Исследования. Плохо, когда оперативка заканчивается не по вине пользователя, но по раздолбайству разработчика.
Причин тому много, способов же решения… давайте обо всём по порядку.
malloc и calloc и vmalloc, ох ты ж!
Многим программистам известен стандартный способ запроса памяти у оперативной системы. В этом механизме задействована функция malloc из стандартной библиотеки С (можете почитать документацию о ней для вашей ОС, введя в мануале в поиск man 3 malloc ). Эта функция берёт один аргумент — количество байтов памяти, которое нужно выделить. Стандартная библиотека С выделяет память по одной из нескольких разных методик, но так или иначе она возвращает указатель на участок памяти, по крайней мере такой же большой, как и запрошенный вами объём.
По умолчанию malloc возвращает неинициализированную память. То есть стандартная библиотека С выделяет какой-то объём и немедленно передаёт его вашей программе, без изменения данных, которые уже там находятся. То есть при использовании malloc вашей программе будет возвращаться буфер, в который она уже записывала данные. Это распространённая причина багов в не безопасных по памяти (memory-unsafe) языках, например С. В целом читать из неинициализированной памяти очень рискованно.
Однако у malloc есть друг, задокументированный на той же странице мануала: calloc . Его главное отличие заключается в том, что он принимает два аргумента — счётчик и размер. Используя malloc , вы просите стандартную библиотеку С: «Пожалуйста, выдели мне не менее n байтов». А при вызове calloc вы просите её: «Пожалуйста, выдели достаточно памяти для n объектов размером m байтов». Очевидно, что первичная идея вызова calloc заключалась в безопасном выделении кучи для массивов объектов 2 .
Но у calloc есть побочный эффект, связанный с его исходным предназначением для размещения массивов в памяти. О нём очень скромно упоминается в мануале.
Это идёт рука об руку с предназначением calloc . К примеру, если вы размещаете в памяти массив значений, то зачастую будет очень полезно, чтобы он изначально имел состояние по умолчанию. В некоторых современных безопасных по памяти языках это уже стало стандартным поведением при создании массивов и структур. Скажем, когда в Go инициализируешь структуру, то все её члены по умолчанию приведены к своим так называемым «нулевым» значениям, эквивалентным «таким значениям, которые были бы, если бы всё сбросили в ноль». Это можно считать обещанием, что все Go-структуры размещаются в памяти с помощью calloc 3 .
Такое поведение означает, что malloc возвращает неинициализированную память, а calloc — инициализированную. А раз так, да ещё и в свете вышеупомянутых строгих обещаний, то операционная система может оптимизировать выделяемую память. И действительно, многие современные ОС так делают.
Конечно, простейший способ внедрить calloc — это написать что-то вроде:
Стоимость подобной функции изменяется примерно линейно по отношению к размеру выделяемой памяти: чем больше байтов, тем дороже их все обнулить. Сегодня большинство ОС по факту содержат стандартные библиотеки С, в которых прописаны оптимизированные пути для memset (обычно используются специализированные процессорные векторные инструкции, позволяющие одной инструкцией обнулять сразу большое количество байтов). Тем не менее стоимость этой процедуры меняется линейно.
Для выделения больших объёмов в ОС используется ещё один трюк, имеющий отношение к виртуальной памяти.
Здесь мы не будем разбирать всю структуру и работу виртуальной памяти, но я очень рекомендую об этом почитать (тема крайне интересная!). Вкратце: виртуальная память — это ложь ядра ОС процессам о доступной памяти. У каждого выполняемого процесса есть своё представление о памяти, принадлежащей ему и только ему. Это представление косвенно «отображается» (mapped) на физическую память.
В результате ОС может прокручивать всевозможные хитрые трюки. Чаще всего она выдаёт за память специальные файлы, отображаемые в неё (memory-mapped file). Они используются для выгрузки содержимого памяти на диск, а также для отображения в них памяти. В последнем случае программа просит ОС: «Пожалуйста, выдели мне n байтов памяти и сохрани их в файле на диске, так, чтобы, когда я буду писать в память, все записи выполнялись бы в этот файл, а когда считываю из памяти, то данные считывались бы из него же».
На уровне ядра это работает так: когда процесс пытается считать из такой памяти, процессор уведомляет, что память не существует, ставит процесс на паузу и бросает «ошибку страницы» (page fault). Ядро помещает в память актуальные данные, чтобы приложение могло их считать. Затем процесс снимается с паузы и находит в соответствующем месте волшебным образом появившиеся данные. С точки зрения процесса всё произошло мгновенно, без паузы.
Этот механизм можно использовать для выполнения других тонких трюков. Один из них заключается в «бесплатности» выделения очень больших объёмов памяти. Или, точнее, в том, чтобы сделать их стоимость пропорциональной степени использования этой памяти, а не выделяемому размеру.
Исторически сложилось так, что многие программы, которым во время выполнения нужны порядочные куски памяти, при запуске создают большой буфер, который потом может распределяться внутри программы в ходе её жизненного цикла. Так делалось потому, что программы писались для окружений, не использовавших виртуальную память; программам приходилось сразу занимать какие-то объёмы памяти, чтобы потом не испытывать в ней недостатка. Но после внедрения виртуальной памяти такое поведение стало ненужным: каждая программа может выделить себе столько памяти, сколько надо, не вырывая у других кусок изо рта 4 .
Чтобы избежать очень больших затрат при запуске приложений, операционные системы начали врать приложениям. В большинстве ОС, если вы попытаетесь выделить более 128 Кб в рамках одного вызова, стандартная библиотека С напрямую попросит у ОС совершенно новые страницы виртуальной памяти, которые покроют запрошенные объёмы. Но главное: такое выделение почти ничего не стоит. Ведь на самом деле ОС ничего не делает: она лишь перенастраивает схему виртуальной памяти. Так что при использовании malloc расходы получаются мизерными.
Память не была «приписана» к процессу, и, как только приложение пытается использовать её на самом деле, возникает ошибка страницы памяти. Здесь вмешивается ОС, находит нужную страницу и помещает её туда, куда обращается процесс, так же, как и в случае с ошибкой памяти и файлом отображаемой памяти. Только разница в том, что виртуальная память обеспечивается памятью физической, а не файлом.
В результате, если вызвать malloc(1024 * 1024 * 1024) для выделения 1 Гб памяти, это произойдёт почти мгновенно, потому что на самом деле процессу память не выделяется. Зато программы могут моментально «выделять» для себя многие гигабайты, хотя в реальности это происходило бы далеко не быстро.
Но ещё удивительнее то, что такая же оптимизация доступна и для calloc . ОС может отображать совершенно новую страницу на так называемую «нулевую страницу»: это страница памяти, доступная только для чтения, причём считываются из неё одни лишь нули. Изначально такое отображение представляет собой копирование при записи (copy-on-write): когда ваш процесс пытается записать данные в эту новую память — вмешивается ядро, копирует все нули в новую страницу, а затем разрешает вам выполнить запись.
Благодаря такому ухищрению со стороны ОС calloc может при выделении больших объёмов делать то же самое, что и malloc , запрашивая новые страницы виртуальной памяти. Это будет происходить бесплатно до тех пор, пока память не начнёт использоваться. Подобная оптимизация означает, что стоимость calloc(1024 * 1024 * 1024, 1) будет равна вызову malloc для такого же объёма памяти, несмотря на то что calloc ещё и обещает заполнять память нулями. Умно!
Итак: если CFFI использовал calloc , то почему память обнулялась?
Для начала: calloc использовался не всегда. Но я подозревал, что в данном случае могу воспроизвести замедление напрямую с помощью calloc , поэтому снова накидал программу:
Очень простая программа на C, выделяющая и освобождающая 100 Мб посредством вызова calloc десять тысяч раз. Затем выполняется выход. Далее — два варианта 5 :
- calloc может использовать вышеописанную хитрость с виртуальной памятью. В таком случае программа должна работать быстро: выделяемая память на самом деле не используется, не разбивается на страницы, а страницы не становятся «грязными» (dirty). ОС врёт нам насчёт выделения, а мы не ловим её за руку, так что всё работает прекрасно.
- calloc может привлечь malloc и вручную обнулить память с помощью memset . Это должно делаться очень-очень медленно: в сумме нам надо обнулить терабайт памяти (десять тысяч циклов по 100 Мб), что очень непросто.
Более того, если увеличить ALLOCATION_SIZE (например, 1000 * 1024 * 1024 ), то на MacOS эта программа станет работать почти мгновенно! Что за чертовщина?
Что тут вообще происходит?
В MacOS есть утилита sample (см. man 1 sample ), которая может многое рассказать о выполняемом процессе, регистрируя его состояние. Для нашего кода sample выдаёт такое:
Здесь мы ясно видим, что куча времени тратится на метод _platform_bzero$VARIANT$Haswell . Он используется для обнуления буферов. То есть MacOS их обнуляет. Почему?
Похоже, вся магия происходит в large_malloc. Эта ветка нужна для выделения памяти крупнее 127 Кб, она использует трюк с виртуальной памятью. Так почему у нас всё медленно работает?
Однако это тот случай для calloc , когда нужно обнулить байты. И если MacOS находит страницу, которую можно использовать повторно и которая была вызвана из calloc , то память обнулится. Вся. И так каждый раз.
В этом есть свой резон: обнулённые страницы — ограниченный ресурс, особенно в условиях скромного железа (смотрю на Apple Watch). Так что если страницу можно использовать повторно, то это может дать хорошую экономию.
Однако кеш страницы полностью лишает нас преимуществ использования calloc для предоставления обнулённых страниц памяти. Это было бы не так уж плохо, если бы делалось только для «грязных» страниц. Если приложение записывает в обнуляемую страницу, то та, вероятно, не будет обнулена. Но MacOS выполняет это безоговорочно. Это значит, что даже если вызвать alloc , free и calloc , вообще не трогая память, то при втором вызове calloc будут взяты страницы, выделенные во время первого вызова и ни разу не поддержанные физической памятью. Поэтому ОС приходится загрузить (page-in) всю эту память, чтобы обнулить её, хотя она уже была обнулена. Этого мы и хотим избежать с помощью средства распределения на базе виртуальной памяти, когда доходит до выделения больших объёмов: ни разу не использовавшаяся память становится использованной «списком свободных» страниц.
В результате на MacOS стоимость calloc линейно возрастает в зависимости от размера выделяемой памяти вплоть до 125 Мб, несмотря на то что другие ОС демонстрируют поведение O(1) начиная со 127 Кб. После 125 Мб MacOS перестаёт кешировать страницы, так что скорость волшебным образом взлетает.
Я не ожидал найти такой баг из программы на Python, и у меня возник ряд вопросов. Например, сколько процессорных циклов теряется на обнуление памяти, которая уже обнулена? Сколько переключений контекста уходит на то, чтобы заставлять приложения загружать (page-in) память, которую они не использовали (и не собираются), чтобы ОС могла бессмысленно её обнулить?
Мне кажется, всё это подтверждает верность старой поговорки: утечки есть во всех абстракциях (all abstractions are leaky). Вы не можете забывать об этом лишь потому, что программируете на Python. Ваша программа выполняется на машине, использующей память и всякие трюки для её управления. Однажды, совершенно неожиданно, написанный вами код станет работать очень медленно. И разобраться с этим удастся, лишь разобравшись во внутренностях ОС.
Этот баг был описан как Radar 29508271. Один из самых странных багов, что мне встречались.
У разработчика лапки
Иногда утечки – это просто утечки. Фотошоп любит и умеет отжирать большие объёмы памяти, особенно сразу после выхода нового номерного релиза. Благо в самом приложении есть инструмент ограничения доступного объёма оперативки (не стоит выделять больше 66%), назначения кэширующих дисков и всего такого. В качестве альтернативы можно подождать полгода и дождаться стабильной версии. Киллерфичи редко бывают настолько нужны, чтобы мириться с багами.
Торрент-клиенты. Множество одновременно установленных подключений, столько же одновременно скачиваемых файлов, проблемы с соединением – и соответствующий расход памяти. Решение – ограничение на количество исходящих соединений и скорости отдачи. Правильные коэффициенты подбираются вручную.
Софт принтеров / сканеров / камер. В анамнезе – написанный за еду индусский код: кривой, как камасутра. Медицина в этом случае бессильна – тут уж ибо использовать открытые / универсальные аналоги, либо писать багрепорты и молиться Шиве, чтоб тот покарал проклятых халтурщиков.
Майнер-малварь. Иногда утечка памяти «в никуда» – повод расчехлить антивирус. Главная защита криптовалют от «оптимизации» их добычи аппаратным методом – увеличение сложности алгоритма в направлении «нужно больше памяти для расчётов». Поэтому фоновые майнилки могут спалиться на потреблении оперативки. Причём приобщиться к числу «шахтёров» можно и незаметно для себя: чего стоит только известный скандал с uTorrent, «бонусом» к которому пользователи получали приложение-майнер Epic Scale. Да и один популярный трекер минувшей осенью засветился в фоновой добыче криптовалюты прямо в браузерах посетителей.
Проблемы кэширования ресурсов
Этим страдают в большинстве своём игры-песочницы, как стационарные, так и запускаемые внутри браузера: Factorio, Rim World, Minecraft с кучей модов… При определённом стечении обстоятельств (например, оставили производство на ночь, чтобы игра зарабатывала, пока вы спите) можно проснуться с наглухо повисшим компьютером. Ну или очень медленно работающим. При этом в плане оперативной памяти всё будет «ок» – сколько потребляла игра, столько и потребляет.
В 90% случаев такого поведения у пользователей установлен SSD и включены одновременно файл подкачки и режим гибернации. Игра сбрасывает неиспользуемые ресурсы из оперативки в своп, «Винда» кэширует их и сохраняет на случай ухода в сон, далее графика используется повторно и вновь откладывается в «долгий ящик». Вот только старые копии никуда не удаляются – спустя несколько часов, в зависимости от объёма накопителя, свободное место на нём заканчивается, система падает до перезагрузки и очистки временных файлов. Не пытайся игра «оптимизировать» расход оперативной памяти, выгружая и вновь подкачивая ресурсы – текла бы как обычно, с постепенным замедлением работы и последующим крашем.
Варианты решения: проверка гипотезы какой-нибудь утилитой типа TreeSize, удаление накопленных мусорных asset'ов, перенос подкачки на объёмный HDD или отключение гибернации в Windows 10, написание багрепорта на форум, ожидание патча.
Онлайн просмотр документа "2.Модель угроз"
Текст 10 страницы из документа "3. Модель угроз"
– возможный результат реализации УБИ в ИС;
– вид ущерба, к которому может привести реализация УБИ;
– степень последствия от реализации УБИ для каждого вида ущерба
Экспертные оценки степеней возможности ущерба в результате реализации угроз безопасности информации, содержащихся в банке данных угроз безопасности информации, относительно ООО «Рэдком-РУ » .
В качестве результата реализации угрозы безопасности информации рассматриваются непосредственное или опосредованное воздействие на конфиденциальность, целостность, доступность информации, содержащейся в информационной системе.
Результат реализации угрозы безопасности информации определяется воздействием угрозы на каждое свойство безопасности информации (конфиденциальность, целостность, доступность) в отдельности.
Степень возможного ущерба от реализации угрозы безопасности информации определяется степенью негативных последствий от нарушения конфиденциальности, целостности или доступности каждого вида информации, содержащейся в информационной системе.
Степень негативных последствий от нарушения конфиденциальности, целостности или доступности информации определяется для каждого вида ущерба, зависит от целей и задач, решаемых информационной системой, и может иметь разные значения для разных обладателей информации и операторов. В качестве единой шкалы измерения степени негативных последствий принимаются значения «незначительные » , «умеренные » и «существенные » негативные последствия, в свою очередь степень ущерба определяется как «высокая » , «средняя » или «низкая » в зависимости от показателей степени негативных последствий.
Результат определения степени возможного ущерба от реализации угроз безопасности информации в ИСПДн представлены ниже.
УБИ.004Угроза аппаратного сброса пароля BIOS
УБИ.006Угроза внедрения кода или данных
УБИ.007Угроза воздействия на программы с высокими привилегиями
УБИ.011Угроза деавторизации санкционированного клиента беспроводной сети
УБИ.012Угроза деструктивного изменения конфигурации/среды окружения программ
УБИ.014Угроза длительного удержания вычислительных ресурсов пользователями
УБИ.015Угроза доступа к защищаемым файлам с использованием обходного пути
УБИ.016Угроза доступа к локальным файлам сервера при помощи URL
УБИ.019Угроза заражения DNS-кеша
УБИ.020Угроза злоупотребления возможностями, предоставленными потребителям облачных услуг
УБИ.022Угроза избыточного выделения оперативной памяти
УБИ.023Угроза изменения компонентов системы
УБИ.026Угроза искажения XML-схемы
УБИ.027Угроза искажения вводимой и выводимой на периферийные устройства информации
УБИ.028Угроза использования альтернативных путей доступа к ресурсам
УБИ.030Угроза использования информации идентификации/аутентификации, заданной по умолчанию
УБИ.031Угроза использования механизмов авторизации для повышения привилегий
УБИ.032Угроза использования поддельных цифровых подписей BIOS
УБИ.033Угроза использования слабостей кодирования входных данных
УБИ.034Угроза использования слабостей протоколов сетевого/локального обмена данными
УБИ.037Угроза исследования приложения через отчёты об ошибках
УБИ.038Угроза исчерпания вычислительных ресурсов хранилища больших данных
УБИ.039Угроза исчерпания запаса ключей, необходимых для обновления BIOS
УБИ.041Угроза межсайтового скриптинга
УБИ.044Угроза нарушения изоляции пользовательских данных внутри виртуальной машины
УБИ.046Угроза нарушения процедуры аутентификации субъектов виртуального информационного взаимодействия
УБИ.048Угроза нарушения технологии обработки информации путём несанкционированного внесения изменений в образы виртуальных машин
УБИ.049Угроза нарушения целостности данных кеша
УБИ.050Угроза неверного определения формата входных данных, поступающих в хранилище больших данных
УБИ.053Угроза невозможности управления правами пользователей BIOS
УБИ.055Угроза незащищённого администрирования облачных услуг
УБИ.057Угроза неконтролируемого копирования данных внутри хранилища больших данных
УБИ.060Угроза неконтролируемого уничтожения информации хранилищем больших данных
УБИ.062Угроза некорректного использования прозрачного прокси-сервера за счёт плагинов браузера
УБИ.063Угроза некорректного использования функционала программного обеспечения
УБИ.067Угроза неправомерного ознакомления с защищаемой информацией
УБИ.069Угроза неправомерных действий в каналах связи
УБИ.071Угроза несанкционированного восстановления удалённой защищаемой информации
УБИ.073Угроза несанкционированного доступа к активному и (или) пассивному виртуальному и (или) физическому сетевому оборудованию из физической и (или) виртуальной сети
УБИ.074Угроза несанкционированного доступа к аутентификационной информации
УБИ.075Угроза несанкционированного доступа к виртуальным каналам передачи
УБИ.076Угроза несанкционированного доступа к гипервизору из виртуальной машины и (или) физической сети
УБИ.078Угроза несанкционированного доступа к защищаемым виртуальным машинам из виртуальной и (или) физической сети
УБИ.079Угроза несанкционированного доступа к защищаемым виртуальным машинам со стороны других виртуальных машин
УБИ.080Угроза несанкционированного доступа к защищаемым виртуальным устройствам из виртуальной и (или) физической сети
УБИ.083Угроза несанкционированного доступа к системе по беспроводным каналам
УБИ.084Угроза несанкционированного доступа к системе хранения данных из виртуальной и (или) физической сети
УБИ.085Угроза несанкционированного доступа к хранимой в виртуальном пространстве защищаемой информации
УБИ.086Угроза несанкционированного изменения аутентификационной информации
УБИ.088Угроза несанкционированного копирования защищаемой информации
УБИ.089Угроза несанкционированного редактирования реестра
УБИ.090Угроза несанкционированного создания учётной записи пользователя
УБИ.093Угроза несанкционированного управления буфером
УБИ.094Угроза несанкционированного управления синхронизацией и состоянием
УБИ.097Угроза несогласованности правил доступа к большим данным
УБИ.098Угроза обнаружения открытых портов и идентификации привязанных к нему сетевых служб
УБИ.102Угроза опосредованного управления группой программ через совместно используемые данные
УБИ.103Угроза определения типов объектов защиты
УБИ.104Угроза определения топологии вычислительной сети
УБИ.105Угроза отказа в загрузке входных данных неизвестного формата хранилищем больших данных
УБИ.108Угроза ошибки обновления гипервизора
УБИ.111Угроза передачи данных по скрытым каналам
УБИ.112Угроза передачи запрещённых команд на оборудование с числовым программным управлением
УБИ.113Угроза перезагрузки аппаратных и программно-аппаратных средств вычислительной техники
УБИ.115Угроза перехвата вводимой и выводимой на периферийные устройства информации
УБИ.116Угроза перехвата данных, передаваемых по вычислительной сети
УБИ.117Угроза перехвата привилегированного потока
УБИ.121Угроза повреждения системного реестра
УБИ.122Угроза повышения привилегий
УБИ.126Угроза подмены беспроводного клиента или точки доступа
УБИ.127Угроза подмены действия пользователя путём обмана
УБИ.128Угроза подмены доверенного пользователя
УБИ.130Угроза подмены содержимого сетевых ресурсов
УБИ.131Угроза подмены субъекта сетевого доступа
УБИ.132Угроза получения предварительной информации об объекте защиты
УБИ.133Угроза получения сведений о владельце беспроводного устройства
УБИ.136Угроза потери информации вследствие несогласованности работы узлов хранилища больших данных
УБИ.140Угроза приведения системы в состояние «отказ в обслуживании »
УБИ.143Угроза программного выведения из строя средств хранения, обработки и (или) ввода/вывода/передачи информации
УБИ.145Угроза пропуска проверки целостности программного обеспечения
УБИ.149Угроза сбоя обработки специальным образом изменённых файлов
УБИ.151Угроза сканирования веб-сервисов, разработанных на основе языка описания WSDL
УБИ.152Угроза удаления аутентификационной информации
УБИ.153Угроза усиления воздействия на вычислительные ресурсы пользователей при помощи сторонних серверов
УБИ.155Угроза утраты вычислительных ресурсов
УБИ.162Угроза эксплуатации цифровой подписи программного кода
УБИ.167Угроза заражения компьютера при посещении неблагонадёжных сайтов
УБИ.168Угроза «кражи » учётной записи доступа к сетевым сервисам
УБИ.171Угроза скрытного включения вычислительного устройства в состав бот-сети
УБИ.172Угроза распространения «почтовых червей »
УБИ.173Угроза «спама » веб-сервера
УБИ.176Угроза нарушения технологического/производственного процесса из-за временны́х задержек, вносимых средством защиты
УБИ.177Угроза неподтверждённого ввода данных оператором в систему, связанную с безопасностью
УБИ.178Угроза несанкционированного использования системных и сетевых утилит
УБИ.179Угроза несанкционированной модификации защищаемой информации
УБИ.180Угроза отказа подсистемы обеспечения температурного режима
УБИ.181Угроза перехвата одноразовых паролей в режиме реального времени
УБИ.182Угроза физического устаревания аппаратных компонентов
УБИ.185Угроза несанкционированного изменения параметров настройки средств защиты информации
УБИ.186Угроза внедрения вредоносного кода через рекламу, сервисы и контент
УБИ.187Угроза несанкционированного воздействия на средство защиты информации
УБИ.189Угроза маскирования действий вредоносного кода
УБИ. 190Угроза внедрения вредоносного кода за счет посещения зараженных сайтов в сети Интернет
УБИ.191Угроза внедрения вредоносного кода в дистрибутив программного обеспечения
УБИ.192Угроза использования уязвимых версий программного обеспечения
Не все adblock'и одинаково полезны
Да, софт, который вырезает назойливые баннеры и код всяких отслеживалок, в определенных случаях снижает нагрузку и на процессор, и на оперативку. Но не всегда. Эффективность данного решения зависит напрямую от качества его исполнения. Софт, работающий на уровне системы в роли прокси-сервера (отсекающий трафик с рекламных площадок до того, как он попадёт в браузер) сам по себе потребляет некоторый объём памяти, но он более-менее статичен. А вот расширения и модули для популярных браузеров создают монструозные конструкции на месте вырезанных рекламных фреймов. Да, рекламы на странице становится меньше, вот только потребление памяти данной вкладкой может вырасти не на каких-то 10-15%, а в несколько раз.
Верните мой 97-й
Незаконный захват оперативной памяти приложениями – прямое следствие технологического прогресса. Вычислительных ресурсов, спасибо закону Мура, становится больше (да и цена их падает год от года), а стоимость работы высококвалифицированного специалиста, увы (и вновь к счастью для нас, IT'шников), следует обратной динамике. Приложения обрастают новыми возможностями, для быстрой разработки вводятся очередные слои абстракций… Двадцать лет назад код был куда ближе к «железу», нежели сейчас. Огромное число прослоек и промежуточных технологий – одно из многих зол, приводящих к плачевной ситуации. 15 мегабайт оперативной памяти для (!) калькулятора. Кошмар!
И ладно бы ситуация улучшалась, так нет: разработчики берут старые инструменты, придумывают еще более простые и многофункциональные новые, проходит несколько лет и цикл повторяется. Подумать только, недавно мы радовались CSS 3.0 и скругленным уголкам простым свойством объекта, затем Bootstrap'у, сейчас – очередной надстройке-комбайну. Write less, do more во все поля.
Актуальность угроз безопасности информации, реализуемых за счет НСД к информации, обрабатываемой в ИСПДн телекоммуникационной компании
Решение об актуальности угрозы безопасности информации относительно информационной системы с заданными структурно-функциональными характеристиками и условиями функционирования принимается в соответствии с таблицей 7.3.1
Всё началось, как и многие другие расследования, с баг-репорта.
Это просто замечательный воспроизводимый сценарий, потому что он совершенно чётко указывает на стек Requests. Здесь не выполняется пользовательский (user-supplied) код: это часть библиотеки Requests или одной из его зависимостей; нет вероятности, что это пользователь написал дурацкий низкопроизводительный код. Настоящая фантастика. Ещё более фантастично использование публичного URL. Я мог выполнить сценарий! И, сделав это, я столкнулся с багом. При каждом выполнении.
Здесь была ещё одна прелестная подробность:
При 10 Мб не отмечается какого-то роста нагрузки на процессор и влияния на пропускную способность. При 1 Гб процессор загружается на 100 %, как и при 100 Мб, но пропускная способность падает ниже 100 Кб/с, в отличие от 1 Мб/с при 100 Мб.
Это очень интересный момент: он намекает на то, что литеральное значение (literal value) размера чанка влияет на рабочую нагрузку. Если учесть, что это происходит только при использовании PyOpenSSL, а также что большую часть времени стек обслуживает вышеприведённый код, проблема становится ясна:
Расследование показало, что стандартное поведение CFFI относительно FFI.new заключается в возвращении обнулённой памяти. Это означало линейное увеличение избыточности в зависимости от размера выделяемой памяти: более крупные объёмы приходилось обнулять дольше. Следовательно, плохое поведение связано с выделением больших объёмов. Мы воспользовались возможностью CFFI отключить обнуление этих буферов, и проблема ушла 1 . Так она решена, верно?
Шутки в сторону: это действительно позволило решить проблему. Но несколько дней спустя мне задали очень глубокомысленный вопрос: зачем вообще память активно обнулялась? Чтобы понять суть вопроса, давайте отвлечёмся и поговорим о выделении памяти в POSIX-системах.
Комфортабельные троллейбусы из хлеба
Современные браузеры – это не только ценный гипертекст, но и три-четыре десятка полезных фич. Воспроизведение видео, работа с документами, и другие расширения – почти что операционка в миниатюре. С кучей собственных модулей от разных разработчиков, и всё это соединено кое-как. Работает зачастую так же. Миллион открытых вкладок, сложная вёрстка, фреймворк на фреймворке – одни из основных генераторов утечек.
Как бороться? Поставить какой-нибудь блокировщик рекламы и экстеншн типа The Great Suspender, который выгружает из памяти неиспользуемые страницы и сохраняет во вкладке «минимум» – удобно и эффективно снижает фоновый отжор памяти.
Читайте также: