Reino: Input Validation and Representation

Problemas de validação e representação da entrada são causados por metacaracteres, codificações alternativas e representações numéricas. Confiar na entrada resulta em problemas de segurança. Os problemas incluem: “Buffer Overflows”, ataques de “Cross-Site Scripting”, “SQL Injection”, entre outros.

Formula Injection

Abstract
Os invasores podem controlar dados gravados em uma planilha, o que pode possibilitar o ataque a usuários que abram o arquivo em certos processadores de planilha.
Explanation
Processadores de planilha populares, como o Apache OpenOffice Calc e o Microsoft Office Excel, oferecem suporte a operações de fórmula poderosas que podem permitir que invasores em controle da planilha executem comandos arbitrários no sistema subjacente ou que podem provocar o vazamento de informações confidenciais na planilha.

Como exemplo, o invasor pode injetar a seguinte carga útil como parte de um campo CSV: =cmd|'/C calc.exe'!Z0. Se o usuário que abrir a planilha confiar na origem do documento, poderá aceitar todos os prompts de segurança apresentados pelo processador de planilha e deixar a carga útil (neste exemplo, a abertura da calculadora do Windows) ser executada em seu sistema.

Exemplo: O exemplo a seguir mostra um controlador ASP.NET que gera uma resposta CSV com dados não sanitizados, controlados pelo usuário:


public void Service()
{
string name = HttpContext.Request["name"];

string data = GenerateCSVFor(name);
HttpContext.Response.Clear();
HttpContext.Response.Buffer = true;
HttpContext.Response.AddHeader("content-disposition", "attachment;filename=file.csv");
HttpContext.Response.Charset = "";
HttpContext.Response.ContentType = "application/csv";
HttpContext.Response.Output.Write(tainted);
HttpContext.Response.Flush();
HttpContext.Response.End();
}
References
[1] Formula Injection Pentest Magazine
[2] Comma Separated Vulnerabilities Context
desc.dataflow.dotnet.formula_injection
Abstract
Os invasores podem controlar dados gravados em uma planilha, o que pode possibilitar o ataque a usuários que abram o arquivo em certos processadores de planilha.
Explanation
Processadores de planilha populares, como o Apache OpenOffice Calc e o Microsoft Office Excel, oferecem suporte a operações de fórmula poderosas que podem permitir que invasores em controle da planilha executem comandos arbitrários no sistema subjacente ou que podem provocar o vazamento de informações confidenciais na planilha.

Como exemplo, o invasor pode injetar a seguinte carga útil como parte de um campo CSV: =cmd|'/C calc.exe'!Z0. Se o usuário que abrir a planilha confiar na origem do documento, poderá aceitar todos os prompts de segurança apresentados pelo processador de planilha e deixar a carga útil (neste exemplo, a abertura da calculadora do Windows) ser executada em seu sistema.

Exemplo: O exemplo seguinte grava em um arquivo csv usando dados não sanitizados controlados pelo usuário:


func someHandler(w http.ResponseWriter, r *http.Request){
r.parseForm()
foo := r.FormValue("foo")
...
w := csv.NewWriter(file)
w.Write(foo)
}
References
[1] Formula Injection Pentest Magazine
[2] Comma Separated Vulnerabilities Context
desc.dataflow.golang.formula_injection
Abstract
Os invasores podem controlar dados gravados em uma planilha, o que pode possibilitar o ataque a usuários que abram o arquivo em certos processadores de planilha.
Explanation
Processadores de planilha populares, como o Apache OpenOffice Calc e o Microsoft Office Excel, oferecem suporte a operações de fórmula poderosas que podem permitir que invasores em controle da planilha executem comandos arbitrários no sistema subjacente ou que podem provocar o vazamento de informações confidenciais na planilha.

Como exemplo, o invasor pode injetar a seguinte carga útil como parte de um campo CSV: =cmd|'/C calc.exe'!Z0. Se o usuário que abrir a planilha confiar na origem do documento, poderá aceitar todos os prompts de segurança apresentados pelo processador de planilha e deixar a carga útil (neste exemplo, a abertura da calculadora do Windows) ser executada em seu sistema.

Exemplo: O exemplo a seguir mostra um controlador Spring que gera uma resposta CSV com dados não sanitizados, controlados pelo usuário:


@RequestMapping(value = "/api/service.csv")
public ResponseEntity<String> service(@RequestParam("name") String name) {

HttpHeaders responseHeaders = new HttpHeaders();
responseHeaders.add("Content-Type", "application/csv; charset=utf-8");
responseHeaders.add("Content-Disposition", "attachment;filename=file.csv");

String data = generateCSVFor(name);

return new ResponseEntity<>(data, responseHeaders, HttpStatus.OK);
}
References
[1] Formula Injection Pentest Magazine
[2] Comma Separated Vulnerabilities Context
desc.dataflow.java.formula_injection
Abstract
Os invasores podem controlar dados gravados em uma planilha, o que pode possibilitar o ataque a usuários que abram o arquivo em certos processadores de planilha.
Explanation
Processadores de planilha populares, como o Apache OpenOffice Calc e o Microsoft Office Excel, oferecem suporte a operações de fórmula poderosas que podem permitir que invasores em controle da planilha executem comandos arbitrários no sistema subjacente ou que podem provocar o vazamento de informações confidenciais na planilha.

Como exemplo, o invasor pode injetar a seguinte carga útil como parte de um campo CSV: =cmd|'/C calc.exe'!Z0. Se o usuário que abrir a planilha confiar na origem do documento, poderá aceitar todos os prompts de segurança apresentados pelo processador de planilha e deixar a carga útil (neste exemplo, a abertura da calculadora do Windows) ser executada em seu sistema.

Exemplo: O exemplo a seguir mostra um controlador Spring que gera uma resposta CSV com dados não sanitizados, controlados pelo usuário:


@RequestMapping(value = "/api/service.csv")
fun service(@RequestParam("name") name: String): ResponseEntity<String> {
val responseHeaders = HttpHeaders()
responseHeaders.add("Content-Type", "application/csv; charset=utf-8")
responseHeaders.add("Content-Disposition", "attachment;filename=file.csv")
val data: String = generateCSVFor(name)
return ResponseEntity(data, responseHeaders, HttpStatus.OK)
}
References
[1] Formula Injection Pentest Magazine
[2] Comma Separated Vulnerabilities Context
desc.dataflow.kotlin.formula_injection