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.
- package/README.md +38 -7
- package/dist/archive-content.d.ts +15 -0
- package/dist/archive-content.d.ts.map +1 -0
- package/dist/archive-content.js +277 -0
- package/dist/archive-content.js.map +1 -0
- package/dist/check-upload.js +1 -1
- package/dist/check-upload.js.map +1 -1
- package/dist/heif-metadata.d.ts +8 -0
- package/dist/heif-metadata.d.ts.map +1 -1
- package/dist/heif-metadata.js +1 -1
- package/dist/heif-metadata.js.map +1 -1
- package/dist/media-formats.d.ts +45 -0
- package/dist/media-formats.d.ts.map +1 -0
- package/dist/media-formats.js +457 -0
- package/dist/media-formats.js.map +1 -0
- package/dist/photo-metadata.d.ts +4 -2
- package/dist/photo-metadata.d.ts.map +1 -1
- package/dist/photo-metadata.js +29 -2
- package/dist/photo-metadata.js.map +1 -1
- package/dist/rtf-content.d.ts +12 -0
- package/dist/rtf-content.d.ts.map +1 -0
- package/dist/rtf-content.js +175 -0
- package/dist/rtf-content.js.map +1 -0
- package/dist/upload-allowlist.d.ts +19 -8
- package/dist/upload-allowlist.d.ts.map +1 -1
- package/dist/upload-allowlist.js +119 -23
- package/dist/upload-allowlist.js.map +1 -1
- package/dist/video-formats.d.ts +24 -0
- package/dist/video-formats.d.ts.map +1 -0
- package/dist/video-formats.js +269 -0
- package/dist/video-formats.js.map +1 -0
- package/dist/zip-entries.d.ts +8 -0
- package/dist/zip-entries.d.ts.map +1 -1
- package/dist/zip-entries.js +29 -2
- package/dist/zip-entries.js.map +1 -1
- package/package.json +6 -3
- package/src/archive-content.ts +306 -0
- package/src/check-upload.ts +1 -1
- package/src/heif-metadata.ts +2 -2
- package/src/media-formats.ts +478 -0
- package/src/photo-metadata.ts +30 -2
- package/src/rtf-content.ts +178 -0
- package/src/upload-allowlist.ts +145 -27
- package/src/video-formats.ts +287 -0
- 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
|
|
3
|
-
*
|
|
4
|
-
*
|
|
5
|
-
*
|
|
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
|
-
/**
|
|
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
|
|
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"}
|
package/dist/upload-allowlist.js
CHANGED
|
@@ -1,15 +1,17 @@
|
|
|
1
1
|
/**
|
|
2
|
-
* Strict allowlist + validation for
|
|
3
|
-
*
|
|
4
|
-
*
|
|
5
|
-
*
|
|
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',
|
|
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',
|
|
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',
|
|
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',
|
|
351
|
+
extension: 'odt',
|
|
352
|
+
risk: 'low', magic: 'zip', mimeTypes: [ODT], zipEntries: OPEN_DOCUMENT_ENTRIES, openDocumentType: ODT,
|
|
343
353
|
},
|
|
344
354
|
{
|
|
345
|
-
extension: 'ods',
|
|
355
|
+
extension: 'ods',
|
|
356
|
+
risk: 'low', magic: 'zip', mimeTypes: [ODS], zipEntries: OPEN_DOCUMENT_ENTRIES, openDocumentType: ODS,
|
|
346
357
|
},
|
|
347
358
|
{
|
|
348
|
-
extension: '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',
|
|
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
|
-
|
|
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"}
|