@fedify/fedify 1.4.12 → 1.4.14
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 +83 -0
- package/esm/deno.js +2 -2
- package/esm/federation/handler.js +15 -15
- package/esm/runtime/docloader.js +1 -1
- package/esm/vocab/vocab.js +176 -176
- package/package.json +1 -1
- package/types/deps/jsr.io/@std/http/{1.0.18 → 1.0.20}/_negotiation/common.d.ts.map +1 -1
- package/types/deps/jsr.io/@std/http/{1.0.18 → 1.0.20}/_negotiation/encoding.d.ts.map +1 -1
- package/types/deps/jsr.io/@std/http/{1.0.18 → 1.0.20}/_negotiation/language.d.ts.map +1 -1
- package/types/deps/jsr.io/@std/http/{1.0.18 → 1.0.20}/_negotiation/media_type.d.ts.map +1 -1
- package/types/deps/jsr.io/@std/http/{1.0.18 → 1.0.20}/negotiation.d.ts.map +1 -1
- package/types/runtime/docloader.d.ts.map +1 -1
- /package/esm/deps/jsr.io/@std/http/{1.0.18 → 1.0.20}/_negotiation/common.js +0 -0
- /package/esm/deps/jsr.io/@std/http/{1.0.18 → 1.0.20}/_negotiation/encoding.js +0 -0
- /package/esm/deps/jsr.io/@std/http/{1.0.18 → 1.0.20}/_negotiation/language.js +0 -0
- /package/esm/deps/jsr.io/@std/http/{1.0.18 → 1.0.20}/_negotiation/media_type.js +0 -0
- /package/esm/deps/jsr.io/@std/http/{1.0.18 → 1.0.20}/negotiation.js +0 -0
- /package/types/deps/jsr.io/@std/http/{1.0.18 → 1.0.20}/_negotiation/common.d.ts +0 -0
- /package/types/deps/jsr.io/@std/http/{1.0.18 → 1.0.20}/_negotiation/encoding.d.ts +0 -0
- /package/types/deps/jsr.io/@std/http/{1.0.18 → 1.0.20}/_negotiation/language.d.ts +0 -0
- /package/types/deps/jsr.io/@std/http/{1.0.18 → 1.0.20}/_negotiation/media_type.d.ts +0 -0
- /package/types/deps/jsr.io/@std/http/{1.0.18 → 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.14
|
|
7
|
+
--------------
|
|
8
|
+
|
|
9
|
+
Released on August 25, 2025.
|
|
10
|
+
|
|
11
|
+
- Fixed a bug where ActivityPub Discovery failed to recognize XHTML
|
|
12
|
+
self-closing `<link>` tags. The HTML/XHTML parser now correctly handles
|
|
13
|
+
whitespace before the self-closing slash (`/>`), improving compatibility
|
|
14
|
+
with XHTML documents that follow the self-closing tag format.
|
|
15
|
+
|
|
16
|
+
|
|
17
|
+
Version 1.4.13
|
|
18
|
+
--------------
|
|
19
|
+
|
|
20
|
+
Released on August 8, 2025.
|
|
21
|
+
|
|
22
|
+
- Fixed a critical authentication bypass vulnerability in the inbox handler
|
|
23
|
+
that allowed unauthenticated attackers to impersonate any ActivityPub actor.
|
|
24
|
+
The vulnerability occurred because activities were processed before
|
|
25
|
+
verifying that the HTTP Signatures key belonged to the claimed actor.
|
|
26
|
+
Now authentication verification is performed before activity processing to
|
|
27
|
+
prevent actor impersonation attacks. [[CVE-2025-54888]]
|
|
28
|
+
|
|
29
|
+
|
|
6
30
|
Version 1.4.12
|
|
7
31
|
--------------
|
|
8
32
|
|
|
@@ -252,6 +276,32 @@ Released on February 5, 2025.
|
|
|
252
276
|
[#195]: https://github.com/fedify-dev/fedify/issues/195
|
|
253
277
|
|
|
254
278
|
|
|
279
|
+
Version 1.3.21
|
|
280
|
+
--------------
|
|
281
|
+
|
|
282
|
+
Released on August 25, 2025.
|
|
283
|
+
|
|
284
|
+
- Fixed a bug where ActivityPub Discovery failed to recognize XHTML
|
|
285
|
+
self-closing `<link>` tags. The HTML/XHTML parser now correctly handles
|
|
286
|
+
whitespace before the self-closing slash (`/>`), improving compatibility
|
|
287
|
+
with XHTML documents that follow the self-closing tag format.
|
|
288
|
+
|
|
289
|
+
|
|
290
|
+
Version 1.3.20
|
|
291
|
+
--------------
|
|
292
|
+
|
|
293
|
+
Released on August 8, 2025.
|
|
294
|
+
|
|
295
|
+
- Fixed a critical authentication bypass vulnerability in the inbox handler
|
|
296
|
+
that allowed unauthenticated attackers to impersonate any ActivityPub actor.
|
|
297
|
+
The vulnerability occurred because activities were processed before
|
|
298
|
+
verifying that the HTTP Signatures key belonged to the claimed actor.
|
|
299
|
+
Now authentication verification is performed before activity processing to
|
|
300
|
+
prevent actor impersonation attacks. [[CVE-2025-54888]]
|
|
301
|
+
|
|
302
|
+
[CVE-2025-54888]: https://github.com/fedify-dev/fedify/security/advisories/GHSA-6jcc-xgcr-q3h4
|
|
303
|
+
|
|
304
|
+
|
|
255
305
|
Version 1.3.19
|
|
256
306
|
--------------
|
|
257
307
|
|
|
@@ -617,6 +667,17 @@ Released on November 30, 2024.
|
|
|
617
667
|
[#193]: https://github.com/fedify-dev/fedify/issues/193
|
|
618
668
|
|
|
619
669
|
|
|
670
|
+
Version 1.2.24
|
|
671
|
+
--------------
|
|
672
|
+
|
|
673
|
+
Released on August 25, 2025.
|
|
674
|
+
|
|
675
|
+
- Fixed a bug where ActivityPub Discovery failed to recognize XHTML
|
|
676
|
+
self-closing `<link>` tags. The HTML/XHTML parser now correctly handles
|
|
677
|
+
whitespace before the self-closing slash (`/>`), improving compatibility
|
|
678
|
+
with XHTML documents that follow the self-closing tag format.
|
|
679
|
+
|
|
680
|
+
|
|
620
681
|
Version 1.2.23
|
|
621
682
|
--------------
|
|
622
683
|
|
|
@@ -1030,6 +1091,17 @@ Released on October 31, 2024.
|
|
|
1030
1091
|
[#118]: https://github.com/fedify-dev/fedify/issues/118
|
|
1031
1092
|
|
|
1032
1093
|
|
|
1094
|
+
Version 1.1.24
|
|
1095
|
+
--------------
|
|
1096
|
+
|
|
1097
|
+
Released on August 25, 2025.
|
|
1098
|
+
|
|
1099
|
+
- Fixed a bug where ActivityPub Discovery failed to recognize XHTML
|
|
1100
|
+
self-closing `<link>` tags. The HTML/XHTML parser now correctly handles
|
|
1101
|
+
whitespace before the self-closing slash (`/>`), improving compatibility
|
|
1102
|
+
with XHTML documents that follow the self-closing tag format.
|
|
1103
|
+
|
|
1104
|
+
|
|
1033
1105
|
Version 1.1.23
|
|
1034
1106
|
--------------
|
|
1035
1107
|
|
|
@@ -1484,6 +1556,17 @@ Released on October 20, 2024.
|
|
|
1484
1556
|
[#150]: https://github.com/fedify-dev/fedify/issues/150
|
|
1485
1557
|
|
|
1486
1558
|
|
|
1559
|
+
Version 1.0.27
|
|
1560
|
+
--------------
|
|
1561
|
+
|
|
1562
|
+
Released on August 25, 2025.
|
|
1563
|
+
|
|
1564
|
+
- Fixed a bug where ActivityPub Discovery failed to recognize XHTML
|
|
1565
|
+
self-closing `<link>` tags. The HTML/XHTML parser now correctly handles
|
|
1566
|
+
whitespace before the self-closing slash (`/>`), improving compatibility
|
|
1567
|
+
with XHTML documents that follow the self-closing tag format.
|
|
1568
|
+
|
|
1569
|
+
|
|
1487
1570
|
Version 1.0.26
|
|
1488
1571
|
--------------
|
|
1489
1572
|
|
package/esm/deno.js
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
export default {
|
|
2
2
|
"name": "@fedify/fedify",
|
|
3
|
-
"version": "1.4.
|
|
3
|
+
"version": "1.4.14",
|
|
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
|
|
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.
|
|
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,
|
package/esm/runtime/docloader.js
CHANGED
|
@@ -108,7 +108,7 @@ async function getRemoteDocument(url, response, fetch) {
|
|
|
108
108
|
(contentType === "text/html" || contentType?.startsWith("text/html;") ||
|
|
109
109
|
contentType === "application/xhtml+xml" ||
|
|
110
110
|
contentType?.startsWith("application/xhtml+xml;"))) {
|
|
111
|
-
const p = /<(a|link)((\s+[a-z][a-z:_-]*=("[^"]*"|'[^']*'|[^\s>]+))+)
|
|
111
|
+
const p = /<(a|link)((\s+[a-z][a-z:_-]*=("[^"]*"|'[^']*'|[^\s>]+))+)\s*\/?>/ig;
|
|
112
112
|
const p2 = /\s+([a-z][a-z:_-]*)=("([^"]*)"|'([^']*)'|([^\s>]+))/ig;
|
|
113
113
|
const html = await response.text();
|
|
114
114
|
let m;
|