upload-safety 0.2.1 → 0.3.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (45) hide show
  1. package/README.md +38 -7
  2. package/dist/archive-content.d.ts +15 -0
  3. package/dist/archive-content.d.ts.map +1 -0
  4. package/dist/archive-content.js +277 -0
  5. package/dist/archive-content.js.map +1 -0
  6. package/dist/check-upload.js +1 -1
  7. package/dist/check-upload.js.map +1 -1
  8. package/dist/heif-metadata.d.ts +8 -0
  9. package/dist/heif-metadata.d.ts.map +1 -1
  10. package/dist/heif-metadata.js +1 -1
  11. package/dist/heif-metadata.js.map +1 -1
  12. package/dist/media-formats.d.ts +45 -0
  13. package/dist/media-formats.d.ts.map +1 -0
  14. package/dist/media-formats.js +457 -0
  15. package/dist/media-formats.js.map +1 -0
  16. package/dist/photo-metadata.d.ts +4 -2
  17. package/dist/photo-metadata.d.ts.map +1 -1
  18. package/dist/photo-metadata.js +29 -2
  19. package/dist/photo-metadata.js.map +1 -1
  20. package/dist/rtf-content.d.ts +12 -0
  21. package/dist/rtf-content.d.ts.map +1 -0
  22. package/dist/rtf-content.js +175 -0
  23. package/dist/rtf-content.js.map +1 -0
  24. package/dist/upload-allowlist.d.ts +19 -8
  25. package/dist/upload-allowlist.d.ts.map +1 -1
  26. package/dist/upload-allowlist.js +119 -23
  27. package/dist/upload-allowlist.js.map +1 -1
  28. package/dist/video-formats.d.ts +24 -0
  29. package/dist/video-formats.d.ts.map +1 -0
  30. package/dist/video-formats.js +269 -0
  31. package/dist/video-formats.js.map +1 -0
  32. package/dist/zip-entries.d.ts +8 -0
  33. package/dist/zip-entries.d.ts.map +1 -1
  34. package/dist/zip-entries.js +29 -2
  35. package/dist/zip-entries.js.map +1 -1
  36. package/package.json +6 -3
  37. package/src/archive-content.ts +306 -0
  38. package/src/check-upload.ts +1 -1
  39. package/src/heif-metadata.ts +2 -2
  40. package/src/media-formats.ts +478 -0
  41. package/src/photo-metadata.ts +30 -2
  42. package/src/rtf-content.ts +178 -0
  43. package/src/upload-allowlist.ts +145 -27
  44. package/src/video-formats.ts +287 -0
  45. package/src/zip-entries.ts +33 -3
