Homebrew 6.0 полностью изменил способ установки программ на Mac

BBetter Stack
컴퓨터/소프트웨어AI/미래기술

Transcript

00:00:00Несколько месяцев назад на этом самом канале мы выпустили видео, где назвать Homebrew
00:00:05чем-то из каменного века было нормальным, ведь Nix на голову выше. Поэтому будет честно,
00:00:12если я вернусь к этой теме и скажу следующее. Наш «пережиток каменного века» только что выпустил первое
00:00:17крупное обновление за последние годы — Homebrew 6.0. И вот что главное: дело тут не в куче новых
00:00:23фич. Это полный пересмотр безопасности. Homebrew наконец-то повзрослел.
00:00:30Давайте я объясню, что именно изменилось, ведь это куда интереснее, чем просто сменившаяся цифра
00:00:38в версии. Практически за всю историю Homebrew, когда вы добавляли сторонний tap, то есть сторонний
00:00:45репозиторий, Homebrew просто запускал их Ruby-код. Он бездумно исполнял чужой код. Любой tap,
00:00:51произвольный код — и никаких вопросов. А теперь подумайте, в каком мире мы живем.
00:00:56Пакетные менеджеры сейчас — главная цель для атак на цепочки поставок. NPM и все остальные
00:01:01принимают удар за ударом. Выполнять любой код из репозитория по умолчанию — плохая идея. И в Homebrew
00:01:086.0 появилась фича, чтобы это прекратить. Она называется Tap Trust. Если вам нравятся такие советы по кодингу,
00:01:15не забудьте подписаться. У нас постоянно выходят новые видео. Но начну я с того,
00:01:19что вы будете замечать каждый день. Команда brew version. Вот она — 6.0. А теперь смотрите, что происходит,
00:01:25когда я устанавливаю что-то с несколькими зависимостями. Вместо молчаливой установки Brew теперь показывает
00:01:31полную сводку того, что собирается поставить, и ждет подтверждения. Это новый режим Ask,
00:01:38и теперь он включен по умолчанию. Крошечное изменение, но теперь вы всегда видите план до того,
00:01:44как Brew хоть к чему-то прикоснется в системе. А теперь главное — Tap Trust. Смотрите, что происходит при добавлении стороннего tap.
00:01:50Homebrew мгновенно меня останавливает. Он говорит, что этот tap не является доверенным, и не выполнит ни строчки
00:01:56кода, пока я явно не подпишусь под этим. Я подтверждаю доверие через brew trust, и только после этого
00:02:03он начинает работу. Официальные репозитории Homebrew доверены по умолчанию. Так что ваш обычный опыт
00:02:09использования Brew никак не изменится. Но вот тот сомнительный tap от незнакомца с GitHub,
00:02:16найденный в файлe README, теперь будет под замком. Его придется подтверждать вручную. И, честно говоря,
00:02:20в сегодняшних реалиях это отличное решение. Но это далеко не единственный апгрейд.
00:02:25Внутренняя система метаданных теперь работает по умолчанию: вся информация о пакетах запрашивается
00:02:30одним чистым скачиванием вместо дюжины мелких сетевых запросов. Поэтому команда brew update стала намного быстрее. Появилась
00:02:37совершенно новая команда — brew execute, своего рода NPX для Homebrew. Она позволяет однократно запустить утилиту без
00:02:45ее постоянной установки в систему. Также добавили brew vulns, которая сканирует уже установленные пакеты
00:02:51на предмет известных уязвимостей и предупреждений. Кроме того, в 6.0 тихо исправили три уязвимости, включая ту, что позволяла
00:02:58исполнять код с правами root через установочный пакет Mac. Это действительно серьезный релиз. Но есть
00:03:04и подвох. Для кого-то он окажется критичным, так что расскажу о нем сразу.
00:03:09Tap Trust ломает обратную совместимость. Если в ваших CI-пайплайнах используются сторонние tap,
00:03:14brew doctor теперь выдает ошибку в ту же секунду, как видит недоверенный репозиторий. А огромное количество стандартных
00:03:20GitHub Actions запускают brew doctor первым делом. В итоге люди обновились, и их сборки просто упали.
00:03:28Решение — пометить эти tap как доверенные в конфиге, но сделать это придется вам самому.
00:03:35Автоматически за вас это никто не сделает. То же самое с режимом Ask. Если ваши скрипты рассчитывали
00:03:41на тихую установку пакетов без вопросов, новый промпт может заставить их зависнуть навсегда. Но если посмотреть
00:03:46на это иначе: для обычного пользователя, который просто ставит программы каждый день, внешне почти ничего не изменилось.
00:03:51Это релиз про безопасность и архитектуру, а не просто смена обертки. И еще развеем один миф.
00:03:58Сейчас разное ПО активно переписывают на Rust. Нет, Homebrew не переписывают на Rust,
00:04:04по крайней мере сейчас. Это был лишь эксперимент. Фокус снова полностью вернулся к кодовой базе на Ruby,
00:04:10как и раньше. Так стоит ли обновляться до Homebrew 6.0? Почти для всех ответ — однозначное «да».
00:04:16Вы получаете три патча безопасности, да и вообще brew update рано или поздно сам переведет вас на 6.0,
00:04:22планировали вы это или нет. А вот кому точно стоит притормозить и подумать —
00:04:27так это тем, у кого CI завязан на сторонние tap, или настроена автоматизация без интерактива. Разберитесь с ними
00:04:33в первую очередь, и всё будет отлично. И если вы все еще сидите на Mac с процессором Intel — внимание:
00:04:40в 6.0 уже расписан график полного прекращения поддержки Intel на ближайшие пару лет. Владельцы Apple Silicon,
00:04:46новые компьютеры — у нас все отлично. Добавили даже поддержку свежих чипов M5. В общем, подытожим.
00:04:53Годами Homebrew оставался просто удобным инструментом — самым быстрым способом поставить программу на Mac.
00:04:59С версией 6.0 он, похоже, превращается скорее в контрольно-пропускной пункт — место, где код,
00:05:05наконец-то обязан доказать свое право на доверие. Это большой шаг. Пакетный менеджер
00:05:10дорос до той модели угроз, в которой все мы живем уже годы. И в этом главная суть,
00:05:15а не в цифрах 6.0 или 6.1. Главное — то, что за ними стоит. Если вам нравятся подобные видео
00:05:21и советы по кодингу, обязательно подпишитесь на канал BetterStack. Увидимся в следующих выпусках!

