К обсуждениям

Tekton PaC: токен только для исходного репозитория

Редакция VOne Технологии

Защитная диагностика Tekton Pipelines-as-Code remote task resolution по ghsa-6f2p-296r-cc28: применимость, обратимый локальный control, измеримый verdict, stop-rule и минимальный пакет данных для владельца системы.

Короткий ответ — Tekton PaC: токен только для исходного репозитория

Задача страницы — проверить, что Pipelines-as-Code запрашивает repository-scoped token и remote task не читает соседний private repo. Advisory ghsa-6f2p-296r-cc28 служит свежим inventory-сигналом, но сама по себе не доказывает состояние конкретной установки. Сначала зафиксируйте фактически загруженный Tekton Pipelines-as-Code remote task resolution, package lock или image digest и границу «github.com/openshift-pipelines/pipelines-as-code: introduced 0, fixed 0.37.8; github.com/openshift-pipelines/pipelines-as-code: introduced 0.38.0, fixed 0.39.6; github.com/openshift-pipelines/pipelines-as-code: introduced 0.40.0, fixed 0.42.1; github.com/openshift-pipelines/pipelines-as-code: introduced 0.43.0, fixed 0.48.0». Затем отделите применимость от результата проверки: версия говорит, какую ветку исследовать, а измеримый control показывает поведение. Пользовательская боль здесь одна: GitHub App installation token может сохранить доступ ко всем репозиториям установки при обработке события одного репозитория. Итогом должен стать таблица trigger repo / token repositories / requested task repo / fetch code / bytes returned, чтобы другой инженер мог повторить решение без production-данных и без догадок.

Граница применимости для Tekton Pipelines-as-Code remote task resolution

Разберите путь решения как «webhook repository → installation token scope → remote task URL → fetch authorization». Для каждого перехода укажите владельца значения, тип входа, допустимое состояние и запрещённый side effect. Проверяемая инварианта: token repository selection равен triggering repo, а запрос соседнего repo отклонён до получения содержимого. NOT_APPLICABLE возможен только при доказанном отсутствии компонента или недостижимости указанной ветки; неизвестный digest, effective config или способ вызова дают UNKNOWN. Номер исправленного релиза без runtime readback не превращает результат в PASS. Не объединяйте эту проверку с соседними уязвимостями продукта: здесь оценивается именно описанная граница данных и управления.

Почему обычной проверки версии недостаточно

Lock-файл, SBOM, container digest и вывод package manager отвечают на разные вопросы. Сведите их в одну строку provenance и сопоставьте с advisory-границей «github.com/openshift-pipelines/pipelines-as-code: introduced 0, fixed 0.37.8; github.com/openshift-pipelines/pipelines-as-code: introduced 0.38.0, fixed 0.39.6; github.com/openshift-pipelines/pipelines-as-code: introduced 0.40.0, fixed 0.42.1; github.com/openshift-pipelines/pipelines-as-code: introduced 0.43.0, fixed 0.48.0». После этого проверьте effective путь выполнения, потому что vendored копия, optional dependency, отключённый adapter или отдельный worker способны изменить применимость. Зафиксируйте reason code: AFFECTED_PATH, PATCHED_PATH, COMPONENT_ABSENT либо PROVENANCE_UNKNOWN. Отсутствие инцидента, один успешный HTTP-ответ или активный systemd unit не подтверждают инварианту «token repository selection равен triggering repo, а запрос соседнего repo отклонён до получения содержимого».

Безопасный локальный control для Tekton Pipelines-as-Code remote task resolution

Работайте только в disposable fixture: использовать fake Git provider с двумя repo и opaque token scopes; запускать parser/resolver без GitHub и без реальных секретов. Сеть, subprocess, production database, реальные bucket, очереди, почта, токены и пользовательские файлы замените fake, spy или in-memory адаптерами. До запуска сохраните baseline hash, нулевые counters, лимит времени, памяти и числа операций. Используйте короткие синтетические маркеры без эксплуатационного payload. Цель — увидеть ветвление и соблюдение policy, а не усилить воздействие. После каждой строки теста восстанавливайте fixture и убеждайтесь, что следующий benign control начинается с того же baseline.

