CERTA-2003-ALE-003

Vulnerability from certfr_alerte - Published: - Updated:

Par une URL astucieusement constituée visant un script PHP vulnérable tournant sur un serveur WEB, un individu mal intentionné peut prendre connaissance de documents sensibles présents sur le serveur ou faire exécuter au serveur n'importe quelle commande avec les droits du serveur HTTP.

Cette vulnérabilité est actuellement largement utilisée.

Description

PHP est un langage destiné essentiellement à la réalisation de « pages HTML dynamiques » sur un serveur WEB.

Une fonctionnalité de ce langage de programmation permet de construire des sites WEB en répartissant le code ou le texte dans différents fichiers qui seront inclus au moment de la visualisation de la page en utilisant la directive \<? include \$quelquechose ?>.

Un problème de sécurité se pose dès lors que deux conditions sont réunies :

  1. un internaute peut affecter précisément le contenu de la variable \$quelquechose avec une URL habilement constituée ;
  2. l'application PHP ne filtre pas avec la plus grande rigueur le contenu de cette variable afin de s'assurer qu'elle ne fait pas référence à une page distante (accessible par exemple au travers des protocoles http:// ou ftp://, ce qui entraîne le risque d'exécution de code arbitraire) ou une page locale (ce qui entraîne un risque de divulgation d'informations sensibles).

Par ailleurs, n'importe quelle variable d'une page dynamique peut être redéfinie par une URL astucieusement construite.

On assiste actuellement à une exploitation massive de cette vulnérabilité dans le but de défigurer le contenu de serveurs WEB.

Solution

La seule solution fiable est de ne jamais utiliser des lignes de code du type \<? include \$quelquechose ?>, dès lors que la variable \$quelquechose dépend des champs de la requête HTTP GET ou POST.

Au même titre que les vulnérabilités de type « injection SQL » ou « cross site scripting », le seul moyen fiable de vérifier que l'on n'est pas vulnérable est de procéder à l'analyse en profondeur du code PHP de ses applications.

Le guide donné dans la documentation précise les règles de programmation à appliquer sur un développement PHP pour se prémunir contre ce type d'attaque.

Les systèmes potentiellement affectés sont les applications WEB écrites en PHP qui utilisent la directive include sans précaution.

Impacted products
Vendor Product Description

Show details on source website

{
  "$ref": "https://www.cert.ssi.gouv.fr/openapi.json",
  "affected_systems": [],
  "affected_systems_content": "\u003cP\u003eLes syst\u00e8mes potentiellement affect\u00e9s sont les applications  WEB \u00e9crites en PHP qui utilisent la directive \u003cTT\u003einclude\u003c/TT\u003e  sans pr\u00e9caution.\u003c/P\u003e",
  "closed_at": "2003-09-09",
  "content": "## Description\n\nPHP est un langage destin\u00e9 essentiellement \u00e0 la r\u00e9alisation de \u00ab pages\nHTML dynamiques \u00bb sur un serveur WEB.\n\nUne fonctionnalit\u00e9 de ce langage de programmation permet de construire\ndes sites WEB en r\u00e9partissant le code ou le texte dans diff\u00e9rents\nfichiers qui seront inclus au moment de la visualisation de la page en\nutilisant la directive \\\u003c? include \\$quelquechose ?\\\u003e.\n\nUn probl\u00e8me de s\u00e9curit\u00e9 se pose d\u00e8s lors que deux conditions sont\nr\u00e9unies :\n\n1.  un internaute peut affecter pr\u00e9cis\u00e9ment le contenu de la variable\n    \\$quelquechose avec une URL habilement constitu\u00e9e ;\n2.  l\u0027application PHP ne filtre pas avec la plus grande rigueur le\n    contenu de cette variable afin de s\u0027assurer qu\u0027elle ne fait pas\n    r\u00e9f\u00e9rence \u00e0 une page distante (accessible par exemple au travers des\n    protocoles http:// ou ftp://, ce qui entra\u00eene le risque d\u0027ex\u00e9cution\n    de code arbitraire) ou une page locale (ce qui entra\u00eene un risque de\n    divulgation d\u0027informations sensibles).\n\nPar ailleurs, n\u0027importe quelle variable d\u0027une page dynamique peut \u00eatre\nred\u00e9finie par une URL astucieusement construite.\n\nOn assiste actuellement \u00e0 une exploitation massive de cette\nvuln\u00e9rabilit\u00e9 dans le but de d\u00e9figurer le contenu de serveurs WEB.\n\n## Solution\n\nLa seule solution fiable est de ne jamais utiliser des lignes de code du\ntype \\\u003c? include \\$quelquechose ?\\\u003e, d\u00e8s lors que la variable\n\\$quelquechose d\u00e9pend des champs de la requ\u00eate HTTP GET ou POST.\n\nAu m\u00eame titre que les vuln\u00e9rabilit\u00e9s de type \u00ab injection SQL \u00bb ou \u00ab\ncross site scripting \u00bb, le seul moyen fiable de v\u00e9rifier que l\u0027on n\u0027est\npas vuln\u00e9rable est de proc\u00e9der \u00e0 l\u0027analyse en profondeur du code PHP de\nses applications.\n\nLe guide donn\u00e9 dans la documentation pr\u00e9cise les r\u00e8gles de programmation\n\u00e0 appliquer sur un d\u00e9veloppement PHP pour se pr\u00e9munir contre ce type\nd\u0027attaque.\n",
  "cves": [],
  "links": [
    {
      "title": "Ce document pr\u00e9cise quelques bonnes pratiques de s\u00e9curit\u00e9      sp\u00e9cifiquement adapt\u00e9es \u00e0 la programmation en PHP. Il couvre      les aspects trait\u00e9s dans cette alerte.",
      "url": "http://www.dwheeler.com/secure-programs/Secure-Programs-HOWTO.html#PHP"
    }
  ],
  "reference": "CERTA-2003-ALE-003",
  "revisions": [
    {
      "description": "version initiale.",
      "revision_date": "2003-09-09T00:00:00.000000"
    }
  ],
  "risks": [
    {
      "description": "Compromission \u00e0 distance du syst\u00e8me"
    },
    {
      "description": "Divulgation d\u0027informations sensibles"
    },
    {
      "description": "D\u00e9figuration de site web"
    }
  ],
  "summary": "Par une URL astucieusement constitu\u00e9e visant un script PHP vuln\u00e9rable\ntournant sur un serveur WEB, un individu mal intentionn\u00e9 peut prendre\nconnaissance de documents sensibles pr\u00e9sents sur le serveur ou faire\nex\u00e9cuter au serveur n\u0027importe quelle commande avec les droits du serveur\nHTTP.\n\nCette vuln\u00e9rabilit\u00e9 est actuellement largement utilis\u00e9e.\n",
  "title": "Exploitation massive de la vuln\u00e9rabilit\u00e9 \u00ab include PHP \u00bb",
  "vendor_advisories": []
}


Log in or create an account to share your comment.




Tags
Taxonomy of the tags.


Loading…

Loading…

Loading…

Sightings

Author Source Type Date

Nomenclature

  • Seen: The vulnerability was mentioned, discussed, or observed by the user.
  • Confirmed: The vulnerability has been validated from an analyst's perspective.
  • Published Proof of Concept: A public proof of concept is available for this vulnerability.
  • Exploited: The vulnerability was observed as exploited by the user who reported the sighting.
  • Patched: The vulnerability was observed as successfully patched by the user who reported the sighting.
  • Not exploited: The vulnerability was not observed as exploited by the user who reported the sighting.
  • Not confirmed: The user expressed doubt about the validity of the vulnerability.
  • Not patched: The vulnerability was not observed as successfully patched by the user who reported the sighting.


Loading…

Detection rules are retrieved from Rulezet.

Loading…

Loading…