@fedify/fedify 1.5.3 → 1.5.5

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 (26) hide show
  1. package/CHANGES.md +107 -0
  2. package/esm/deno.js +2 -2
  3. package/esm/federation/handler.js +15 -15
  4. package/esm/vocab/announce.yaml +3 -1
  5. package/esm/vocab/create.yaml +3 -1
  6. package/esm/vocab/delete.yaml +3 -1
  7. package/esm/vocab/question.yaml +3 -1
  8. package/esm/vocab/update.yaml +3 -1
  9. package/esm/vocab/vocab.js +196 -181
  10. package/package.json +1 -1
  11. package/types/deps/jsr.io/@std/http/{1.0.16 → 1.0.20}/_negotiation/common.d.ts.map +1 -1
  12. package/types/deps/jsr.io/@std/http/{1.0.16 → 1.0.20}/_negotiation/encoding.d.ts.map +1 -1
  13. package/types/deps/jsr.io/@std/http/{1.0.16 → 1.0.20}/_negotiation/language.d.ts.map +1 -1
  14. package/types/deps/jsr.io/@std/http/{1.0.16 → 1.0.20}/_negotiation/media_type.d.ts.map +1 -1
  15. package/types/deps/jsr.io/@std/http/{1.0.16 → 1.0.20}/negotiation.d.ts.map +1 -1
  16. package/types/vocab/vocab.d.ts.map +1 -1
  17. /package/esm/deps/jsr.io/@std/http/{1.0.16 → 1.0.20}/_negotiation/common.js +0 -0
  18. /package/esm/deps/jsr.io/@std/http/{1.0.16 → 1.0.20}/_negotiation/encoding.js +0 -0
  19. /package/esm/deps/jsr.io/@std/http/{1.0.16 → 1.0.20}/_negotiation/language.js +0 -0
  20. /package/esm/deps/jsr.io/@std/http/{1.0.16 → 1.0.20}/_negotiation/media_type.js +0 -0
  21. /package/esm/deps/jsr.io/@std/http/{1.0.16 → 1.0.20}/negotiation.js +0 -0
  22. /package/types/deps/jsr.io/@std/http/{1.0.16 → 1.0.20}/_negotiation/common.d.ts +0 -0
  23. /package/types/deps/jsr.io/@std/http/{1.0.16 → 1.0.20}/_negotiation/encoding.d.ts +0 -0
  24. /package/types/deps/jsr.io/@std/http/{1.0.16 → 1.0.20}/_negotiation/language.d.ts +0 -0
  25. /package/types/deps/jsr.io/@std/http/{1.0.16 → 1.0.20}/_negotiation/media_type.d.ts +0 -0
  26. /package/types/deps/jsr.io/@std/http/{1.0.16 → 1.0.20}/negotiation.d.ts +0 -0
package/CHANGES.md CHANGED
@@ -3,6 +3,30 @@
3
3
  Fedify changelog
4
4
  ================
5
5
 
6
+ Version 1.5.5
7
+ -------------
8
+
9
+ Released on August 8, 2025.
10
+
11
+ - Fixed a critical authentication bypass vulnerability in the inbox handler
12
+ that allowed unauthenticated attackers to impersonate any ActivityPub actor.
13
+ The vulnerability occurred because activities were processed before
14
+ verifying that the HTTP Signatures key belonged to the claimed actor.
15
+ Now authentication verification is performed before activity processing to
16
+ prevent actor impersonation attacks. [[CVE-2025-54888]]
17
+
18
+
19
+ Version 1.5.4
20
+ -------------
21
+
22
+ Released on June 30, 2025.
23
+
24
+ - Fixed JSON-LD serialization of the `Question.voters` property to correctly
25
+ serialize as a plain number (e.g., `"votersCount": 123`) instead of as a
26
+ typed literal object (e.g., `"votersCount":{"type":"xsd:nonNegativeInteger",
27
+ "@value":123}`).
28
+
29
+
6
30
  Version 1.5.3
7
31
  -------------
8
32
 
@@ -166,6 +190,30 @@ Released on March 28, 2025.
166
190
  [multibase]: https://github.com/multiformats/js-multibase
167
191
 
168
192
 
193
+ Version 1.4.13
194
+ --------------
195
+
196
+ Released on August 8, 2025.
197
+
198
+ - Fixed a critical authentication bypass vulnerability in the inbox handler
199
+ that allowed unauthenticated attackers to impersonate any ActivityPub actor.
200
+ The vulnerability occurred because activities were processed before
201
+ verifying that the HTTP Signatures key belonged to the claimed actor.
202
+ Now authentication verification is performed before activity processing to
203
+ prevent actor impersonation attacks. [[CVE-2025-54888]]
204
+
205
+
206
+ Version 1.4.12
207
+ --------------
208
+
209
+ Released on June 30, 2025.
210
+
211
+ - Fixed JSON-LD serialization of the `Question.voters` property to correctly
212
+ serialize as a plain number (e.g., `"votersCount": 123`) instead of as a
213
+ typed literal object (e.g., `"votersCount":{"type":"xsd:nonNegativeInteger",
214
+ "@value":123}`).
215
+
216
+
169
217
  Version 1.4.11