Матрица наблюдений без субъективного verdict

Сначала benign control доказывает, что тест достиг нужной функции. Затем boundary-case меняет ровно один признак, связанный с болью «GitHub App installation token может сохранить доступ ко всем репозиториям установки при обработке события одного репозитория». Записывайте таблица trigger repo / token repositories / requested task repo / fetch code / bytes returned, reason code, duration, counters до и после, а также digest fixture. Основная инварианта остаётся: token repository selection равен triggering repo, а запрос соседнего repo отклонён до получения содержимого. Если control не достигает целевой ветки, точка наблюдения двусмысленна или recorder пропустил side effect, ставьте UNKNOWN. Нельзя добавлять более сильный вход только ради определённого ответа: безопасная воспроизводимость важнее красивого PASS.

PASS, FAIL, UNKNOWN и критерий остановки

PASS требует одновременно подтверждённого provenance, успешного benign control, соблюдения инварианты «token repository selection равен triggering repo, а запрос соседнего repo отклонён до получения содержимого», нулевых запрещённых side effects и доказанного cleanup. FAIL — тот же подтверждённый путь плюс наблюдаемое нарушение policy. UNKNOWN означает отсутствие digest, effective config, recorder, control либо возможности восстановить fixture. Немедленная красная линия: fake provider вернул содержимое соседнего repo либо token scope оказался шире одного repo. При её достижении прекратите тест, сохраните только минимальные метаданные и не повторяйте boundary-case на более крупном масштабе.

Восстановление и повторный regression check

После control удалите disposable state, верните адаптеры к baseline и сравните hashes, counters и открытые ресурсы. Любой неожиданный I/O, сетевой вызов, процесс, новая строка БД или оставшийся файл блокирует PASS, даже если основной policy вернул ожидаемый код. После обновления компонента повторите тот же fixture без изменения входов и лимитов; сравните таблица trigger repo / token repositories / requested task repo / fetch code / bytes returned. Так видно, изменился ли именно защищаемый переход «webhook repository → installation token scope → remote task URL → fetch authorization», а не окружение, объём данных или наблюдатель.

Почему это самостоятельный intent и что передать владельцу

Отделяет минимизацию installation token от path policy локального workspace и от проверки подписи webhook. Поэтому материал отвечает на самостоятельный запрос «проверить, что Pipelines-as-Code запрашивает repository-scoped token и remote task не читает соседний private repo» и не создаётся как механическая замена бренда, ОС или устройства. Передайте владельцу ghsa-6f2p-296r-cc28, component digest, effective version/config, границу «github.com/openshift-pipelines/pipelines-as-code: introduced 0, fixed 0.37.8; github.com/openshift-pipelines/pipelines-as-code: introduced 0.38.0, fixed 0.39.6; github.com/openshift-pipelines/pipelines-as-code: introduced 0.40.0, fixed 0.42.1; github.com/openshift-pipelines/pipelines-as-code: introduced 0.43.0, fixed 0.48.0», схему «webhook repository → installation token scope → remote task URL → fetch authorization», control/boundary rows, таблица trigger repo / token repositories / requested task repo / fetch code / bytes returned, verdict, stop reason и cleanup proof. Advisory опубликована 2026-08-20 и обновлена 2026-08-20; даты подтверждают свежесть источника, но не популярность запроса, не факт эксплуатации и не применимость к конкретному deployment.

Материал подготовлен редакцией VOne с помощью автоматизированного черновика; даты, версии и ссылки сверены по GitHub Advisory Database и первичному upstream-материалу. Текст самостоятельный, не копирует источники, не содержит эксплуатационных последовательностей и предназначен для безопасной локальной проверки.

Источники и проверка

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

Ответы

0 опубликовано
Ответов пока нет. Вы можете начать обсуждение.

Ваш ответ

Добавьте свой опыт или уточнение по теме.

Вы публикуете как Аноним Аватар отличает разговоры, но не раскрывает личные данные.

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