Mac заблокировал вставку в Terminal: что означает предупреждение

macOSTahoe ·
Mac заблокировал вставку в Terminal: что означает предупреждение

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

Вам сказали вставить команду в Terminal. Возможно, страница поддержки уверяла, что это решит вашу проблему. Возможно, окно проверки утверждало, что так вы докажете, что вы человек. Возможно, страница загрузки обещала, что это самый быстрый способ что-то установить. Вы скопировали команду, открыли Terminal, нажали Command-V — и Mac остановил вас предупреждением системы безопасности.

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

Эта статья поможет понять, в какой из двух ситуаций находитесь именно вы. В ней разобраны все три механизма защиты, которые добавила Apple, что на самом деле означает каждое предупреждение, можно ли его обойти и чего этот обход реально стоит, почему предупреждение появилось у вас, а у вашего друга-разработчика — никогда, что происходит в сторонних терминалах вроде iTerm2 и Ghostty, и правило принятия решения, которое можно применить примерно за тридцать секунд, не разбираясь в синтаксисе командной оболочки. Если вы уже вставили и запустили команду, ниже есть спокойный пошаговый план действий. Начните с него, а за объяснениями вернётесь позже.

Ключевые выводы

  • Защит три, а не одна. Документация Apple Platform Security описывает Terminal Paste Protection, Pasteboard Command Blocking и сканирование AppleScript как отдельные механизмы, появившиеся в macOS 26.4 и новее. Понимание того, какой именно сработал, подсказывает, насколько серьёзно к этому отнестись.
  • Предупреждения с возможностью обхода и без неё означают совершенно разные вещи. Эвристическое совпадение оставляет вам путь дальше. Совпадение с сигнатурой известного вредоносного ПО — нет, как и скрипты, выполняемые из памяти. Если Mac не даёт вам кнопки «продолжить», это не баг, который нужно обходить.
  • Сторонние терминалы теряют предупреждение, но сохраняют подстраховку. Apple документирует предупреждение о вставке как функцию приложения Terminal, тогда как блокировка команд из буфера обмена явным образом распространяется на любой эмулятор терминала, включая сторонние приложения, поскольку работает на уровне XProtect с деревом порождённых процессов.
  • Атака, ради которой создавались эти защиты, показывает разным посетителям разные страницы. Исследование Microsoft Threat Intelligence, опубликованное 2026-08-05, описало операцию ClickFix против macOS, страницы которой снимают отпечаток с каждого посетителя и охотятся на исследователей. Это значит, что самостоятельная проверка ссылки ничего не говорит о том, что показали кому-то другому.
  • На кону весь ваш набор учётных данных, а не один пароль. Исследователи Huntress описали написанный на Go стилер для macOS, который нацелен на базы паролей браузеров, файлы cookie и Apple Keychain, с функцией вывода криптовалюты, настраиваемой вплоть до 1% баланса, чтобы кража оставалась незаметной. Один Mac под наблюдением был скомпрометирован примерно за три месяца до того, как это кто-то заметил.

Три защиты и та, на которую вы только что наткнулись

Страница документации Apple Platform Security, посвящённая защите Terminal и скриптов, описывает три механизма, появившихся в macOS 26.4 и новее. О них часто говорят так, будто это одна функция, и это порождает много путаницы, потому что ведут они себя по-разному, охватывают разное ПО и обойти можно только некоторые из них.

Прочитайте этот раздел первым. Как только вы поймёте, с каким из трёх механизмов столкнулись, всё остальное в статье станет проще применить.

Защита 1: Terminal Paste Protection

Именно её большинство людей имеют в виду, когда говорят, что Mac заблокировал вставку. Это диалог с предупреждением, который показывает приложение Terminal от Apple, когда вы вставляете в него текст из категории приложений-источников, обычно используемых злоумышленниками для доставки команды: веб-браузеры, Messages, Mail, Preview и мессенджеры.

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

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

Защита 2: Pasteboard Command Blocking

Эта работает на совершенно другом уровне, и именно её чаще всего недооценивают в публикациях.

В документации Apple сказано: когда пользователь вставляет текст в любой эмулятор терминала, включая сторонние приложения-терминалы, XProtect отслеживает порождённое дерево процессов и анализирует его поведение. Дальше происходят две вещи. Сетевые артефакты сверяются с сервисом Safe Browsing от Apple, и процессы, совпавшие с известными вредоносными источниками, блокируются. Отдельно поведенческие шаблоны сопоставляются с известными техниками вредоносного ПО.

