Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 1 addition & 1 deletion .github/workflows/workflow-test.yml
Original file line number Diff line number Diff line change
Expand Up @@ -42,7 +42,7 @@
runs-on: ${{ inputs.runs-on }}
permissions: {}
container:
image: ${{ inputs.is-web && 'mcr.microsoft.com/playwright:v1.57.0-noble' || null }}
image: ${{ inputs.is-web && 'mcr.microsoft.com/playwright:v1.58.1-noble' || null }}

Check failure

Code scanning / zizmor

unpinned image references Error

unpinned image references
Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

⚠️ Potential issue | 🟠 Major

🧩 Analysis chain

🏁 Script executed:

git ls-files .github/workflows/workflow-test.yml

Repository: lynx-family/lynx-stack

Length of output: 101


🏁 Script executed:

cat -n .github/workflows/workflow-test.yml | sed -n '40,50p'

Repository: lynx-family/lynx-stack

Length of output: 484


🏁 Script executed:

# Search for all container image references to understand the pattern used
rg 'image:' .github/workflows/workflow-test.yml -A 1 -B 1

Repository: lynx-family/lynx-stack

Length of output: 181


🏁 Script executed:

# Check if there are any other container images in the repository to see what pattern is used
rg 'image:' .github/workflows/ -A 1 | head -30

Repository: lynx-family/lynx-stack

Length of output: 238


🌐 Web query:

mcr.microsoft.com/playwright:v1.58.1-noble mutable tag digest pinning container security

💡 Result:

  • Yes, mcr.microsoft.com/playwright:v1.58.1-noble is a tag, and tags are not inherently immutable. In container registries, a tag can be moved to point at a different manifest digest unless the registry/repository enforces immutability. Microsoft’s own Azure Container Registry docs state that tagged images are mutable by default (unless you explicitly lock/prevent writes). [1]

  • For supply-chain/container security, prefer digest pinning (immutable reference), e.g. mcr.microsoft.com/playwright@sha256:<digest>, because a digest identifies the exact image content you reviewed/scanned. Microsoft’s container registry concepts doc explicitly describes pulling by manifest digest. [2]

  • How to get and pin the digest (CLI):

    docker pull mcr.microsoft.com/playwright:v1.58.1-noble
    docker image inspect --format '{{index .RepoDigests 0}}' mcr.microsoft.com/playwright:v1.58.1-noble
    # then use the printed value in FROM / deployments, e.g.
    # FROM mcr.microsoft.com/playwright@sha256:...

    (Equivalent: docker buildx imagetools inspect mcr.microsoft.com/playwright:v1.58.1-noble to see per-arch digests.)

  • Extra Playwright-specific security note: the Playwright Docker docs warn the image is intended for testing/dev and recommend additional hardening (e.g., non-root + seccomp) especially when visiting untrusted sites. [3]

Sources: [1] Microsoft Learn (ACR: tagged images mutable by default) (learn.microsoft.com), [2] Microsoft Learn (pull by digest) (learn.microsoft.com), [3] Playwright Docker docs (security notes & recommendations) (playwright.dev)

Citations:


Pin the Playwright container image by digest.

Line 45 uses a mutable tag reference. Tags can be re-pushed to point to different image content, creating a supply-chain risk. Replace with an immutable digest pin:

Example format
-      image: ${{ inputs.is-web && 'mcr.microsoft.com/playwright:v1.58.1-noble' || null }}
+      image: ${{ inputs.is-web && 'mcr.microsoft.com/playwright@sha256:<digest>' || null }}

To find the digest: docker pull mcr.microsoft.com/playwright:v1.58.1-noble && docker image inspect --format '{{index .RepoDigests 0}}' mcr.microsoft.com/playwright:v1.58.1-noble

🧰 Tools
🪛 GitHub Check: zizmor

[failure] 45-45:
unpinned image references

