fix(api): MS22 Phase 1 post-coding audit (#625)
All checks were successful
ci/woodpecker/push/ci Pipeline was successful
All checks were successful
ci/woodpecker/push/ci Pipeline was successful
Co-authored-by: Jason Woltje <jason@diversecanvas.com> Co-committed-by: Jason Woltje <jason@diversecanvas.com>
This commit was merged in pull request #625.
This commit is contained in:
@@ -1,6 +1,6 @@
|
||||
import { Injectable, NotFoundException } from "@nestjs/common";
|
||||
import type { LlmProvider } from "@prisma/client";
|
||||
import { timingSafeEqual } from "node:crypto";
|
||||
import { createHash, timingSafeEqual } from "node:crypto";
|
||||
import { PrismaService } from "../prisma/prisma.service";
|
||||
import { CryptoService } from "../crypto/crypto.service";
|
||||
|
||||
@@ -143,21 +143,23 @@ export class AgentConfigService {
|
||||
}),
|
||||
]);
|
||||
|
||||
let match: ContainerTokenValidation | null = null;
|
||||
|
||||
for (const container of userContainers) {
|
||||
const storedToken = this.decryptContainerToken(container.gatewayToken);
|
||||
if (storedToken && this.tokensEqual(storedToken, token)) {
|
||||
return { type: "user", id: container.id };
|
||||
if (!match && storedToken && this.tokensEqual(storedToken, token)) {
|
||||
match = { type: "user", id: container.id };
|
||||
}
|
||||
}
|
||||
|
||||
for (const container of systemContainers) {
|
||||
const storedToken = this.decryptContainerToken(container.gatewayToken);
|
||||
if (storedToken && this.tokensEqual(storedToken, token)) {
|
||||
return { type: "system", id: container.id };
|
||||
if (!match && storedToken && this.tokensEqual(storedToken, token)) {
|
||||
match = { type: "system", id: container.id };
|
||||
}
|
||||
}
|
||||
|
||||
return null;
|
||||
return match;
|
||||
}
|
||||
|
||||
private buildOpenClawConfig(
|
||||
@@ -268,14 +270,9 @@ export class AgentConfigService {
|
||||
}
|
||||
|
||||
private tokensEqual(left: string, right: string): boolean {
|
||||
const leftBuffer = Buffer.from(left, "utf8");
|
||||
const rightBuffer = Buffer.from(right, "utf8");
|
||||
|
||||
if (leftBuffer.length !== rightBuffer.length) {
|
||||
return false;
|
||||
}
|
||||
|
||||
return timingSafeEqual(leftBuffer, rightBuffer);
|
||||
const leftDigest = createHash("sha256").update(left, "utf8").digest();
|
||||
const rightDigest = createHash("sha256").update(right, "utf8").digest();
|
||||
return timingSafeEqual(leftDigest, rightDigest);
|
||||
}
|
||||
|
||||
private hasModelId(modelEntry: unknown): modelEntry is { id: string } {
|
||||
|
||||
Reference in New Issue
Block a user