Обратите внимание, от чего это описание не зависит. Оно не зависит от того, показывает ли терминал диалог. Не зависит от того, принадлежит ли терминал Apple. Не зависит от того, предупредили вас или нет. Проверка происходит после запуска команды — по тому, что делают порождённые процессы и куда они обращаются. Именно поэтому эта защита может охватывать ПО, которое Apple не писала.

Защита 3: Сканирование AppleScript и JXA

Третья защита встраивает XProtect во фреймворк OpenScripting — ту часть macOS, которая выполняет AppleScript и JavaScript for Automation, обычно сокращаемый до JXA. Скрипты на обоих языках сканируются, и совпадение с известной вредоносной сигнатурой блокирует выполнение и уведомляет пользователя.

Здесь есть важная асимметрия, и Apple формулирует её прямо: пользователи могут обойти блокировку для скриптов из файлов, но не могут обойти блокировку скриптов, выполняемых из памяти. Это различие не произвольно. Скрипт, лежащий в файле, можно открыть и прочитать перед принятием решения. Скрипт, запущенный прямо из памяти, без файла на диске, который можно изучить, — это шаблон, прочно связанный с вредоносным ПО, старающимся не оставить следов, и macOS просто не позволит вам его проигнорировать.

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

Как соотнести увиденное предупреждение с сработавшей защитой

Быстрый ориентир:

  • Вы вставили текст в Terminal от Apple и получили предупреждение до того, как что-либо запустилось, с возможностью продолжить: Terminal Paste Protection.
  • Вы вставили, что-то запустилось, а затем было остановлено — возможно, в стороннем терминале: Pasteboard Command Blocking.
  • В предупреждении упоминался скрипт, а не вставка: сканирование AppleScript, и возможность обхода зависит от того, был ли этот скрипт файлом или выполнялся из памяти.

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

Расшифровка каждого предупреждения

Сначала — замечание о формулировках. Apple ведёт пользовательскую статью поддержки под названием If your Mac blocks a Terminal command paste or script по адресу support.apple.com/en-us/127377, и именно эта страница является каноническим источником точных строк, которые показывает ваш Mac. Мне не удалось напрямую прочитать текст этой страницы при подготовке статьи, поэтому заголовки предупреждений ниже приводятся как формулировки, о которых сообщали в прессе, а не как дословные цитаты Apple. Если увиденное вами немного отличается, доверяйте своему экрану и статье Apple, а не любому пересказу из вторых рук, включая этот.

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

Possible malware, Paste blocked (Возможно, вредоносное ПО, вставка заблокирована)

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

Сообщается, что это предупреждение предлагает вариант Paste Anyway (Всё равно вставить), при этом Apple предупреждает, что продолжение всё равно может подвергнуть риску ваш Mac и вашу конфиденциальность.

Будьте честны с собой в том, что означает эта кнопка. Это не кнопка «macOS ошиблась». Это кнопка «я беру ответственность на себя». Поскольку совпадение эвристическое, а не сигнатурное, ложные срабатывания действительно возможны, и разработчик, вставляющий необычную, но легитимную команду, вполне может на неё наткнуться. Именно для этого обход и существует. Но то же свойство, которое делает возможными ложные срабатывания, означает, что предупреждение не говорит ничего успокаивающего о самой команде. Система отметила шаблон. Суждение теперь должны вынести вы, и правило принятия решения ниже в статье написано ровно для этого момента.

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

Malware Detected, Paste Blocked (Обнаружено вредоносное ПО, вставка заблокирована)

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

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

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

Malicious Script Blocked (Вредоносный скрипт заблокирован)

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

Можно ли обойти это предупреждение, зависит от того, где живёт скрипт, и Apple документирует правило чётко. Скрипт из файла пользователь обойти может. Скрипт, выполняемый из памяти, — нет, никак.

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

Что на самом деле делает обход

Обход не помечает команду как безопасную. Он не учит macOS считать вас доверенным пользователем. Он не освобождает вас от остальных защит. Конкретно: нажатие Paste Anyway в предупреждении Terminal не отключает блокировку команд из буфера обмена — это отдельный механизм, работающий на уровне XProtect после запуска процесса. Вы можете обойти предупреждение и всё равно получить блокировку порождённого процесса мгновением позже, если он обратится к чему-то заведомо вредоносному.

