mirror of
https://github.com/azaion/satellite-provider.git
synced 2026-06-27 09:51:14 +00:00
c79998bfa7
Co-authored-by: Cursor <cursoragent@cursor.com>
2.9 KiB
2.9 KiB
Static Analysis (Cycle 10)
Date: 2026-06-25 Mode: Delta scan Scope: AZ-1113 REST 400 error message sanitization. Cycle-9 baseline remains authoritative for gRPC surface.
Files in scope:
SatelliteProvider.Api/GlobalExceptionHandler.csSatelliteProvider.Api/Validators/UavUploadValidationFilter.csSatelliteProvider.Services.TileDownloader/UavTileUploadHandler.csSatelliteProvider.Tests/GlobalExceptionHandlerTests.csSatelliteProvider.Tests/UavTileUploadHandlerTests.csSatelliteProvider.IntegrationTests/UavUploadValidationTests.cs(+ tightened assertions in region/route/inventory validation tests)
Method: Read changed call sites; verify static constants replace ex.Message / badRequest.Message echoes; grep for remaining raw exception text in client-facing 400 paths.
Resolved findings (AZ-1113)
F-AZ795-1 — JsonException.Message propagated in GlobalExceptionHandler (Low / A09) — RESOLVED
- Location:
GlobalExceptionHandler.cs(deserializer branch). - Resolution:
errors[<path>]values useJsonFieldErrorMessage("The field value is invalid."). Unit testTryHandleAsync_DeserializationFailure_WritesValidationProblemDetailsWithJsonPath_AZ795asserts noTileInventoryRequesttype name leak.
F-AZ795-2 — BadHttpRequestException.Message propagated as detail (Low / A09) — RESOLVED
- Location:
GlobalExceptionHandler.cs(non-JSON bind branch). - Resolution:
detailusesBadRequestDetailMessage("The request could not be processed."). Unit testTryHandleAsync_BadHttpRequestExceptionWithoutJson_UsesStaticDetailasserts noLatitudeecho.
F-AZ810-1 — JsonException.Message in UavUploadValidationFilter (Low / A09) — RESOLVED
- Location:
UavUploadValidationFilter.cs. - Resolution:
errors["metadata"]usesMetadataJsonParseError(`metadata` could not be parsed as JSON.). Integration testMetadataNotAnObject_Returns400asserts response body lacksSystem..
F-AZ810-1b — Defence-in-depth path in UavTileUploadHandler (Low / A09) — RESOLVED
- Location:
UavTileUploadHandler.csmetadata parse catch. - Resolution: Envelope error uses same static string as filter. Unit test
HandleAsync_InvalidMetadataJson_ReturnsEnvelopeError.
Open carry-overs (unchanged by cycle 10)
F-AZ810-2 — UavTileMetadata.CapturedAt typed DateTime not DateTimeOffset (Low / Informational)
- Still open — separate task per AZ-1113 exclusions.
Pass areas (cycle-10 delta)
| Area | Result |
|---|---|
| SQL injection | N/A — no SQL changes |
| Hardcoded secrets | None introduced |
| 5xx sanitization (AZ-353) | Unchanged — still sanitised |
| gRPC error messages | Unchanged from cycle-9 fix — still generic |
| New attack surface | None — message content only |
Verdict
PASS (cycle-10 delta) — three REST information-disclosure carry-overs resolved; zero new findings.