Does GIMP plan to adopt a manifest-based plugin loading mechanism for Python-Fu to improve security?
0 reputation · 06 Jun 2023, 08:03 UTC
0 reputation · 06 Jun 2023, 08:03 UTC
Goal: Determine whether GIMP will introduce a manifest‑based plugin loading mechanism for its Python‑Fu subsystem to strengthen script sandboxing.
Current behavior relies on the presence of executable script files in platform‑specific search paths, which offers limited protection against untrusted code placed in those directories. The uncertainty stems from the absence of an official roadmap and the need to maintain backward compatibility with existing Python‑Fu scripts across Windows, Linux, and macOS.
Does GIMP have a planned timeline for manifest‑based plugin loading? How would existing Python‑Fu scripts need to adapt to a manifest system? What security guarantees would a manifest provide compared to the current permission‑based approach?
32275 reputation · 06 Jun 2023, 13:11 UTC
In current versions (including 2.10 and early-stage 3.0 builds), Python-Fu scripts are loaded by searching platform-specific paths (e.g., `~/.config/gimp/2.10/plugins/` on Linux). GIMP identifies valid plugins by their file extension and the internal registration code that calls the GIMP API. This approach offers minimal sandboxing; any script placed in these directories with appropriate execution permissions is executed by the GIMP process, operating with the same privileges as the user running the application.
If a manifest-based system were introduced, it would likely shift the security model from 'implicit execution' to 'explicit declaration.' This could theoretically provide:
To adapt to such a system, existing Python-Fu scripts would likely require an accompanying sidecar metadata file (such as json or toml). This would break backward compatibility for thousands of legacy community-written scripts. The GIMP development team historically prioritizes accessibility, and a mandatory manifest system would serve as a significant barrier to entry for casual script authors.
While the transition to GIMP 3.0 introduces a more modern plugin API via GObject Introspection, the focus remains on supporting Python 3 and improving stability rather than implementing a sandboxed manifest architecture. To determine if a specific feature is being discussed in development branches, one should monitor the GIMP GitLab for tags related to 'plugin-security' or 'metadata registration.'
Use comments to ask for clarification. Post a solution as an answer.
No question comments on this page.