170
218
  --------------
171
219
 
@@ -404,6 +452,32 @@ Released on February 5, 2025.
404
452
  [#195]: https://github.com/fedify-dev/fedify/issues/195
405
453
 
406
454
 
455
+ Version 1.3.20
456
+ --------------
457
+
458
+ Released on August 8, 2025.
459
+
460
+ - Fixed a critical authentication bypass vulnerability in the inbox handler
461
+ that allowed unauthenticated attackers to impersonate any ActivityPub actor.
462
+ The vulnerability occurred because activities were processed before
463
+ verifying that the HTTP Signatures key belonged to the claimed actor.
464
+ Now authentication verification is performed before activity processing to
465
+ prevent actor impersonation attacks. [[CVE-2025-54888]]
466
+
467
+ [CVE-2025-54888]: https://github.com/fedify-dev/fedify/security/advisories/GHSA-6jcc-xgcr-q3h4
468
+
469
+
470
+ Version 1.3.19
471
+ --------------
472
+
473
+ Released on June 30, 2025.
474
+
475
+ - Fixed JSON-LD serialization of the `Question.voters` property to correctly
476
+ serialize as a plain number (e.g., `"votersCount": 123`) instead of as a
477
+ typed literal object (e.g., `"votersCount":{"type":"xsd:nonNegativeInteger",
478
+ "@value":123}`).
479
+
480
+
407
481
  Version 1.3.18
408
482
  --------------
409
483
 
@@ -758,6 +832,17 @@ Released on November 30, 2024.
758
832
  [#193]: https://github.com/fedify-dev/fedify/issues/193
759
833
 
760
834
 
835
+ Version 1.2.23
836
+ --------------
837
+
838
+ Released on June 30, 2025.
839
+
840
+ - Fixed JSON-LD serialization of the `Question.voters` property to correctly
841
+ serialize as a plain number (e.g., `"votersCount": 123`) instead of as a
842
+ typed literal object (e.g., `"votersCount":{"type":"xsd:nonNegativeInteger",
843
+ "@value":123}`).
844
+
845
+
761
846
  Version 1.2.22
762
847
  --------------
763
848
 
@@ -1160,6 +1245,17 @@ Released on October 31, 2024.
1160
1245
  [#118]: https://github.com/fedify-dev/fedify/issues/118
1161
1246
 
1162
1247
 
1248
+ Version 1.1.23
1249
+ --------------
1250
+
1251
+ Released on June 30, 2025.
1252
+
1253
+ - Fixed JSON-LD serialization of the `Question.voters` property to correctly
1254
+ serialize as a plain number (e.g., `"votersCount": 123`) instead of as a
1255
+ typed literal object (e.g., `"votersCount":{"type":"xsd:nonNegativeInteger",
1256
+ "@value":123}`).
1257
+
1258
+
1163
1259
  Version 1.1.22
1164
1260
  --------------
1165
1261
 
@@ -1603,6 +1699,17 @@ Released on October 20, 2024.
1603
1699
  [#150]: https://github.com/fedify-dev/fedify/issues/150
1604
1700
 
1605
1701
 
1702
+ Version 1.0.26
1703
+ --------------
1704
+
1705
+ Released on June 30, 2025.
1706
+
1707
+ - Fixed JSON-LD serialization of the `Question.voters` property to correctly
1708
+ serialize as a plain number (e.g., `"votersCount": 123`) instead of as a
1709
+ typed literal object (e.g., `"votersCount":{"type":"xsd:nonNegativeInteger",
1710
+ "@value":123}`).
1711
+
1712
+
1606
1713
  Version 1.0.25
1607
1714
  --------------
1608
1715
 
package/esm/deno.js CHANGED
@@ -1,6 +1,6 @@
1
1
  export default {
2
2
  "name": "@fedify/fedify",
3
- "version": "1.5.3",
3
+ "version": "1.5.5",
4
4
  "license": "MIT",
5
5
  "exports": {
6
6
  ".": "./mod.ts",
@@ -26,7 +26,7 @@ export default {
26
26
  "@opentelemetry/semantic-conventions": "npm:@opentelemetry/semantic-conventions@^1.27.0",
27
27
  "@phensley/language-tag": "npm:@phensley/language-tag@^1.9.0",
28
28
  "@std/assert": "jsr:@std/assert@^0.226.0",
29
- "@std/async": "jsr:@std/async@^1.0.5",
29
+ "@std/async": "jsr:@std/async@1.0.13",
30
30
  "@std/bytes": "jsr:@std/bytes@^1.0.2",
31
31
  "@std/collections": "jsr:@std/collections@^1.0.6",
32
32
  "@std/encoding": "jsr:@std/encoding@1.0.7",
@@ -1,6 +1,6 @@
1
1
  import { getLogger } from "@logtape/logtape";
2
2
  import { SpanKind, SpanStatusCode, trace } from "@opentelemetry/api";
3
- import { accepts } from "../deps/jsr.io/@std/http/1.0.16/negotiation.js";
3
+ import { accepts } from "../deps/jsr.io/@std/http/1.0.20/negotiation.js";
4
4
  import metadata from "../deno.js";
5
5
  import { verifyRequest } from "../sig/http.js";
6
6
  import { detachSignature, verifyJsonLd } from "../sig/ld.js";
@@ -472,20 +472,6 @@ async function handleInboxInternal(request, { recipient, context: ctx, inboxCont
472
472
  span.setAttribute("activitypub.activity.id", activity.id.href);
473
473
  }
474
474
  span.setAttribute("activitypub.activity.type", getTypeId(activity).href);
475
- const routeResult = await routeActivity({
476
- context: ctx,
477
- json,
478
- activity,
479
- recipient,
480
- inboxListeners,
481
- inboxContextFactory,
482
- inboxErrorHandler,
483
- kv,
484
- kvPrefixes,
485
- queue,
486
- span,
487
- tracerProvider,
488
- });
489
475
  if (httpSigKey != null && !await doesActorOwnKey(activity, httpSigKey, ctx)) {
490
476
  logger.error("The signer ({keyId}) and the actor ({actorId}) do not match.", {
491
477
  activity: json,
@@ -503,6 +489,20 @@ async function handleInboxInternal(request, { recipient, context: ctx, inboxCont
503
489
  headers: { "Content-Type": "text/plain; charset=utf-8" },
504
490
  });
505
491
  }
492
+ const routeResult = await routeActivity({
493
+ context: ctx,
494
+ json,
495
+ activity,
496
+ recipient,
497
+ inboxListeners,
498
+ inboxContextFactory,
499
+ inboxErrorHandler,
500
+ kv,
501
+ kvPrefixes,
502
+ queue,
503
+ span,
504
+ tracerProvider,
505
+ });
506
506
  if (routeResult === "alreadyProcessed") {
507
507
  return new Response(`Activity <${activity.id}> has already been processed.`, {
508
508
  status: 202,
@@ -16,7 +16,9 @@ defaultContext:
16
16
  misskey: "https://misskey-hub.net/ns#"
17
17
  fedibird: "http://fedibird.com/ns#"
18
18
  sensitive: "as:sensitive"
19
- votersCount: "toot:votersCount"
19
+ votersCount:
20
+ "@id": "toot:votersCount"
21
+ "@type": "http://www.w3.org/2001/XMLSchema#nonNegativeInteger"
20
22
  Emoji: "toot:Emoji"
21
23
  Hashtag: "as:Hashtag"
22
24
  quoteUrl: "as:quoteUrl"
@@ -13,7 +13,9 @@ defaultContext:
13
13
  misskey: "https://misskey-hub.net/ns#"
14
14
  fedibird: "http://fedibird.com/ns#"
15
15
  sensitive: "as:sensitive"
16
- votersCount: "toot:votersCount"
16
+ votersCount:
17
+ "@id": "toot:votersCount"
18
+ "@type": "http://www.w3.org/2001/XMLSchema#nonNegativeInteger"
17
19
  Emoji: "toot:Emoji"
18
20
  Hashtag: "as:Hashtag"
19
21
  ChatMessage: "http://litepub.social/ns#ChatMessage"
@@ -15,7 +15,9 @@ defaultContext:
15
15
  misskey: "https://misskey-hub.net/ns#"
16
16
  fedibird: "http://fedibird.com/ns#"
17
17
  sensitive: "as:sensitive"
18
- votersCount: "toot:votersCount"
18
+ votersCount:
19
+ "@id": "toot:votersCount"
20
+ "@type": "http://www.w3.org/2001/XMLSchema#nonNegativeInteger"
19
21
  Emoji: "toot:Emoji"
20
22
  Hashtag: "as:Hashtag"
21
23
  ChatMessage: "http://litepub.social/ns#ChatMessage"
@@ -21,7 +21,9 @@ defaultContext:
21
21
  misskey: "https://misskey-hub.net/ns#"
22
22
  fedibird: "http://fedibird.com/ns#"
23
23
  sensitive: "as:sensitive"
24
- votersCount: "toot:votersCount"
24
+ votersCount:
25
+ "@id": "toot:votersCount"
26
+ "@type": "http://www.w3.org/2001/XMLSchema#nonNegativeInteger"
25
27
  Emoji: "toot:Emoji"
26
28
  Hashtag: "as:Hashtag"
27
29
  quoteUrl: "as:quoteUrl"
@@ -37,7 +37,9 @@ defaultContext:
37
37
  suspended: "toot:suspended"
38
38
  memorial: "toot:memorial"
39
39
  indexable: "toot:indexable"
40
- votersCount: "toot:votersCount"
40
+ votersCount:
41
+ "@id": "toot:votersCount"
42
+ "@type": "http://www.w3.org/2001/XMLSchema#nonNegativeInteger"
41
43
  Emoji: "toot:Emoji"
42
44
  Hashtag: "as:Hashtag"
43
45
  schema: "http://schema.org#"