@@ -0,0 +1,175 @@
1
+ /**
2
+ * Checks that an RTF upload holds no active content. Word's RTF reader is lenient and attackers
3
+ * obfuscate heavily, so this refuses on the presence of dangerous control words and DDE fields
4
+ * instead of trying to understand the document.
5
+ */
6
+ // Word opens a file as RTF when it starts with `{\rt`, whatever follows (`{\rtf1` is only the usual form).
7
+ const RTF_SIGNATURE = '{\\rt';
8
+ const MAX_GROUP_DEPTH = 1000;
9
+ const DEFAULT_UNICODE_SKIP = 1;
10
+ // Word runs the command of a DDE field (with a prompt); QUOTE with character codes can spell one out.
11
+ const DDE_FIELD = /\bDDE(?:AUTO)?\b|\bQUOTE\s+\d/i;
12
+ /**
13
+ * Control words that carry or load active content:
14
+ * - `obj*` starts an embedded or linked OLE object (`\object`, `\objdata`, `\objemb`, `\objautlink`, `\objupdate`, ...),
15
+ * the carrier of Equation Editor exploits (CVE-2017-11882) and auto-loading links (CVE-2017-0199).
16
+ * - `template` attaches a template, which can be a remote one that Word loads and runs macros from.
17
+ * - `datastore` holds a custom XML data store, a way to smuggle an object past a reader that only looks for `obj*`.
18
+ */
19
+ const ACTIVE_CONTROL_WORD_PREFIXES = ['obj', 'template', 'datastore'];
20
+ const FIELD_INSTRUCTION_WORD = 'fldinst';
21
+ const BIN_WORD = 'bin';
22
+ const UNICODE_WORD = 'u';
23
+ const UNICODE_SKIP_WORD = 'uc';
24
+ const CHAR_OPEN_GROUP = 0x7b;
25
+ const CHAR_CLOSE_GROUP = 0x7d;
26
+ const CHAR_BACKSLASH = 0x5c;
27
+ const CHAR_QUOTE = 0x27;
28
+ const CHAR_TILDE = 0x7e;
29
+ const CHAR_SPACE = 0x20;
30
+ const CHAR_CR = 0x0d;
31
+ const CHAR_LF = 0x0a;
32
+ const CHAR_MINUS = 0x2d;
33
+ const CHAR_ZERO = 0x30;
34
+ const CHAR_NINE = 0x39;
35
+ const MAX_UNICODE_PARAMETER = 0xffff;
36
+ const UNICODE_RANGE = 0x10000;
37
+ const isLetter = (byte) => (byte >= 0x41 && byte <= 0x5a) || (byte >= 0x61 && byte <= 0x7a);
38
+ const isDigit = (byte) => byte >= CHAR_ZERO && byte <= CHAR_NINE;
39
+ /** The value of a hex digit byte, or -1. */
40
+ function hexValue(byte) {
41
+ if (byte === undefined) {
42
+ return -1;
43
+ }
44
+ if (isDigit(byte)) {
45
+ return byte - CHAR_ZERO;
46
+ }
47
+ const lower = byte | 0x20;
48
+ return lower >= 0x61 && lower <= 0x66 ? lower - 0x61 + 10 : -1;
49
+ }
50
+ function isActiveControlWord(word) {
51
+ return ACTIVE_CONTROL_WORD_PREFIXES.some((prefix) => word.startsWith(prefix));
52
+ }
53
+ /**
54
+ * Scans RTF the way a reader tokenizes it: groups, control words, control symbols, `\bin` data and text.
55
+ * Returns 'macros' for an active control word or a DDE field, 'mismatch' when the file is not RTF
56
+ * or cannot be read to the end, else 'valid'.
57
+ */
58
+ export function inspectRtf(content) {
59
+ if (content.toString('latin1', 0, RTF_SIGNATURE.length).toLowerCase() !== RTF_SIGNATURE) {
60
+ return 'mismatch';
61
+ }
62
+ // Word reads the instruction of a field from its `\fldinst` group, nested groups included.
63
+ let instructions = '';
64
+ let fieldDepth = -1;
65
+ // `\uc` is scoped to its group.
66
+ const unicodeSkips = [DEFAULT_UNICODE_SKIP];
67
+ let depth = 0;
68
+ let skipCount = 0;
69
+ let position = 0;
70
+ const addText = (text) => {
71
+ if (skipCount > 0) {
72
+ skipCount--;
73
+ return;
74
+ }
75
+ if (fieldDepth >= 0) {
76
+ instructions += text;
77
+ }
78
+ };
79
+ while (position < content.length) {
80
+ const byte = content[position++];
81
+ if (byte === CHAR_OPEN_GROUP) {
82
+ depth++;
83
+ if (depth > MAX_GROUP_DEPTH) {
84
+ return 'mismatch';
85
+ }
86
+ unicodeSkips.push(unicodeSkips[unicodeSkips.length - 1]);
87
+ skipCount = 0;
88
+ }
89
+ else if (byte === CHAR_CLOSE_GROUP) {
90
+ if (depth > 0) {
91
+ if (depth === fieldDepth) {
92
+ fieldDepth = -1;
93
+ }
94
+ depth--;
95
+ unicodeSkips.pop();
96
+ }
97
+ skipCount = 0;
98
+ }
99
+ else if (byte === CHAR_CR || byte === CHAR_LF) {
100
+ // Readers ignore raw line breaks, so `DD` and `E` on two lines still spell DDE.
101
+ continue;
102
+ }
103
+ else if (byte !== CHAR_BACKSLASH) {
104
+ addText(String.fromCharCode(byte));
105
+ }
106
+ else if (position < content.length) {
107
+ const next = content[position];
108
+ if (!isLetter(next)) {
109
+ position++;
110
+ if (next === CHAR_QUOTE) {
111
+ const high = hexValue(content[position]);
112
+ const low = hexValue(content[position + 1]);
113
+ if (high >= 0 && low >= 0) {
114
+ position += 2;
115
+ addText(String.fromCharCode(high * 16 + low));
116
+ }
117
+ }
118
+ else if (next === CHAR_TILDE) {
119
+ addText(String.fromCharCode(CHAR_SPACE));
120
+ }
121
+ else if (next === CHAR_BACKSLASH || next === CHAR_OPEN_GROUP || next === CHAR_CLOSE_GROUP) {
122
+ addText(String.fromCharCode(next));
123
+ }
124
+ continue;
125
+ }
126
+ const wordStart = position;
127
+ while (position < content.length && isLetter(content[position])) {
128
+ position++;
129
+ }
130
+ const word = content.toString('latin1', wordStart, position).toLowerCase();
131
+ let parameter;
132
+ const parameterStart = position;
133
+ if (content[position] === CHAR_MINUS) {
134
+ position++;
135
+ }
136
+ const digitsStart = position;
137
+ while (position < content.length && isDigit(content[position])) {
138
+ position++;
139
+ }
140
+ if (position > digitsStart) {
141
+ parameter = Number(content.toString('latin1', parameterStart, position));
142
+ }
143
+ else {
144
+ position = parameterStart;
145
+ }
146
+ if (content[position] === CHAR_SPACE) {
147
+ position++;
148
+ }
149
+ if (isActiveControlWord(word)) {
150
+ return 'macros';
151
+ }
152
+ if (word === FIELD_INSTRUCTION_WORD && fieldDepth < 0) {
153
+ fieldDepth = depth;
154
+ }
155
+ else if (word === BIN_WORD) {
156
+ const length = parameter ?? 0;
157
+ if (length < 0 || position + length > content.length) {
158
+ return 'mismatch';
159
+ }
160
+ position += length;
161
+ }
162
+ else if (word === UNICODE_SKIP_WORD && parameter !== undefined && parameter >= 0) {
163
+ unicodeSkips[unicodeSkips.length - 1] = parameter;
164
+ }
165
+ else if (word === UNICODE_WORD && parameter !== undefined) {
166
+ const codePoint = parameter < 0 ? parameter + UNICODE_RANGE : Math.min(parameter, MAX_UNICODE_PARAMETER);
167
+ skipCount = 0;
168
+ addText(String.fromCharCode(codePoint));
169
+ skipCount = unicodeSkips[unicodeSkips.length - 1];
170
+ }
171
+ }
172
+ }
173
+ return DDE_FIELD.test(instructions) ? 'macros' : 'valid';
174
+ }
175
+ //# sourceMappingURL=rtf-content.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"rtf-content.js","sourceRoot":"","sources":["../src/rtf-content.ts"],"names":[],"mappings":"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"}
@@ -1,12 +1,22 @@
1
1
  /**
2
- * Strict allowlist + validation for document uploads: PDF, MS Office (also the
3
- * legacy formats), LibreOffice, photos (JPEG, PNG, WebP, HEIC/HEIF, AVIF) and CSV and text. Validation happens on three axes: file
4
- * extension, declared MIME type, and the actual content, i.e. the magic-byte
5
- * signature plus the parts a file of that kind always has. Extension and MIME
6
- * alone are trivially spoofed.
2
+ * Strict allowlist + validation for uploads: PDF, MS Office (also the legacy formats), LibreOffice,
3
+ * images, audio, video, text, RTF and archives. Validation happens on three axes: file extension,
4
+ * declared MIME type, and the actual content, i.e. the magic-byte signature plus the parts a file
5
+ * of that kind always has. Extension and MIME alone are trivially spoofed.
7
6
  */
