Piment Noir Wiki

Introduction

The whole purpose of this draft is to propose an assessment model for each threat class.
We will follow the OWASP top ten list.

Threats

Threats class: A1 injection

Each web applications has a finite set of visibles parameters being in forms, URL parameters, … called $ \mathcal{P} = \{p_{1},\dots,p_{n}\}, \, n \in \mathbb{N} $.
All parameters are not typed: the HTTP protocol only transport text. But we might consider the langage associated to each parameters $ p_{i} $ to ease the future data injection.

We will consider the set $ \mathcal{P} $ in the future.

Question: Does it matter if it's a form input parameter or an URL parameter or … ?

Let's describe the processus to assess A1 threats in a web application.

  • Phase one: determine $ \mathcal{P} $

It will depend on the approach chosen.
If it's a black box testing, it will be based on URLs scanning, pages content scanning, ….
If it's static code analysis, it will be based on detection of code pattern.
In case of code static analysis, each visible parameters' type shall be inferred.

We might also consider the location of each parameters.
Question: When the location information of parameters will be useful ?
(If it's useful, it will bring in a new finite set $ \mathcal{L} $ which will contain $ \{l_{1},\dots,l_{p}\}, \, p \in \mathbb{N} $ where $ l_{i} $ is the location of $ p_{i} $ which might not be unique !)

  • Phase two: determine data pattern to inject

It will of course not be a blind and random data building like fuzzing, data should be carefully crafted depending on the parameters langage and probably location. The building of the set of data patterns is challenging.
For now, we only know it is finite.

One way to build it is to start with an alphabet and some syntactic rules to combine each element in the alphabet in a meaningful fashion for security.

  • Phase three: inject sensibly the data patterns in all visible parameters

Inject.