-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathsecurity-code-scan-baseline.json
More file actions
138 lines (138 loc) · 11.7 KB
/
Copy pathsecurity-code-scan-baseline.json
File metadata and controls
138 lines (138 loc) · 11.7 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
{
"_readme": [
"Baseline de achados de severidade ALTA do SecurityCodeScan.VS2019, gerado em 2026-08-13 a partir",
"de `dotnet build LayoutParserApi.csproj --configuration Release` no commit 616a8ad (branch",
"chore/security-code-scan). Objetivo: o gate de CI (.github/workflows/ci-dev.yml, step",
"'Security Code Scan - gate por severidade') so falha em achados de severidade alta que NAO",
"estejam listados aqui. Achados listados neste arquivo continuam aparecendo no log como warning,",
"mas nao bloqueiam o deploy de dev - sao debito tecnico conhecido, nao 'aprovado como seguro'.",
"",
"LIMITACAO CONHECIDA: a chave de cada achado e `codigo:arquivo:linha`. Numero de linha e fragil -",
"qualquer edit que desloque linhas em um arquivo listado aqui (adicionar/remover linhas acima do",
"achado) faz o achado 'sumir' do baseline sob a otica do script de comparacao, porque o SCS vai",
"reportar a MESMA vulnerabilidade em uma linha diferente. Isso produz falso-positivo de 'achado",
"novo' e falha o CI sem que nada de fato tenha mudado quanto ao risco. Alternativa mais robusta",
"(hash de um trecho de contexto ao redor da linha, ou dedupe por assinatura semantica do SCS) foi",
"avaliada e descartada por ora por custo/tempo - documentado aqui para revisao futura. Quando isso",
"acontecer, o CI vai reportar o achado 'sumido' como novo; o mitigador imediato e atualizar a linha",
"no baseline (nao e uma vulnerabilidade nova de verdade) e, se for o caso, abrir uma issue via",
"@lp-pm para tratar a causa raiz do path traversal apontado.",
"",
"Nao remova entradas por conveniencia - so remova quando o achado subjacente for corrigido no",
"codigo (o que tambem deve refletir sozinho, pois o SCS para de reportar aquele achado).",
"",
"2026-09-02 (@lp-devops, PR #278): XsdValidationService.cs (227->229, 241->243, 346->348) teve",
"o numero de linha atualizado de novo - a correcao do path traversal real da issue #172",
"(SafePathResolver.Resolve em xsdVersion, PR #278) adicionou linhas acima dos achados ja",
"aceitos, deslocando-os. Mesmos achados, nao vulnerabilidades novas - confirmado lendo cada",
"linha antes de mover.",
"",
"2026-09-02 (coordenador, PR #276): ParseController.cs (575->586, instrumentacao/logging da",
"issue #99 deslocou o codigo) e XsdValidationService.cs (221->227, 235->241, 340->346, leitura",
"de PDF da issue #172 deslocou o codigo) tiveram o numero de linha atualizado - mesmos achados",
"ja aceitos, nao vulnerabilidades novas. Confirmado lendo o codigo em cada linha antes de mover.",
"",
"2026-08-20 (@lp-backend-dev, PR #177): as 5 entradas de AutomatedTransformationTestService.cs",
"(linhas 160/170/234) e TransformationValidatorService.cs (linhas 161/232) tiveram o numero de",
"linha atualizado apos a feature de deteccao automatica de tipo de documento deslocar o codigo -",
"sao os MESMOS achados que ja estavam no baseline (nao vulnerabilidades novas). Alem disso, ambos",
"os arquivos ganharam mitigacao real: IsValidLayoutName (rejeita separador de caminho/'..' no",
"layoutName vindo da requisicao) + IsWithinBasePath (confere que o caminho resolvido nao escapou",
"do diretorio base configurado) antes de qualquer Directory.GetFiles/File.ReadAllTextAsync. O SCS",
"continua reportando porque sua analise de taint nao reconhece validacao custom como sanitizador -",
"por isso os achados permanecem no baseline como 'mitigado no codigo, nao suprimivel pela ferramenta'.",
"",
"2026-08-28 (@lp-devops, resolucao de merge da PR #207 contra develop): as 2 entradas de",
"LowCodeAutoTransformationService.cs (linhas 370/414 na branch da PR, 366/410 em develop) foram",
"reconciliadas para 371/415 apos o merge de develop (PRs #200/#201/#203/#205 ja mergeadas)",
"deslocar o codigo de novo. Confirmado lendo o arquivo pos-merge: os dois achados sao os mesmos",
"File.WriteAllTextAsync(inPath/metaPath, ...) de sempre, nao vulnerabilidades novas.",
"",
"2026-08-31 (@lp-backend-dev, PR #236, Slice 2 FiscalMappingPackage): adicionada a entrada",
"SCS0016:Controllers/FiscalMappingPackagesController.cs:48 (CreatePackage, [HttpPost] multipart",
"upload). E o mesmo padrao ja aceito em SCS0016:Controllers/ParseController.cs:84 (Upload,",
"tambem [HttpPost] multipart sem antiforgery token) - nao e vulnerabilidade nova, e a mesma",
"classe de achado. Justificativa: a API nao usa autenticacao por cookie de sessao (o que e o",
"vetor classico de CSRF); a identidade vem do BFF via TrustedIdentityMiddleware, que so confia",
"nos headers x-iis-user/x-iis-roles quando a origem da requisicao e loopback (ver .claude/",
"rules/security.md). Isso fecha a forja de identidade cross-site que o SCS0016 pressupoe, mesmo",
"sem [ValidateAntiForgeryToken]. Nao ha diferenca de exposicao real para o Upload ja aceito -",
"mesmos limites de tamanho/quantidade de artefato, sem execucao de arquivo.",
"",
"2026-09-02 (@lp-backend-dev, PR #269, issues #95/#174): as entradas SCS0018 de",
"MetricsController.cs (274->280, 332->338) e TransformationLearningService.cs (1174->1244) sao",
"o caso de line drift ja documentado acima - GetLearningSummaryAsync (issue #174) inseriu ~76",
"linhas antes desses trechos, deslocando a linha reportada sem mudar o codigo em si. Confirmado",
"com `git diff` que os 3 hunks apontados sao byte-a-byte os mesmos ja aceitos: MetricsController",
"usa Services/Security/SafePathResolver.cs (lista branca + canonicalizacao contra o base dir)",
"antes de montar tclPath/xslPath - o SCS nao reconhece o resolver como sanitizador, mas o",
"caminho nunca chega cru do cliente ate o File.ReadAllTextAsync. TransformationLearningService.cs",
"1244 (SaveLearnedModelAsync) monta o path com Path.Combine(_learningModelsPath, $\"{modelName}\"",
"+ \".json\"), onde modelName e definido internamente pelo proprio servico (nao vem de request).",
"Nao ha achado novo nesta PR - so a linha mudou.",
"",
"2026-09-03 (@lp-devops, hotfix PR #292 develop, build quebrado da issue #97): CI apontou 4",
"achados novos em ParseController.cs (582 SCS0016, 660 SCS0018) e",
"TransformationValidatorService.cs (212, 285 SCS0018) - nao sao vulnerabilidades novas de fato,",
"e drift causado por merges anteriores (endpoint Detect da issue #216 e outros call sites",
"adicionados a develop) que este hotfix (so 3 arquivos de teste) nao toca. Confirmado lendo o",
"codigo: ParseController.cs:582 e o [HttpPost(\"detect\")] Detect, mesmo padrao multipart sem",
"antiforgery ja aceito em SCS0016:ParseController.cs:84 (Upload) - identidade vem do BFF via",
"TrustedIdentityMiddleware com guarda de loopback, nao cookie de sessao. ParseController.cs:660",
"e outro File save apos IsWithinBasePath, mesmo padrao ja aceito em AutomatedTransformationTestService.",
"TransformationValidatorService.cs:212/285 sao call sites adicionais de Path.Combine(layoutName)",
"guardados por IsWithinBasePath, mesmo padrao ja aceito nas linhas 161/232 do mesmo arquivo (PR #177).",
"Adicionados ao baseline como debito tecnico conhecido, nao aprovado como seguro.",
"",
"2026-09-03 (@lp-backend-dev, issue #88, PR TBD): as 10 entradas de Controllers/ (DocumentController",
"153/183/214, MetricsController 280/338, ParseController 84/582/586/660, FiscalMappingPackagesController",
"48) foram REMOVIDAS deste baseline. Nao sao supressoes ad-hoc: cada site foi lido, a mitigacao real",
"ja existente (SafePathResolver.Resolve+IsInsideBase para SCS0018; TrustedIdentityMiddleware com",
"guarda de loopback, sem cookie de sessao, para SCS0016) foi CONFIRMADA no codigo, e formalizada com",
"#pragma warning disable/restore SCS0018|SCS0016 + comentario de justificativa no proprio site. O SCS",
"para de reportar esses achados no build (confirmado: 0 warnings SCS0018/SCS0016 nesses 4 arquivos",
"apos a mudanca) - por isso saem do baseline em vez de so trocar de linha. ParseController:586 e um",
"caso de taint-tracking cujo sink real e o FileStream de ParseController:660 (SaveFileForLearningAsync)",
"- documentado no pragma do site, nao um achado distinto.",
"",
"Os 22 achados restantes (Services/Testing, Services/Transformation, Services/Validation,",
"Services/XmlAnalysis) NAO foram tocados nesta rodada - ja tem mitigacao real documentada em",
"entradas anteriores deste readme (SafePathResolver/IsWithinBasePath), mas formalizar via #pragma",
"exige revisar cada um dos 11 arquivos individualmente para nao mascarar um achado real por engano.",
"Fica para uma rodada seguinte da issue #88, mesma tecnica (pragma + justificativa), Controllers/",
"ja tratado primeiro conforme o criterio de aceite da issue.",
"",
"NOTA: o build atual mostra 1 warning SCS0018 adicional em TransformationExecutionController.cs",
"(RunTransformationTest, path via TransformationTestRequest) que NAO estava no baseline original -",
"e um achado novo (endpoint/controller que nao existia no commit 616a8ad de origem do baseline).",
"Fora do escopo desta rodada (o criterio de aceite da issue #88 e sobre os 27/32 achados JA",
"catalogados); registrado aqui para nao ser esquecido e tratado como item novo, nao regressao desta PR."
],
"generatedAt": "2026-08-13",
"generatedFromCommit": "616a8ad",
"keyFormat": "codigo:arquivo:linha",
"findings": [
{ "code": "SCS0018", "file": "Services/Testing/AutomatedTransformationTestService.cs", "line": 160 },
{ "code": "SCS0018", "file": "Services/Testing/AutomatedTransformationTestService.cs", "line": 170 },
{ "code": "SCS0018", "file": "Services/Testing/AutomatedTransformationTestService.cs", "line": 234 },
{ "code": "SCS0018", "file": "Services/Transformation/LowCode/LowCodeAutoTransformationService.cs", "line": 243 },
{ "code": "SCS0018", "file": "Services/Transformation/LowCode/LowCodeAutoTransformationService.cs", "line": 244 },
{ "code": "SCS0018", "file": "Services/Transformation/LowCode/LowCodeAutoTransformationService.cs", "line": 262 },
{ "code": "SCS0018", "file": "Services/Transformation/LowCode/LowCodeAutoTransformationService.cs", "line": 371 },
{ "code": "SCS0018", "file": "Services/Transformation/LowCode/LowCodeAutoTransformationService.cs", "line": 415 },
{ "code": "SCS0018", "file": "Services/Transformation/LowCode/LowCodeTransformationStore.cs", "line": 286 },
{ "code": "SCS0018", "file": "Services/Transformation/TransformationLearningService.cs", "line": 782 },
{ "code": "SCS0018", "file": "Services/Transformation/TransformationLearningService.cs", "line": 804 },
{ "code": "SCS0018", "file": "Services/Transformation/TransformationLearningService.cs", "line": 1244 },
{ "code": "SCS0018", "file": "Services/Transformation/TransformationValidatorService.cs", "line": 161 },
{ "code": "SCS0018", "file": "Services/Transformation/TransformationValidatorService.cs", "line": 212 },
{ "code": "SCS0018", "file": "Services/Transformation/TransformationValidatorService.cs", "line": 232 },
{ "code": "SCS0018", "file": "Services/Transformation/TransformationValidatorService.cs", "line": 285 },
{ "code": "SCS0018", "file": "Services/Validation/DocumentMLValidationService.cs", "line": 178 },
{ "code": "SCS0018", "file": "Services/Validation/DocumentMLValidationService.cs", "line": 206 },
{ "code": "SCS0018", "file": "Services/XmlAnalysis/TransformationPipelineService.cs", "line": 393 },
{ "code": "SCS0018", "file": "Services/XmlAnalysis/XsdValidationService.cs", "line": 229 },
{ "code": "SCS0018", "file": "Services/XmlAnalysis/XsdValidationService.cs", "line": 243 },
{ "code": "SCS0018", "file": "Services/XmlAnalysis/XsdValidationService.cs", "line": 348 }
]
}