Skip to content

Commit 47d964d

Browse files
committed
fix: sanitize logged values in AreaPolygonService to prevent log forging
Replace logging of the user-influenced Position object with explicit numeric X/Y/Z coordinates and a sanitized task id. This addresses CodeQL alert cs/log-forging (CWE-117) where untrusted input from the custom mission endpoint could flow into log entries and forge new lines. Also make Sanitize.SanitizeUserInput null-safe by accepting a nullable string and returning string.Empty for null input rather than throwing NullReferenceException, removing a sharp edge for current and future callers. Closes #123 (code-scanning alert)
1 parent 80bf7d1 commit 47d964d

2 files changed

Lines changed: 8 additions & 5 deletions

File tree

backend/api/Services/AreaPolygonService.cs

Lines changed: 6 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,5 @@
11
using Api.Database.Models;
2+
using Api.Utilities;
23

34
namespace Api.Services
45
{
@@ -40,9 +41,11 @@ public bool MissionTasksAreInsideAreaPolygon(
4041
)
4142
{
4243
logger.LogWarning(
43-
"Robot position {robotPosition} is outside the inspection area polygon for task {taskId}",
44-
robotPosition,
45-
missionTask.Id
44+
"Robot position (X={X}, Y={Y}, Z={Z}) is outside the inspection area polygon for task {taskId}",
45+
robotPosition.X,
46+
robotPosition.Y,
47+
robotPosition.Z,
48+
Sanitize.SanitizeUserInput(missionTask.Id)
4649
);
4750
return false;
4851
}

backend/api/Utilities/SanitizeInput.cs

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -5,9 +5,9 @@ namespace Api.Utilities
55
{
66
public static class Sanitize
77
{
8-
public static string SanitizeUserInput(string inputString)
8+
public static string SanitizeUserInput(string? inputString)
99
{
10-
return inputString.Replace("\n", "").Replace("\r", "");
10+
return inputString?.Replace("\n", "").Replace("\r", "") ?? string.Empty;
1111
}
1212

1313
public static ScheduleMissionQuery SanitizeUserInput(ScheduleMissionQuery inputQuery)

0 commit comments

Comments
 (0)