Key Takeaway

Homebrew 6.0 переходит на модель обязательной проверки безопасности, внедряя механизм Tap Trust, подтверждение установок в режиме Ask и скан уязвимостей brew vulns.

Highlights

  • Homebrew 6.0 включает режим Ask по умолчанию, требующий подтверждения со сводкой перед установкой зависимостей.

  • Механизм Tap Trust запрещает выполнение любого Ruby-кода из сторонних репозиториев до ручного подтверждения через команду brew trust.

  • Новая команда brew execute запускает утилиты без их постоянной установки в систему по аналогии с npx.

  • Команда brew vulns автоматически сканирует установленные пакеты на предмет известных уязвимостей.

  • В релизе 6.0 устранены три уязвимости, одна из которых позволяла исполнять код с правами root через установочный пакет Mac.

  • Запуск brew doctor в неориентированных на интерактивный ввод CI-пайплайнах вызывает ошибки из-за недоверенных сторонних tap.

Timeline

Новая модель безопасности и режим Ask

  • Пакетные менеджеры стали основной мишенью атак на цепочки поставок.
  • Homebrew 6.0 отказывается от автоматического исполнения стороннего Ruby-кода.
  • Режим Ask выводит полный список зависимостей и ждет ввода пользователя.

Ранее Homebrew исполнял Ruby-код из сторонних репозиториев без проверки. В условиях постоянных атак на реестры пакетов вроде NPM такой подход создает критические риски. Режим Ask меняет поведение по умолчанию: операция приостанавливается до подтверждения пользователем наглядного плана установки.

Механизм Tap Trust и изоляция сторонних репозиториев

  • Сторонние tap блокируются до выполнения команды brew trust.
  • Официальные репозитории Homebrew остаются доверенными по умолчанию.

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

Оптимизация сетевых запросов и новые встроенные команды

  • Загрузка метаданных пакетов объединена в единый сетевой запрос.
  • Команда brew execute выполняет программы без их сохраняемой установки.
  • Команда brew vulns проверяет окружение на известные уязвимости.
  • В версии 6.0 закрыта брешь безопасности, давшая возможность повышать права до root.

Внутренняя система метаданных запрашивает информацию за один шаг, что ускоряет выполнение brew update. Команда brew execute предоставляет функционал одноразового запуска по аналогии с npx в экосистеме Node.js. Дополнительно внедрена проверка установленного ПО на уязвимости и закрыта брешь повышения привилегий через инсталляционные пакеты macOS.

Совместимость с CI-пайплайнами и отказ от миграции на Rust

  • Автоматические сборки CI падают при вызове brew doctor на недоверенных tap.
  • Фокус разработки остался на кодовой базе Ruby.
  • Скрипты автоматической установки требуют явного отключения интерактива.

Строгие правила проверки блокируют CI-пайплайны, завязанные на сторонние репозитории или команду brew doctor. Для исправления сборок требуется вручную внести конфигурацию доверия к tap. Эксперименты по переписыванию Homebrew на Rust завершены, основным языком проекта остается Ruby.

Планы по поддержке архитектур Intel и Apple Silicon

  • В Homebrew 6.0 зафиксирован график прекращения поддержки процессоров Intel.
  • Добавлена первичная поддержка процессоров Apple M5.

Обновление до версии 6.0 происходит автоматически при вызове brew update. Для компьютеров Mac на базе процессоров Intel запущен двухлетний цикл полного прекращения поддержки. В то же время архитектура Apple Silicon получает расширенную оптимизацию, включая новые поколения чипов.

Community Posts

View all posts