Такая многослойность — это фича, а не избыточность. Каждая защита исходит из того, что остальные могут не сработать.

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

Это самый частый источник путаницы вокруг предупреждения о вставке, и ответ на него задокументирован, а не таинственен.

В документации Apple Platform Security указано, что Terminal Paste Protection срабатывает, только когда выполняются все следующие условия:

  • Пользователь не открывал приложение Terminal более 30 дней.
  • В системе не обнаружены распространённые инструменты разработчика.
  • Вставка происходит из определённого приложения.

Есть также 24-часовой льготный период после первичной настройки, чтобы совершенно новый Mac в процессе конфигурации не заваливал предупреждениями человека, который вполне законно настраивает своё окружение.

Перечитайте эти условия и обратите внимание, что они описывают. Они не описывают опасную команду. Они описывают человека.

Условие 30 дней

Если вы регулярно пользуетесь Terminal, эта защита для вас фактически невидима, потому что первое условие никогда не выполняется. Достаточно открыть Terminal хотя бы раз в течение любого 30-дневного окна, чтобы остаться вне зоны срабатывания. Именно поэтому разработчики, системные администраторы и все, кто живёт в командной оболочке, могут за всю жизнь Mac ни разу не увидеть этот диалог.

Если вы открываете Terminal примерно никогда, а сегодня открыли его, потому что вам так велели, — вы ровно тот человек, которого описывает это условие.

Условие о наличии инструментов разработчика

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

Это условие заодно оказывается честным ответом разработчикам, которых предупреждение раздражает, и мы вернёмся к нему в разделе устранения неполадок, потому что решение не такое, о каком обычно спрашивают.

Условие о приложении-источнике

Третье условие касается того, откуда пришёл вставляемый текст. Apple описывает защиту как охватывающую вставки из типичных векторов атаки: веб-браузеры, Messages, Mail, Preview и мессенджеры. Текст, скопированный из документа, который вы сами написали, или из другого окна терминала — это не то же самое, что текст, который положила вам в буфер обмена веб-страница или сообщение от незнакомца.

Различие содержательное, потому что доставка ClickFix почти всегда идёт через один из этих каналов. Команде нужно как-то до вас добраться, и добирается она через приложения, которыми вы читаете написанное другими людьми.

Почему такое нацеливание — правильный дизайн

Сложите три условия вместе, и получится фильтр, который срабатывает для человека, обычно не использующего Terminal, не имеющего окружения разработки и только что скопировавшего команду из браузера или сообщения. Это не описание невезучего продвинутого пользователя. Это описание жертвы ClickFix, причём с высокой точностью.

Это же объясняет то, что многих раздражает: два пользователя могут вставить одну и ту же команду, а предупреждение получит только один. В самой команде ничего не изменилось. Оценка касается обстоятельств, а не только содержимого. Если вы хотите понять, для чего Terminal вообще нужен помимо этого одного предупреждения, наше полное руководство по Terminal в macOS Tahoe — разумная точка старта, и, честно говоря, стать человеком, который пользуется Terminal осознанно, — куда лучшая долгосрочная защита, чем любое диалоговое окно.

Концептуальная иллюстрация диалога с предупреждением системы безопасности

Вопрос про iTerm2, Warp и Ghostty

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

Распространённый вывод такой: это защищает только Terminal от Apple, значит, если я пользуюсь iTerm2, мне не достаётся ничего. Это наполовину верно и наполовину неверно, и данное различие — вероятно, самое полезное в этой статье.

Предупреждение о вставке специфично для приложения Terminal от Apple. Документация Apple описывает Terminal Paste Protection как предупреждение, показываемое, когда пользователь вставляет текст в Terminal. iTerm2, Alacritty, Warp, Ghostty, Kitty, WezTerm и всё остальное этот диалог вам не покажут, если только их собственные разработчики не реализуют что-то эквивалентное. Если вы живёте в iTerm2, не ждите предупреждения и не трактуйте его отсутствие как сигнал «всё чисто».

Блокировка команд из буфера обмена не специфична для Terminal от Apple. Формулировка Apple на этот счёт однозначна: когда пользователь вставляет текст в любой эмулятор терминала, включая сторонние приложения-терминалы, XProtect отслеживает порождённое дерево процессов и анализирует его поведение. Он смотрит не на пользовательский интерфейс терминала. Он смотрит на то, что реально делает процесс, порождённый вставкой, сверяя сетевые артефакты с сервисом Safe Browsing от Apple и оценивая поведение по известным техникам вредоносного ПО.

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

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

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

