Composer 2.10

Релиз Composer 2.10 с упором на безопасность цепочек поставок и защиту от вредоносных пакетов. В релиз добавили встроенную фильтрацию malware, новую систему dependency policy, изменения в механизме source fallback и несколько улучшений для работы с зависимостями.

Защита от вредоносных пакетов

В Composer 2.10 появился механизм malware policy. Он позволяет автоматически блокировать версии пакетов, помеченные как вредоносные.

Если пакет признан malware:

  • его версия исключается из dependency resolution pool;

  • composer update, composer require и composer create-project не смогут установить такой пакет;

  • composer install также заблокирует установку, даже если вредоносная версия уже попала в composer.lock;

  • composer audit завершится ошибкой при обнаружении malware.

Для определения вредоносных пакетов используется feed от Aikido. Функция включена по умолчанию для всех пользователей Packagist и не требует дополнительной настройки.

Поводом для изменений стали недавние supply chain-атаки в PHP-экосистеме, включая компрометацию пакетов laravel-lang и intercom/intercom-php.

Новая система dependency policy

Composer 2.10 объединяет настройки безопасности в единый объект config.policy.

Теперь политики для security advisories, abandoned packages и malware настраиваются одинаковым способом.

Пример отключения проверки abandoned-пакетов:

{
    "config": {
        "policy": {
            "abandoned": false
        }
    }
}

Полное отключение всех политик:

{
    "config": {
        "policy": false
    }
}

Основные параметры policy:

  • block — блокировка пакетов во время install/update;

  • audit — поведение composer audit;

  • ignore — исключения для отдельных пакетов.

Для malware появился параметр block-scope, определяющий, нужно ли блокировать пакет только во время update или также при install. По умолчанию используется режим all.

Поддержка собственных политик

Организации могут подключать собственные dependency policies через внешние источники.

Пример кастомной политики:

{
    "config": {
        "policy": {
            "company-policy": {
                "sources": [
                    {
                        "type": "url",
                        "url": "https://acme.example.com/bad-pkgs.json"
                    }
                ],
                "audit": "fail"
            }
        }
    }
}

Это позволяет централизованно запрещать определённые версии пакетов внутри компании.

Deprecation source fallback

Composer 2.10 начинает отключение механизма source fallback.Ранее Composer автоматически переключался на установку из Git-репозитория, если загрузка dist-архива завершалась ошибкой. Это могло приводить к установке вредоносного кода даже при наличии безопасной mirrored-версии пакета.

Для совместимости добавлен параметр source-fallback, позволяющий временно вернуть старое поведение.

Полное удаление source fallback запланировано в Composer 2.11.

Wildcard-поддержка для --with

Флаг --with в composer update теперь поддерживает wildcard-выражения.

Пример:

composer update --with "acme/*:^2.0"

Теперь можно временно ограничивать версии сразу для группы пакетов одного vendor без перечисления каждого пакета отдельно.

--require для create-project

Команда create-project получила параметр --require.

Пример:

composer create-project acme/skeleton my-project \
    --require="acme/extra-bundle:^1.0"

Это позволяет устанавливать дополнительные зависимости сразу при создании проекта.

Другие изменения

В Composer 2.10 также вошли:

  • оптимизация autoloading для плагинов;

  • снижение потребления памяти PoolOptimizer;

  • исправление --bump-after-update;

  • дополнительные security hardening-изменения для Git credentials и TLS.

В сообществе PHP релиз уже называют одним из самых важных обновлений Composer за последнее время из-за усиления защиты от supply chain-атак.

Источник: Package List

Похожие статьи

Рекомендательные технологии Подробнее
Технологии и IT-новости 8 месяцев назад

Radiant Nuclear запускает переносные микрореакторы мощностью 1 МВт

Radiant Nuclear привлекла $300 млн для производства переносных микрореакторов мощностью 1 МВт, которые могут заменить дизель-генераторы и поставляться полностью готовыми к эксплуатации.

Технологии и IT-новости 2 месяца назад

Релиз ядра Linux 7.1: что нового

Linux Kernel 7.1 стал очередным крупным обновлением ядра Linux. В релиз вошли новый драйвер NTFS с поддержкой записи, улучшения поддержки оборудования AMD и Intel, а также многочисленные оптимизации файловых систем и драйверов.

Технологии и IT-новости 5 месяцев назад

Как снизить стоимость Claude с помощью Markdown

Markdown-файл Claude.md задаёт строгие правила генерации ответов и снижает их объём примерно на 63%. Это уменьшает расходы на токены в задачах с высокой нагрузкой и повторяемыми запросами.