Fuzzing derrière la porte, audit qui voit tout le pipeline, et un seul build Next par run #9
Labels
No labels
bug
duplicate
enhancement
help wanted
invalid
question
wontfix
No milestone
No project
No assignees
1 participant
Notifications
Due date
No due date set.
Dependencies
No dependencies set.
Reference
Infrastructure/eqs-workflows#9
Loading…
Add table
Add a link
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?
Ce ticket fait suite à la lecture des journaux du run 27 d'ATLAS (chasse 53 du socle). Les corrections ponctuelles sont dans #8. Trois chantiers demandent une conception.
1. Le fuzzing ne teste que la porte
Sur ATLAS, 159 opérations sur 166 n'ont reçu que le 401 du proxy : environ 3 975 cas sur 4 006 se sont arrêtés à la porte.
contract.ymln'a aucune entrée d'identité. Son en-tête promet « l'application tient-elle son propre contrat », mais 96 % du contrat n'est jamais atteint.Piste.
identite: le nom d'un script du satellite, lancé après la santé.EQS_FUZZ_BEARERet/ouEQS_FUZZ_SESSIONdans$GITHUB_ENV, précédés de::add-mask::.[auth.openapi.<schéma>]dans unschemathesis.toml), et non par un-Hglobal : unAuthorizationposé sur une routesession: truela ferait refuser.@eqs/autha un compte de secours (BREAK_GLASS_*). Le workflow pourrait les tirer au hasard comme il le fait pourAUTH_SECRET. Le socle pourrait fournir l'aide qui ouvre la session, etpreparerCledonne une clé d'API.Précautions.
DELETE /api/profile/sessions).Classe connexe. Une opération 3xx est jugée sur sa page finale, parce que schemathesis suit les redirections : c'est le faux positif sur
/api/oauth/authorize. Il faut une parade, par exemple un hook ou une marquex-eqs-*.2. L'audit envoyé à Topologie ne voit pas le pipeline
auditne dépend que decheck. Il part avantintegrationetcontract. Au run 27, l'audit a été envoyé à 18:35 et le fuzzing du même commit a échoué à 18:40. Topologie a reçu un commit sain.check-duree)..eqs/conformance.jsonpar le job integration, qui meurt avec lui. 7 champs partentnull;Piste.
integration.ymltéléverseconformance.json.auditpasse enneeds: [check, integration, contract]avecif: always(), et joint un verdict du pipeline.commitdanscheck.jsonetconformance.json, et refuser un rapport d'un autre commit.3. Next est construit trois ou quatre fois par run
integration(dans la suite de conformité),contrat-a-jour(évitable dès #8 avecconstruire-contrat: false) etfuzzingconstruisent chacun Next, environ 2 min 10 s par build. Le runner ne fait qu'un job à la fois, donc tout se paie en série.Piste. Publier
.next(sanscache/) comme artefact du job qui construit, et le télécharger ailleurs. À défaut, mettre.next/cacheen cache.Moins urgent
COREPACK_HOME.git config --system init.defaultBranch maindans l'image.🤖 Generated with Claude Code
Les trois chantiers sont livrés.
identitelance un script du satellite, qui créeeqs-ci(admin, une clé d'API) dans la base jetable du fuzzing ; la clé est masquée et passée à schemathesis. Les refus métier 422 documentés sont acceptés pour des données valides ; un 400 reste une faute.pipeline.yml, D-084) : il part après l'intégration et le fuzzing, dans le même job, avec la durée de la porte et la conformité du run. Chez ATLAS, il reste 3 champs non observés au lieu de 10.application, et le cache de compilation Next survit d'un run à l'autre. Chez ATLAS, la compilation passe de 84 s à 11 s, et le pipeline complet d'environ 25 min à 15 min.Aussi : un cache pip pour semgrep et schemathesis, et le store pnpm dans
.git(liens au lieu de copies).Pas fait, et pas nécessaire aujourd'hui :
COREPACK_HOME(environ 2 s) ;init.defaultBranchdans l'image du runner (pur bruit de journal).🤖 Generated with Claude Code