Ничто из этого не является упрёком в адрес iTerm2 или Ghostty. Это отличные инструменты, и их пользователи — как правило, та самая аудитория разработчиков, которую предупреждение о вставке и так исключило бы по условию о наличии инструментов разработки. Просто профиль защиты отличается от того, что многие предполагают, причём в обе стороны.

Что такое ClickFix на самом деле

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

Схема проста. Веб-страница или сообщение убеждает вас скопировать команду и вставить её в Terminal. Подача почти всегда одна из этих:

  • Фальшивый шаг проверки. Вы видите нечто оформленное как CAPTCHA или проверка «я не робот», но вместо кликов по картинкам со светофорами вам предлагают завершить проверку, выполнив команду. Это самый распространённый вариант, и работает он потому, что проверочные испытания приучили всех выполнять странные инструкции не задавая вопросов.
  • Фальшивая ошибка с приложенным решением. Страница сообщает, что не хватает компонента, устарел кодек или не удалось загрузить драйвер, и услужливо даёт команду, которая это исправляет. Ошибка выдумана. Исправление и есть полезная нагрузка.
  • Фальшивый установщик. Страница загрузки настоящего, нужного вам ПО подаёт команду как быстрый способ установки, часто рядом с обычной на вид кнопкой скачивания.
  • Фальшивое обновление приложения для встреч. Вы нажимаете ссылку на встречу, получаете сообщение, что приложению для конференций нужно обновление, прежде чем вы сможете подключиться, и вам дают команду для запуска. Нехватка времени перед встречей, на которую вы уже опаздываете, делает остальное.

Почему это работает даже с осторожными людьми

ClickFix — не проверка интеллекта. У него три свойства, которые побеждают обычную осторожность.

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

Во-вторых, подача даёт вам причину. Каждый вариант отвечает на вопрос «зачем я это делаю» ещё до того, как вы его задали. Проверка. Недостающий компонент. Более быстрая установка. Люди не сопротивляются инструкциям, к которым приложено объяснение, особенно скучное.

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

Последний пункт объясняет, почему работает и родственное семейство атак. Фальшивые системные диалоги, запрашивающие ваш пароль, срабатывают по той же причине — мы подробно разобрали это в материале о фальшивом запросе пароля в отчёте о сбое Mac. Тот же базовый трюк, другая поверхность.

Исследование Microsoft Threat Intelligence и почему оно меняет подход к проверке ссылок

Исследование Microsoft Threat Intelligence, опубликованное 2026-08-05, отследило операцию ClickFix против macOS на более чем 250 фронтенд-доменах. Один только масштаб заслуживает паузы, но важнее сам механизм.

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

Посетители, не совпадающие с целевым профилем, получают пустые страницы или посторонние сайты. Посетители, которые подходят, то есть пользователи Mac, выглядящие как реальные люди, получают страницу в стиле GitHub с предложением Download for macOS, дополненную поддельным значком Verified Publisher. Полезные нагрузки, названные в том исследовании, — MacSync и Atomic Stealer, обычно сокращаемый до AMOS.

Вот следствие, которое действительно меняет ваше поведение, и его стоит сформулировать прямо:

Поскольку страница показывает разный контент разным посетителям, «я проверил, всё выглядело нормально» ничего не стоит как аргумент. Как и «мой друг открыл, и ничего не случилось».

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

Поддельный значок Verified Publisher тоже заслуживает упоминания. Значки доверия — это пиксели. Всё, что может показать легитимный сайт, вредоносный сайт может скопировать в точности. Значок — это утверждение, а не доказательство, и считать его доказательством — ошибка того же класса, что и доверять запросу пароля, потому что он выглядит так, будто его нарисовала macOS.

Что на самом деле поставлено на карту

Всё это легко воспринять абстрактно, поэтому вот что реально делает вредоносное ПО на другом конце успешного ClickFix.

Исследование Huntress, опубликованное 2026-08-06, описало написанный на Go стилер для macOS, доставляемый через ClickFix и выдающий себя за легитимные компоненты macOS. Его цели, как они описаны в исследовании: базы паролей браузеров, Apple Keychain, файлы cookie и файлы с учётными данными.

Keychain — вот в чём вся суть

