Определить объем памяти, выделенный этой программой для записи 40 паролей

Обновлено: 21.11.2024

Мы опросили 1000 человек об их привычках в отношении безопасности паролей. Вот что мы нашли.

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

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

О нашем опросе

Мы опросили случайно выбранную группу из 1000 пользователей Google в США в возрасте от 18 лет и старше. Наш опрос включал семь вопросов:

  1. Сколько у вас есть аккаунтов, для которых требуется пароль?
  2. Как часто вы меняете свои пароли?
  3. Вы когда-нибудь повторно использовали пароли для разных учетных записей?
  4. Насколько сложны ваши пароли?
  5. Что для вас важнее всего при создании нового пароля?
  6. Используете ли вы двухфакторную аутентификацию в дополнение к паролям, если они доступны?
  7. Как вы запоминаете свои пароли?

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

Перегрузка паролей реальна

Предыдущие данные таких компаний, как Dashlane, показали, что люди обычно имеют слишком много паролей, которые нужно помнить. Фактически, анализ Dashlane данных более чем 20 000 пользователей в 2015 году показал, что средний пользователь имеет 90 онлайн-аккаунтов. Углубившись в выборку данных, Дашлейн обнаружил, что в США одному адресу электронной почты назначено в среднем 130 аккаунтов.

Результаты нашего опроса показывают, что перегрузка паролями по-прежнему является серьезной проблемой для многих пользователей, хотя существует интересное различие между количеством людей, которым нужно запомнить слишком много паролей, и теми, кто управляет менее чем 10 аккаунтами, требующими паролей. Среди 999 ответов на этот вопрос:

  • 29 % респондентов даже не уверены, сколько у них аккаунтов, требующих ввода пароля; их просто слишком много, чтобы сосчитать.
  • 29,7 % респондентов указали, что у них меньше 10 аккаунтов, требующих пароля.
  • 13,6% говорят, что у них есть более 25 аккаунтов, для которых требуется пароль.
  • 27,6% сообщают, что имеют от 11 до 25 аккаунтов, требующих пароль.

Большинство пользователей часто обновляют свои пароли

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

Результаты нашего опроса показывают, что почти треть (31,3%) респондентов меняют свои пароли один-два раза в год. Чуть более одной пятой (22,4%) меняют свои пароли более пяти раз в год, а 17% меняют свои пароли каждые несколько месяцев или примерно три-четыре раза в год. До тех пор, пока последние группы (почти 40% пользователей, которые сообщили о смене паролей 3 или более раз в год) довольны частотой своих изменений и практикуют разумные привычки безопасности паролей, такие как создание сложных паролей, предотвращение повторного использования паролей и используя безопасные методы управления паролями, мы должны воспринимать это как положительный знак.

В целом 29,4 % респондентов редко или никогда не меняют свои пароли:

  • 10,9 % респондентов говорят, что никогда не меняют пароли.
  • 18,5 % меняют свои пароли только после получения уведомления о проблеме с безопасностью.

Около половины респондентов используют пароли повторно, но не всегда

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

Большинство людей понимают, что использовать один и тот же пароль для нескольких аккаунтов — плохая идея, но некоторые все равно продолжают это делать. В нашем опросе среди 941 ответа на этот вопрос:

  • 49,3 % говорят, что иногда используют пароли повторно, но только для неважных или некритических аккаунтов.
  • 39,9 % никогда не используют пароли повторно (многообещающе!).
  • 10,8 % используют только один пароль по умолчанию для большинства или всех аккаунтов (плохая новость).

Пользователи разбираются в сложности паролей

  • Комбинация прописных и строчных букв.
  • Числа
  • Специальные символы или символы
  • Минимальное количество символов

Обязательство пользователей выбирать пароли, включающие все (или, в некоторых случаях, сочетание четырех) элементов, приводит к тому, что пароли труднее взломать, что повышает безопасность аккаунта для пользователей.

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

