mirror of
https://github.com/Alfresco/alfresco-ng2-components.git
synced 2026-09-16 18:13:06 +00:00
AAE-51800 Update Supply Chain Review GH AW to latest (#12238)
[skip ci]
This commit is contained in:
@@ -1,9 +1,9 @@
|
|||||||
{
|
{
|
||||||
"entries": {
|
"entries": {
|
||||||
"github/gh-aw-actions/setup@v0.87.10": {
|
"github/gh-aw-actions/setup@v0.88.7": {
|
||||||
"repo": "github/gh-aw-actions/setup",
|
"repo": "github/gh-aw-actions/setup",
|
||||||
"version": "v0.87.10",
|
"version": "v0.88.7",
|
||||||
"sha": "bc8c008a419c5b7a29df6f5641edd35fd1c6ea85"
|
"sha": "5e508589e03a7757a7e05b26e834292f5445bfb6"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"containers": {
|
"containers": {
|
||||||
@@ -12,20 +12,45 @@
|
|||||||
"digest": "sha256:0d727725c737b58c7bdf51f640cffb928385ec46517e0917c7f1a02f1bada8b4",
|
"digest": "sha256:0d727725c737b58c7bdf51f640cffb928385ec46517e0917c7f1a02f1bada8b4",
|
||||||
"pinned_image": "ghcr.io/github/gh-aw-firewall/agent:0.27.44@sha256:0d727725c737b58c7bdf51f640cffb928385ec46517e0917c7f1a02f1bada8b4"
|
"pinned_image": "ghcr.io/github/gh-aw-firewall/agent:0.27.44@sha256:0d727725c737b58c7bdf51f640cffb928385ec46517e0917c7f1a02f1bada8b4"
|
||||||
},
|
},
|
||||||
|
"ghcr.io/github/gh-aw-firewall/agent:0.28.14": {
|
||||||
|
"image": "ghcr.io/github/gh-aw-firewall/agent:0.28.14",
|
||||||
|
"digest": "sha256:f7df036c86575527b61f3f7df91c4412349a12b2a74988d929eafa2999230c98",
|
||||||
|
"pinned_image": "ghcr.io/github/gh-aw-firewall/agent:0.28.14@sha256:f7df036c86575527b61f3f7df91c4412349a12b2a74988d929eafa2999230c98"
|
||||||
|
},
|
||||||
"ghcr.io/github/gh-aw-firewall/api-proxy:0.27.44": {
|
"ghcr.io/github/gh-aw-firewall/api-proxy:0.27.44": {
|
||||||
"image": "ghcr.io/github/gh-aw-firewall/api-proxy:0.27.44",
|
"image": "ghcr.io/github/gh-aw-firewall/api-proxy:0.27.44",
|
||||||
"digest": "sha256:b50fbadba138f6e9aba94aca09711335c489bb3b15861220cb66f6092e042dc7",
|
"digest": "sha256:b50fbadba138f6e9aba94aca09711335c489bb3b15861220cb66f6092e042dc7",
|
||||||
"pinned_image": "ghcr.io/github/gh-aw-firewall/api-proxy:0.27.44@sha256:b50fbadba138f6e9aba94aca09711335c489bb3b15861220cb66f6092e042dc7"
|
"pinned_image": "ghcr.io/github/gh-aw-firewall/api-proxy:0.27.44@sha256:b50fbadba138f6e9aba94aca09711335c489bb3b15861220cb66f6092e042dc7"
|
||||||
},
|
},
|
||||||
|
"ghcr.io/github/gh-aw-firewall/api-proxy:0.28.14": {
|
||||||
|
"image": "ghcr.io/github/gh-aw-firewall/api-proxy:0.28.14",
|
||||||
|
"digest": "sha256:6f95e2234dd9bd6333a8ff28ccea7ecf0204acd4a09108723844dbd2bf6268c5",
|
||||||
|
"pinned_image": "ghcr.io/github/gh-aw-firewall/api-proxy:0.28.14@sha256:6f95e2234dd9bd6333a8ff28ccea7ecf0204acd4a09108723844dbd2bf6268c5"
|
||||||
|
},
|
||||||
"ghcr.io/github/gh-aw-firewall/squid:0.27.44": {
|
"ghcr.io/github/gh-aw-firewall/squid:0.27.44": {
|
||||||
"image": "ghcr.io/github/gh-aw-firewall/squid:0.27.44",
|
"image": "ghcr.io/github/gh-aw-firewall/squid:0.27.44",
|
||||||
"digest": "sha256:83e48bbe12c634be8c228a576832fe45f66c529ac3659db92bddbcf2eeb6d627",
|
"digest": "sha256:83e48bbe12c634be8c228a576832fe45f66c529ac3659db92bddbcf2eeb6d627",
|
||||||
"pinned_image": "ghcr.io/github/gh-aw-firewall/squid:0.27.44@sha256:83e48bbe12c634be8c228a576832fe45f66c529ac3659db92bddbcf2eeb6d627"
|
"pinned_image": "ghcr.io/github/gh-aw-firewall/squid:0.27.44@sha256:83e48bbe12c634be8c228a576832fe45f66c529ac3659db92bddbcf2eeb6d627"
|
||||||
},
|
},
|
||||||
|
"ghcr.io/github/gh-aw-firewall/squid:0.28.14": {
|
||||||
|
"image": "ghcr.io/github/gh-aw-firewall/squid:0.28.14",
|
||||||
|
"digest": "sha256:2ce8df3abf3e9b76e9c0cf5863da41f1ab3f89b20ad14b988806ab89e7bf2cd5",
|
||||||
|
"pinned_image": "ghcr.io/github/gh-aw-firewall/squid:0.28.14@sha256:2ce8df3abf3e9b76e9c0cf5863da41f1ab3f89b20ad14b988806ab89e7bf2cd5"
|
||||||
|
},
|
||||||
|
"ghcr.io/github/gh-aw-mcpg:v0.4.18": {
|
||||||
|
"image": "ghcr.io/github/gh-aw-mcpg:v0.4.18",
|
||||||
|
"digest": "sha256:85b940556a8faa4e1fdbef124bfd75f2c4ebd855a10b88a1c3b6f3e97f6f1a53",
|
||||||
|
"pinned_image": "ghcr.io/github/gh-aw-mcpg:v0.4.18@sha256:85b940556a8faa4e1fdbef124bfd75f2c4ebd855a10b88a1c3b6f3e97f6f1a53"
|
||||||
|
},
|
||||||
"ghcr.io/github/gh-aw-node": {
|
"ghcr.io/github/gh-aw-node": {
|
||||||
"image": "ghcr.io/github/gh-aw-node",
|
"image": "ghcr.io/github/gh-aw-node",
|
||||||
"digest": "sha256:0d9f1fb5fd6610c0ac1f5194a38e45a8a1e81f8a390d5142d8e4e6f26a4b3196",
|
"digest": "sha256:87366cb93b06d7a4e3db08a705875efc027b6c394da336119e7a067abacbb39b",
|
||||||
"pinned_image": "ghcr.io/github/gh-aw-node@sha256:0d9f1fb5fd6610c0ac1f5194a38e45a8a1e81f8a390d5142d8e4e6f26a4b3196"
|
"pinned_image": "ghcr.io/github/gh-aw-node@sha256:87366cb93b06d7a4e3db08a705875efc027b6c394da336119e7a067abacbb39b"
|
||||||
|
},
|
||||||
|
"ghcr.io/github/github-mcp-server:v1.11.0": {
|
||||||
|
"image": "ghcr.io/github/github-mcp-server:v1.11.0",
|
||||||
|
"digest": "sha256:fbec75de11c255213fa08d80fb166abe73d851fff631c51c0079872967720699",
|
||||||
|
"pinned_image": "ghcr.io/github/github-mcp-server:v1.11.0@sha256:fbec75de11c255213fa08d80fb166abe73d851fff631c51c0079872967720699"
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
+122
-65
File diff suppressed because one or more lines are too long
@@ -23,6 +23,8 @@ network:
|
|||||||
- api.osv.dev
|
- api.osv.dev
|
||||||
- api.scorecard.dev
|
- api.scorecard.dev
|
||||||
- search.maven.org
|
- search.maven.org
|
||||||
|
- api.github.com
|
||||||
|
- github.com
|
||||||
|
|
||||||
safe-outputs:
|
safe-outputs:
|
||||||
add-comment:
|
add-comment:
|
||||||
@@ -33,8 +35,11 @@ safe-outputs:
|
|||||||
remove-labels:
|
remove-labels:
|
||||||
allowed: [security:low, security:medium, security:high]
|
allowed: [security:low, security:medium, security:high]
|
||||||
submit-pull-request-review:
|
submit-pull-request-review:
|
||||||
|
allowed-events: [COMMENT, REQUEST_CHANGES]
|
||||||
|
supersede-older-reviews: true
|
||||||
|
dismiss-pull-request-review:
|
||||||
|
|
||||||
source: Alfresco/alfresco-build-tools/.github/workflows/supply-chain-review.md@e35840d877477896b1f0aa05d05371cb3b31ce9f
|
source: Alfresco/alfresco-build-tools/.github/workflows/supply-chain-review.md@599eebd2a1b84e76d540e41036520df3a64c7cbd
|
||||||
---
|
---
|
||||||
|
|
||||||
# Supply Chain Review
|
# Supply Chain Review
|
||||||
@@ -57,7 +62,7 @@ For each changed dependency extract:
|
|||||||
- Old version (or mark as `NEW DEPENDENCY` if newly added)
|
- Old version (or mark as `NEW DEPENDENCY` if newly added)
|
||||||
- New version
|
- New version
|
||||||
|
|
||||||
If no dependency files were changed, post a brief PR comment stating that no dependency changes were detected and no review is needed, then stop.
|
If no dependency files were changed, post a brief PR comment stating that no dependency changes were detected, then go directly to Step 6 — treating this as LOW risk — to remove any stale `security:*` labels and submit the required pull request review, then stop.
|
||||||
|
|
||||||
## Step 1b — Filter Internal Dependencies
|
## Step 1b — Filter Internal Dependencies
|
||||||
|
|
||||||
@@ -74,7 +79,7 @@ For each internal dependency found:
|
|||||||
2. Record the package name (with `@` replaced by `(at)` for GitHub comment compatibility), ecosystem, old version, and new version in a separate "Internal Dependencies (Skipped)" list.
|
2. Record the package name (with `@` replaced by `(at)` for GitHub comment compatibility), ecosystem, old version, and new version in a separate "Internal Dependencies (Skipped)" list.
|
||||||
3. Continue with Step 2 only for the remaining external/public dependencies.
|
3. Continue with Step 2 only for the remaining external/public dependencies.
|
||||||
|
|
||||||
If ALL changed dependencies are internal, skip Steps 2-4 and proceed directly to Step 5, posting a report that lists the internal dependencies and notes that no external supply chain analysis was performed.
|
If ALL changed dependencies are internal, skip Steps 2-4 and proceed directly to Step 5 — treating this as LOW risk for Step 6 — posting a report that lists the internal dependencies and notes that no external supply chain analysis was performed.
|
||||||
|
|
||||||
## Step 2 — Collect Data for Each Dependency
|
## Step 2 — Collect Data for Each Dependency
|
||||||
|
|
||||||
@@ -268,7 +273,7 @@ Verify that the source repository URL in registry metadata points to the canonic
|
|||||||
Assign a risk score (0-100) to each dependency using these guidelines:
|
Assign a risk score (0-100) to each dependency using these guidelines:
|
||||||
|
|
||||||
| Priority | Signal | Typical Impact |
|
| Priority | Signal | Typical Impact |
|
||||||
| -------- | ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | -------------- |
|
|----------|------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|----------------|
|
||||||
| Highest | Known CRITICAL/HIGH CVEs in new version, confirmed typosquatting, malicious code in diff, build provenance mismatch (tag points to different code than published artifact), tag mimicry on fork | 60+ points |
|
| Highest | Known CRITICAL/HIGH CVEs in new version, confirmed typosquatting, malicious code in diff, build provenance mismatch (tag points to different code than published artifact), tag mimicry on fork | 60+ points |
|
||||||
| High | Maintainer takeover pattern (publisher changed + old maintainers removed), dangerous install scripts, known compromised package, moved/recreated tag with different commit, provenance attestations removed from package that previously had them | 20-40 points |
|
| High | Maintainer takeover pattern (publisher changed + old maintainers removed), dangerous install scripts, known compromised package, moved/recreated tag with different commit, provenance attestations removed from package that previously had them | 20-40 points |
|
||||||
| Medium | Low OpenSSF Scorecard (< 3), publisher changed (without full takeover), new install scripts, very recent publish (< 48h), obfuscated code in diff, unsigned lightweight tags on security-critical packages, absence of provenance on high-profile packages | 10-20 points |
|
| Medium | Low OpenSSF Scorecard (< 3), publisher changed (without full takeover), new install scripts, very recent publish (< 48h), obfuscated code in diff, unsigned lightweight tags on security-critical packages, absence of provenance on high-profile packages | 10-20 points |
|
||||||
@@ -305,7 +310,7 @@ GitHub enforces a maximum of 10 mentions per comment. Package names containing `
|
|||||||
### Internal Dependencies (Skipped)
|
### Internal Dependencies (Skipped)
|
||||||
|
|
||||||
| Package | Ecosystem | Old Version | New Version | Reason |
|
| Package | Ecosystem | Old Version | New Version | Reason |
|
||||||
|-------------------|-----------|-------------|-------------|---------------------------------|
|
|-----------------|-----------|-------------|-------------|-------------------------------|
|
||||||
| (at)hyland/core | npm | 3.1.0 | 3.2.0 | Internal ((at)hyland/* scope) |
|
| (at)hyland/core | npm | 3.1.0 | 3.2.0 | Internal ((at)hyland/* scope) |
|
||||||
|
|
||||||
_These dependencies are internal packages not available on public registries. External API checks were skipped._
|
_These dependencies are internal packages not available on public registries. External API checks were skipped._
|
||||||
@@ -342,18 +347,42 @@ No suspicious patterns detected. Routine upgrade.
|
|||||||
|
|
||||||
## Step 6 — Apply Label and Review Status
|
## Step 6 — Apply Label and Review Status
|
||||||
|
|
||||||
- First, remove any `security:low`, `security:medium`, or `security:high` labels already present on the PR from a previous review — this PR may have been reviewed before (e.g., after a new commit), and stale risk labels must not remain alongside the new one.
|
### 6a. Labels — order-independent update
|
||||||
- Then apply a label to the PR based on the highest risk level found:
|
|
||||||
- `security:low` for LOW risk
|
Determine the single target label for the highest risk level found: `security:low`, `security:medium`, or `security:high`.
|
||||||
- `security:medium` for MEDIUM risk
|
|
||||||
- `security:high` for HIGH or CRITICAL risk
|
- Remove only the OTHER `security:*` labels (the ones that do NOT match the target) if present on the PR — this clears stale risk labels left by a previous review (e.g., after a new commit changed the risk level).
|
||||||
- If the highest risk level is HIGH or CRITICAL, submit a pull request review requesting changes, with a summary of the critical findings.
|
- Add the target label if it is not already present.
|
||||||
- If the risk is MEDIUM, submit a pull request review as a comment, noting that human review is recommended.
|
- **Never remove the target label itself.** Because the remove and add operations act on disjoint labels, the final state is correct regardless of which of the two safe-output calls (`add_labels` / `remove_labels`) happens to be processed first — do NOT rely on emitting them in a particular order, since that ordering is not guaranteed. (Do not, for example, remove all three `security:*` labels and then add the target back — if the removal is processed after the add, the target label would be stripped again, leaving the PR with no risk label at all.)
|
||||||
- If the risk is LOW, do not submit a review — the PR comment is sufficient.
|
|
||||||
|
### 6b. Dismiss stale reviews from this workflow
|
||||||
|
|
||||||
|
Every review this workflow posts (see 6c) MUST start its body with the exact literal marker line `**Supply Chain Review**` as the first line, so future runs can recognize their own prior reviews.
|
||||||
|
|
||||||
|
Before posting the new review:
|
||||||
|
|
||||||
|
1. Fetch the PR's existing reviews (GitHub MCP `pull_requests` toolset).
|
||||||
|
2. Identify any review that is authored by this workflow's actor AND whose body starts with the `**Supply Chain Review**` marker AND is still in the `CHANGES_REQUESTED` state — that is a stale review from an earlier run of this same workflow (e.g., posted before the flagged dependency was fixed, downgraded, or removed).
|
||||||
|
3. For each such review, call `dismiss_pull_request_review` with its explicit numeric `review_id` (do NOT use `'auto'` — this repository may run other agentic workflows that also post as the same actor, and `'auto'` would dismiss their reviews too) and a justification of at least 20 characters (e.g., "Superseded by a newer Supply Chain Review run.").
|
||||||
|
|
||||||
|
Do this even though `submit-pull-request-review` is also configured with `supersede-older-reviews: true` — that setting is best-effort and may not always recognize the prior review, so the explicit dismissal above is the reliable mechanism and must always be attempted.
|
||||||
|
|
||||||
|
### 6c. Submit the review
|
||||||
|
|
||||||
|
**Always submit a pull request review — in every invocation, with no exceptions.** This is not conditional on risk level. Submit a review even when there are no dependency changes, when all dependencies are internal, or when risk is LOW — skipping it would mean a stale `REQUEST_CHANGES` review from an earlier run is never replaced or dismissed.
|
||||||
|
|
||||||
|
The review body must start with the `**Supply Chain Review**` marker line (see 6b), followed by the assessment:
|
||||||
|
|
||||||
|
- If the highest risk level is HIGH or CRITICAL, submit the review as **request changes**, with a summary of the critical findings.
|
||||||
|
- If the risk is MEDIUM, submit the review as a **comment**, noting that human review is recommended.
|
||||||
|
- If the risk is LOW (including when there are no dependency changes, or all changed dependencies are internal), submit the review as a **comment**, summarizing that no concerns were found and the PR comment has the full detail.
|
||||||
|
- **Never submit the review as an approval, under any circumstance** — this workflow only ever comments or requests changes; a human always makes the merge decision.
|
||||||
|
|
||||||
## Important Guidelines
|
## Important Guidelines
|
||||||
|
|
||||||
- **Never approve or merge the PR** — all actions are advisory or blocking only. A human always makes the merge decision.
|
- **Never approve or merge the PR** — all actions are advisory or blocking only. A human always makes the merge decision. Every review this workflow submits must use the comment or request-changes event — never the approve event.
|
||||||
|
- **Always submit exactly one pull request review per invocation, regardless of outcome**, and always prefix its body with the `**Supply Chain Review**` marker — this is required so that a later run of this same workflow can find and dismiss it via `dismiss_pull_request_review` once it becomes stale (see Step 6b). Do not rely on `supersede-older-reviews` alone; it is best-effort.
|
||||||
|
- **Never remove the `security:*` label matching the current risk level** when clearing stale labels — only remove the other ones, so the final label state is correct no matter which safe-output call is processed first (see Step 6a).
|
||||||
- Be specific in findings — cite exact data (vulnerability ID, maintainer name, script content, file path, API response) rather than vague warnings.
|
- Be specific in findings — cite exact data (vulnerability ID, maintainer name, script content, file path, API response) rather than vague warnings.
|
||||||
- For Maven packages, adapt npm-specific checks appropriately (e.g., install scripts become build plugin analysis, maintainer metadata may be limited).
|
- For Maven packages, adapt npm-specific checks appropriately (e.g., install scripts become build plugin analysis, maintainer metadata may be limited).
|
||||||
- When a package is a NEW dependency (no old version), pay extra attention to project health, name legitimacy, and install scripts since there is no historical baseline to compare against.
|
- When a package is a NEW dependency (no old version), pay extra attention to project health, name legitimacy, and install scripts since there is no historical baseline to compare against.
|
||||||
|
|||||||
Reference in New Issue
Block a user