Задержитесь на Keychain, потому что именно он определяет радиус поражения. Ваша связка ключей входа — это не один пароль. Это учётные данные Wi-Fi, учётные данные приложений, сертификаты, защищённые заметки, а у многих людей — годами накопленные сохранённые логины к сайтам. То, что добралось до Keychain, украло не пароль. Оно украло весь набор.

Именно поэтому честный совет после подозрения на компрометацию никогда не звучит как «смените пароль, который вы вводили». Каждый учётный данный, живший на этой машине, нужно считать скомпрометированным.

Функция DRAIN и расчёт на 1%

Исследование Huntress также описало функцию с именем DRAIN в этом стилере. Она ищет форматы кошельков Bitcoin, Litecoin, Dogecoin, Ethereum и XRP и может переводить долю баланса, задаваемую переменной DRAIN_PCT. Эта переменная настраивается вплоть до 1%.

Вдумайтесь в эту цифру. Злоумышленник, опустошивший кошелёк, попадётся немедленно, потому что жертва заметит и начнётся расследование инцидента. Злоумышленник, забравший 1%, может не быть замечен вообще никогда. Дизайн намеренно тихий и оптимизирован под то, чтобы остаться в системе, а не под один крупный куш.

Практическое следствие для вас: «баланс выглядит нормально» — это не доказательство того, что вы чисты. Кража, спроектированная так, чтобы быть достаточно маленькой и незаметной, действительно останется незамеченной. Если у вас есть основания полагать, что на вашем Mac что-то запустилось, не воспринимайте отсутствие явной потери как сигнал «всё чисто».

Три месяца

В исследовании Huntress сообщается, что один Mac под наблюдением был скомпрометирован примерно за три месяца до обнаружения.

Три месяца сёрфинга. Три месяца логинов, сессий, файлов cookie и всего остального, что проходило через эту машину. Если вы прикидываете, насколько срочен план действий ниже, эта цифра — ваш ориентир. Такие заражения не шумные. Ничего не всплывает. Mac не начинает тормозить так, чтобы вы это заметили. Вся бизнес-модель держится на том, что вы не станете смотреть.

Правило принятия решения, которым можно реально пользоваться

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

Вопрос 1: Я сам это искал или мне что-то велело это запустить?

Это с большим отрывом самый информативный вопрос, и ответ на него ничего вам не стоит.

Вы искали сами: вы решили установить конкретный инструмент, сами перешли к его документации и нашли там команду установки. Намерение возникло у вас.

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

Почти каждая жертва ClickFix относится ко второй категории. Почти каждая легитимная вставка — к первой. Если вы во второй категории, ответ по умолчанию — нет, и всё, что ниже, — про то, достаточно ли у вас оснований этот ответ по умолчанию пересмотреть.

Вопрос 2: Понимаю ли я, что делает каждая часть этой команды?

Не общий смысл. Каждая часть.

Если ответ «нет», у вас два варианта: разобраться, что она делает, до запуска — или не запускать. Третьего варианта, где вы запускаете непонятное, потому что страница заверила вас, что всё нормально, не существует. Если команда длинная, обфусцированная, закодированная в base64 или полна символов, которые вы не можете объяснить, считайте саму обфускацию ответом. Легитимные команды установки обычно не стараются быть нечитаемыми.

Вопрос 3: Направляет ли она загрузку прямо в командную оболочку?

Форма, на которую стоит обратить внимание, — команда, которая скачивает что-то из сети и немедленно это выполняет, обычно передавая вывод инструмента загрузки по конвейеру в sh или bash. Это означает, что вы запускаете код, который никогда не видели, с сервера, в момент его получения.

Такой шаблон не является автоматически вредоносным. Настоящие проекты его используют, и мы честно разберём это в следующем разделе. Но он означает, что выполняемый вами код — это то, что сервер решит вам прислать в данное мгновение, а это, с учётом выводов Microsoft Threat Intelligence о снятии отпечатков посетителей, не обязательно то же, что он присылает остальным.

Вопрос 4: Требует ли она sudo и мой пароль?

Запуск с sudo передаёт права администратора. Это не автоматически неправильно — множеству легитимных установщиков они нужны, — но это меняет последствия ошибки с плохих на тяжёлые. Повышайте бдительность пропорционально. Команда, которая хочет root от источника, за который вы не можете поручиться, — это не пограничный случай.

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

Вопрос 5: Является ли источник собственной документацией проекта, до которой я дошёл сам?

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

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

Как прочитать команду перед запуском