Согласно результатам нашего опроса, пользователи ценят сложность пароля. Среди 884 ответов на этот вопрос:

  • 55,8 % используют очень сложные пароли/парольные фразы, такие как «Ilovef00tball!».
  • 37,8 % используют сложные пароли, например «Football1».
  • Только 6,5 % полагаются на несложные пароли, такие как общеупотребительные слова или фразы, такие как "футбол", "qwerty", или проверенные имена домашних животных, детей или супругов.

Наиболее важные аспекты пароля

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

Согласно результатам нашего опроса, 65,3 % из 869 респондентов, ответивших на этот вопрос, заявили, что их самое важное соображение - безопасность, и они уделяют особое внимание созданию уникальных и сложных паролей. С другой стороны, более трети (34,7%) придают большее значение паролям, которые легко запомнить.

Однако они не исключают друг друга. Techvera предлагает несколько советов по созданию безопасных и легко запоминающихся паролей, таких как использование фраз-паролей вместо паролей, использование строк случайных слов в бессмысленном порядке или использование генераторов случайных паролей в сочетании с менеджерами паролей (чтобы облегчить необходимость запоминать десятки уникальных, сложных паролей). Кроме того, UberGizmo предлагает несколько полезных советов по созданию надежных, но легко запоминающихся паролей, объясняя, что, хотя парольные фразы являются мощными инструментами памяти, вы должны использовать уникальный подход для создания парольной фразы, которую легко запомнить вам, но невероятно сложно для всех остальных. чем вы думаете.

Использование двухфакторной аутентификации

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

В нашем опросе на этот вопрос ответили 840 участников. Результаты смешанные; более чем в два раза больше людей говорят, что они используют двухфакторную аутентификацию там, где она доступна (47,8%), по сравнению с теми, кто этого не делает (19,4%). При этом удивительно, что 32,8 % респондентов не знают, что такое двухфакторная аутентификация.

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

  • Что-то, что вы знаете (например, ваш пароль или имя пользователя)
  • Что-то, что у вас есть (например, карта банкомата, мобильный телефон или жетон/значок доступа)
  • То, чем вы являетесь (обычно подтверждается биометрическими данными, такими как сканирование радужной оболочки глаза, отпечатки пальцев или распознавание лиц)

Подумайте о примере с банкоматом, и вы поймете, насколько широко распространена двухфакторная аутентификация.Двухфакторная аутентификация по своей сути более безопасна; хотя злоумышленнику может быть легко взломать ваш пароль, копирование вашего отпечатка пальца или получение вашей физической собственности может быть гораздо более сложной задачей. Хотя биометрия используется реже, чем другие методы аутентификации, из-за технологических ограничений, использование биометрии также начинает расти. Опрос, проведенный TeleSign в 2016 году, показал, что более половины опрошенных компаний (54 %) планировали внедрить биометрические данные в качестве меры безопасности.

Воспоминание пароля: как пользователи запоминают свои пароли

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

В нашем опросе на этот вопрос ответили 800 респондентов. Мы обнаружили, что люди используют различные тактики, чтобы вспомнить свои пароли, в том числе:

  • 38,6 % записывают свои пароли на листе бумаги.
  • 27,7 % используют безопасный менеджер паролей.
  • 17,7 % повторно используют один и тот же пароль для нескольких учетных записей.
  • 9,5 % хранят все свои пароли в файле на своем компьютере.
  • 6,6% хранят свои пароли в файле в Dropbox или аналогичном хранилище.

Касперский изучил тот же вопрос в ходе опроса более 12 500 человек из 21 страны, проведенного в 2016 году, и получил несколько иные результаты:

  • 53 % респондентов сообщили, что помнят свои пароли.
  • 22 % респондентов сообщили, что записывают свои пароли в блокноте.
  • 11 % пишут пароли на листе бумаги или на стикере, который держат рядом с компьютером.
  • 11% хранят свои пароли в веб-браузере.
  • 10 % записывают пароли в файл, хранящийся на их компьютере.
  • 9% хранят пароли на своих смартфонах.
  • 7% хранят свои пароли в специальном программном приложении.
  • 6% отправляют себе электронные письма со своими паролями.
  • 4% хранят свои пароли в онлайн-сервисах.
  • 4% используют какой-либо другой метод, не описанный выше.
  • 7% ответили "не знаю".

