Les liens de Rodolphe

Publié le par Rodolphe

Modifié le par Rodolphe

Chargement de l'article...

Artemis : détecter les failles SSRF en PHP/Symfony avec l’analyse statique

Les attaques SSRF (Server‑Side Request Forgery) sont devenues une menace sérieuse dans le développement web moderne. Dans un monde où les microservices, APIs et configurations cloud s’interconnectent en permanence, un simple appel réseau peut ouvrir la porte à des données sensibles internes.

C’est ici qu’intervient Artemis , un outil d’analyse statique avancée conçu pour aider les développeurs PHP — et notamment Symfony — à identifier ces chemins de vulnérabilités. Voici un guide pratique pour comprendre, utiliser, et intégrer Artemis dans un workflow de sécurité moderne.


Pourquoi les SSRF sont critiques en PHP ?

Une attaque SSRF exploite le fait qu’un serveur web peut faire des requêtes vers d’autres ressources (souvent internes), sur la base d’entrées utilisateur non filtrées.

Conséquences typiques :

  1. Accès aux metadata cloud (AWS, GCP…)
  2. Scan du réseau interne
  3. Contournement de pare‑feu / ACL
  4. Récupération de fichiers ou d’identifiants sensibles

Symfony et d’autres frameworks PHP exposent de nombreux points d’entrée (query, body, headers) et fonctions réseau (HttpClient, curl, etc.), rendant l’analyse complexe à l’œil nu.


Artemis : analyse taint, graphe d’appel, et intelligence contextuelle

Artemis repose sur une série de techniques clés :

  1. Analyse taint interprocédurale : suit les données “sales” (non filtrées) à travers le code, même entre plusieurs fonctions ou services.
  2. Détection de source → sink : par exemple, Request->get('url') → HttpClient::request(...).
  3. Sensibilité au chemin (path-sensitive) : évite les faux positifs en tenant compte des conditions de validation.
  4. Pruning intelligent : arrête l’analyse lorsqu’un chemin est bloqué par une vérification efficace.


Exemple Symfony : vulnérabilité SSRF classique

// src/Controller/FetchController.php
#[Route('/fetch')] public function fetch(Request $request): Response
{
$url = $request->query->get('url'); // <-- input non validé
$response = $this->http->request('GET', $url); // <-- exécution dangereuse
return new Response($response->getContent());
}

Un attaquant pourrait appeler /fetch?url=http://169.254.169.254/latest/meta-data/ et accéder aux données internes du serveur cloud.


Corriger & se protéger

a) Valider l’URL et l’hôte

$url = $request->query->get('url');
if (!filter_var($url, FILTER_VALIDATE_URL))
{
return new Response('URL invalide', 400);
}
$host = parse_url($url, PHP_URL_HOST);
$allowlist = ['api.monsite.com'];
if (!in_array($host, $allowlist))
{
return new Response('Hôte non autorisé', 403);
}

b) Vérifier l’adresse IP résolue

$ip = gethostbyname($host);
if (!filter_var($ip, FILTER_VALIDATE_IP, FILTER_FLAG_NO_PRIV_RANGE | FILTER_FLAG_NO_RES_RANGE)) {
return new Response('IP interdite', 403);
}

c) Forcer un proxy de sortie

Configure ton HttpClient pour qu’il passe par un proxy filtrant, avec journalisation, timeout, et ACL.


Intégrer Artemis dans une CI

Voici quelques bonnes pratiques :

  1. Automatiser l’analyse sur chaque pull request
  2. Prioriser les alertes critiques (metadata services, intranet, etc.)
  3. Compléter par du fuzzing, tests d’intégration, et WAF
  4. Triage humain pour les cas ambigus


Check‑list sécurité Symfony

  1. Valider les URL (format + domaine)
  2. Vérifier l’IP et refuser les plages privées
  3. Utiliser un proxy pour les requêtes externes
  4. Monitorer les appels réseau
  5. Lancer Artemis en CI


Pour aller plus loin

• Guide SSRF de l’OWASP

• Documentation Symfony HttpClient

• Le papier de recherche complet sur Artemis (à publier prochainement ?)


Conclusion

Artemis montre qu’avec une approche bien pensée — taint analysis, vérifications contextuelles, heuristiques — il est possible de sécuriser efficacement les applications PHP contre les SSRF.

Mais comme toujours : l’outil seul ne suffit pas. Combinez analyse statique, bonnes pratiques de validation, et tests dynamiques pour une défense en profondeur.

> Pour en savoir plus sur la méthode utilisée par Artemis, vous pouvez consulter l’article de recherche original sur arXiv
#ssrf #securite-web #php #symfony #artemis #proxy #ci-cd

dir SocialNetwork /W

Le volume dans le lecteur C s’appelle Hel.
Le numéro de série du volume est 2026-0116

[ bluesky ] [ facebook ] [ linkedin ] [ x ]