Если вы решили, что команда, скорее всего, легитимна, но хотите проверить, а не понадеяться, вот подход.

Вставьте её в текстовый редактор, а не в Terminal. Обычный текстовый редактор ничего не выполняет. Это сразу ломает шаблон, на котором держится атака, — что вы вставляете туда, где нажатие Return запускает вставленное.

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

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

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

Раскодируйте всё закодированное. Если часть команды — base64 или hex, раскодируйте и прочитайте результат, а не запускайте. Если легитимному установщику нужно скрывать от вас собственное содержимое, это повод задать вопрос.

Сомневаетесь — не делайте. Цена отказа от запуска легитимной команды — установка чего-то более медленным способом. Цена запуска вредоносной описана в предыдущем разделе.

Концептуальная иллюстрация многоуровневой защиты от вредоносного ПО

Почему установщики вроде Homebrew выглядят идентично атаке

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

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

Поэтому любой совет, сводящийся к «никогда не вставляйте команды в Terminal», — это совет, который не позволил бы вам установить Homebrew, и люди справедливо его игнорируют. Абсолютистская версия этого правила проваливается, потому что противоречит повседневной легитимной практике, а правила, которым люди не могут следовать, никого не защищают.

Разделяет эти два случая на самом деле не команда. Разделяет контекст вокруг неё.

Как вы дошли до инструкции. С Homebrew вы решили установить Homebrew, пошли на сайт Homebrew и прочитали инструкции по установке. С ClickFix страница, которую вы не искали, велела вам что-то запустить, чтобы решить проблему, о существовании которой вы не знали, пока эта страница о ней не сказала. Направление намерения обратное, и именно это разворот и выдаёт атаку.

Принадлежит ли домен самому проекту. Команда должна жить на настоящем сайте проекта или в его настоящем репозитории. Не на зеркале, не в записи блога, не за сокращённой ссылкой и не на странице, чьё оформление лишь напоминает проектное. Проверяйте домен, глядя на домен, а не на логотип на странице. Исследование Microsoft Threat Intelligence описало страницу в стиле GitHub с поддельным значком Verified Publisher — точная иллюстрация того, почему визуальное оформление не является проверкой.

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

Есть ли в подаче срочность или «проверка». Легитимная документация по установке не говорит, что вы обязаны что-то запустить, чтобы доказать, что вы человек, или что встреча не начнётся, пока вы этого не сделаете. Срочность и обрамление в виде проверки — почти чисто признак злоумышленника.

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

Что делать, если вы уже вставили и запустили команду

Если команда уже выполнилась, действуйте по порядку. Не пытайтесь сделать всё сразу и не перескакивайте к драматичному шагу в конце.

1. Отключите этот Mac от сети. Выключите Wi-Fi, отсоедините Ethernet. Стилеры выводят данные по сети, поэтому разрыв соединения ограничивает то, что ещё может уйти. Это единственный шаг, где скорость действительно имеет значение.

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

3. Смените пароли с другого, доверенного устройства. На этом шаге люди ошибаются, и эта ошибка перечёркивает всё остальное. Если вы меняете пароли на потенциально скомпрометированном Mac, вы вводите новые пароли в машину, которая, возможно, всё ещё наблюдает. Используйте телефон, планшет или другой компьютер, никак не связанный с инцидентом. Порядок важен: сначала Apple Account, затем мастер-пароль вашего менеджера паролей, затем почта, затем финансовые аккаунты, затем всё остальное.

4. Считайте всё в Keychain скомпрометированным и обновите. Huntress описала Apple Keychain как явную цель. Это значит пароли Wi-Fi, учётные данные приложений, сохранённые логины и защищённые заметки. Это муторно. Начните с того, что защищает деньги, личность или доступ к другим аккаунтам.

5. Отзовите активные сессии везде, где можете. Украденные файлы cookie позволяют злоумышленнику полностью обойти ваш пароль, поэтому смена пароля без завершения существующих сессий может оставить его залогиненным. У большинства крупных сервисов есть кнопка «выйти на всех устройствах» или управление активными сессиями. Используйте её после смены каждого пароля.

6. Переведите криптовалюту в новый кошелёк с seed-фразой, сгенерированной на чистом устройстве. Если кошелёк был на том Mac, seed-фраза скомпрометирована, а генерация нового кошелька на той же машине воспроизводит проблему. Генерируйте на устройстве, которому доверяете, затем переводите средства. И, с учётом описанного Huntress дизайна DRAIN_PCT, не позволяйте правильно выглядящему балансу отговорить вас от этого.