Как лучше всего отслеживать все эти пароли? По словам Брэйна Кребса из Krebs on Security: «Самый безопасный метод запоминания ваших паролей — это создать список всех веб-сайтов, для которых у вас есть пароль, и рядом с каждым из них написать свое имя пользователя и подсказку, которая имеет значение только для ты. Если вы забудете свой пароль, большинство веб-сайтов отправят его вам по электронной почте (при условии, что вы помните адрес электронной почты, который вы использовали при регистрации)».

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

Необходимо дополнительное обучение гигиене паролей

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

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

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

Мы сталкиваемся с похожей ситуацией и в C, когда хотим ввести предложение в виде массива символов, но не уверены в количестве символов в массиве.

Теперь при объявлении символьного массива, если мы укажем его размер меньше размера входной строки, то получим ошибку, так как место в памяти, выделенное под массив, меньше размера входной строки . Это тот же случай, когда вы пытаетесь уместить большую игрушку в коробку меньшего размера.Если мы укажем его размер намного больше, чем размер входной строки, то массиву будет выделено место в памяти, которое намного больше, чем размер входной строки, таким образом, излишне потребляя больше памяти, даже когда это не требуется. Это все равно, что положить маленькую игрушку в большую коробку.

В приведенном выше случае у нас нет представления о размере массива до момента компиляции (когда компьютер компилирует код и строка вводится пользователем). В таких случаях мы используем функцию malloc()

маллок

функция malloc выделяет память во время выполнения. Он принимает размер в байтах и ​​выделяет столько места в памяти. Это означает, что malloc(50) выделит в памяти 50 байт. Он возвращает пустой указатель и определен в stdlib.h.

Давайте разберемся на примере.

В приведенном выше примере мы присвоили и напечатали имя, как делали это раньше. Для адреса мы подсчитали, что количество символов должно быть около 50. Таким образом, размер адреса будет 50 * sizeof(char).

char *address → Здесь мы объявили указатель на символ для адреса, не указывая, сколько памяти требуется.

address = (char*)malloc( 50 * sizeof(char) ) → Написав это, мы выделили память '50 * sizeof(char)' байтов для адреса. Мы использовали (char*) для приведения указателя, возвращаемого malloc, к символу.

strcpy( address, "Lee Fort, 11-B Sans Street") → Написав это, мы, наконец, присвоили адрес.

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

Если места в памяти, выделенной с помощью malloc, недостаточно, выделение завершается ошибкой, и malloc возвращает указатель NULL

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

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

Способы запоминания паролей

1. Создайте лист советов

McAfee рекомендует использовать лист с советами, который предлагает подсказки относительно того, каким может быть ваш пароль, избегая при этом списка паролей, который может быть виден любому блуждающему взгляду. Никогда не записывайте свой пароль там, где его могут увидеть посторонние.

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

2. Если вы записываете свои пароли, замаскируйте их

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

Или это может быть что-то, что рифмуется с вашим паролем.

Возможно, это просто аббревиатура, которая освежит вашу память.

Если вам необходимо записать свои пароли, по крайней мере, замаскируйте их каким-либо образом.

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

3. Попробуйте использовать ярлыки

Использование названия веб-сайта или цвета его логотипа в качестве переходного блока поможет вам создать запоминающийся и надежный пароль. Например, в Facebook можно использовать F или FB в качестве первой или последней буквы пароля.

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

4. Создайте свой код

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

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

5. Создайте фразу из запоминающегося предложения

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

Например: "Когда мы с сестрой Джесси подстригли себе челку". Это будет выглядеть примерно так: Www5m$JaIcob. Обратите внимание на добавление числа, а также заглавных букв. Это поможет укрепить ваш пароль.

6. Выберите четыре случайных слова

Еще один вариант — создать короткую фразу из нескольких случайных слов. Использование всего слова с заменой нескольких букв специальными символами помогает повысить безопасность. Выберите что-нибудь глупое или запоминающееся, например, шутку или любимую еду, животное и цвет. Бывший. Gr33n-3ggs&P!ggy$-f1y.

7. Используйте базовый пароль

Яара Ланцет из MakeUseOf создала этот пост, в котором есть несколько советов по созданию запоминающегося и безопасного пароля.

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