🤖 Prompt for AI Agents
In @.github/workflows/workflow-test.yml at line 45, Replace the mutable tag
reference under the image: key that uses
'mcr.microsoft.com/playwright:v1.58.1-noble' with an immutable digest-pinned
reference; obtain the digest by pulling the image (docker pull
mcr.microsoft.com/playwright:v1.58.1-noble) and inspecting the repo digest
(docker image inspect --format '{{index .RepoDigests 0}}'
mcr.microsoft.com/playwright:v1.58.1-noble), then update the expression that
sets image: ${{ inputs.is-web && 'mcr.microsoft.com/playwright:v1.58.1-noble' ||
null }} to use the returned digest string in place of the tag.

env:
CI: 1
TURBO_TELEMETRY_DISABLED: 1
Expand Down
2 changes: 1 addition & 1 deletion packages/mcp-servers/devtool-mcp-server/package.json
Original file line number Diff line number Diff line change
Expand Up @@ -38,7 +38,7 @@
},
"devDependencies": {
"@microsoft/api-extractor": "^7.55.2",
"@modelcontextprotocol/sdk": "^1.20.0",
"@modelcontextprotocol/sdk": "^1.25.2",
"@types/debug": "^4.1.12",
"core-js": "^3.47.0",
"debug": "^4.4.3",
Expand Down
4 changes: 2 additions & 2 deletions packages/mcp-servers/docs-mcp-server/package.json
Original file line number Diff line number Diff line change
Expand Up @@ -17,13 +17,13 @@
"build": "tsc"
},
"dependencies": {
"@modelcontextprotocol/sdk": "^1.20.0",
"@modelcontextprotocol/sdk": "^1.25.2",
"commander": "^13.1.0",
"debug": "^4.4.3",
"empathic": "^2.0.0",
"mdast-util-from-markdown": "^2.0.2",
"mdast-util-to-markdown": "^2.1.2",
"undici": "^6.22.0"
"undici": "^6.23.0"
},
"devDependencies": {
"@types/debug": "^4.1.12",
Expand Down
4 changes: 2 additions & 2 deletions packages/web-platform/playwright-fixtures/package.json
Original file line number Diff line number Diff line change
Expand Up @@ -11,9 +11,9 @@
"v8-to-istanbul": "^9.3.0"
},
"devDependencies": {
"@playwright/test": "^1.57.0"
"@playwright/test": "^1.58.1"
},
"peerDependencies": {
"@playwright/test": "^1.57.0"
"@playwright/test": "^1.58.1"
}
}
2 changes: 1 addition & 1 deletion packages/web-platform/web-core-wasm-e2e/package.json
Original file line number Diff line number Diff line change
Expand Up @@ -21,7 +21,7 @@
"@lynx-js/react-rsbuild-plugin": "workspace:*",
"@lynx-js/rspeedy": "workspace:*",
"@lynx-js/web-core-wasm": "workspace:*",
"@playwright/test": "^1.57.0",
"@playwright/test": "^1.58.1",
"@rsbuild/core": "catalog:rsbuild",
"nyc": "^17.1.0"
}
Expand Down
2 changes: 1 addition & 1 deletion packages/web-platform/web-elements/package.json
Original file line number Diff line number Diff line change
Expand Up @@ -136,7 +136,7 @@
},
"devDependencies": {
"@lynx-js/playwright-fixtures": "workspace:*",
"@playwright/test": "^1.57.0",
"@playwright/test": "^1.58.1",
"@rsbuild/core": "catalog:rsbuild",
"@rsbuild/plugin-source-build": "1.0.3",
"nyc": "^17.1.0",
Expand Down
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
2 changes: 1 addition & 1 deletion packages/web-platform/web-tests/package.json
Original file line number Diff line number Diff line change
Expand Up @@ -38,7 +38,7 @@
"@lynx-js/web-platform-rsbuild-plugin": "workspace:*",
"@lynx-js/web-rsbuild-server-middleware": "workspace:*",
"@lynx-js/webpack-dev-transport": "workspace:*",
"@playwright/test": "^1.57.0",
"@playwright/test": "^1.58.1",
"@rspack/cli": "catalog:rspack",
"@rspack/core": "catalog:rspack",
"nyc": "^17.1.0",
Expand Down
44 changes: 22 additions & 22 deletions pnpm-lock.yaml

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

Loading