fix(docker): harden /app/extensions permissions to 755 (#30191)
* fix(docker): harden /app/extensions permissions to 755
Bundled extension directories shipped as world-writable (mode 777)
in the Docker image. The plugin security scanner blocks any world-
writable path with:
WARN: blocked plugin candidate: world-writable path
(/app/extensions/memory-core, mode=777)
Add chmod -R 755 /app/extensions in the final USER root RUN step so
all bundled extensions are readable but not world-writable. This runs
as root before switching back to the node user, matching the pattern
already used for chmod 755 /app/openclaw.mjs.
Fixes #30139
* fix(docker): normalize plugin and agent path permissions
* docs(changelog): add docker permissions entry for #30191
* Update CHANGELOG.md
---------
Co-authored-by: Vincent Koc <vincentkoc@ieee.org>
This commit is contained in:
@@ -20,4 +20,11 @@ describe("Dockerfile", () => {
|
||||
);
|
||||
expect(dockerfile).toContain("apt-get install -y --no-install-recommends xvfb");
|
||||
});
|
||||
|
||||
it("normalizes plugin and agent paths permissions in image layers", async () => {
|
||||
const dockerfile = await readFile(dockerfilePath, "utf8");
|
||||
expect(dockerfile).toContain("for dir in /app/extensions /app/.agent /app/.agents");
|
||||
expect(dockerfile).toContain('find "$dir" -type d -exec chmod 755 {} +');
|
||||
expect(dockerfile).toContain('find "$dir" -type f -exec chmod 644 {} +');
|
||||
});
|
||||
});
|
||||
|
||||
Reference in New Issue
Block a user