Если ваша база была чем-то вроде 0r@ng3-k!tt3n$, вы можете сделать ее уникальной для своей учетной записи Twitter, добавив Tw!tt3r- в начало вашего пароля: Tw!tt3r-0r@ng3-k!tt3n$.

8. Избегайте шаблонов паролей и общих паролей

Выбор такого пароля, как 123456, может привести к проблемам. Не поддавайтесь этой привычке. Избегайте распространенных паролей и шаблонов паролей, чтобы повысить безопасность и, в конечном итоге, получить более запоминающийся и уникальный пароль.

9. Выберите любимую книгу, придумывайте пароли на основе первого найденного абзаца

По словам Lancet, еще один способ запомнить пароли – это выбрать любимую книгу и создать на ее основе пароль.

Откройте случайную страницу, найдите интересное слово, затем добавьте номер страницы, номер абзаца, номер слова или что-то еще, что вы хотите добавить.

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

10. Создайте пароль из своей любимой песни

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

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

11. Используйте безопасный браузер, который может запомнить их для вас

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

12. Попробуйте менеджер паролей

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

Обриэль Биллиг – штатный обозреватель журнала Small Business Trends. Она освещает бизнес, на который влияет поп-культура, предприниматели в сфере искусства и другие темы, затрагивающие творческий бизнес. У нее есть опыт работы иллюстратором, и страницу ее дизайна можно найти на AubrielleBillustrations.

Тяжело написать все свои пароли. Я знаю, что я виноват в том, что создал один и тот же пароль для всего. Но я думаю, что так легче запомнить.

Я также знаю человека, который использовал очень распространенную фразу-пароль, но затем переложил руки на клавиатуру, так что это была полная тарабарщина.

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

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

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

В основе головной боли, связанной с паролями, лежит когнитивный феномен, называемый «вмешательством в память», из-за которого мы не можем надежно запомнить в среднем более 5 текстовых паролей. Нас беспокоит не пароль, а текстовый пароль. Текстовая память — это лишь малая часть того, что мы помним. Мы могли бы думать об использовании большей части нашей памяти, которая менее подвержена вмешательству памяти.Больше внимания можно было бы уделить усилиям по расширению системы паролей за счет включения изображений, особенно ИЗВЕСТНЫХ изображений, а также обычных текстов.

Кстати, некоторые люди кричат, что пароль мертв или должен быть убит мертвым. Однако пароль может быть уничтожен только тогда, когда есть альтернатива паролю. Что-то, относящееся к паролю (PIN-код, фраза-пароль и т. д.), и что-то, зависящее от пароля (идентификатор федерации, 2/многофакторная и т. д.), не может быть альтернативой паролю. Не может быть и того, что должно использоваться вместе с паролем (биометрия, автоматический вход и т. д.).

Является ли LastPass примером менеджера паролей? Какое самое слабое звено для использования такого рода услуг?

Может ли сенсорный идентификатор смартфона решить проблему с паролем в будущем?

Никто не должен записывать свои пароли! Самый простой способ не запоминать несколько уникальных паролей — использовать менеджер паролей. Я рекомендую Roboform из-за его надежной внутренней безопасности.

Кроме того, короткие паллиндромы — отличный способ держать пароли под рукой. Создавайте пароли примерно так: Radar
1/radar/1. :/3radoodar3/: (5)ra6d6ar(5)
Murderforajarofredrum — отличный паллиндром, но немного длинноват для набора текста. В идеале короткие лучше.

В то же время тот факт, что я люблю вставлять специальные символы в свои пароли и учетные данные, также означает, что я сталкиваюсь с сервисами, которые просто отказываются их поддерживать, и это приводит меня в ярость, особенно когда эти сервисы являются финансовыми. учреждений или банков. Серьезно, ребята, я собираюсь использовать длинный пароль со специальными символами, так что я не тот парень с паролем «пароль», и вы говорите мне «э… мы знаем, что вы пытаетесь, но держите это в секрете». больше 8 и используйте только буквы и цифры, хорошо?» Раздражает.

