summaryrefslogtreecommitdiff
path: root/packages
diff options
context:
space:
mode:
authorかっこかり <67428053+kakkokari-gtyih@users.noreply.github.com>2024-11-21 12:10:02 +0900
committerGitHub <noreply@github.com>2024-11-21 12:10:02 +0900
commit3a6c2aa83563515b2ce02cda289b0271d992e84e (patch)
tree5edb2e58a26b560fc398507ec879a1fcc68c5511 /packages
parentfix(backend): fix security patches (#15008) (diff)
downloadsharkey-3a6c2aa83563515b2ce02cda289b0271d992e84e.tar.gz
sharkey-3a6c2aa83563515b2ce02cda289b0271d992e84e.tar.bz2
sharkey-3a6c2aa83563515b2ce02cda289b0271d992e84e.zip
fix(backend): fix type error(s) in security fixes (#15009)
* Fix type error in security fixes (cherry picked from commit fa3cf6c2996741e642955c5e2fca8ad785e83205) * Fix error in test function calls (cherry picked from commit 1758f29364eca3cbd13dbb5c84909c93712b3b3b) * Fix style error (cherry picked from commit 23c4aa25714af145098baa7edd74c1d217e51c1a) * Fix another style error (cherry picked from commit 36af07abe28bec670aaebf9f5af5694bb582c29a) * Fix `.punyHost` misuse (cherry picked from commit 6027b516e1c82324d55d6e54d0e17cbd816feb42) * attempt to fix test: make yaml valid --------- Co-authored-by: Julia Johannesen <julia@insertdomain.name>
Diffstat (limited to 'packages')
-rw-r--r--packages/backend/src/core/HttpRequestService.ts12
-rw-r--r--packages/backend/src/core/RemoteUserResolveService.ts2
-rw-r--r--packages/backend/src/core/activitypub/models/ApPersonService.ts15
-rw-r--r--packages/backend/test-federation/.config/example.default.yml7
-rw-r--r--packages/backend/test/unit/activitypub.ts4
5 files changed, 21 insertions, 19 deletions
diff --git a/packages/backend/src/core/HttpRequestService.ts b/packages/backend/src/core/HttpRequestService.ts
index 0ad5667049..083153940a 100644
--- a/packages/backend/src/core/HttpRequestService.ts
+++ b/packages/backend/src/core/HttpRequestService.ts
@@ -54,19 +54,19 @@ class HttpRequestServiceAgent extends http.Agent {
}
});
return socket;
- };
+ }
@bindThis
private isPrivateIp(ip: string): boolean {
const parsedIp = ipaddr.parse(ip);
-
+
for (const net of this.config.allowedPrivateNetworks ?? []) {
const cidr = ipaddr.parseCIDR(net);
if (cidr[0].kind() === parsedIp.kind() && parsedIp.match(ipaddr.parseCIDR(net))) {
return false;
}
}
-
+
return parsedIp.range() !== 'unicast';
}
}
@@ -93,19 +93,19 @@ class HttpsRequestServiceAgent extends https.Agent {
}
});
return socket;
- };
+ }
@bindThis
private isPrivateIp(ip: string): boolean {
const parsedIp = ipaddr.parse(ip);
-
+
for (const net of this.config.allowedPrivateNetworks ?? []) {
const cidr = ipaddr.parseCIDR(net);
if (cidr[0].kind() === parsedIp.kind() && parsedIp.match(ipaddr.parseCIDR(net))) {
return false;
}
}
-
+
return parsedIp.range() !== 'unicast';
}
}
diff --git a/packages/backend/src/core/RemoteUserResolveService.ts b/packages/backend/src/core/RemoteUserResolveService.ts
index 678da0cfa6..098b5e1706 100644
--- a/packages/backend/src/core/RemoteUserResolveService.ts
+++ b/packages/backend/src/core/RemoteUserResolveService.ts
@@ -54,7 +54,7 @@ export class RemoteUserResolveService {
}) as MiLocalUser;
}
- host = this.utilityService.punyHost(host);
+ host = this.utilityService.toPuny(host);
if (host === this.utilityService.toPuny(this.config.host)) {
this.logger.info(`return local user: ${usernameLower}`);
diff --git a/packages/backend/src/core/activitypub/models/ApPersonService.ts b/packages/backend/src/core/activitypub/models/ApPersonService.ts
index 026ddb6ece..8590861ca0 100644
--- a/packages/backend/src/core/activitypub/models/ApPersonService.ts
+++ b/packages/backend/src/core/activitypub/models/ApPersonService.ts
@@ -163,13 +163,16 @@ export class ApPersonService implements OnModuleInit {
}
for (const collection of ['outbox', 'followers', 'following'] as (keyof IActor)[]) {
- const collectionUri = getApId((x as IActor)[collection]);
- if (typeof collectionUri === 'string' && collectionUri.length > 0) {
- if (this.utilityService.punyHost(collectionUri) !== expectHost) {
- throw new Error(`invalid Actor: ${collection} has different host`);
+ const xCollection = (x as IActor)[collection];
+ if (xCollection != null) {
+ const collectionUri = getApId(xCollection);
+ if (typeof collectionUri === 'string' && collectionUri.length > 0) {
+ if (this.utilityService.punyHost(collectionUri) !== expectHost) {
+ throw new Error(`invalid Actor: ${collection} has different host`);
+ }
+ } else if (collectionUri != null) {
+ throw new Error(`invalid Actor: wrong ${collection}`);
}
- } else if (collectionUri != null) {
- throw new Error(`invalid Actor: wrong ${collection}`);
}
}
diff --git a/packages/backend/test-federation/.config/example.default.yml b/packages/backend/test-federation/.config/example.default.yml
index ff1760a5a6..28d51ac86e 100644
--- a/packages/backend/test-federation/.config/example.default.yml
+++ b/packages/backend/test-federation/.config/example.default.yml
@@ -19,7 +19,6 @@ proxyBypassHosts:
- challenges.cloudflare.com
proxyRemoteFiles: true
signToActivityPubGet: true
-allowedPrivateNetworks: [
- '127.0.0.1/32',
- '172.20.0.0/16'
-]
+allowedPrivateNetworks:
+ - 127.0.0.1/32
+ - 172.20.0.0/16
diff --git a/packages/backend/test/unit/activitypub.ts b/packages/backend/test/unit/activitypub.ts
index 2fc08aec91..9df947982b 100644
--- a/packages/backend/test/unit/activitypub.ts
+++ b/packages/backend/test/unit/activitypub.ts
@@ -176,7 +176,7 @@ describe('ActivityPub', () => {
resolver.register(actor.id, actor);
resolver.register(post.id, post);
- const note = await noteService.createNote(post.id, resolver, true);
+ const note = await noteService.createNote(post.id, undefined, resolver, true);
assert.deepStrictEqual(note?.uri, post.id);
assert.deepStrictEqual(note.visibility, 'public');
@@ -336,7 +336,7 @@ describe('ActivityPub', () => {
resolver.register(actor.featured, featured);
resolver.register(firstNote.id, firstNote);
- const note = await noteService.createNote(firstNote.id as string, resolver);
+ const note = await noteService.createNote(firstNote.id as string, undefined, resolver);
assert.strictEqual(note?.uri, firstNote.id);
});
});