summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJulia <julia@insertdomain.name>2024-11-21 01:44:15 +0000
committerJulia <julia@insertdomain.name>2024-11-21 01:44:15 +0000
commit757d9aa5ee16aefd20c99e4d29f91148f012c17b (patch)
tree488cbe6d4883f03ffcca75aeb9c9a75717b8ab0f
parentmerge: (re-merge) Prevent DoS from spammed media proxy requests (!763) (diff)
parentFix another style error (diff)
downloadsharkey-757d9aa5ee16aefd20c99e4d29f91148f012c17b.tar.gz
sharkey-757d9aa5ee16aefd20c99e4d29f91148f012c17b.tar.bz2
sharkey-757d9aa5ee16aefd20c99e4d29f91148f012c17b.zip
merge: Fix type error(s) in security fixes (!764)
View MR for information: https://activitypub.software/TransFem-org/Sharkey/-/merge_requests/764 Approved-by: Hazelnoot <acomputerdog@gmail.com>
-rw-r--r--packages/backend/src/core/HttpRequestService.ts12
-rw-r--r--packages/backend/src/core/activitypub/models/ApPersonService.ts15
-rw-r--r--packages/backend/src/queue/processors/InboxProcessorService.ts3
-rw-r--r--packages/backend/test/unit/activitypub.ts4
4 files changed, 18 insertions, 16 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/activitypub/models/ApPersonService.ts b/packages/backend/src/core/activitypub/models/ApPersonService.ts
index 1c117795e9..2119c41569 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/src/queue/processors/InboxProcessorService.ts b/packages/backend/src/queue/processors/InboxProcessorService.ts
index f453d7d1ae..102e835e24 100644
--- a/packages/backend/src/queue/processors/InboxProcessorService.ts
+++ b/packages/backend/src/queue/processors/InboxProcessorService.ts
@@ -192,8 +192,7 @@ export class InboxProcessorService implements OnApplicationShutdown {
if (signerHost !== activityIdHost) {
throw new Bull.UnrecoverableError(`skip: signerHost(${signerHost}) !== activity.id host(${activityIdHost}`);
}
- }
- else {
+ } else {
throw new Bull.UnrecoverableError('skip: activity id is not a string');
}
diff --git a/packages/backend/test/unit/activitypub.ts b/packages/backend/test/unit/activitypub.ts
index 53ced3dab3..73d6186edf 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);
});
});