Sécurité : ouvrir les PR du bot depuis un fork de code-bot #20
Labels
No milestone
No project
No assignees
1 participant
Notifications
Due date
No due date set.
Dependencies
No dependencies set
Reference
mathieu/lanes#20
Loading…
Reference in a new issue
No description provided.
Delete branch "%!s()"
Deleting a branch is permanent. Although the deleted branch may continue to exist for a short time before it actually gets removed, it CANNOT be undone in most cases. Continue?
Constat (lanes#13)
La PR qu'ouvre la lane
codea sa branche dans le dépôt : Forgejo donne à la CI de cette PR un jeton automatique en écriture. Mesuré sur essai-actions le 2026-10-14 (run 460,essai-jeton.yml) : ce jeton écrit des références hors branches (refs/…, qu'aucune protection ne couvre) et lance unworkflow_dispatch(HTTP 204), donc un workflow qui tourne avec les secrets du dépôt. Forgejo v16 n'a ni clépermissionsni réglage d'instance pour le restreindre.Atténuations en service (
879a8a9) :mainprotégée sur les dépôts équipés ; CI des dépôts équipés qui exécutent le code de la PR sousnode, environnement vidé (env -i … runuser -u node -- env -i …), sans le jeton. Elles reposent sur la discipline de chaque CI : un nouveau workflow en root rouvre le trou.Parade structurelle
Une PR de fork reçoit un jeton en lecture seule, pour git comme pour l'API, et pas les secrets du dépôt,
pull_request_targetcompris. Faire poussercode(etfix) dans un fork appartenant àcode-bot, et ouvrir la PR depuis ce fork.À trancher, à éprouver sur essai-actions
installer.pyou à la main ; synchronisation de la branche par défaut du fork.codeetfixpoussent avecLANE_BOT_TOKENvers le fork ; la condition « même dépôt » defixest à revoir (aujourd'hui elle refuse justement les PR de fork).reviewetfixlancés sur une PR de fork : vérifier qu'ils publient encore (revue, commentaire, push sur la branche du fork) — le jeton du job y est en lecture, publier avecLANE_BOT_TOKEN.cidefixet CI de la tête vue parreview: les runs d'une PR de fork se lisent-ils pareil par l'API ?Critères d'acceptation
codevient d'un fork decode-bot, et sa CI a un jeton qui ne pousse pas et ne lance pas de dispatch (sondes deessai-jeton.yml).reviewetfixfonctionnent sur cette PR.installer.pydocumente la création du fork.Refs #13