8
- export type AllowedExtension = 'pdf' | 'doc' | 'docx' | 'ppt' | 'pptx' | 'xls' | 'xlsx' | 'odt' | 'ods' | 'odp' | 'jpg' | 'jpeg' | 'png' | 'webp' | 'heic' | 'heif' | 'avif' | 'csv' | 'txt';
7
+ export type AllowedExtension = 'pdf' | 'doc' | 'docx' | 'ppt' | 'pptx' | 'xls' | 'xlsx' | 'odt' | 'ods' | 'odp' | 'jpg' | 'jpeg' | 'png' | 'webp' | 'heic' | 'heif' | 'avif' | 'gif' | 'bmp' | 'ico' | 'mp3' | 'wav' | 'flac' | 'ogg' | 'm4a' | 'mp4' | 'mov' | 'webm' | 'csv' | 'txt' | 'md' | 'rtf' | 'zip' | 'tar' | 'gz' | 'tgz' | 'rar' | '7z';
8
+ /**
9
+ * How much accepting a format exposes. `low`: read in full, nothing in it runs, and it is in the
10
+ * default list. `elevated`: read in full, but the format is a common malware carrier, gets rendered
11
+ * or gets unpacked; accepted only when named in `allowedExtensions`. `unchecked`: only the
12
+ * signature is checked, as its content cannot be read without a decompressor; accepted only when
13
+ * named, and best served as an opaque download.
14
+ */
15
+ export type FormatRisk = 'low' | 'elevated' | 'unchecked';
16
+ /** The default list: every format of `low` risk. The others must be named in `allowedExtensions`. */
9
17
  export declare const ALLOWED_EXTENSIONS: readonly AllowedExtension[];
18
+ /** The risk of accepting each format; see {@link FormatRisk}. */
19
+ export declare const FORMAT_RISK: Readonly<Record<AllowedExtension, FormatRisk>>;
10
20
  /** The `accept` attribute value for a file input that takes `extensions`. */
11
21
  export declare function acceptAttribute(extensions?: readonly AllowedExtension[]): string;
