@fedify/fedify 1.4.11 → 1.4.13

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 +83 -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.4.13
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.4.12
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.4.11
7
31
  --------------
8
32
 
@@ -241,6 +265,32 @@ Released on February 5, 2025.
241
265
  [#195]: https://github.com/fedify-dev/fedify/issues/195
242
266
 
243
267
 
268
+ Version 1.3.20
269
+ --------------
270
+
271
+ Released on August 8, 2025.
272
+
273
+ - Fixed a critical authentication bypass vulnerability in the inbox handler
274
+ that allowed unauthenticated attackers to impersonate any ActivityPub actor.
275
+ The vulnerability occurred because activities were processed before
276
+ verifying that the HTTP Signatures key belonged to the claimed actor.
277
+ Now authentication verification is performed before activity processing to
278
+ prevent actor impersonation attacks. [[CVE-2025-54888]]
279
+
280
+ [CVE-2025-54888]: https://github.com/fedify-dev/fedify/security/advisories/GHSA-6jcc-xgcr-q3h4
281
+
282
+
283
+ Version 1.3.19
284
+ --------------
285
+
286
+ Released on June 30, 2025.
287
+
288
+ - Fixed JSON-LD serialization of the `Question.voters` property to correctly
289
+ serialize as a plain number (e.g., `"votersCount": 123`) instead of as a
290
+ typed literal object (e.g., `"votersCount":{"type":"xsd:nonNegativeInteger",
291
+ "@value":123}`).
292
+
293
+
244
294
  Version 1.3.18
245
295
  --------------
246
296
 
@@ -595,6 +645,17 @@ Released on November 30, 2024.
595
645
  [#193]: https://github.com/fedify-dev/fedify/issues/193
596
646
 
597
647
 
648
+ Version 1.2.23
649
+ --------------
650
+
651
+ Released on June 30, 2025.
652
+
653
+ - Fixed JSON-LD serialization of the `Question.voters` property to correctly
654
+ serialize as a plain number (e.g., `"votersCount": 123`) instead of as a
655
+ typed literal object (e.g., `"votersCount":{"type":"xsd:nonNegativeInteger",
656
+ "@value":123}`).
657
+
658
+
598
659
  Version 1.2.22
599
660
  --------------
600
661
 
@@ -997,6 +1058,17 @@ Released on October 31, 2024.
997
1058
  [#118]: https://github.com/fedify-dev/fedify/issues/118
998
1059
 
999
1060
 
1061
+ Version 1.1.23
1062
+ --------------
1063
+
1064
+ Released on June 30, 2025.
1065
+
1066
+ - Fixed JSON-LD serialization of the `Question.voters` property to correctly
1067
+ serialize as a plain number (e.g., `"votersCount": 123`) instead of as a
1068
+ typed literal object (e.g., `"votersCount":{"type":"xsd:nonNegativeInteger",
1069
+ "@value":123}`).
1070
+
1071
+
1000
1072
  Version 1.1.22
1001
1073
  --------------
1002
1074
 
@@ -1440,6 +1512,17 @@ Released on October 20, 2024.
1440
1512
  [#150]: https://github.com/fedify-dev/fedify/issues/150
1441
1513
 
1442
1514
 
1515
+ Version 1.0.26
1516
+ --------------
1517
+
1518
+ Released on June 30, 2025.
1519
+
1520
+ - Fixed JSON-LD serialization of the `Question.voters` property to correctly
1521
+ serialize as a plain number (e.g., `"votersCount": 123`) instead of as a
1522
+ typed literal object (e.g., `"votersCount":{"type":"xsd:nonNegativeInteger",
1523
+ "@value":123}`).
1524
+
1525
+
1443
1526
  Version 1.0.25
1444
1527
  --------------
1445
1528
 
package/esm/deno.js CHANGED
@@ -1,6 +1,6 @@
1
1
  export default {
2
2
  "name": "@fedify/fedify",
3
- "version": "1.4.11",
3
+ "version": "1.4.13",
4
4
  "license": "MIT",
5
5
  "exports": {
6
6
  ".": "./mod.ts",
@@ -38,7 +38,7 @@ export default {
38
38
  "@opentelemetry/semantic-conventions": "npm:@opentelemetry/semantic-conventions@^1.27.0",
39
39
  "@phensley/language-tag": "npm:@phensley/language-tag@^1.9.0",
40
40
  "@std/assert": "jsr:@std/assert@^0.226.0",
41
- "@std/async": "jsr:@std/async@^1.0.5",
41
+ "@std/async": "jsr:@std/async@1.0.13",
42
42
  "@std/bytes": "jsr:@std/bytes@^1.0.2",
43
43
  "@std/collections": "jsr:@std/collections@^1.0.6",
44
44
  "@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";
@@ -418,20 +418,6 @@ async function handleInboxInternal(request, { recipient, context: ctx, inboxCont
418
418
  span.setAttribute("activitypub.activity.id", activity.id.href);
419
419
  }
420
420
  span.setAttribute("activitypub.activity.type", getTypeId(activity).href);
421
- const routeResult = await routeActivity({
422
- context: ctx,
423
- json,
424
- activity,
425
- recipient,
426
- inboxListeners,
427
- inboxContextFactory,
428
- inboxErrorHandler,
429
- kv,
430
- kvPrefixes,
431
- queue,
432
- span,
433
- tracerProvider,
434
- });
435
421
  if (httpSigKey != null && !await doesActorOwnKey(activity, httpSigKey, ctx)) {
436
422
  logger.error("The signer ({keyId}) and the actor ({actorId}) do not match.", {
437
423
  activity: json,
@@ -449,6 +435,20 @@ async function handleInboxInternal(request, { recipient, context: ctx, inboxCont
449
435
  headers: { "Content-Type": "text/plain; charset=utf-8" },
450
436
  });
451
437
  }
438
+ const routeResult = await routeActivity({
439
+ context: ctx,
440
+ json,
441
+ activity,
442
+ recipient,
443
+ inboxListeners,
444
+ inboxContextFactory,
445
+ inboxErrorHandler,
446
+ kv,
447
+ kvPrefixes,
448
+ queue,
449
+ span,
450
+ tracerProvider,
451
+ });
452
452
  if (routeResult === "alreadyProcessed") {
453
453
  return new Response(`Activity <${activity.id}> has already been processed.`, {
454
454
  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#"