Regelbaserade fixar
Öppna fix-PR på ett hemlighetsfynd eller ett IaC-fynd öppnar en pull request som åtgärdar det. En fast regel gör ändringen, inte en modell:
- Hemligheter: den hårdkodade inloggningsuppgiften ersätts med en läsning av en miljövariabel.
- IaC: en egenskap på en resurs sätts till sitt säkra värde.
Knappen finns i kolumnen Åtgärd under Säkerhet › Fynd › Hemlighetsskanning och Säkerhet › Fynd › IaC. En person klickar på den för ett fynd i taget. Ingenting föreslås automatiskt, och det finns ingen inställning för att slå på det.
Ingenting lämnar fremforge
Ingen AI-modell är inblandad, så ingen kod skickas till någon leverantör och ingen AI-nyckel behövs. Filen läses från ditt repo vid den commit där fyndet togs upp, ändras i minnet, skannas om i fremforges egna skannrar och skrivs tillbaka som en branch i ditt repo. Posten för fix-begäran sparar id:n, antal och utfall, aldrig filen, diffen eller inloggningsuppgiften.
Hemligheter: läs från miljön
Inloggningsuppgiften som skannern hittade ersätts med en läsning av en miljövariabel, i samma uttryck:
| Språk | Blir |
|---|---|
| Go | os.Getenv("NAME"), med "os" tillagt bland importerna vid behov; en const på en rad blir en var |
| Python | os.environ["NAME"], med import os tillagt vid behov |
| JavaScript, TypeScript | process.env.NAME |
NAME tas från den variabel eller nyckel som värdet tilldelas, i versaler med understreck (apiToken blir API_TOKEN), och annars från regeln. JSX- och TSX-filer, och alla andra filtyper, får ingen fix: cellen visar ett streck, med orsaken för skärmläsare och vid hovring.
Ingen fix föreslås när inloggningsuppgiften inte ligger i en enda vanlig strängliteral på en rad: ett värde över flera rader, en mallsträng eller f-sträng, eller ett const-block i Go.
Att flytta inloggningsuppgiften gör den inte säker. Den finns fortfarande i repots historik. Pull requesten säger det, och när en giltighetskontroll har funnit att inloggningsuppgiften är aktiv är dess första rad ROTATE NOW: this credential is live. Pull requesten innehåller aldrig inloggningsuppgiften eller någon del av den. Rotera den där den utfärdades, och sätt sedan miljövariabeln överallt där koden körs.
IaC: en egenskap, ett säkert värde
Bara kontroller där en egenskap har ett enda säkert värde får en fix, i Terraform, CloudFormation och ARM-mallar:
| Kontroll | Egenskap (Terraform / CloudFormation, ARM) | Sätts till |
|---|---|---|
AWS-0086 S3 public access block: blockera publika ACL:er | block_public_acls / BlockPublicAcls | true |
AWS-0087 S3 public access block: blockera publik policy | block_public_policy / BlockPublicPolicy | true |
AWS-0091 S3 public access block: ignorera publika ACL:er | ignore_public_acls / IgnorePublicAcls | true |
AWS-0093 S3 public access block: begränsa publika buckets | restrict_public_buckets / RestrictPublicBuckets | true |
AZU-0008 Azure storage: endast HTTPS-överföringar | enable_https_traffic_only eller https_traffic_only_enabled / supportsHttpsTrafficOnly | true |
AZU-0011 Azure storage: lägst TLS 1.2 | min_tls_version / minimumTlsVersion | TLS1_2 |
AZU-0059 (säker överföring) åtgärdas via den av AZU-0008 och AZU-0011 som gäller på dess rad. Egenskapen måste redan vara skriven med sitt osäkra värde på den rad skannern rapporterade. En fix lägger aldrig till en egenskap eller en resurs. Alla andra kontroller visar ett streck i kolumnen Åtgärd; deras åtgärdstext beskriver vad som ska ändras.
Vad som kontrolleras innan en pull request finns
- En fil, fyndets egen, och bara de rader regeln ändrar, plus en import för en hemlighetsfix.
- Aldrig ett test, CI-konfiguration,
CODEOWNERS, en undertryckningsfil eller ett beroendemanifest. - Syntaxkontroll: den ändrade filen måste kunna tolkas precis som innan (
gofmt -eför Go, en kompilering för Python, en parsning för JavaScript och TypeScript), så att en fix inte kan bryta bygget genom sin syntax. - Omskanning: samma skanner och regler som fyndet (gitleaks för hemligheter, Trivy för IaC) körs på originalfilen och den ändrade filen. Fyndet måste finnas i originalet, vara borta ur den ändrade filen, och inget nytt fynd får dyka upp.
Pull requesten
- Öppnas av organisationens AutoFix-bot,
<org>-fremforge-bot-autofix, på en ny branch underautofix-rule/, med etikettenautofix. Den har ingen etikettai-generated, eftersom ingen AI har gjort den. - Titeln är
fix(security): read NAME from the environment in <path>för en hemlighet, ellerfix(security): <check title> in <path>för IaC. Beskrivningen säger vad som ändrats, hur det kontrollerats och vad du bör kontrollera innan merge. - Aktiveras aldrig för auto-merge. Dina obligatoriska godkännanden och kontroller gäller som för vilken pull request som helst. En person granskar och mergar den.
Gränser
- En aktiv begäran per fynd. Fråga igen efter 10 minuter om en begäran avslutades utan en pull request.
- Högst 3 öppna regelbaserade fix-pull requests per repo och 20 begäranden per organisation under 24 timmar. De använder samma inställningar som AI-fix, med en egen räknare. Sätter du dem till 0 stängs regelbaserade fixar av.
- Ett fynd som tagits upp av pull request-kontrollen finns bara på den pull requestens branch: åtgärda det i själva pull requesten.
API
- Begär en fix
POST /_app/api/v1/orgs/{org}/code-security/secrets/findings/{id}/fixellerPOST /_app/api/v1/orgs/{org}/code-security/iac/findings/{id}/fix, scopefindings:write. Svarar202medrequest_id,status: "locating",engine: "rule"och"automerge": false; pull requesten följer inom några minuter. Ett avslag ärproblem+jsonmedtyperule-fix-<reason>och enreason, till exempelrule-fix-check-not-supportedellerrule-fix-already-proposed, som också innehåller den befintliga begäran. - Lista fix-begäranden
GET /_app/api/v1/orgs/{org}/code-security/fix-requests, scopefindings:read: typ, regel, status, orsak, pull request, ändrade rader och tider. En begäran som avslutades utan pull request anger varför, till exempelsecret_in_template,iac_shape_not_supported,rescan_patched_syntaxellerrescan_finding_still_present.
Granskning
Begäranden finns i granskningsloggen som autofix.proposed, autofix.pr_opened, autofix.rejected, autofix.merged och autofix.closed, med engine: rule.
Se även
- Hemlighetsskanning och IaC-skanning: fynden som knappen sitter på.
- AI-fix: fixar för en kort lista med SAST-regler, gjorda av din organisations egen AI-modell.
- Säkerhetsfixar: fixar för sårbara beroenden och bas-images.