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-новости 4 месяца назад

Microsoft создаёт магазин лицензий для медийного контента в эпоху ИИ

Microsoft анонсировала Publisher Content Marketplace - платформу для лицензирования медийного контента ИИ, где издатели сами задают условия использования, а ИИ‑компании платят за доступ. Это попытка создать прозрачный рынок лицензий и компенсировать авторам справедливую часть стоимости их материалов.

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

Новая функция Gmail позволит сменить email адрес

Google готовит новую функцию, которая позволит пользователям Gmail менять свой адрес электронной почты @gmail.com, сохраняя все данные и доступ к старому адресу как псевдониму.

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

Alphabet покупает Intersect Power, чтобы покрыть потребности в электроэнергии

Alphabet покупает Intersect Power за 4,75$ млрд, чтобы обеспечить собственные дата-центры энергией без перегрузки местных сетей и поддержать растущий спрос на ИИ.

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

Meta заключила многомиллиардные соглашения с ядерными компаниями на 6,6 ГВт энергии для питания дата-центров

Meta Platforms заключила стратегические соглашения с тремя ядерными компаниями (Vistra, Oklo и TerraPower) на закупку и разработку до 6,6 ГВт энергии к 2035 году для питания дата-центров и инфраструктуры ИИ.