Сначала вывод. Оставшийся SHA-256 отвечает на вопрос, дёшева ли каждая догадка, если хеш уже унесли. Повторное использование пароля отвечает на другой: гадать вообще не нужно. Вас запирают снаружи межсетевого экрана после того, как кто-то уже внутри изменил исходную учётную запись; алгоритм сам дверь не запирает. После обновления FortiOS до версии с PBKDF2 старый хеш сменится, когда соответствующий администратор успешно войдёт или когда super_admin заново задаст пароль. Чтобы позже можно было откатиться, прежний SHA-256 по умолчанию остаётся в скрытом поле.
Три события, которые новость склеила в одно
По запросам «FortiBleed», «администратора заперли снаружи межсетевого экрана» и «пароль хранится как SHA-256» люди ищут три разных факта, которые уже лежат в одной ленте. Первый: атакующий берёт пароли из прежних утечек или из журналов кражи на рабочих станциях и сразу проверяет их на FortiGate SSL VPN, который всё ещё смотрит в интернет. Второй: если на устройстве остался материал, который вендор называет унаследованным SHA-256 пароля администратора, после выноса хеша его можно перебирать офлайн на кластере GPU. Третий: уже внутри создают новые учётные записи и меняют или удаляют прежних администраторов, поэтому законный человек портал не открывает.
Заметка для тех, кто ещё ведёт учётные записи межсетевого экрана или VPN, и для коллег, которым вечером сказали сменить все пароли администраторов. Это не страница генератора паролей и не обещание, что проверка пароля ответит, попал ли этот FortiGate в FortiBleed. Унести отсюда стоит другое: какой отказ закрывает быстрый хеш, какой — медленное преобразование ключа, какой — отказ от повторного пароля, а какой вообще не про алгоритм, а про удалённую учётную запись. И какие две метки в резервной копии конфигурации можно сверить на своей машине.
Что написано в бюллетене от 6 октября
Совместный бюллетень ФБР и Секретной службы США от 6 октября 2026 года (номер JCSA-20261006-01, пометка TLP:CLEAR) называет эту кампанию FortiBleed. Цель — выставленные в интернет межсетевые экраны Fortinet FortiGate и шлюзы SSL VPN. Бюллетень приводит сверку SOCRadar: больше 86 644 устройств в 194 странах. Там прямо сказано, что атака опирается на повторно использованные или уже утёкшие пароли и на унаследованное хранение SHA-256, чтобы пачками забирать материал аутентификации и подбирать его. Предварительный вывод: атакующие по-прежнему сканируют открытые в интернет межсетевые экраны Fortinet паролями, которые получили раньше.
Тот же документ описывает, что собственный каталог на стороне атакующих когда-то оказался открыт, и цепочку инструментов из-за этого увидели. После того как сканер находит портал FortiGate SSL VPN, против ранее собранных утечек Fortinet и журналов кражи паролей идёт подстановка учётных данных, а также распыление паролей. Выгруженные хеши паролей отправляют на кластер GPU: задания там раздают Hashcat и Hashtopolis, а подбор идёт офлайн. Результат фильтруют, проверяют и заводят на межсетевом экране новую учётную запись администратора. Дальнейший эффект бюллетень описывает как перепродажу первоначального доступа и отмечает, что эту цепочку уже наблюдали у связанных с программами-вымогателями сторон, в том числе у INC/Lynx и Payload. Уровень доказательства этих предложений — «так написано в бюллетене», а не повторная экспертиза в этой заметке.
С формулой «сменили пароль и закрыли тикет» прямо спорит раздел про блокировку снаружи. По первым разборам, если исходную учётную запись удаляют или меняют её пароль, организация обнаруживает, что на устройство Fortinet войти нельзя. Во время вторжения создают учётные записи, которых раньше не было. В части случаев существующие записи удаляют именно затем, чтобы перекрыть доступ самой организации и продолжить движение внутри среды. Поэтому бюллетень пишет: разбор может выйти за обычные патчи и сброс паролей. Этот шаг сопоставлен с T1531 (Account Access Removal) в MITRE ATT&CK.
Здесь нет команд извлечения хеша, словарей и подбора, и нет переписанных из бюллетеня списков адресов и имён учётных записей. Те списки нужны тем, кто уже сверяет журналы. Проверки ниже рассчитаны на устройство, которым вы имеете право управлять, и на открытую документацию вендора. Не скачивайте чужой открытый каталог «чтобы проверить новость» и не вставляйте резервную копию с хешами паролей в тикет или в окно переписки.
Повтор пароля и офлайн-подбор — разные пути
Заголовок легко сводит всё к «пароль был слабый». В бюллетене как минимум два независимых пути, и условия провала у них разные. Подстановка учётных данных и распыление паролей происходят при онлайн-входе. Отправляют уже известный или как раз пробуемый открытый текст. Алгоритм, которым устройство хранит пароль, влияет только на то, как устройство само сравнивает строку. На строку, которая уже есть у атакующего, он не влияет. Если она совпадает с ещё действующей учётной записью VPN или администратора, вход состоялся.
Офлайн-подбор начинается после того, как хеш уже скопировали. Портал больше не стучат: на своей машине перебирают догадки, превращают каждую в хеш и сравнивают со снятым материалом. Цена шага зависит от того, сколько работы схема хранения требует на одну догадку, и от того, насколько велико пространство поиска самого пароля. SHA-256 — быстрый хеш для контроля целостности: один и тот же вход всегда даёт один и тот же выход, и вычисление заканчивается за один проход. Он годится, чтобы сверить файл. Он плохо подходит на роль единственной меры, которая заставляет каждую догадку пароля стоить заметно. Кластер GPU как раз и арендуют, чтобы гонять такой однопроходный расчёт параллельно. Hashtopolis в бюллетене — способ раздать задачи подбора по нескольким машинам, а не новый алгоритм шифрования.
| Путь | Что уже есть у атакующего | После смены хранения на PBKDF2 |
|---|---|---|
| Подстановка учётных данных / распыление | Открытый текст или короткий список частых паролей | Открытый текст по-прежнему входит; медленное преобразование не останавливает уже известный пароль |
| Офлайн-подбор | Хеш пароля, скопированный с устройства | Каждая догадка дорожает; короткий и повторно использованный пароль всё ещё могут угадать |
| Блокировка снаружи | Уже открытая административная сессия | Смена алгоритма не мешает изменить или удалить исходную учётную запись |
Третья строка нужна, чтобы остановить частую подмену: фразу «мы перешли на более медленный хеш» читают как «администратора больше не запрут снаружи». Блокировка происходит после того, как аутентификация уже прошла. Ей нужно право менять конфигурацию, а не то, насколько быстро считается SHA-256. Обратное тоже верно. Один сброс пароля без того, чтобы убрать административный доступ из интернета и включить устойчивую к фишингу многофакторную аутентификацию, закрывает только часть списка из бюллетеня. ФБР и Секретная служба ставят в одну группу мер сужение административного доступа, завершение текущих сессий управления и VPN, сброс паролей, включение устойчивой к фишингу многофакторной аутентификации, сверку неизвестных учётных записей и подтверждение PBKDF2.
Что доказывают SHA-256 и PBKDF2
Шпаргалка OWASP по хранению паролей выносит хранение пароля из схемы «посчитать быстрый хеш один раз»: нужно медленное преобразование ключа с уникальной солью, например Argon2id, bcrypt, scrypt или PBKDF2 с достаточным числом итераций. Соль не даёт заранее посчитанной таблице переехать от одного человека к другому. Итерации или параметр, который требует много памяти, заставляют каждую догадку повторять большой объём работы. Это разные вопросы. Если соль есть, но SHA-256 всё ещё считается один раз, радужная таблица перестаёт работать, а полный перебор короткого пароля на GPU остаётся дешёвым. Если преобразование медленное, но соль у всех одна, одну таблицу всё ещё можно наложить на большую пачку хешей. Бюллетень не описывает старую схему Fortinet как «совсем без соли». Эта заметка тоже не дописывает деталь, которой в источнике нет. В предложение можно поставить только то сравнение, которое вендор потом дал сам.
Техническая заметка Fortinet о хеше пароля администратора пишет: начиная с FortiOS 7.2.11, 7.4.8 и 7.6.1 хеш, которым в конфигурации хранят учётные данные администратора межсетевого экрана, сменился с SHA256 на PBKDF2. В заметке SH2 означает SHA256, а PB2 — PBKDF2. На версиях ниже этих трёх точек та же заметка по-прежнему помечает функцию хеша как SHA256. Примечания к выпуску 7.2.11 описывают новую схему как PBKDF2 со случайной солью: так повышают безопасность хранения пароля локального системного администратора. Это не то же самое, что надпись «уже зашифровано» на странице. И SHA-256, и PBKDF2 здесь — одностороннее преобразование, а не симметричный ключ, которым пароль упаковали в обратимый шифротекст. Метка SH2 не читается как «на диске открытый текст». Метка PB2 не читается как «утёкший открытый текст уже не страшен».
У PBKDF2 нет одного на весь мир числа итераций, после которого «уже достаточно медленно». В открытой документации вендора названы алгоритм, соль и метки SH2 / PB2 в конфигурации. Целого числа итераций, которое можно переписать в тикет, в этих заметках нет. В журнал честнее записать «в этой копии учётная запись уже PB2», чем «значит, GPU её не подберёт». Короткий пароль и пароль, скопированный из старой утечки, при ограниченном числе итераций остаётся дешёвой догадкой. Длинный случайный пароль, разный у каждой учётной записи, увеличивает пространство поиска. Он не закрывает административный интерфейс, открытый в интернет.
Обновление не меняет старый хеш до входа
В технической заметке легче всего пропустить одну фразу: при обновлении с более ранней версии пароль администратора по-прежнему хранится как SHA256, пока именно этот администратор успешно не войдёт уже на новой прошивке. Чтобы все локальные администраторы перешли на PBKDF2, каждому нужно войти хотя бы один раз. Кто ещё не входил, того обновляет вручную super_admin. Номер версии прошивки в заявке на изменение не доказывает, что в конфигурации больше нет SH2.
Даже когда текущее поле пароля уже стало PBKDF2, старый хеш сам не исчезает. В заметке сказано: ради обратной совместимости прежний SHA256 по умолчанию остаётся в скрытой настройке old-password. Обычный интерфейс после входа этот пункт не показывает. В резервной копии конфигурации, которую выгрузил super_admin, его видно. Пока этот старый материал лежит в копии, цель для офлайн-подбора тоже лежит там. Атакующему не нужно ждать, пока вы доведёте обновление прошивки, чтобы его забрать. Если сам файл копии ушёл в облачный диск, тикет или переписку, это ещё одна копия SH2.
Стереть SH2 из old-password можно отдельным переключателем, а не побочным эффектом обновления. На FortiOS 7.2.x и 7.4.x это настройка login-lockout-upon-downgrade. В более поздней документации другое имя — login-lockout-upon-weaker-encryption. При включении есть предупреждение, которое нужно подтвердить. В примечаниях к выпуску сказано: PBKDF2 доступен с 7.2.11, 7.4.8 и 7.6.1. Если потом откатиться на версию, которая этот хеш не поддерживает, локальные администраторы войти не смогут. Путь вроде «с 7.2.11 на 7.4.7», где номер версии больше, а PBKDF2 ещё нет, тоже попадает под этот замок. Администраторы, которые входят через LDAP, RADIUS или SAML, этот набор локальных хешей не используют, и откатный замок их не касается. Метки SH2 и PB2 относятся к локальным учётным записям.
Поэтому «включить очистку старого хеша» и «сегодня ночью, возможно, ещё откатим прошивку» противоречат друг другу. Если в день инцидента ещё не решено, на какой версии с PBKDF2 прошивка останется, не открывайте этот замок только ради того, чтобы стереть SH2. Сначала сохраните путь, по которому на устройство ещё можно войти. Старый материал уберите после того, как откат больше не планируется. Рекомендация бюллетеня «подтвердить PBKDF2 и убрать более слабый унаследованный хеш» указывает именно на этот фрагмент документации вендора. Это не синоним одной смены пароля на портале.
Вас запирают уже после успешного входа
Первая реакция на новость часто такая: сбросить все пароли администраторов. Сброс делает недействительным старый открытый текст, которым ещё не успели воспользоваться, и — если вы всё ещё входите — подталкивает хранение от SH2 к PB2. Он не разбирает случай, когда на вашу учётную запись уже вошли и изменили саму запись. Бюллетень описывает удаление или смену пароля исходной учётной записи, из-за чего законный администратор войти не может, и одновременное создание записей, которых раньше не было, чтобы сохранить свой доступ. Ошибка аутентификации на портале VPN в этот момент доказывает только одно: устройство больше не принимает этот набор учётных данных. Она не доказывает, что новой учётной записи у атакующего нет.
В тикете поэтому две колонки. Первая — пароль и хеш: у каждого локального администратора сейчас SH2 или PB2, есть ли в копии old-password, и не совпадает ли новый пароль с почтой, облачной консолью и другими VPN. Вторая — список учётных записей: появились ли локальные администраторы, которых до бюллетеня не было, завершены ли текущие сессии, и открыт ли административный интерфейс в интернет для любого адреса. Устойчивая к фишингу многофакторная аутентификация делает так, что одного пароля недостаточно, чтобы открыть удалённое управление и VPN. Она не удаляет новую учётную запись, уже записанную в конфигурацию, и не забирает уже скопированный старый хеш из очереди GPU.
Фразу про программы-вымогатели тоже не стоит забегать вперёд. Бюллетень говорит, что первичный доступ передавали дальше, а не что каждый межсетевой экран, на котором ещё используется SHA-256, сегодня зашифруют. Устройство, на которое вы уже не входите, разбирайте как устройство с неподтверждённой целостностью: изолируйте, сверьте конфигурацию и учётные записи, и только потом говорите о восстановлении. На устройство, куда вход ещё есть, сначала уберите административный доступ из интернета, завершите сессии, переведите локальных администраторов, которые всё ещё на SH2, на PB2 и храните новый пароль отдельно. В обоих случаях не пишите одну и ту же новую строку в объявление для группы.
Сверьте метки в копии, а не запускайте подбор
Номер версии, заголовок новости и слова «уже обновили» не заменяют метку хеша в этой конфигурации. Четыре шага ниже предполагают, что вы уже уполномоченный администратор этого устройства. Не открывайте копию на компьютере, которому не доверяете, и не загружайте её в генеративный диалог с просьбой «посмотри, нет ли SH2».
- Сверьте прошивку с тремя точками: 7.2.11, 7.4.8 и 7.6.1. Ниже точки своей ветки документация вендора по-прежнему помечает хеш локального администратора как SHA256. Версия выше точки значит только то, что новый вход может записаться как
PB2. Она не значит, что старые учётные записи уже записаны. - Выгрузите резервную копию конфигурации от
super_adminи на своей машине найдитеSH2,PB2иold-password. Запись «в этой копии старого SHA-256 не видно» можно сделать только если у учётной записи есть лишьPB2и нетold-password. То, что скрытое поле не видно в интерфейсе, не равно удалению старого хеша. - Выпишите локальных администраторов и отметьте тех, кто после обновления ни разу не входил и чей пароль
super_adminне задавал заново. В документации сказано, что такие записи остаются на SHA256, пока не случится вход или сброс. Учётные записи с удалённой аутентификацией не смешивайте с этим выводом про локальные хеши. - Если думаете включить
login-lockout-upon-downgrade(илиlogin-lockout-upon-weaker-encryptionиз документации), сначала прочитайте предупреждение про откатный замок в примечаниях к выпуску и убедитесь, что в ближайшее время не будет отката на версию без PBKDF2. После включения локальные администраторы, у которых остался только PBKDF2, на таком откате войти не смогут.
Эти четыре шага отвечают на вопрос, как эта конфигурация хранит пароль администратора сейчас. Они не отвечают, есть ли более ранняя копия в очереди GPU. Когда хеш уже покинул устройство, смена хранения на вашей машине не отменяет уже снятую копию. Отменить её можно сменой самого пароля и проверкой, что материал нового пароля больше не лежит как SH2 в old-password. Закрыт ли административный доступ из интернета, видно по политике интерфейса, а не по префиксу хеша.
Четыре слишком широких вывода из бюллетеня
Первый: «прошивка уже 7.2.11 или новее» читают как «SHA-256 в конфигурации больше нет». Документация привязывает преобразование к успешному входу этого администратора или к сбросу пароля и по умолчанию оставляет старый хеш в скрытом поле. Номер версии — точка старта, а не отметка о завершении.
Второй: PBKDF2 читают как «повторно использованные пароли перестали работать». Медленное преобразование поднимает цену одной офлайн-догадки. Открытый текст, уже взятый с другого сайта, из старой утечки или из журнала кражи, при входе отправляют как есть. Разные пароли в разных местах закрывают именно этот путь. Они не заменяют свёрнутый административный интерфейс.
Третий: «я сменил пароль» читают как «снаружи меня уже не запрут» или как «уже запертого можно выпустить тем же сбросом». Смена пароля возможна, пока вы ещё можете отправить это изменение. Если учётную запись удалили или пароль заменили, отказ на портале значит только то, что старые данные больше не принимают. Новый пароль сам не удаляет администратора, которого создали вместо вас.
Четвёртый: «этой строки нет в локальном списке слабых паролей» читают как «в очереди хешей FortiBleed её нет» или как «этот межсетевой экран уже на PBKDF2». Сверка со списком происходит во вкладке браузера. Метка хеша устройства — в резервной копии конфигурации. Эти два свидетельства друг друга не заверяют. Промах по списку всё ещё может быть длинным паролем, который просто повторили в нескольких местах. Попадание в список значит только, что строка слишком частая, и само по себе не доказывает, что этот FortiGate уже взломан.
Частые вопросы
После обновления до FortiOS 7.2.11 хеш SHA-256 исчезает сразу?
Нет. В документации вендора сказано: начиная с 7.2.11, 7.4.8 и 7.6.1 пароль локального администратора переходит на PBKDF2, но после обновления остаётся SHA256, пока соответствующий администратор успешно не войдёт или пока super_admin не задаст пароль заново. Старый хеш по умолчанию ещё лежит в скрытом old-password. Его видно в резервной копии конфигурации от super_admin и не видно в обычном интерфейсе управления. Чтобы убрать старый хеш, нужно отдельно включить политику вроде откатного замка и принять, что на версии без PBKDF2 локальные администраторы войти не смогут.
После перехода на PBKDF2 украденный открытый текст ещё работает?
Да. PBKDF2 повышает цену случая «есть только хеш, каждую догадку нужно считать». Если открытый текст уже взят из старой утечки или из журнала кражи на этой машине, при входе отправляют эту строку напрямую, хеш заново не подбирают. Повтор пароля между почтой, VPN и учётной записью администратора медленное преобразование не превращает в неверную строку.
Если вас уже заперли снаружи, поможет ли ещё одна смена пароля?
Та смена на портале возможна, только пока вы ещё входите. В бюллетене сказано: исходную учётную запись могут удалить или сменить её пароль, чтобы законный администратор не вошёл, и одновременно создать запись, которой раньше не было. Такой случай разбирают как «на устройство не войти»: изоляция и сверка конфигурации, а не «ещё один сброс пароля, и инцидент закрыт». Смена пароля также не заменяет старый хеш, который ещё не преобразован в прошивке или всё ещё лежит в old-password.
Докажет ли локальный список слабых паролей, что хеш этого экрана не подобрали?
Нет. Локальный список отвечает только на то, совпала ли эта строка с публичным списком высокой частоты в текущей вкладке и с несколькими его деформациями. Он не запрашивает FortiBleed и не читает конфигурацию межсетевого экрана. Промах не доказывает, что пароль никогда не утекал, и тем более не доказывает, что хеш на устройстве уже заменён на PBKDF2. Попадание значит только, что строка слишком частая: её стоит сменить и больше не повторять в других местах.
Новый пароль оставьте на этой машине
После смены хранения с SH2 на PB2 всё равно нужна строка пароля администратора, которой больше нигде нет. Этот шаг можно сделать во вкладке генератора паролей FastPwd. Регистрация не нужна, хранилища паролей на сайте нет. В случайном режиме источник — crypto.getRandomValues, длина 6–128 символов, по умолчанию 16; короче 8 страница предупреждает, что защита слабее. Результат по умолчанию не уходит на сервер. Генератор не входит на ваш межсетевой экран, не меняет SH2 на PB2 и не закрывает административный интерфейс в интернете. Он даёт строку, которую не нужно сочинять из «админ / название компании / время года», чтобы заменить локальную учётную запись, в которую вы ещё входите.
Откройте Network в инструментах разработчика, включите сохранение журнала и найдите новую строку целиком в строке запроса и в теле. В рабочих запросах её быть не должно. Этот шаг доказывает, что в этот раз строка не ушла из вкладки как тело HTTP. Он не доказывает, что вы потом не вставили её в мессенджер. Если браузер спросит, сохранить ли пароль, откажитесь. Список уже сохранённых паролей браузера — другая дверь, к PB2 в FortiOS она не относится. Случайный пароль из 16 символов, взятый из больших и малых букв, цифр и знаков, по пространству поиска далеко шире коротких слов, которыми обычно распыляют пароли. Не превращайте это предложение в «значит, SHA-256 абсолютно не посчитать» и не в «значит, административный интерфейс можно и дальше держать открытым в интернет».
Если хотите увидеть, похожа ли строка на слабый пароль из публичного списка высокой частоты, возьмите другую, одноразовую тестовую строку и сверьте её в проверке пароля. Проверяемый пароль не уходит на сервер. Сверка идёт по публичному списку, который скачивается вместе со страницей, а не по Have I Been Pwned и не по базе хешей FortiBleed. Промах не доказывает, что строку нигде в сети не видели. Не вставляйте в поле проверки пароль, который вот-вот включите на межсетевом экране, и не несите туда резервную копию конфигурации.
Если новый пароль один раз нужно отдать коллеге на смене, не пишите его в сообщение группы или в тело тикета, которое останется на сервере. Откройте самоуничтожающуюся ссылку: сервер временно хранит только шифротекст, ключ стоит в ссылке после #, создавать и читать можно без аккаунта. Вид ссылки — s.html?id={id}#{key}. Этот канал отвечает на вопрос «как передать один раз», а не на вопрос «как починить межсетевой экран». Если в резервной копии есть SH2 или old-password, не кладите файл целиком ни в эту ссылку, ни в облачный диск. Копия должна остаться на машине, которой вы уже доверяете, и дальше жить по вашим правилам хранения конфигурации. Снимок экрана и пересылка полной ссылки оставляют копию, до которой «после прочтения» уже не достаёт.
Что ещё почитать
Локальный список слабых паролей ловит частые слабые строки и не заменяет поиск по всей сети или базу хешей конкретного инцидента: Что доказывает локальный список слабых паролей и почему это не поиск по всей сети. Пароль стоит собирать криптографически стойким генератором, а не Math.random: Почему пароль из Math.random может выглядеть достаточно хаотичным, но не быть криптографически стойким. Когда одноразовый ключ кладут после решётки в ссылке, сервер по умолчанию этот фрагмент не получает: Почему после решётки в URL можно класть ключ и когда эта защита ломается.