7. Проверьте объекты входа и фоновые объекты. В Системных настройках, в разделе «Основные», просмотрите объекты входа и список фоновых объектов на предмет всего, чего вы не узнаёте или не можете объяснить.

8. Проверьте профили конфигурации. В Системных настройках, в разделе «Основные», затем «Управление устройствами», поищите профили, которые вы не устанавливали. Профиль, который вы туда не помещали, — серьёзная находка, поскольку профили могут широко менять поведение системы.

9. Запустите проверенный сканер. Сканер полезен для отлова известных семейств и как второе мнение, хотя он слабее всего против по-настоящему новых полезных нагрузок. Наше руководство по антивирусам для Mac рассказывает, что эти инструменты реалистично ловят, а что нет.

10. Поймите, что по-настоящему проблему решает только полная переустановка. Это честная часть. Стирание Mac и переустановка macOS с последующим восстановлением данных из резервной копии, сделанной до инцидента, — единственное лечение, которое действительно возвращает вас в заведомо чистое состояние. Всё остальное — это ваше решение считать, что уборка, вероятно, была достаточно тщательной. Будьте аккуратны с восстановлением: восстановление приложений или системных настроек из резервной копии, сделанной после инцидента, может перенести проблему обратно. Восстанавливайте документы; приложения переустанавливайте из их источников.

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

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

Чего эти защиты не покрывают

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

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

Они не проверяют то, что вы набираете руками. Terminal Paste Protection — про вставку. Если злоумышленник убедит вас набрать команду вручную, символ за символом, предупреждению о вставке будет не на что реагировать. Блокировка команд из буфера обмена по-прежнему следит за поведением порождённых процессов, но обращённого к человеку «лежачего полицейского» уже нет.

Они не помогают при обычной загрузке установщика. Если вы скачали DMG или PKG и запустили его обычным образом, вы находитесь на территории Gatekeeper и нотаризации, а не защиты вставки в Terminal. Это другие механизмы с другими режимами отказа, о которых мы писали в материале об ошибке «приложение повреждено» и карантине Gatekeeper.

Новая атака не совпадёт с известной сигнатурой. Сигнатурное сопоставление по определению ловит то, что уже видели. Поведенческий анализ и проверки Safe Browsing расширяют охват, но по-настоящему новая полезная нагрузка на по-настоящему новой инфраструктуре может проскользнуть мимо всего этого. Отсутствие предупреждения не является доказательством безопасности.

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

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

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

Устранение типичных проблем

Легитимная команда установки блокируется

Проблема: Вы устанавливаете настоящее ПО по его официальной документации, а вставка блокируется или сопровождается предупреждением.

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

У предупреждения нет кнопки обхода

Проблема: Нет варианта Paste Anyway и нет очевидного способа продолжить.

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

Предупреждение появляется снова и снова для одной и той же команды

Проблема: Вы закрываете предупреждение, пробуете снова, и оно возвращается каждый раз.

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

Ничего не вставилось, и непонятно, было ли это блокировкой

Проблема: Вы нажали Command-V, ничего не появилось, и предупреждения не видно.

Решение: Сначала исключите скучные причины. Убедитесь, что у Terminal действительно есть фокус клавиатуры, убедитесь, что копирование удалось, вставив текст в обычный текстовый редактор, и проверьте, не открылось ли предупреждение за другим окном или на другом дисплее. Если текст нормально вставляется в текстовый редактор, но не в Terminal, защита — разумное подозрение, и текстовый редактор теперь даёт вам шанс прочитать то, что вы собирались запустить. Прочитайте там, прежде чем пробовать снова. Если вставка сработала, но после нажатия Return ничего вроде бы не произошло, считайте это возможной блокировкой команд из буфера обмена и проверьте Мониторинг системы на предмет незнакомых процессов.

Вы разработчик и хотите, чтобы предупреждения прекратились

Проблема: Предупреждение о вставке мешает обычной работе.

Решение: Честно: Apple не предоставляет пользовательского переключателя для этих защит, и эта статья не будет описывать способ их обойти. Впрочем, задокументированное поведение вашу проблему уже решает. Предупреждение о вставке срабатывает, только когда пользователь не открывал Terminal более 30 дней, и не обнаружены распространённые инструменты разработчика, и вставка пришла из определённого приложения. Если вы натыкаетесь на него регулярно, полезный вопрос — почему ваша машина не выглядит для системы как машина разработчика. Наличие обычных инструментов разработчика и использование Terminal как части регулярного рабочего процесса — это и есть предусмотренный выход из предупреждения, а не скрытая настройка.

