-
-
Notifications
You must be signed in to change notification settings - Fork 34
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
- Loading branch information
Showing
11 changed files
with
186 additions
and
35 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
|
@@ -9,6 +9,7 @@ | |
!pyproject.toml | ||
|
||
!build.js | ||
!imagemagick-policy.xml | ||
!package.json | ||
!package-lock.json | ||
!setup.cfg | ||
|
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,85 @@ | ||
<?xml version="1.0" encoding="UTF-8"?> | ||
<!DOCTYPE policymap [ | ||
<!ELEMENT policymap (policy)*> | ||
<!ATTLIST policymap xmlns CDATA #FIXED ""> | ||
<!ELEMENT policy EMPTY> | ||
<!ATTLIST policy xmlns CDATA #FIXED ""> | ||
<!ATTLIST policy domain NMTOKEN #REQUIRED> | ||
<!ATTLIST policy name NMTOKEN #IMPLIED> | ||
<!ATTLIST policy pattern CDATA #IMPLIED> | ||
<!ATTLIST policy rights NMTOKEN #IMPLIED> | ||
<!ATTLIST policy stealth NMTOKEN #IMPLIED> | ||
<!ATTLIST policy value CDATA #IMPLIED> | ||
]> | ||
<!-- | ||
Adapted from the websafe ImageMagick security policy at <https://github.com/ImageMagick/ImageMagick6/blob/f20b5721ce14bb95b46b01b4f4f14258962ebd36/config/policy-websafe.xml>. | ||
- locks down permitted types even more | ||
- removes or relaxes most DoS limits, which we should manage with application-level quotas | ||
--> | ||
<policymap> | ||
<!-- Set maximum parallel threads. --> | ||
<policy domain="resource" name="thread" value="16"/> | ||
<!-- Set maximum time to live in seconds or mnemonics, e.g. "2 minutes". When | ||
this limit is exceeded, an exception is thrown and processing stops. --> | ||
<policy domain="resource" name="time" value="55"/> | ||
<!-- Set maximum number of open pixel cache files. When this limit is | ||
exceeded, any subsequent pixels cached to disk are closed and reopened | ||
on demand. --> | ||
<policy domain="resource" name="file" value="768"/> | ||
<!-- Set maximum amount of memory in bytes to allocate for the pixel cache | ||
from the heap. When this limit is exceeded, the image pixels are cached | ||
to memory-mapped disk. --> | ||
<policy domain="resource" name="memory" value="2GiB"/> | ||
<!-- Set maximum amount of memory map in bytes to allocate for the pixel | ||
cache. When this limit is exceeded, the image pixels are cached to | ||
disk. --> | ||
<policy domain="resource" name="map" value="2GiB"/> | ||
<!-- Set the maximum width * height of an image that can reside in the pixel | ||
cache memory. Images that exceed the area limit are cached to disk. --> | ||
<policy domain="resource" name="area" value="270MP"/> | ||
<!-- Set maximum amount of disk space in bytes permitted for use by the pixel | ||
cache. When this limit is exceeded, the pixel cache is not be created | ||
and an exception is thrown. --> | ||
<policy domain="resource" name="disk" value="0"/> | ||
<!-- Set the maximum length of an image sequence. When this limit is | ||
exceeded, an exception is thrown. --> | ||
<policy domain="resource" name="list-length" value="3600"/> | ||
<!-- Set the maximum width of an image. When this limit is exceeded, an | ||
exception is thrown. --> | ||
<policy domain="resource" name="width" value="16384"/> | ||
<!-- Set the maximum height of an image. When this limit is exceeded, an | ||
exception is thrown. --> | ||
<policy domain="resource" name="height" value="16384"/> | ||
<!-- Do not create temporary files in the default shared directories, instead | ||
specify a private area to store only ImageMagick temporary files. --> | ||
<policy domain="resource" name="temporary-path" value="/magick-tmp/"/> | ||
<!-- Force memory initialization by memory mapping select memory | ||
allocations. --> | ||
<policy domain="cache" name="memory-map" value="anonymous"/> | ||
<!-- Do not permit any delegates to execute. --> | ||
<policy domain="delegate" rights="none" pattern="*"/> | ||
<!-- Do not permit any image filters to load. --> | ||
<policy domain="filter" rights="none" pattern="*"/> | ||
<!-- Don't read/write from/to stdin/stdout. --> | ||
<policy domain="path" rights="none" pattern="-"/> | ||
<!-- don't read sensitive paths. --> | ||
<policy domain="path" rights="none" pattern="/*"/> | ||
<!-- ImageMagick still copies some input to a temporary file to make it seekable. This copying doesn't count as a write. (TODO: determine why the input - an `open(..., "rb")` file handle - isn't recognized as already seekable.) --> | ||
<policy domain="path" rights="read" pattern="/magick-tmp/magick-*"/> | ||
<!-- Indirect reads are not permitted. --> | ||
<policy domain="path" rights="none" pattern="@*"/> | ||
<!-- Deny all image modules and specifically exempt reading or writing | ||
web-safe image formats. --> | ||
<policy domain="module" rights="none" pattern="*" /> | ||
<policy domain="module" rights="read | write" pattern="{GIF,JPEG,PNG,WEBP}"/> | ||
<!-- This policy sets the number of times to replace content of certain | ||
memory buffers and temporary files before they are freed or deleted. --> | ||
<policy domain="system" name="shred" value="1"/> | ||
<!-- Enable the initialization of buffers with zeros, resulting in a minor | ||
performance penalty but with improved security. --> | ||
<policy domain="system" name="memory-map" value="anonymous"/> | ||
<!-- Set the maximum amount of memory in bytes that are permitted for | ||
allocation requests. --> | ||
<policy domain="system" name="max-memory-request" value="2GiB"/> | ||
</policymap> |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.
Oops, something went wrong.
Oops, something went wrong.