Что касается меня, я всегда смешиваю свой пароль с другими паролями, а затем отправляю его мне по электронной почте. Я единственный, кто знает настоящий пароль из всех.

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

Атаки на переполнение буфера существуют уже давно. Он существует до сих пор отчасти из-за невнимательности программистов при написании кода. Причина, по которой я сказал «частично», заключается в том, что иногда хорошо написанный код может быть использован для атак с переполнением буфера, поскольку это также зависит от самоотверженности и уровня интеллекта злоумышленника.

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

В этом руководстве по переполнению буфера мы обсудим основы следующего:

  • Что такое переполнение буфера?
  • Как происходит переполнение буфера?
  • Как происходит атака переполнения буфера?
  • Как избежать переполнения буфера?

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

Что такое переполнение буфера?

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

В приведенном выше примере «buff» представляет собой массив из 10 байтов, где buff[0] — левая граница, а buff[9] — правая граница буфера.

Возьмем другой пример:

В приведенном выше примере «arr» представляет собой массив из 10 целых чисел. Теперь предположим, что размер целого числа составляет 4 байта, общий размер буфера «arr» составляет 10 * 4 = 40 байт. Как и в первом примере, arr[0] указывает на левую границу, а arr[9] — на правую.

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

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

Вот пример:

В приведенном выше примере мы объявили массив размером 10 байт. Обратите внимание, что индексы от 0 до 9 могут использоваться для ссылки на эти 10 байтов буфера. Но в следующей строке мы использовали индекс 10 для хранения значения «a». Это момент, когда происходит переполнение буфера, потому что данные записываются за правую границу буфера.

Также важно понимать, как работает процесс компиляции GCC для создания исполняемого файла C.

Почему переполнение буфера опасно?

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

Ну, если в одной строке мы должны обобщить ответы на эти вопросы, то это будет:

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

Давайте разберем несколько сценариев, которые оправдывают ответ, упомянутый выше.

<р>1. Рассмотрим сценарий, в котором вы выделили 10 байт памяти в куче:

Теперь, если вы попытаетесь сделать что-то вроде этого:

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

<р>2. Рассмотрим другой сценарий, когда вы пытаетесь заполнить буфер (в стеке) сверх его емкости:

Как видите, функция strcpy() запишет полную строку в массив buff, но поскольку размер buff меньше размера строки, данные будут записаны за правую границу массива. массив «бафф». Теперь, в зависимости от используемого вами компилятора, высока вероятность того, что это останется незамеченным во время компиляции и не приведет к сбою во время выполнения. По той простой причине, что память стека принадлежит программе, поэтому любое переполнение буфера в этой памяти может остаться незамеченным.

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

Вам также необходимо понимать, как с помощью GCC можно предотвратить атаки, разрушающие стек.

Атаки на переполнение буфера

До сих пор мы обсуждали, что переполнение буфера может сделать с вашими программами. Мы узнали, как программа может аварийно завершать работу или давать неожиданные результаты из-за переполнения буфера. Ужас не правда ли? Но это не самое худшее.

Бывает еще хуже, когда злоумышленник узнает о переполнении буфера в вашей программе и использует это. Смущенный? Рассмотрим этот пример:

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

Давайте запустим программу с правильным паролем, например, ‘thegeekstuff’:

Это работает, как и ожидалось. Пароли совпадают, права суперпользователя даны.

Но знаете ли вы, что в этой программе существует возможность переполнения буфера. Функция gets() не проверяет границы массива и даже может записывать строку, длина которой превышает размер буфера, в который записывается строка. Теперь вы можете себе представить, что может сделать злоумышленник с такой лазейкой?

Вот пример:

В приведенном выше примере даже после ввода неправильного пароля программа работала так, как если бы вы ввели правильный пароль.

В приведенном выше выводе есть логика. Что сделал злоумышленник, так это то, что он/она предоставил входные данные большей длины, чем может вместить буфер, и при определенной длине входных данных произошло переполнение буфера, которое перезаписало память целочисленного «прохода». Таким образом, несмотря на неправильный пароль, значение «pass» стало отличным от нуля, и, следовательно, злоумышленнику были предоставлены привилегии root.

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

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

Читайте также: