@fedify/fedify 1.4.0-dev.599 → 1.4.0-dev.610

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/CHANGES.md CHANGED
@@ -39,6 +39,8 @@ To be released.
39
39
  - `new Object()` constructor now accepts `emojiReactions` option.
40
40
  - `Object.clone()` method now accepts `emojiReactions` option.
41
41
 
42
+ - Added `allowPrivateAddress` option to `LookupWebFingerOptions` interface.
43
+
42
44
  - Added `-t`/`--traverse` option to the `fedify lookup` subcommand. [[#195]]
43
45
 
44
46
  - Added `-S`/`--suppress-errors` option to the `fedify lookup` subcommand.
@@ -48,6 +50,43 @@ To be released.
48
50
  [#195]: https://github.com/dahlia/fedify/issues/195
49
51
 
50
52
 
53
+ Version 1.3.5
54
+ -------------
55
+
56
+ Released on January 21, 2025.
57
+
58
+ - Fixed a bug where `CreateFederationOptions.allowPrivateAddress` option had
59
+ been ignored by the `Context.lookupObject()` method when it had taken
60
+ a fediverse handle.
61
+
62
+ - The `lookupWebFinger()` function became to silently return `null` when
63
+ it fails to fetch the WebFinger document due to accessing a private network
64
+ address, instead of throwing a `UrlError`.
65
+
66
+
67
+ Version 1.3.4
68
+ -------------
69
+
70
+ Released on January 21, 2025.
71
+
72
+ - Fixed several security vulnerabilities of the `lookupWebFinger()` function.
73
+ [[CVE-2025-23221]]
74
+
75
+ - Fixed a security vulnerability where the `lookupWebFinger()` function
76
+ had followed the infinite number of redirects, which could lead to
77
+ a denial of service attack. Now it follows up to 5 redirects.
78
+
79
+ - Fixed a security vulnerability where the `lookupWebFinger()` function
80
+ had followed the redirects to other than the HTTP/HTTPS schemes, which
81
+ could lead to a security breach. Now it follows only the same scheme
82
+ as the original request.
83
+
84
+ - Fixed a security vulnerability where the `lookupWebFinger()` function
85
+ had followed the redirects to the private network addresses, which
86
+ could lead to a SSRF attack. Now it follows only the public network
87
+ addresses.
88
+
89
+
51
90
  Version 1.3.3
52
91
  -------------
53
92
 
@@ -192,6 +231,29 @@ Released on November 30, 2024.
192
231
  [#193]: https://github.com/dahlia/fedify/issues/193
193
232
 
194
233
 
234
+ Version 1.2.11
235
+ --------------
236
+
237
+ Released on January 21, 2025.
238
+
239
+ - Fixed several security vulnerabilities of the `lookupWebFinger()` function.
240
+ [[CVE-2025-23221]]
241
+
242
+ - Fixed a security vulnerability where the `lookupWebFinger()` function
243
+ had followed the infinite number of redirects, which could lead to
244
+ a denial of service attack. Now it follows up to 5 redirects.
245
+
246
+ - Fixed a security vulnerability where the `lookupWebFinger()` function
247
+ had followed the redirects to other than the HTTP/HTTPS schemes, which
248
+ could lead to a security breach. Now it follows only the same scheme
249
+ as the original request.
250
+
251
+ - Fixed a security vulnerability where the `lookupWebFinger()` function
252
+ had followed the redirects to the private network addresses, which
253
+ could lead to a SSRF attack. Now it follows only the public network
254
+ addresses.
255
+
256
+
195
257
  Version 1.2.10
196
258
  --------------
197
259
 
@@ -416,6 +478,29 @@ Released on October 31, 2024.
416
478
  [#118]: https://github.com/dahlia/fedify/issues/118
417
479
 
418
480
 
481
+ Version 1.1.11
482
+ --------------
483
+
484
+ Released on January 21, 2025.
485
+
486
+ - Fixed several security vulnerabilities of the `lookupWebFinger()` function.
487
+ [[CVE-2025-23221]]
488
+
489
+ - Fixed a security vulnerability where the `lookupWebFinger()` function
490
+ had followed the infinite number of redirects, which could lead to
491
+ a denial of service attack. Now it follows up to 5 redirects.
492
+
493
+ - Fixed a security vulnerability where the `lookupWebFinger()` function
494
+ had followed the redirects to other than the HTTP/HTTPS schemes, which
495
+ could lead to a security breach. Now it follows only the same scheme
496
+ as the original request.
497
+
498
+ - Fixed a security vulnerability where the `lookupWebFinger()` function
499
+ had followed the redirects to the private network addresses, which
500
+ could lead to a SSRF attack. Now it follows only the public network
501
+ addresses.
502
+
503
+
419
504
  Version 1.1.10
420
505
  --------------
421
506
 
@@ -681,6 +766,31 @@ Released on October 20, 2024.
681
766
  [#150]: https://github.com/dahlia/fedify/issues/150
682
767
 
683
768
 
769
+ Version 1.0.14
770
+ --------------
771
+
772
+ Released on January 21, 2025.
773
+
774
+ - Fixed several security vulnerabilities of the `lookupWebFinger()` function.
775
+ [[CVE-2025-23221]]
776
+
777
+ - Fixed a security vulnerability where the `lookupWebFinger()` function
778
+ had followed the infinite number of redirects, which could lead to
779
+ a denial of service attack. Now it follows up to 5 redirects.
780
+
781
+ - Fixed a security vulnerability where the `lookupWebFinger()` function
782
+ had followed the redirects to other than the HTTP/HTTPS schemes, which
783
+ could lead to a security breach. Now it follows only the same scheme
784
+ as the original request.
785
+
786
+ - Fixed a security vulnerability where the `lookupWebFinger()` function
787
+ had followed the redirects to the private network addresses, which
788
+ could lead to a SSRF attack. Now it follows only the public network
789
+ addresses.
790
+
791
+ [CVE-2025-23221]: https://github.com/dahlia/fedify/security/advisories/GHSA-c59p-wq67-24wx
792
+
793
+
684
794
  Version 1.0.13
685
795
  --------------
686
796
 
package/esm/deno.js CHANGED
@@ -1,6 +1,6 @@
1
1
  export default {
2
2
  "name": "@fedify/fedify",
3
- "version": "1.4.0-dev.599+72b4d6d0",
3
+ "version": "1.4.0-dev.610+beefd859",
4
4
  "license": "MIT",
5
5
  "exports": {
6
6
  ".": "./mod.ts",
@@ -58,6 +58,7 @@ export class FederationImpl {
58
58
  documentLoader;
59
59
  contextLoader;
60
60
  authenticatedDocumentLoaderFactory;
61
+ allowPrivateAddress;
61
62
  userAgent;
62
63
  onOutboxError;
63
64
  signatureTimeWindow;
@@ -112,6 +113,7 @@ export class FederationImpl {
112
113
  }
113
114
  }
114
115
  const { allowPrivateAddress, userAgent } = options;
116
+ this.allowPrivateAddress = allowPrivateAddress ?? false;
115
117
  this.documentLoader = options.documentLoader ?? kvCache({
116
118
  loader: getDocumentLoader({ allowPrivateAddress, userAgent }),
117
119
  kv: options.kv,
@@ -1826,6 +1828,8 @@ export class ContextImpl {
1826
1828
  contextLoader: options.contextLoader ?? this.contextLoader,
1827
1829
  userAgent: options.userAgent ?? this.federation.userAgent,
1828
1830
  tracerProvider: options.tracerProvider ?? this.tracerProvider,
1831
+ // @ts-ignore: `allowPrivateAddress` is not in the type definition.
1832
+ allowPrivateAddress: this.federation.allowPrivateAddress,
1829
1833
  });
1830
1834
  }
1831
1835
  traverseCollection(collection, options = {}) {
@@ -38,7 +38,13 @@ export async function validatePublicUrl(url) {
38
38
  }
39
39
  // To prevent SSRF via DNS rebinding, we need to resolve all IP addresses
40
40
  // and ensure that they are all public:
41
- const addresses = await lookup(hostname, { all: true });
41
+ let addresses;
42
+ try {
43
+ addresses = await lookup(hostname, { all: true });
44
+ }
45
+ catch {
46
+ addresses = [];
47
+ }
42
48
  for (const { address, family } of addresses) {
43
49
  if (family === 4 && !isValidPublicIPv4Address(address) ||
44
50
  family === 6 && !isValidPublicIPv6Address(address) ||
@@ -95,6 +95,8 @@ async function lookupObjectInternal(identifier, options = {}) {
95
95
  const jrd = await lookupWebFinger(identifier, {
96
96
  userAgent: options.userAgent,
97
97
  tracerProvider: options.tracerProvider,
98
+ allowPrivateAddress: "allowPrivateAddress" in options &&
99
+ options.allowPrivateAddress === true,
98
100
  });
99
101
  if (jrd?.links == null)
100
102
  return null;