upload-safety 0.3.0 → 0.4.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 CHANGED
@@ -48,7 +48,7 @@ Every check fails closed: a part it cannot read is a refusal, not a pass.
48
48
  - **Zero runtime dependencies.** Only `node:zlib` and `node:crypto`. Nothing to audit but this package.
49
49
  - **Typed reasons.** Each refusal is one of seven string literals, so a `Record<UploadRejection, string>` of messages is checked by the compiler.
50
50
  - **Fast enough to run inline.** Synchronous; 647 real documents up to 20 MB each took at most 65 ms on a laptop.
51
- - **Tested against crafted files.** 372 tests build malformed ZIPs, tars, compound files, PDFs, RTF and media files byte by byte, next to real Office, PDF, photo, audio and video files.
51
+ - **Tested against crafted files.** 422 tests build malformed ZIPs, tars, compound files, PDFs, RTF and media files byte by byte, next to real Office, PDF, photo, audio and video files.
52
52
 
53
53
  Full documentation, with a page per format: **[upload-safety.simonhalimonov.com](https://upload-safety.simonhalimonov.com)**.
54
54
 
@@ -143,8 +143,9 @@ app.post( '/upload', upload.single( 'file' ), ( req, res ) => {
143
143
  | Photos | `jpg` `jpeg` `png` `webp` | Structure; EXIF (GPS included), XMP, IPTC, comments and any other metadata segment or chunk are removed, the orientation is kept |
144
144
  | HEIF photos | `heic` `heif` `avif` | Brands; EXIF and XMP items are overwritten in place, since dropping them would shift the offsets the file is built on. The orientation lives in the image properties and stays. Image sequences, such as animated AVIF, are refused |
145
145
  | Other images | `gif` `bmp` `ico` | GIF: comments, XMP and other application extensions removed, anything after the end cut off. BMP and ICO: headers |
146
- | Audio | `mp3` `wav` `flac` `ogg` `m4a` | Frame and chunk structure; ID3, APE, RIFF INFO, Vorbis comment and picture blocks and iTunes tags removed. Ogg pages are checked by their CRC, their comments stay |
147
- | Video | `mp4` `mov` `webm` | Box or element structure; `udta`, `meta`, XMP and `uuid` boxes (iPhone location included), WebM tags, attachments and title blanked in place, so no offset moves |
146
+ | Audio | `mp3` `aac` `wav` `flac` `ogg` `m4a` | Frame and chunk structure (every AAC frame); ID3, APE, RIFF INFO, Vorbis comment and picture blocks and iTunes tags removed. Ogg pages are checked by their CRC, their comments stay |
147
+ | Video | `mp4` `mov` `webm` `mkv` `avi` | Box, element or chunk structure; `udta`, `meta`, XMP and `uuid` boxes (iPhone location included), Matroska tags, attachments and title, AVI INFO, XMP and vendor chunks blanked in place, so no offset moves |
148
+ | Windows Media | `wma` `wmv` | ASF object structure and the stream type; title, author and tag objects blanked in place. Script commands, which make Windows Media Player open URLs, are refused as `macros`; DRM and signatures, which carry license URLs it opens, as `encrypted`. Opt-in |
148
149
  | Text | `csv` `txt` | No binary data (UTF-8, UTF-16 with a byte order mark, or a Windows code page); in CSV no cell that starts like a formula (`=`, `+`, `-`, `@`) and calls a function or DDE. Numbers such as `-5` or `+49 (30) 1234` pass |
149
150
  | Markdown | `md` | As text. Opt-in |
150
151
  | RTF | `rtf` | Refused on any embedded or linked object (`\obj…`), attached template, data store, or DDE field, however it is spelled. Opt-in |
@@ -160,7 +161,7 @@ Each format has a risk level in `FORMAT_RISK`. Only `low` formats are in the def
160
161
  | Risk | Formats | Why |
161
162
  | - | - | - |
162
163
  | `low` | documents, photos and other images, audio, video, `csv`, `txt` | Read in full; nothing in them runs once the checks pass |
163
- | `elevated` | `md`, `rtf`, `zip`, `tar`, `gz`, `tgz` | Read in full, but RTF is a common malware carrier whose reader in Word is lenient, Markdown becomes HTML when rendered, and archives get unpacked, and their files keep their metadata |
164
+ | `elevated` | `md`, `rtf`, `wma`, `wmv`, `zip`, `tar`, `gz`, `tgz` | Read in full, but RTF is a common malware carrier whose reader in Word is lenient, Windows Media files are opened by a player with a history of exploits through them, Markdown becomes HTML when rendered, and archives get unpacked, and their files keep their metadata |
164
165
  | `unchecked` | `rar`, `7z` | Reading them needs a decompressor this package does not have, so anything can be inside. Serve them only as downloads, ideally after a virus scan |
165
166
 
166
167
  ```ts
@@ -0,0 +1,22 @@
1
+ /**
2
+ * Checks the structure of WMA and WMV files (Microsoft ASF) and removes their metadata (title,
3
+ * author, WM/ tags, cover pictures) without moving a byte. The metadata objects are overwritten
4
+ * in place with Padding Objects of the same size and a zeroed payload.
5
+ *
6
+ * Refused: a Script Command Object makes Windows Media Player open URLs, and the DRM objects
7
+ * carry license acquisition URLs that it opens too (Trojan.Wimad); DRM content cannot be checked
8
+ * either.
9
+ *
10
+ * Limitation: markers, the file creation date and the codec data are kept.
11
+ */
12
+ export interface AsfInspection {
13
+ verdict: 'valid' | 'macros' | 'encrypted' | 'mismatch';
14
+ /** The cleaned file when the verdict is `valid` (the input itself when nothing changed), else null. */
15
+ bytes: Buffer | null;
16
+ }
17
+ /**
18
+ * Checks an ASF file as a WMA (`video` false) or WMV (`video` true) and blanks its metadata.
19
+ * Never throws.
20
+ */
21
+ export declare function inspectAsf(content: Buffer, video: boolean): AsfInspection;
22
+ //# sourceMappingURL=asf-media.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"asf-media.d.ts","sourceRoot":"","sources":["../src/asf-media.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;GAUG;AA+DH,MAAM,WAAW,aAAa;IAC7B,OAAO,EAAE,OAAO,GAAG,QAAQ,GAAG,WAAW,GAAG,UAAU,CAAC;IACvD,uGAAuG;IACvG,KAAK,EAAE,MAAM,GAAG,IAAI,CAAC;CACrB;AA8BD;;;GAGG;AACH,wBAAgB,UAAU,CAAE,OAAO,EAAE,MAAM,EAAE,KAAK,EAAE,OAAO,GAAI,aAAa,CAwE3E"}
@@ -0,0 +1,159 @@
1
+ /**
2
+ * Checks the structure of WMA and WMV files (Microsoft ASF) and removes their metadata (title,
3
+ * author, WM/ tags, cover pictures) without moving a byte. The metadata objects are overwritten
4
+ * in place with Padding Objects of the same size and a zeroed payload.
5
+ *
6
+ * Refused: a Script Command Object makes Windows Media Player open URLs, and the DRM objects
7
+ * carry license acquisition URLs that it opens too (Trojan.Wimad); DRM content cannot be checked
8
+ * either.
9
+ *
10
+ * Limitation: markers, the file creation date and the codec data are kept.
11
+ */
12
+ /** Bounds far above real files that keep a crafted one cheap. */
13
+ const MAX_TOP_LEVEL_OBJECTS = 1000;
14
+ const MAX_HEADER_OBJECTS = 10_000;
15
+ const GUID_LENGTH = 16;
16
+ const OBJECT_HEADER = GUID_LENGTH + 8;
17
+ /** Header Object: object header, u32 number of objects, two reserved bytes. */
18
+ const HEADER_OBJECT_PREFIX = OBJECT_HEADER + 6;
19
+ /** Header Extension payload: reserved GUID, u16 reserved, u32 data size. */
20
+ const EXTENSION_PREFIX = GUID_LENGTH + 2 + 4;
21
+ /** Converts the textual GUID of the ASF specification to its on-disk byte order (first three groups little-endian). */
22
+ function guid(text) {
23
+ const hex = text.replaceAll('-', '');
24
+ const bytes = Buffer.from(hex, 'hex');
25
+ bytes.subarray(0, 4).reverse();
26
+ bytes.subarray(4, 6).reverse();
27
+ bytes.subarray(6, 8).reverse();
28
+ return bytes;
29
+ }
30
+ const HEADER_OBJECT = guid('75B22630-668E-11CF-A6D9-00AA0062CE6C');
31
+ const DATA_OBJECT = guid('75B22636-668E-11CF-A6D9-00AA0062CE6C');
32
+ const FILE_PROPERTIES_OBJECT = guid('8CABDCA1-A947-11CF-8EE4-00C00C205365');
33
+ const STREAM_PROPERTIES_OBJECT = guid('B7DC0791-A9B7-11CF-8EE6-00C00C205365');
34
+ const HEADER_EXTENSION_OBJECT = guid('5FBF03B5-A92E-11CF-8EE3-00C00C205365');
35
+ const CONTENT_DESCRIPTION_OBJECT = guid('75B22633-668E-11CF-A6D9-00AA0062CE6C');
36
+ const EXTENDED_CONTENT_DESCRIPTION_OBJECT = guid('D2D0A440-E307-11D2-97F0-00A0C95EA850');
37
+ const METADATA_OBJECT = guid('C5F8CBEA-5BAF-4877-8467-AA8C44FA4CCA');
38
+ const METADATA_LIBRARY_OBJECT = guid('44231C94-9498-49D1-A141-1D134E457054');
39
+ const PADDING_OBJECT = guid('1806D474-CADF-4509-A4BA-9AABCB96AAE8');
40
+ const SCRIPT_COMMAND_OBJECT = guid('1EFB1A30-0B62-11D0-A39B-00A0C90348F6');
41
+ const AUDIO_MEDIA = guid('F8699E40-5B4D-11CF-A8FD-00805F5C442B');
42
+ const VIDEO_MEDIA = guid('BC19EFC0-5B4D-11CF-A8FD-00805F5C442B');
43
+ const SIMPLE_INDEX_OBJECT = guid('33000890-E5B1-11CF-89F4-00A0C90349CB');
44
+ const INDEX_OBJECT = guid('D6E229D3-35DA-11D1-9034-00A0C90349BE');
45
+ const MEDIA_OBJECT_INDEX_OBJECT = guid('FEB103F8-12AD-4C64-840F-2A1D2F7AD48C');
46
+ const TIMECODE_INDEX_OBJECT = guid('3CB73FD0-0C4A-4803-953D-EDF7B6228F0C');
47
+ /** The only top-level objects after the Data Object. */
48
+ const INDEX_OBJECTS = [SIMPLE_INDEX_OBJECT, INDEX_OBJECT, MEDIA_OBJECT_INDEX_OBJECT, TIMECODE_INDEX_OBJECT];
49
+ const CONTENT_ENCRYPTION_OBJECT = guid('2211B3FB-BD23-11D2-B4B7-00A0C955FC6E');
50
+ const EXTENDED_CONTENT_ENCRYPTION_OBJECT = guid('298AE614-2622-4C17-B935-DAE07EE9289C');
51
+ const DIGITAL_SIGNATURE_OBJECT = guid('2211B3FC-BD23-11D2-B4B7-00A0C955FC6E');
52
+ const ADVANCED_CONTENT_ENCRYPTION_OBJECT = guid('43058533-6981-49E6-9B74-AD12CB86D58C');
53
+ const ENCRYPTION_OBJECTS = [
54
+ CONTENT_ENCRYPTION_OBJECT,
55
+ EXTENDED_CONTENT_ENCRYPTION_OBJECT,
56
+ DIGITAL_SIGNATURE_OBJECT,
57
+ ADVANCED_CONTENT_ENCRYPTION_OBJECT,
58
+ ];
59
+ const METADATA_OBJECTS = [
60
+ CONTENT_DESCRIPTION_OBJECT,
61
+ EXTENDED_CONTENT_DESCRIPTION_OBJECT,
62
+ METADATA_OBJECT,
63
+ METADATA_LIBRARY_OBJECT,
64
+ ];
65
+ const MISMATCH = { verdict: 'mismatch', bytes: null };
66
+ const hasGuid = (bytes, offset, expected) => bytes.compare(expected, 0, GUID_LENGTH, offset, offset + GUID_LENGTH) === 0;
67
+ const isOneOf = (bytes, offset, guids) => guids.some((expected) => hasGuid(bytes, offset, expected));
68
+ /** The objects that follow each other exactly over `[start, end)`, or null when one does not read or there are more than `max`. */
69
+ function readObjects(bytes, start, end, max) {
70
+ const objects = [];
71
+ for (let offset = start; offset < end;) {
72
+ if (objects.length === max || end - offset < OBJECT_HEADER) {
73
+ return null;
74
+ }
75
+ const size = bytes.readBigUInt64LE(offset + GUID_LENGTH);
76
+ if (size < BigInt(OBJECT_HEADER) || size > BigInt(end - offset)) {
77
+ return null;
78
+ }
79
+ objects.push({ start: offset, end: offset + Number(size) });
80
+ offset += Number(size);
81
+ }
82
+ return objects;
83
+ }
84
+ /**
85
+ * Checks an ASF file as a WMA (`video` false) or WMV (`video` true) and blanks its metadata.
86
+ * Never throws.
87
+ */
88
+ export function inspectAsf(content, video) {
89
+ const top = readObjects(content, 0, content.length, MAX_TOP_LEVEL_OBJECTS);
90
+ if (!top || top.length < 2 || !hasGuid(content, top[0].start, HEADER_OBJECT)) {
91
+ return MISMATCH;
92
+ }
93
+ const [header, ...rest] = top;
94
+ if (header.end - header.start < HEADER_OBJECT_PREFIX || content.readUInt16BE(header.start + OBJECT_HEADER + 4) !== 0x0102) {
95
+ return MISMATCH;
96
+ }
97
+ if (!hasGuid(content, rest[0].start, DATA_OBJECT) || !rest.slice(1).every((object) => isOneOf(content, object.start, INDEX_OBJECTS))) {
98
+ return MISMATCH;
99
+ }
100
+ const children = readObjects(content, header.start + HEADER_OBJECT_PREFIX, header.end, MAX_HEADER_OBJECTS);
101
+ if (!children) {
102
+ return MISMATCH;
103
+ }
104
+ const budget = { left: MAX_HEADER_OBJECTS - children.length };
105
+ const all = [];
106
+ for (const child of children) {
107
+ all.push(child);
108
+ if (hasGuid(content, child.start, HEADER_EXTENSION_OBJECT)) {
109
+ const prefixEnd = child.start + OBJECT_HEADER + EXTENSION_PREFIX;
110
+ if (prefixEnd > child.end || content.readUInt32LE(prefixEnd - 4) !== child.end - prefixEnd) {
111
+ return MISMATCH;
112
+ }
113
+ const inner = readObjects(content, prefixEnd, child.end, Math.max(budget.left, 0));
114
+ if (!inner) {
115
+ return MISMATCH;
116
+ }
117
+ budget.left -= inner.length;
118
+ all.push(...inner);
119
+ }
120
+ }
121
+ let hasFileProperties = false;
122
+ let hasAudio = false;
123
+ let hasVideo = false;
124
+ for (const object of all) {
125
+ if (isOneOf(content, object.start, ENCRYPTION_OBJECTS)) {
126
+ return { verdict: 'encrypted', bytes: null };
127
+ }
128
+ if (hasGuid(content, object.start, SCRIPT_COMMAND_OBJECT)) {
129
+ return { verdict: 'macros', bytes: null };
130
+ }
131
+ }
132
+ for (const object of all) {
133
+ if (hasGuid(content, object.start, FILE_PROPERTIES_OBJECT)) {
134
+ hasFileProperties = true;
135
+ }
136
+ else if (hasGuid(content, object.start, STREAM_PROPERTIES_OBJECT)) {
137
+ if (object.end - object.start < OBJECT_HEADER + GUID_LENGTH) {
138
+ return MISMATCH;
139
+ }
140
+ const type = object.start + OBJECT_HEADER;
141
+ hasAudio ||= hasGuid(content, type, AUDIO_MEDIA);
142
+ hasVideo ||= hasGuid(content, type, VIDEO_MEDIA);
143
+ }
144
+ }
145
+ if (!hasFileProperties || !(video ? hasVideo : hasAudio && !hasVideo)) {
146
+ return MISMATCH;
147
+ }
148
+ const metadata = all.filter((object) => isOneOf(content, object.start, METADATA_OBJECTS));
149
+ if (metadata.length === 0) {
150
+ return { verdict: 'valid', bytes: content };
151
+ }
152
+ const cleaned = Buffer.from(content);
153
+ for (const object of metadata) {
154
+ PADDING_OBJECT.copy(cleaned, object.start);
155
+ cleaned.fill(0, object.start + OBJECT_HEADER, object.end);
156
+ }
157
+ return { verdict: 'valid', bytes: cleaned };
158
+ }
159
+ //# sourceMappingURL=asf-media.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"asf-media.js","sourceRoot":"","sources":["../src/asf-media.ts"],"names":[],"mappings":"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"}
@@ -1,5 +1,5 @@
1
1
  /**
2
- * Checks and cleans GIF, BMP and ICO images and MP3, WAV, FLAC and Ogg audio without decoding
2
+ * Checks and cleans GIF, BMP and ICO images and MP3, AAC, WAV, FLAC and Ogg audio without decoding
3
3
  * them, in the way `photo-metadata.ts` handles photos: GIF blocks, WAV chunks and FLAC metadata
4
4
  * blocks are kept only when known, so comments, XMP and tags are dropped whole while the image
5
5
  * and audio data stay byte for byte. BMP, ICO and Ogg only get a structure check: BMP and ICO
@@ -24,6 +24,12 @@ export declare function checkIco(content: Buffer): Buffer | null;
24
24
  * a damaged stream further in is not noticed.
25
25
  */
26
26
  export declare function stripMp3(content: Buffer): Buffer | null;
27
+ /**
28
+ * The raw ADTS AAC frames without ID3v2, ID3v1, APEv2 and Lyrics3 tags, or null when the audio is not a
29
+ * run of valid ADTS frames ending exactly at the end of the audio. Every frame header is walked, so nothing
30
+ * unchecked can sit between frames or after the last one.
31
+ */
32
+ export declare function stripAac(content: Buffer): Buffer | null;
27
33
  /**
28
34
  * The WAV with only its `fmt `, `fact` and `data` chunks (LIST/INFO, id3, bext, iXML, XMP and the rest are
29
35
  * dropped), or null when the chunks do not read or `data` does not follow `fmt `. Bytes after the RIFF
@@ -1 +1 @@
1
- {"version":3,"file":"media-formats.d.ts","sourceRoot":"","sources":["../src/media-formats.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AAgHH;;;;GAIG;AACH,wBAAgB,QAAQ,CAAE,OAAO,EAAE,MAAM,GAAI,MAAM,GAAG,IAAI,CAsDzD;AAED,+DAA+D;AAC/D,wBAAgB,QAAQ,CAAE,OAAO,EAAE,MAAM,GAAI,MAAM,GAAG,IAAI,CAkBzD;AAED,oHAAoH;AACpH,wBAAgB,QAAQ,CAAE,OAAO,EAAE,MAAM,GAAI,MAAM,GAAG,IAAI,CAuBzD;AAwFD;;;;GAIG;AACH,wBAAgB,QAAQ,CAAE,OAAO,EAAE,MAAM,GAAI,MAAM,GAAG,IAAI,CAYzD;AAUD;;;;GAIG;AACH,wBAAgB,QAAQ,CAAE,OAAO,EAAE,MAAM,GAAI,MAAM,GAAG,IAAI,CAqCzD;AAED;;;;GAIG;AACH,wBAAgB,SAAS,CAAE,OAAO,EAAE,MAAM,GAAI,MAAM,GAAG,IAAI,CAiC1D;AAoBD;;;;GAIG;AACH,wBAAgB,QAAQ,CAAE,OAAO,EAAE,MAAM,GAAI,MAAM,GAAG,IAAI,CA4BzD"}
1
+ {"version":3,"file":"media-formats.d.ts","sourceRoot":"","sources":["../src/media-formats.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AAqHH;;;;GAIG;AACH,wBAAgB,QAAQ,CAAE,OAAO,EAAE,MAAM,GAAI,MAAM,GAAG,IAAI,CAsDzD;AAED,+DAA+D;AAC/D,wBAAgB,QAAQ,CAAE,OAAO,EAAE,MAAM,GAAI,MAAM,GAAG,IAAI,CAkBzD;AAED,oHAAoH;AACpH,wBAAgB,QAAQ,CAAE,OAAO,EAAE,MAAM,GAAI,MAAM,GAAG,IAAI,CAuBzD;AAwFD;;;;GAIG;AACH,wBAAgB,QAAQ,CAAE,OAAO,EAAE,MAAM,GAAI,MAAM,GAAG,IAAI,CAYzD;AAkBD;;;;GAIG;AACH,wBAAgB,QAAQ,CAAE,OAAO,EAAE,MAAM,GAAI,MAAM,GAAG,IAAI,CAgBzD;AAUD;;;;GAIG;AACH,wBAAgB,QAAQ,CAAE,OAAO,EAAE,MAAM,GAAI,MAAM,GAAG,IAAI,CAqCzD;AAED;;;;GAIG;AACH,wBAAgB,SAAS,CAAE,OAAO,EAAE,MAAM,GAAI,MAAM,GAAG,IAAI,CAiC1D;AAoBD;;;;GAIG;AACH,wBAAgB,QAAQ,CAAE,OAAO,EAAE,MAAM,GAAI,MAAM,GAAG,IAAI,CA4BzD"}
@@ -1,5 +1,5 @@
1
1
  /**
2
- * Checks and cleans GIF, BMP and ICO images and MP3, WAV, FLAC and Ogg audio without decoding
2
+ * Checks and cleans GIF, BMP and ICO images and MP3, AAC, WAV, FLAC and Ogg audio without decoding
3
3
  * them, in the way `photo-metadata.ts` handles photos: GIF blocks, WAV chunks and FLAC metadata
4
4
  * blocks are kept only when known, so comments, XMP and tags are dropped whole while the image
5
5
  * and audio data stay byte for byte. BMP, ICO and Ogg only get a structure check: BMP and ICO
@@ -66,6 +66,10 @@ const MPEG_SAMPLE_RATES = {
66
66
  2: [22050, 24000, 16000],
67
67
  0: [11025, 12000, 8000],
68
68
  };
69
+ const ADTS_HEADER_SIZE = 7;
70
+ const ADTS_HEADER_SIZE_WITH_CRC = 9;
71
+ const ADTS_MAX_FRAMES = 10_000_000;
72
+ const ADTS_SAMPLING_INDEXES = 13;
69
73
  const RIFF_HEADER_SIZE = 12;
70
74
  const RIFF_CHUNK_HEADER_SIZE = 8;
71
75
  const WAV_KEPT_CHUNKS = new Set(['fmt ', 'fact', 'data']);
@@ -315,6 +319,43 @@ export function stripMp3(content) {
315
319
  }
316
320
  return slice(content, start, end);
317
321
  }
322
+ /** The length of the ADTS frame whose header starts at `offset`, or 0 when it is not a valid header. */
323
+ function adtsFrameLength(bytes, offset) {
324
+ if (offset + ADTS_HEADER_SIZE > bytes.length) {
325
+ return 0;
326
+ }
327
+ const [first, second, third] = [bytes[offset], bytes[offset + 1], bytes[offset + 2]];
328
+ const layer = (second >> 1) & 3;
329
+ const headerSize = second & 1 ? ADTS_HEADER_SIZE : ADTS_HEADER_SIZE_WITH_CRC;
330
+ const samplingIndex = (third >> 2) & 0xf;
331
+ const length = ((bytes[offset + 3] & 3) << 11) | (bytes[offset + 4] << 3) | (bytes[offset + 5] >> 5);
332
+ if (first !== 0xff || (second & 0xf0) !== 0xf0 || layer !== 0 || samplingIndex >= ADTS_SAMPLING_INDEXES || length < headerSize) {
333
+ return 0;
334
+ }
335
+ return length;
336
+ }
337
+ /**
338
+ * The raw ADTS AAC frames without ID3v2, ID3v1, APEv2 and Lyrics3 tags, or null when the audio is not a
339
+ * run of valid ADTS frames ending exactly at the end of the audio. Every frame header is walked, so nothing
340
+ * unchecked can sit between frames or after the last one.
341
+ */
342
+ export function stripAac(content) {
343
+ const start = skipId3v2(content);
344
+ if (start < 0) {
345
+ return null;
346
+ }
347
+ const end = findTrailingTags(content, start);
348
+ const audio = content.subarray(start, end);
349
+ let offset = 0;
350
+ for (let frames = 0; offset < audio.length; frames++) {
351
+ const length = frames < ADTS_MAX_FRAMES ? adtsFrameLength(audio, offset) : 0;
352
+ if (length === 0 || offset + length > audio.length) {
353
+ return null;
354
+ }
355
+ offset += length;
356
+ }
357
+ return audio.length > 0 ? slice(content, start, end) : null;
358
+ }
318
359
  function riffChunk(type, payload) {
319
360
  const chunk = Buffer.alloc(RIFF_CHUNK_HEADER_SIZE + payload.length + (payload.length & 1));
320
361
  chunk.write(type, 0, 'latin1');
@@ -1 +1 @@
1
- {"version":3,"file":"media-formats.js","sourceRoot":"","sources":["../src/media-formats.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"media-formats.js","sourceRoot":"","sources":["../src/media-formats.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"photo-metadata.d.ts","sourceRoot":"","sources":["../src/photo-metadata.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAQH,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,uBAAuB,CAAC;AAmS9D,eAAO,MAAM,UAAU,UAAqG,CAAC;AAE7H,eAAO,MAAM,UAAU,UAA6C,CAAC;AAErE;;;GAGG;AACH,wBAAgB,kBAAkB,CAAE,SAAS,EAAE,gBAAgB,EAAE,KAAK,EAAE,UAAU,GAAI,UAAU,GAAG,IAAI,CAuCtG"}
1
+ {"version":3,"file":"photo-metadata.d.ts","sourceRoot":"","sources":["../src/photo-metadata.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AASH,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,uBAAuB,CAAC;AAmS9D,eAAO,MAAM,UAAU,UAAqG,CAAC;AAE7H,eAAO,MAAM,UAAU,UAA6C,CAAC;AAErE;;;GAGG;AACH,wBAAgB,kBAAkB,CAAE,SAAS,EAAE,gBAAgB,EAAE,KAAK,EAAE,UAAU,GAAI,UAAU,GAAG,IAAI,CAgDtG"}
@@ -7,8 +7,9 @@
7
7
  */
8
8
  import { crc32 } from 'node:zlib';
9
9
  import { stripHeif } from './heif-metadata.js';
10
- import { checkBmp, checkIco, checkOgg, stripFlac, stripGif, stripMp3, stripWav } from './media-formats.js';
11
- import { stripIsoMedia, stripWebm } from './video-formats.js';
10
+ import { inspectAsf } from './asf-media.js';
11
+ import { checkBmp, checkIco, checkOgg, stripAac, stripFlac, stripGif, stripMp3, stripWav } from './media-formats.js';
12
+ import { stripAvi, stripIsoMedia, stripMatroska } from './video-formats.js';
12
13
  const ORIENTATION_TAG = 0x0112;
13
14
  const SHORT_TYPE = 3;
14
15
  const UPRIGHT = 1;
@@ -326,7 +327,16 @@ export function stripPhotoMetadata(extension, bytes) {
326
327
  case 'mov':
327
328
  return stripIsoMedia(content, null);
328
329
  case 'webm':
329
- return stripWebm(content);
330
+ return stripMatroska(content, 'webm');
331
+ case 'mkv':
332
+ return stripMatroska(content, 'matroska');
333
+ case 'aac':
334
+ return stripAac(content);
335
+ case 'avi':
336
+ return stripAvi(content);
337
+ case 'wma':
338
+ case 'wmv':
339
+ return inspectAsf(content, extension === 'wmv').bytes;
330
340
  default:
331
341
  return bytes;
332
342
  }
@@ -1 +1 @@
1
- {"version":3,"file":"photo-metadata.js","sourceRoot":"","sources":["../src/photo-metadata.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"photo-metadata.js","sourceRoot":"","sources":["../src/photo-metadata.ts"],"names":[],"mappings":"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"}
@@ -4,7 +4,7 @@
4
4
  * declared MIME type, and the actual content, i.e. the magic-byte signature plus the parts a file
5
5
  * of that kind always has. Extension and MIME alone are trivially spoofed.
6
6
  */
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';
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' | 'aac' | 'wav' | 'flac' | 'ogg' | 'm4a' | 'wma' | 'mp4' | 'mov' | 'webm' | 'mkv' | 'avi' | 'wmv' | 'csv' | 'txt' | 'md' | 'rtf' | 'zip' | 'tar' | 'gz' | 'tgz' | 'rar' | '7z';
8
8
  /**
9
9
  * How much accepting a format exposes. `low`: read in full, nothing in it runs, and it is in the
10
10
  * default list. `elevated`: read in full, but the format is a common malware carrier, gets rendered
@@ -1 +1 @@
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
+ {"version":3,"file":"upload-allowlist.d.ts","sourceRoot":"","sources":["../src/upload-allowlist.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAeH,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,KAAK,GAAG,MAAM,GAAG,KAAK,GAAG,KAAK,GAAG,KAAK,GAAG,KAAK,GAAG,KAAK,GAAG,MAAM,GAAG,KAAK,GAAG,KAAK,GAAG,KAAK,GACvG,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;AAwb1D,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;AAmED,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,CAuFpB"}
@@ -5,6 +5,7 @@
5
5
  * of that kind always has. Extension and MIME alone are trivially spoofed.
6
6
  */
7
7
  import { inspectGzip, inspectTarArchive, inspectZipArchive } from './archive-content.js';
8
+ import { inspectAsf } from './asf-media.js';
8
9
  import { inspectExcelGlobals } from './excel-macro-sheets.js';
9
10
  import { readFtypBrands } from './heif-metadata.js';
10
11
  import { readOleDirectory } from './ole-streams.js';
@@ -384,6 +385,12 @@ const ALLOWED_TYPES = [
384
385
  // Old QuickTime movies have no `ftyp`; the structure is checked when the metadata is removed.
385
386
  { extension: 'mov', risk: 'low', magic: 'quicktime', mimeTypes: ['video/quicktime'] },
386
387
  { extension: 'webm', risk: 'low', magic: 'webm', mimeTypes: ['video/webm', 'audio/webm'] },
388
+ { extension: 'aac', risk: 'low', magic: 'aac', mimeTypes: ['audio/aac', 'audio/x-aac', 'audio/aacp'] },
389
+ { extension: 'mkv', risk: 'low', magic: 'webm', mimeTypes: ['video/x-matroska', 'video/matroska', 'audio/x-matroska'] },
390
+ { extension: 'avi', risk: 'low', magic: 'avi', mimeTypes: ['video/x-msvideo', 'video/avi', 'video/msvideo'] },
391
+ // Windows Media Player runs script commands and opens DRM license URLs in these; both are refused.
392
+ { extension: 'wma', risk: 'elevated', magic: 'asf', mimeTypes: ['audio/x-ms-wma', 'application/vnd.ms-asf'] },
393
+ { extension: 'wmv', risk: 'elevated', magic: 'asf', mimeTypes: ['video/x-ms-wmv', 'video/x-ms-asf', 'application/vnd.ms-asf'] },
387
394
  // Rendered Markdown may carry raw HTML and `javascript:` links; the file itself is checked as text.
388
395
  { extension: 'md', risk: 'elevated', magic: 'text', mimeTypes: ['text/markdown', 'text/x-markdown', 'text/plain'] },
389
396
  // A common carrier of OLE exploits; refused on any object, template or DDE field.
@@ -524,6 +531,13 @@ const MAGIC_SIGNATURES = {
524
531
  // "RIFF", the size, "WAVE"
525
532
  wav: (bytes) => startsWith(bytes, [0x52, 0x49, 0x46, 0x46]) && bytes.length >= 12 &&
526
533
  startsWith(bytes.subarray(8), [0x57, 0x41, 0x56, 0x45]),
534
+ // An ID3 tag or an ADTS frame sync (12 bits set, MPEG layer 0)
535
+ aac: (bytes) => startsWith(bytes, [0x49, 0x44, 0x33]) || (bytes.length >= 2 && bytes[0] === 0xff && (bytes[1] & 0xf6) === 0xf0),
536
+ // "RIFF", the size, "AVI "
537
+ avi: (bytes) => startsWith(bytes, [0x52, 0x49, 0x46, 0x46]) && bytes.length >= 12 &&
538
+ startsWith(bytes.subarray(8), [0x41, 0x56, 0x49, 0x20]),
539
+ // The ASF Header Object GUID
540
+ asf: (bytes) => startsWith(bytes, [0x30, 0x26, 0xb2, 0x75, 0x8e, 0x66, 0xcf, 0x11, 0xa6, 0xd9, 0x00, 0xaa, 0x00, 0x62, 0xce, 0x6c]),
527
541
  // "fLaC"
528
542
  flac: (bytes) => startsWith(bytes, [0x66, 0x4c, 0x61, 0x43]),
529
543
  // "OggS"
@@ -586,6 +600,9 @@ export function inspectFileContent(extension, bytes, allowedExtensions = ALLOWED
586
600
  if (allowed.magic === 'text') {
587
601
  return inspectText(content, allowed.extension === 'csv');
588
602
  }
603
+ if (allowed.magic === 'asf') {
604
+ return inspectAsf(content, allowed.extension === 'wmv').verdict;
605
+ }
589
606
  if (allowed.magic === 'rtf') {
590
607
  return inspectRtf(content);
591
608
  }