12
22
  export interface UploadDescriptor {
@@ -16,7 +26,7 @@ export interface UploadDescriptor {
16
26
  }
17
27
  export interface UploadOptions {
18
28
  maxBytes: number;
19
- /** Narrows the built-in allowlist; defaults to every type in it. */
29
+ /** The formats to accept; defaults to {@link ALLOWED_EXTENSIONS}, the formats of `low` risk. */
20
30
  allowedExtensions?: readonly AllowedExtension[];
21
31
  }
22
32
  export type DescriptorRejection = 'empty' | 'too-large' | 'type-not-allowed' | 'mime-mismatch';
@@ -43,6 +53,7 @@ export type FileContentVerdict = 'valid' | 'macros' | 'encrypted' | 'mismatch';
43
53
  /**
44
54
  * Checks once that a file's bytes are what `extension` claims: the signature
45
55
  * of its family and every part a file of that kind contains, but no macros.
56
+ * Files inside an archive must be of a format in `allowedExtensions`.
46
57
  */
47
- export declare function inspectFileContent(extension: AllowedExtension, bytes: Uint8Array): FileContentVerdict;
58
+ export declare function inspectFileContent(extension: AllowedExtension, bytes: Uint8Array, allowedExtensions?: readonly AllowedExtension[]): FileContentVerdict;
48
59
  //# sourceMappingURL=upload-allowlist.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"upload-allowlist.d.ts","sourceRoot":"","sources":["../src/upload-allowlist.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAWH,MAAM,MAAM,gBAAgB,GACzB,KAAK,GAAG,KAAK,GAAG,MAAM,GAAG,KAAK,GAAG,MAAM,GAAG,KAAK,GAAG,MAAM,GAAG,KAAK,GAAG,KAAK,GAAG,KAAK,GAChF,KAAK,GAAG,MAAM,GAAG,KAAK,GAAG,MAAM,GAAG,MAAM,GAAG,MAAM,GAAG,MAAM,GAAG,KAAK,GAAG,KAAK,CAAC;AA4Y9E,eAAO,MAAM,kBAAkB,EAAE,SAAS,gBAAgB,EAAoD,CAAC;AAE/G,6EAA6E;AAC7E,wBAAgB,eAAe,CAAE,UAAU,GAAE,SAAS,gBAAgB,EAAuB,GAAI,MAAM,CAEtG;AAKD,MAAM,WAAW,gBAAgB;IAChC,QAAQ,EAAE,MAAM,CAAC;IACjB,QAAQ,EAAE,MAAM,CAAC;IACjB,IAAI,EAAE,MAAM,CAAC;CACb;AAED,MAAM,WAAW,aAAa;IAC7B,QAAQ,EAAE,MAAM,CAAC;IACjB,oEAAoE;IACpE,iBAAiB,CAAC,EAAE,SAAS,gBAAgB,EAAE,CAAC;CAChD;AAED,MAAM,MAAM,mBAAmB,GAAG,OAAO,GAAG,WAAW,GAAG,kBAAkB,GAAG,eAAe,CAAC;AAE/F,MAAM,MAAM,gBAAgB,GACzB;IAAE,EAAE,EAAE,IAAI,CAAC;IAAC,SAAS,EAAE,gBAAgB,CAAC;IAAC,iBAAiB,EAAE,MAAM,CAAA;CAAE,GACpE;IAAE,EAAE,EAAE,KAAK,CAAC;IAAC,MAAM,EAAE,mBAAmB,CAAA;CAAE,CAAC;AAE9C,wBAAgB,YAAY,CAAE,QAAQ,EAAE,MAAM,GAAI,MAAM,CAMvD;AA4BD,+EAA+E;AAC/E,wBAAgB,gBAAgB,CAAE,QAAQ,EAAE,MAAM,GAAI,MAAM,CAsB3D;AAMD;;;GAGG;AACH,wBAAgB,wBAAwB,CACvC,UAAU,EAAE,gBAAgB,EAC5B,EAAE,QAAQ,EAAE,iBAAsC,EAAE,EAAE,aAAa,GACjE,gBAAgB,CAwBlB;AAED,oEAAoE;AACpE,wBAAgB,oBAAoB,CAAE,SAAS,EAAE,gBAAgB,GAAI,MAAM,CAE1E;AA+BD,wGAAwG;AACxG,MAAM,MAAM,kBAAkB,GAAG,OAAO,GAAG,QAAQ,GAAG,WAAW,GAAG,UAAU,CAAC;AAE/E;;;GAGG;AACH,wBAAgB,kBAAkB,CAAE,SAAS,EAAE,gBAAgB,EAAE,KAAK,EAAE,UAAU,GAAI,kBAAkB,CAwEvG"}
1
+ {"version":3,"file":"upload-allowlist.d.ts","sourceRoot":"","sources":["../src/upload-allowlist.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAcH,MAAM,MAAM,gBAAgB,GACzB,KAAK,GAAG,KAAK,GAAG,MAAM,GAAG,KAAK,GAAG,MAAM,GAAG,KAAK,GAAG,MAAM,GAAG,KAAK,GAAG,KAAK,GAAG,KAAK,GAChF,KAAK,GAAG,MAAM,GAAG,KAAK,GAAG,MAAM,GAAG,MAAM,GAAG,MAAM,GAAG,MAAM,GAAG,KAAK,GAAG,KAAK,GAAG,KAAK,GAClF,KAAK,GAAG,KAAK,GAAG,MAAM,GAAG,KAAK,GAAG,KAAK,GAAG,KAAK,GAAG,KAAK,GAAG,MAAM,GAC/D,KAAK,GAAG,KAAK,GAAG,IAAI,GAAG,KAAK,GAAG,KAAK,GAAG,KAAK,GAAG,IAAI,GAAG,KAAK,GAAG,KAAK,GAAG,IAAI,CAAC;AAE9E;;;;;;GAMG;AACH,MAAM,MAAM,UAAU,GAAG,KAAK,GAAG,UAAU,GAAG,WAAW,CAAC;AAkb1D,qGAAqG;AACrG,eAAO,MAAM,kBAAkB,EAAE,SAAS,gBAAgB,EAA8F,CAAC;AAEzJ,iEAAiE;AACjE,eAAO,MAAM,WAAW,EAAE,QAAQ,CAAC,MAAM,CAAC,gBAAgB,EAAE,UAAU,CAAC,CAE9B,CAAC;AAE1C,6EAA6E;AAC7E,wBAAgB,eAAe,CAAE,UAAU,GAAE,SAAS,gBAAgB,EAAuB,GAAI,MAAM,CAEtG;AAKD,MAAM,WAAW,gBAAgB;IAChC,QAAQ,EAAE,MAAM,CAAC;IACjB,QAAQ,EAAE,MAAM,CAAC;IACjB,IAAI,EAAE,MAAM,CAAC;CACb;AAED,MAAM,WAAW,aAAa;IAC7B,QAAQ,EAAE,MAAM,CAAC;IACjB,gGAAgG;IAChG,iBAAiB,CAAC,EAAE,SAAS,gBAAgB,EAAE,CAAC;CAChD;AAED,MAAM,MAAM,mBAAmB,GAAG,OAAO,GAAG,WAAW,GAAG,kBAAkB,GAAG,eAAe,CAAC;AAE/F,MAAM,MAAM,gBAAgB,GACzB;IAAE,EAAE,EAAE,IAAI,CAAC;IAAC,SAAS,EAAE,gBAAgB,CAAC;IAAC,iBAAiB,EAAE,MAAM,CAAA;CAAE,GACpE;IAAE,EAAE,EAAE,KAAK,CAAC;IAAC,MAAM,EAAE,mBAAmB,CAAA;CAAE,CAAC;AAE9C,wBAAgB,YAAY,CAAE,QAAQ,EAAE,MAAM,GAAI,MAAM,CAMvD;AA4BD,+EAA+E;AAC/E,wBAAgB,gBAAgB,CAAE,QAAQ,EAAE,MAAM,GAAI,MAAM,CAsB3D;AAMD;;;GAGG;AACH,wBAAgB,wBAAwB,CACvC,UAAU,EAAE,gBAAgB,EAC5B,EAAE,QAAQ,EAAE,iBAAsC,EAAE,EAAE,aAAa,GACjE,gBAAgB,CAwBlB;AAED,oEAAoE;AACpE,wBAAgB,oBAAoB,CAAE,SAAS,EAAE,gBAAgB,GAAI,MAAM,CAE1E;AA4DD,wGAAwG;AACxG,MAAM,MAAM,kBAAkB,GAAG,OAAO,GAAG,QAAQ,GAAG,WAAW,GAAG,UAAU,CAAC;AAiB/E;;;;GAIG;AACH,wBAAgB,kBAAkB,CACjC,SAAS,EAAE,gBAAgB,EAC3B,KAAK,EAAE,UAAU,EACjB,iBAAiB,GAAE,SAAS,gBAAgB,EAAuB,GACjE,kBAAkB,CAoFpB"}
@@ -1,15 +1,17 @@
1
1
  /**
2
- * Strict allowlist + validation for document uploads: PDF, MS Office (also the
3
- * legacy formats), LibreOffice, photos (JPEG, PNG, WebP, HEIC/HEIF, AVIF) and CSV and text. Validation happens on three axes: file
4
- * extension, declared MIME type, and the actual content, i.e. the magic-byte
5
- * signature plus the parts a file of that kind always has. Extension and MIME
6
- * alone are trivially spoofed.
2
+ * Strict allowlist + validation for uploads: PDF, MS Office (also the legacy formats), LibreOffice,
3
+ * images, audio, video, text, RTF and archives. Validation happens on three axes: file extension,
4
+ * declared MIME type, and the actual content, i.e. the magic-byte signature plus the parts a file
5
+ * of that kind always has. Extension and MIME alone are trivially spoofed.
7
6
  */
7
+ import { inspectGzip, inspectTarArchive, inspectZipArchive } from './archive-content.js';
8
8
  import { inspectExcelGlobals } from './excel-macro-sheets.js';
9
9
  import { readFtypBrands } from './heif-metadata.js';
10
10
  import { readOleDirectory } from './ole-streams.js';
11
11
  import { inspectPdf } from './pdf-active-content.js';
12
+ import { M4A_BRANDS, MP4_BRANDS, stripPhotoMetadata } from './photo-metadata.js';
12
13
  import { hasPowerPointCode, isEncryptedPowerPoint } from './powerpoint-vba.js';
14
+ import { inspectRtf } from './rtf-content.js';
13
15
  import { inspectText } from './text-content.js';
14
16
  import { stripXmlMarkup } from './xml-markup.js';
15
17
  import { readZipEntries, readZipEntryData, startsWithBytes } from './zip-entries.js';
@@ -307,61 +309,99 @@ const ODP = 'application/vnd.oasis.opendocument.presentation';
307
309
  const JPEG = { magic: 'jpeg', mimeTypes: ['image/jpeg', 'image/pjpeg'] };
308
310
  // HEIC is HEIF with HEVC images; `mif1` names HEIF without saying which codec. Sequences (`msf1`, `hevc`, `hevx`, `avis`) are left out.
309
311
  const HEVC_BRANDS = ['heic', 'heix', 'heim', 'heis'];
312
+ const ARCHIVE_EXTENSIONS = new Set(['zip', 'tar', 'gz', 'tgz', 'rar', '7z']);
310
313
  // OOXML (docx/xlsx/pptx) and OpenDocument (odt/ods/odp) files are ZIP
311
314
  // containers; legacy Office formats (doc/xls/ppt) are OLE compound files.
312
315
  const ALLOWED_TYPES = [
313
- { extension: 'pdf', magic: 'pdf', mimeTypes: ['application/pdf'] },
316
+ { extension: 'pdf', risk: 'low', magic: 'pdf', mimeTypes: ['application/pdf'] },
314
317
  {
315
- extension: 'doc', magic: 'ole', mimeTypes: ['application/msword'], oleStreams: ['WordDocument'],
318
+ extension: 'doc',
319
+ risk: 'low', magic: 'ole', mimeTypes: ['application/msword'], oleStreams: ['WordDocument'],
316
320
  },
317
321
  {
318
322
  extension: 'docx',
323
+ risk: 'low',
319
324
  magic: 'zip',
320
325
  mimeTypes: ['application/vnd.openxmlformats-officedocument.wordprocessingml.document'],
321
326
  zipEntries: ooxml('word/document.xml'),
322
327
  },
323
328
  {
324
- extension: 'ppt', magic: 'ole', mimeTypes: ['application/vnd.ms-powerpoint'], oleStreams: ['PowerPoint Document'],
329
+ extension: 'ppt',
330
+ risk: 'low', magic: 'ole', mimeTypes: ['application/vnd.ms-powerpoint'], oleStreams: ['PowerPoint Document'],
325
331
  },
326
332
  {
327
333
  extension: 'pptx',
334
+ risk: 'low',
328
335
  magic: 'zip',
329
336
  mimeTypes: ['application/vnd.openxmlformats-officedocument.presentationml.presentation'],
330
337
  zipEntries: ooxml('ppt/presentation.xml'),
331
338
  },
332
339
  {
333
- extension: 'xls', magic: 'ole', mimeTypes: ['application/vnd.ms-excel'], oleStreams: ['Workbook', 'Book'],
340
+ extension: 'xls',
341
+ risk: 'low', magic: 'ole', mimeTypes: ['application/vnd.ms-excel'], oleStreams: ['Workbook', 'Book'],
334
342
  },
335
343
  {
336
344
  extension: 'xlsx',
345
+ risk: 'low',
337
346
  magic: 'zip',
338
347
  mimeTypes: ['application/vnd.openxmlformats-officedocument.spreadsheetml.sheet'],
339
348
  zipEntries: ooxml('xl/workbook.xml'),
340
349
  },
341
350
  {
342
- extension: 'odt', magic: 'zip', mimeTypes: [ODT], zipEntries: OPEN_DOCUMENT_ENTRIES, openDocumentType: ODT,
351
+ extension: 'odt',
352
+ risk: 'low', magic: 'zip', mimeTypes: [ODT], zipEntries: OPEN_DOCUMENT_ENTRIES, openDocumentType: ODT,
343
353
  },
344
354
  {
345
- extension: 'ods', magic: 'zip', mimeTypes: [ODS], zipEntries: OPEN_DOCUMENT_ENTRIES, openDocumentType: ODS,
355
+ extension: 'ods',
356
+ risk: 'low', magic: 'zip', mimeTypes: [ODS], zipEntries: OPEN_DOCUMENT_ENTRIES, openDocumentType: ODS,
346
357
  },
347
358
  {
348
- extension: 'odp', magic: 'zip', mimeTypes: [ODP], zipEntries: OPEN_DOCUMENT_ENTRIES, openDocumentType: ODP,
359
+ extension: 'odp',
360
+ risk: 'low', magic: 'zip', mimeTypes: [ODP], zipEntries: OPEN_DOCUMENT_ENTRIES, openDocumentType: ODP,
349
361
  },
350
- { extension: 'jpg', ...JPEG },
351
- { extension: 'jpeg', ...JPEG },
352
- { extension: 'png', magic: 'png', mimeTypes: ['image/png'] },
353
- { extension: 'webp', magic: 'webp', mimeTypes: ['image/webp'] },
354
- { extension: 'heic', magic: 'isobmff', mimeTypes: ['image/heic'], brands: HEVC_BRANDS },
355
- { extension: 'heif', magic: 'isobmff', mimeTypes: ['image/heif', 'image/heic'], brands: [...HEVC_BRANDS, 'mif1'] },
356
- { extension: 'avif', magic: 'isobmff', mimeTypes: ['image/avif'], brands: ['avif'] },
362
+ { extension: 'jpg', risk: 'low', ...JPEG },
363
+ { extension: 'jpeg', risk: 'low', ...JPEG },
364
+ { extension: 'png', risk: 'low', magic: 'png', mimeTypes: ['image/png'] },
365
+ { extension: 'webp', risk: 'low', magic: 'webp', mimeTypes: ['image/webp'] },
366
+ { extension: 'heic', risk: 'low', magic: 'isobmff', mimeTypes: ['image/heic'], brands: HEVC_BRANDS },
367
+ { extension: 'heif', risk: 'low', magic: 'isobmff', mimeTypes: ['image/heif', 'image/heic'], brands: [...HEVC_BRANDS, 'mif1'] },
368
+ { extension: 'avif', risk: 'low', magic: 'isobmff', mimeTypes: ['image/avif'], brands: ['avif'] },
357
369
  // Windows names the type of a CSV file after Excel.
358
370
  {
359
- extension: 'csv', magic: 'text', mimeTypes: ['text/csv', 'application/vnd.ms-excel', 'application/csv', 'text/x-csv', 'text/comma-separated-values', 'text/plain'],
371
+ extension: 'csv',
372
+ risk: 'low', magic: 'text', mimeTypes: ['text/csv', 'application/vnd.ms-excel', 'application/csv', 'text/x-csv', 'text/comma-separated-values', 'text/plain'],
360
373
  },
361
- { extension: 'txt', magic: 'text', mimeTypes: ['text/plain'] },
374
+ { extension: 'txt', risk: 'low', magic: 'text', mimeTypes: ['text/plain'] },
375
+ { extension: 'gif', risk: 'low', magic: 'gif', mimeTypes: ['image/gif'] },
376
+ { extension: 'bmp', risk: 'low', magic: 'bmp', mimeTypes: ['image/bmp', 'image/x-bmp', 'image/x-ms-bmp'] },
377
+ { extension: 'ico', risk: 'low', magic: 'ico', mimeTypes: ['image/vnd.microsoft.icon', 'image/x-icon', 'image/ico'] },
378
+ { extension: 'mp3', risk: 'low', magic: 'mp3', mimeTypes: ['audio/mpeg', 'audio/mp3', 'audio/mpeg3'] },
379
+ { extension: 'wav', risk: 'low', magic: 'wav', mimeTypes: ['audio/wav', 'audio/x-wav', 'audio/wave', 'audio/vnd.wave'] },
380
+ { extension: 'flac', risk: 'low', magic: 'flac', mimeTypes: ['audio/flac', 'audio/x-flac'] },
381
+ { extension: 'ogg', risk: 'low', magic: 'ogg', mimeTypes: ['audio/ogg', 'application/ogg', 'video/ogg'] },
382
+ { extension: 'm4a', risk: 'low', magic: 'isobmff', mimeTypes: ['audio/mp4', 'audio/x-m4a', 'audio/m4a'], brands: M4A_BRANDS },
383
+ { extension: 'mp4', risk: 'low', magic: 'isobmff', mimeTypes: ['video/mp4', 'application/mp4'], brands: MP4_BRANDS },
384
+ // Old QuickTime movies have no `ftyp`; the structure is checked when the metadata is removed.
385
+ { extension: 'mov', risk: 'low', magic: 'quicktime', mimeTypes: ['video/quicktime'] },
386
+ { extension: 'webm', risk: 'low', magic: 'webm', mimeTypes: ['video/webm', 'audio/webm'] },
387
+ // Rendered Markdown may carry raw HTML and `javascript:` links; the file itself is checked as text.
388
+ { extension: 'md', risk: 'elevated', magic: 'text', mimeTypes: ['text/markdown', 'text/x-markdown', 'text/plain'] },
389
+ // A common carrier of OLE exploits; refused on any object, template or DDE field.
390
+ { extension: 'rtf', risk: 'elevated', magic: 'rtf', mimeTypes: ['application/rtf', 'text/rtf'] },
391
+ // Archives pass when every file in them would pass on its own; they are not rewritten.
392
+ { extension: 'zip', risk: 'elevated', magic: 'zip', mimeTypes: ['application/zip', 'application/x-zip-compressed'] },
393
+ { extension: 'tar', risk: 'elevated', magic: 'tar', mimeTypes: ['application/x-tar'] },
394
+ { extension: 'gz', risk: 'elevated', magic: 'gzip', mimeTypes: ['application/gzip', 'application/x-gzip'] },
395
+ { extension: 'tgz', risk: 'elevated', magic: 'gzip', mimeTypes: ['application/gzip', 'application/x-gzip', 'application/x-compressed-tar', 'application/x-gtar'] },
396
+ // Reading these needs an LZMA or RAR decompressor, so only their signature is checked.
397
+ { extension: 'rar', risk: 'unchecked', magic: 'rar', mimeTypes: ['application/vnd.rar', 'application/x-rar-compressed', 'application/x-rar'] },
398
+ { extension: '7z', risk: 'unchecked', magic: '7z', mimeTypes: ['application/x-7z-compressed'] },
362
399
  ];
363
400
  const TYPE_BY_EXTENSION = new Map(ALLOWED_TYPES.map((type) => [type.extension, type]));
364
- export const ALLOWED_EXTENSIONS = ALLOWED_TYPES.map((type) => type.extension);
401
+ /** The default list: every format of `low` risk. The others must be named in `allowedExtensions`. */
402
+ export const ALLOWED_EXTENSIONS = ALLOWED_TYPES.filter((type) => type.risk === 'low').map((type) => type.extension);
403
+ /** The risk of accepting each format; see {@link FormatRisk}. */
404
+ export const FORMAT_RISK = Object.fromEntries(ALLOWED_TYPES.map((type) => [type.extension, type.risk]));
365
405
  /** The `accept` attribute value for a file input that takes `extensions`. */
366
406
  export function acceptAttribute(extensions = ALLOWED_EXTENSIONS) {
367
407
  return extensions.map((extension) => `.${extension}`).join(',');
@@ -473,6 +513,35 @@ const MAGIC_SIGNATURES = {
473
513
  jpeg: (bytes) => startsWith(bytes, [0xff, 0xd8, 0xff]),
474
514
  // "\x89PNG\r\n\x1A\n"
475
515
  png: (bytes) => startsWith(bytes, [0x89, 0x50, 0x4e, 0x47, 0x0d, 0x0a, 0x1a, 0x0a]),
516
+ // "GIF8", then "7a" or "9a"
517
+ gif: (bytes) => startsWith(bytes, [0x47, 0x49, 0x46, 0x38]),
518
+ // "BM"
519
+ bmp: (bytes) => startsWith(bytes, [0x42, 0x4d]),
520
+ // Reserved 0, type 1 (icon)
521
+ ico: (bytes) => startsWith(bytes, [0x00, 0x00, 0x01, 0x00]),
522
+ // An ID3 tag or an MPEG audio frame sync
523
+ mp3: (bytes) => startsWith(bytes, [0x49, 0x44, 0x33]) || (bytes.length >= 2 && bytes[0] === 0xff && (bytes[1] & 0xe0) === 0xe0),
524
+ // "RIFF", the size, "WAVE"
525
+ wav: (bytes) => startsWith(bytes, [0x52, 0x49, 0x46, 0x46]) && bytes.length >= 12 &&
526
+ startsWith(bytes.subarray(8), [0x57, 0x41, 0x56, 0x45]),
527
+ // "fLaC"
528
+ flac: (bytes) => startsWith(bytes, [0x66, 0x4c, 0x61, 0x43]),
529
+ // "OggS"
530
+ ogg: (bytes) => startsWith(bytes, [0x4f, 0x67, 0x67, 0x53]),
531
+ // Checked box by box when the metadata is removed, as an old movie may start with any of several boxes.
532
+ quicktime: (bytes) => bytes.length >= 8,
533
+ // EBML header
534
+ webm: (bytes) => startsWith(bytes, [0x1a, 0x45, 0xdf, 0xa3]),
535
+ // Checked by the RTF reader, which also takes Word's shorter `{\rt`.
536
+ rtf: () => true,
537
+ // "ustar" at 257, checked by the tar reader.
538
+ tar: () => true,
539
+ gzip: (bytes) => startsWith(bytes, [0x1f, 0x8b]),
540
+ // "Rar!\x1A\x07", then 0x00 (RAR 4) or 0x01 0x00 (RAR 5)
541
+ rar: (bytes) => startsWith(bytes, [0x52, 0x61, 0x72, 0x21, 0x1a, 0x07, 0x00]) ||
542
+ startsWith(bytes, [0x52, 0x61, 0x72, 0x21, 0x1a, 0x07, 0x01, 0x00]),
543
+ // "7z\xBC\xAF\x27\x1C"
544
+ '7z': (bytes) => startsWith(bytes, [0x37, 0x7a, 0xbc, 0xaf, 0x27, 0x1c]),
476
545
  // "RIFF", the size, "WEBP"
477
546
  webp: (bytes) => startsWith(bytes, [0x52, 0x49, 0x46, 0x46]) && bytes.length >= 12 &&
478
547
  startsWith(bytes.subarray(8), [0x57, 0x45, 0x42, 0x50]),
@@ -480,11 +549,26 @@ const MAGIC_SIGNATURES = {
480
549
  isobmff: (bytes) => bytes.length >= 8 && startsWith(bytes.subarray(4), [0x66, 0x74, 0x79, 0x70]),
481
550
  text: () => true,
482
551
  };
552
+ /**
553
+ * A check for a file inside an archive: it must be of a format in `allowedExtensions`, not an
554
+ * archive itself, and pass what it would pass uploaded alone, its structure included.
555
+ */
556
+ function archiveEntryCheck(allowedExtensions) {
557
+ return (name, bytes) => {
558
+ const extension = getExtension(name);
559
+ if (!isAllowedExtension(extension) || !allowedExtensions.includes(extension) || ARCHIVE_EXTENSIONS.has(extension)) {
560
+ return 'mismatch';
561
+ }
562
+ const verdict = inspectFileContent(extension, bytes, allowedExtensions);
563
+ return verdict === 'valid' && !stripPhotoMetadata(extension, bytes) ? 'mismatch' : verdict;
564
+ };
565
+ }
483
566
  /**
484
567
  * Checks once that a file's bytes are what `extension` claims: the signature
485
568
  * of its family and every part a file of that kind contains, but no macros.
569
+ * Files inside an archive must be of a format in `allowedExtensions`.
486
570
  */
487
- export function inspectFileContent(extension, bytes) {
571
+ export function inspectFileContent(extension, bytes, allowedExtensions = ALLOWED_EXTENSIONS) {
488
572
  const allowed = TYPE_BY_EXTENSION.get(extension);
489
573
  if (allowed?.zipEntries && !allowed.openDocumentType && MAGIC_SIGNATURES.ole(bytes)) {
490
574
  return holdsEncryptedPackage(readOleDirectory(toBuffer(bytes))) ? 'encrypted' : 'mismatch';
@@ -502,6 +586,18 @@ export function inspectFileContent(extension, bytes) {
502
586
  if (allowed.magic === 'text') {
503
587
  return inspectText(content, allowed.extension === 'csv');
504
588
  }
589
+ if (allowed.magic === 'rtf') {
590
+ return inspectRtf(content);
591
+ }
592
+ if (allowed.extension === 'zip') {
593
+ return inspectZipArchive(content, archiveEntryCheck(allowedExtensions));
594
+ }
595
+ if (allowed.magic === 'tar') {
596
+ return inspectTarArchive(content, archiveEntryCheck(allowedExtensions));
597
+ }
598
+ if (allowed.magic === 'gzip') {
599
+ return inspectGzip(content, archiveEntryCheck(allowedExtensions), allowed.extension === 'tgz');
600
+ }
505
601
  if (allowed.brands) {
506
602
  const brands = readFtypBrands(content);
507
603
  return allowed.brands.some((brand) => brands.includes(brand)) ? 'valid' : 'mismatch';
@@ -1 +1 @@
1
- {"version":3,"file":"upload-allowlist.js","sourceRoot":"","sources":["../src/upload-allowlist.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"upload-allowlist.js","sourceRoot":"","sources":["../src/upload-allowlist.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,24 @@
1
+ /**
2
+ * Checks the structure of MP4, MOV, M4A and WebM files and removes their metadata (GPS,
3
+ * titles, cover art, XMP) without moving a byte, so sample offsets and cluster positions stay
4
+ * valid and a large video is not re-encoded. Boxes and elements are overwritten in place:
5
+ * ISOBMFF boxes become `free` boxes with a zeroed payload, WebM elements become `Void`
6
+ * elements of the same length.
7
+ *
8
+ * Limitation: metadata stored as samples in a timed metadata track (GoPro GPMF, DJI, Apple
9
+ * `mebx`) lives in `mdat` or in clusters, which are never touched, so it stays.
10
+ */
11
+ /**
12
+ * The ISO media file (MP4, MOV, M4A) with its metadata boxes overwritten, the input itself when
13
+ * there was nothing to remove, or null when its boxes do not read, it has no single `moov` or it
14
+ * names none of `brands`. `brands` null means a QuickTime movie, which may lack `ftyp`.
15
+ */
16
+ export declare function stripIsoMedia(content: Buffer, brands: readonly string[] | null): Buffer | null;
17
+ /**
18
+ * The WebM file with its Tags, Attachments and Title overwritten by `Void` elements of the same
19
+ * length, the input itself when there was nothing to remove, or null when it is not a WebM
20
+ * (`matroska` is refused) or its elements do not read. A cluster of unknown size, as live
21
+ * recorders write, ends at the first element a cluster cannot hold.
22
+ */
23
+ export declare function stripWebm(content: Buffer): Buffer | null;
24
+ //# sourceMappingURL=video-formats.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"video-formats.d.ts","sourceRoot":"","sources":["../src/video-formats.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AA6DH;;;;GAIG;AACH,wBAAgB,aAAa,CAAE,OAAO,EAAE,MAAM,EAAE,MAAM,EAAE,SAAS,MAAM,EAAE,GAAG,IAAI,GAAI,MAAM,GAAG,IAAI,CAmChG;AA8GD;;;;;GAKG;AACH,wBAAgB,SAAS,CAAE,OAAO,EAAE,MAAM,GAAI,MAAM,GAAG,IAAI,CA4D1D"}