Здравствуйте, дорогие друзья.
В современном цифровом мире системы онлайн-голосования играют ключевую роль в различных областях. Компании полагаются на них, при проведении церемоний награждения, где голосование публики определяет победителей. Музыкальные чарты используют онлайн-голосование, чтобы влиять на продажи альбомов, формируя музыкальную индустрию. Даже самоуправляемые сообщества зависят от голосования для поддержания демократических процессов. Однако обеспечение справедливости и целостности этих систем является сложной задачей.
Методы, используемые для обеспечения справедливости, различны и часто предполагают баланс между удобством использования и безопасностью. В этой статье мы рассмотрим методы манипулирования системами онлайн-голосования, сосредоточив внимание на атаках, которые выходят за рамки классических веб-уязвимостей, и проведем различие между двумя распространенными контекстами безопасности: анонимными опросами и опросами с проверкой подлинности.
Анонимные опросы
В анонимных опросах используются такие идентификаторы, как файлы cookie, IP-адреса или проверка электронной почты/телефона. Однако эти методы не являются надежными. Например, номерами электронной почты или телефонов можно манипулировать, используя такие уловки, как универсальные подстановочные знаки, позволяющие людям голосовать несколько раз несправедливо.
На основе файлов cookie
Большинство анонимных опросов размещают файлы cookie на компьютере пользователей после того, как они проголосовали. Наличие файлов cookie не позволяет им повторно проголосовать, даже после того, как они обновили веб-страницу. Удаление файлов cookie или замена браузеров - самый простой способ обойти этот механизм защиты.
Опрос на основе IP-адреса
В анонимных опросах на основе IP система отслеживает IP-адреса пользователей, чтобы предотвратить многократное голосование с одного и того же устройства или сети. Хотя этот метод может быть более эффективным для пресечения индивидуальных попыток манипулирования голосами, у него также есть ограничения. Пользователи из одной семьи или бизнеса, использующие один и тот же IP-адрес, могут оказаться неспособными голосовать раздельно. Однако решительные люди все равно могут обойти это ограничение, используя такие методы, как использование виртуальных частных сетей (VPN) или подмена IP-адресов, чтобы изменить свои истинные IP-адреса и отдать несколько голосов.
Проверка электронной почты / номера телефона
Не обеспечивая полной анонимности, проверка номера телефона или электронной почты служит простым препятствием для входа в системы онлайн-голосования. В том случае, если избиратель может полагаться только на один адрес электронной почты или номер телефона для целей проверки, может быть использовано несколько обозначений, чтобы обмануть систему, заставив ее думать, что номер телефона или адрес электронной почты ранее не использовались.
Адреса электронной почты могут использовать подстановочные знаки или комментарии для достижения этой цели, например, электронные письма, отправленные на адреса john.smith@gmail.com и john.smith+1@gmail.com , будут приходить в один и тот же почтовый ящик, несмотря на то, что они выглядят по-разному в соответствии с правилом проверки ввода. То же самое можно сделать, добавив дополнительные нули к телефонным номерам, например, +79021337137 становится +079021337137, +0079021337137 и т.д.
Опросы с проверкой подлинности
Опросы с проверкой подлинности добавляют дополнительный уровень безопасности, но все равно могут быть уязвимы для манипуляций. Злоумышленники могут попытаться изменить вес голосования или манипулировать количеством поданных голосов. Например, они могут отправить один и тот же голос в разных форматах, используя лазейки в системе. Эти атаки подрывают целостность процесса голосования и угрожают демократическим принципам, которые стремится поддерживать онлайн-голосование.
Манипулирование весом голосов
Манипулирование весом голосов включает в себя изменение веса, присвоенного элементам голосования в системе онлайн-голосования. Например, если пользователям разрешено выбирать три лучших варианта с различным весом (например, 3 балла за первый вариант, 2 балла за второй и 1 балл за третий), злоумышленники могут перехватить запрос и значительно увеличить вес предпочтительного варианта.
Например:
POST /vote
{item : 14, votes : 3}
В этом запросе пользователь присваивает 3 голоса пункту 14.
POST /vote
{item : 14, votes : 3000}
Напротив, злоумышленник манипулирует запросом, чтобы присвоить 3000 голосов пункту 14, искажая результаты в пользу своего предпочтительного выбора.
Кроме того, злоумышленники могут использовать отрицательные голоса других претендентов, вычитая голоса, а не добавляя их, для дальнейшего манипулирования результатами процесса голосования.
Например:
POST /vote
{item : 15, votes : -3000}
Этот запрос отнимает 3000 голосов от пункта 15, уменьшая его шансы на успех. Эта манипулятивная тактика подчеркивает необходимость принятия надежных мер безопасности для поддержания целостности систем онлайн-голосования.
Манипулирование количеством голосов
Манипулирование количеством голосов может происходить в сценариях, где пользователи могут голосовать только один раз за каждый элемент, но после этой проверки происходит некоторая форма нормализации. Например, рассмотрим ситуацию, когда пользователь хочет проголосовать за пункт 42. Первоначальный запрос может выглядеть следующим образом:
POST /vote
{item : 42}
Если пользователь попытается повторить этот запрос, он столкнется с сообщением об ошибке, указывающим на то, что он уже проголосовал за данный элемент:
{status : 409, message: “You’ve already voted for this item”}
Однако хитрые злоумышленники могут воспользоваться уязвимостями, связанными с приведением типов, чтобы обойти проверку на дублирование, все еще регистрируя действительный голос. Например:
Как показатель:
POST /vote
{item : 42e0}
Как строка:
POST /vote
{item : "42"}
Как явно объявленное положительное число:
POST /vote
{item : "+42"}
В виде массива:
POST /vote
{item : [42]}
В каждом из этих случаев система принимает голосование, несмотря на различия в типе данных, тем самым позволяя злоумышленнику тайно манипулировать процессом голосования. Это подчеркивает важность надежной проверки вводимых данных и строгих проверок на дублирование для обеспечения целостности систем онлайн-голосования.
Если типы данных в настоящее время нормализованы до проверки голосов, или разрешен только один голос для каждой учетной записи, независимо от того, за какой элемент проголосовали, для получения дополнительных голосов может быть использована атака на условия гонки. Это происходит, когда одновременно отправляется несколько запросов, перегружая систему и используя промежуток времени между первоначальной проверкой и окончательной отправкой голосования, что потенциально позволяет отдать несколько голосов из одной учетной записи.
Подведение итогов
В заключение, эффективность и доверие к системам онлайн-голосования зависят от тщательного применения надежных мер безопасности. Приоритезация протоколов тщательной аутентификации, строгих процедур проверки подлинности и ручного контроля имеет важное значение для укрепления целостности процесса голосования и укрепления доверия между участниками.