Вы уже нажали Paste Anyway и теперь жалеете

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

Решение: Перейдите к плану действий выше и начните с первого шага — отключения Mac от сети. Не ждите видимых симптомов, потому что вредоносное ПО, описанное в исследовании Huntress, было специально спроектировано их не создавать, включая функцию вывода криптовалюты, настраиваемую вплоть до 1% баланса. Сначала смените учётные данные с другого устройства. Обход предупреждения не отключает блокировку команд из буфера обмена, так что процесс, возможно, всё равно был остановлен позже, но исходить из этого без доказательств не стоит.

FAQ

В каких версиях macOS есть эти защиты?

Документация Apple Platform Security описывает Terminal Paste Protection, блокировку команд из буфера обмена и сканирование AppleScript как появившиеся в macOS 26.4 и новее. В более ранних версиях их нет. Если у вас что-то более старое и вы вставляете команды в Terminal, ничего из описанного здесь к вашей машине не относится.

Работает ли это в iTerm2, Warp или Ghostty?

Частично. Apple документирует предупреждение о вставке как функцию приложения Terminal, поэтому сторонние терминалы его не показывают, если их разработчики не сделают что-то эквивалентное. Но Apple указывает, что блокировка команд из буфера обмена охватывает любой эмулятор терминала, включая сторонние приложения, поскольку XProtect отслеживает порождённое дерево процессов. Вы теряете предупреждение, но сохраняете подстраховку.

Можно ли отключить эти защиты?

Apple не предоставляет для них пользовательского переключателя, и эта статья не будет описывать обходные пути. Если вы разработчик и сталкиваетесь с ложными срабатываниями, ответ — в задокументированных условиях срабатывания: предупреждение о вставке не появляется на машинах, где присутствуют распространённые инструменты разработчика или где Terminal открывали за последние 30 дней.

Бывает ли Paste Anyway правильным выбором?

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

Если ничего не заблокировали, значит ли это, что команда безопасна?

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

Как я вообще узнаю, что что-то прошло?

Часто никак — в этом и состоит неудобная часть. Huntress сообщила о Mac под наблюдением, скомпрометированном примерно за три месяца до обнаружения, и описала функцию вывода криптовалюты, настраиваемую вплоть до 1% специально для того, чтобы жертвы не замечали. Проверяйте объекты входа, профили конфигурации и сессии аккаунтов, а не ждите симптома.

Заключение

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

Полезная ментальная модель — слои. Terminal Paste Protection — человеческий слой, намеренно узкое прерывание, нацеленное на людей, которые обычно не пользуются Terminal и только что скопировали что-то из браузера или сообщения. Блокировка команд из буфера обмена — машинный слой, работающий на уровне XProtect с порождённым деревом процессов в любом эмуляторе терминала, включая сторонние. Сканирование AppleScript и JXA закрывает скриптовый путь: обход доступен для файловых скриптов и полностью отсутствует для скриптов, выполняемых из памяти. Каждый слой исходит из того, что остальные могут не сработать, и это правильное допущение.

Но защиты узкие, и честный итог по их ограничениям такой: это не антивирус, они не читают то, что вы набираете руками, они не ловят новую полезную нагрузку без известной сигнатуры и по замыслу никогда не сработают у большинства разработчиков. Атака же, ради остановки которой они существуют, хорошо профинансирована и хорошо спроектирована. Microsoft Threat Intelligence сообщила о более чем 250 фронтенд-доменах, снимающих отпечатки с посетителей и охотящихся на исследователей. Huntress описала стилер, нацеленный на Apple Keychain, с функцией кражи, настроенной так, чтобы оставаться ниже порога заметности.

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

Если команда уже выполнилась, не впадайте в панику. Отключитесь от сети, смените учётные данные с другого устройства, обновите всё в Keychain, переведите криптовалюту в кошелёк, сгенерированный на чистой машине, и запланируйте полную переустановку. Атака спроектирована так, чтобы быть убедительной. Попасться на неё — не изъян характера, а восстановление — это список дел, а не катастрофа.

Читайте также: Фальшивый отчёт о сбое Mac просит ваш пароль? Не вводите его