Вредительские атаки на Google Таблицы: как формула разрушила нашу инициативу, и что делать, чтобы вам этого избежать

Вредительские атаки на Google Таблицы: как формула разрушила нашу инициативу, и что делать, чтобы вам этого избежать

Google Таблицы — это не просто инструмент для расчетов. Для многих сообществ и бизнес-команд они становятся цифровым рабочим пространством, где хранятся идеи, решения и стратегии. Но что, если в один момент всё это превратится в бесполезный набор ошибок?

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

Здесь и далее по тексту “вредитель” - анонимный пользователь, который намерено из недоброжелательных побуждений стремится нарушить вашу деятельность.

Формула-бомба: как это работает

Пример окна с ошибкой

Всё началось с того, что в ячейку Таблицы “вредитель” ввел формулу, которая генерировала стек вычислений, выходящий за возможности Таблиц Гугл. Наш “вредитель” оказался довольно глупым пользователем. Его убогие попытки повторить “чудо” даже обсуждать не стоит. Приведу более элегантную и понятную формулу, например, =SEQUENCE(9^9;9). Почему “например”? Потому что таких формул несколько. И одну из них даже удалось создать Алексею 𝕆𝕕𝕪𝕤𝕤𝕖𝕦𝕤 админу нашего чата. На первый взгляд, это обычная формула, генерирующая последовательность чисел. Однако подвох кроется в параметрах: 9^9 — это 387 420 489 строк, а умножьте это на 9 столбцов! Вуаля — Таблица пытается создать 3,5 миллиарда ячеек!

Google Таблицы не рассчитаны на такие нагрузки. Платформа автоматически пересчитывает формулы, и когда система сталкивается с подобным “взрывом” данных, она просто отказывает.

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

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

В консоли при этом будет: Exception: Class$obf_mc_0: Error: Class$obf_1001: Maximum collection size (10000000) exceeded: too many cells during calc.

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

Кстати, восстановление из резервной копии недоступно.

Последствия: почему это не просто “баг”

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

  • Нарушение рабочих процессов: Как в нашем проекте — проект с решениями задач пришлось закрыть, так как дальнейшее использование его в таком виде невозможно - нашего “вредителя” пока еще не хватил удар.
  • Шантаж: Угроза повторной атаки, если жертва не выполнит условия.
  • Подмена ситуации: например, неработающая Таблица может стать “причиной” или “основанием” для срыва презентации или выступления.

Для бизнеса это не просто неудобство. Простой команды, потеря доверия клиентов, репутационные риски — всё это ударяет по финансам. А если Таблица содержала уникальные данные, и нет решения, то последствия становятся необратимыми.

Как мы пытались спасти Таблицу

Google Chrome DevTools console

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

  • Хитрость с фидбеком: Если нажать на ссылку “Помогите нам стать лучше” в диалогов окне ошибки и закрыть окно отправки отзыва, Таблица частично доступна: можно просмотреть формулы и даже нажать меню, но вызвать его не удастся. Но это может позволить вам найти зловредную формулу.
  • Chrome DevTools: Во вкладке Network можно установить ограничение скорости (Throttling → Slow 3G). Это увеличивает время загрузки и, если знать, в какой ячейке проблема, можно успеть ее отредактировать.
  • В мобильной версии Таблиц Гугл для iPhone эта проблема не закрывает приложение и можно попытаться найти проблему так.

Спасение данных: инструкция для отчаявшихся

Если вы столкнулись с подобной атакой, вот что можно сделать:

  • Без паники, данные не пропали
  • Первым делом закройте общий доступ к Таблице - кто-то вам вредит
  • Начните искать подозрительные формулы и удалите их, как делали это мы

Но лучшее лечение — профилактика.

Как защититься: уроки, которые мы вынесли

Забудьте об анонимном доступе. Если таблица открыта для всех, рано или поздно найдется тот, кто захочет её сломать. Ограничьте права:

  • Редакторы — только доверенные лица.
  • Комментаторы или Зрители — для всех остальных. И то, комментаторы могут очень сильно портить настроение спамом из комментариев.
  • Резервные копии — ваше спасение. Регулярно сохраняйте реальную копию Таблицы. Да, ссылка на данные будет другая, но вам не придется восстанавливать их. Ваш вредитель может оказаться не таким тупым как наш
  • Контролируйте формулы. Не позволяйте случайным пользователям вводить сложные функции. Если это необходимо, создайте инструкции и предупреждения.
  • Двухфакторная аутентификация. Защитите аккаунты редакторов от взлома.
  • Мониторинг изменений. Проверяйте историю правок, если какой-то пользователь ведет себя странно, например, пытается массово вставить хаотичные формулы.

Почему Google не придет на помощь

Помогите нам улучшить

Тут я привожу мое личное мнение

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

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

Заключение: не повторяйте наших ошибок

Наш проект — помощь всем нуждающимся бесплатно. А история с ним — это предупреждение. Google Таблицы кажутся безобидными, но их уязвимости могут стать оружием в руках злоумышленников. Не надейтесь на “авось”:

  • Закрывайте анонимный доступ.
  • Настройте резервное копирование.
  • Учите команду основам безопасности.

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

P.S. Если вы уже столкнулись с атакой — не отчаивайтесь. Даже в казалось бы мертвой Таблице можно найти следы вредной формулы. Главное — действовать и не паниковать.

P.P.S. Нужно пробовать больше API. Но через скрипты Таблицу никак не потрогать.

Полезные ссылки