HTTPパラメータ汚染

From Wikipedia, the free encyclopedia

HTTPパラメータ汚染(英語:HTTP Parameter Pollution、略称:HPP)は、既存のパラメータにエンコードされたクエリ文字列デリミタを注入することによって悪用される、Webアプリケーション脆弱性である。HTTPパラメータポイゾニングとも呼ばれる。この脆弱性は、Webアプリケーションが出力する際に、ユーザー入力が正しくエンコードされていない場合に発生する[1]。この脆弱性により、Webアプリケーションが作成したURLにパラメータを注入することが可能になる。2009年にポーランドで開催された会議OWASP EU09にて、ステファノ・ディ・パオラとルカ・カレットーニによって初めて公にされた[1]。このような脆弱性の影響は様々であり、単なる迷惑な影響からWebアプリケーションの意図された動作の完全な破壊に至るまで多岐にわたる。Webアプリケーションの動作を変更するためのHTTPパラメータの上書き、入力およびアクセス検証のチェックポイントのバイパス、その他の間接的な脆弱性などは、HPP攻撃によって引き起こされる可能性のある結果である[1]

共通脆弱性タイプではCWE-235に分類される。複数のパラメータが渡された場合の処理について、RFCの標準規格は存在しない。HPPは、クロスチャネル・ポリューション、CSRF保護やWAFの入力検証チェックのバイパスに利用される可能性がある[2]

同じ名前の複数のパラメータが渡された場合、様々なバックエンドがどのように動作するかを以下に示す[3]

"param"に値"val1"および"val2"が渡された場合の動作
技術 解析結果
ASP.NET/IIS すべての出現をカンマで連結 param=val1,val2
ASP/IIS すべての出現をカンマで連結 param=val1,val2
PHP/Apache 最後の出現のみ param=val2
PHP/Zeus 最後の出現のみ param=val2
JSP, Servlet/Apache Tomcat 最初の出現のみ param=val1
JSP, Servlet/Oracle Application Server 最初の出現のみ param=val1
JSP, Servlet/Jetty 最初の出現のみ param=val1
IBM Lotus Domino 最後の出現のみ param=val2
IBM HTTP Server 最初の出現のみ param=val1
mod_perl,libapreq2/Apache 最初の出現のみ param=val1
Perl CGI/Apache 最初の出現のみ param=val1
mod_wsgi (Python)/Apache 最初の出現のみ param=val1
Python/Zope リスト(配列)内のすべての出現 param=['val1','val2']

種類

クライアントサイド

  • First Order / Reflected HPP[4]
  • Second Order / Stored HPP[4]
  • Third Order / DOM HPP[4]

サーバーサイド

  • Standard HPP[4]
  • Second Order HPP[4]

対策

適切な入力検証とHPPに関するWebテクノロジーへの理解が、HTTP Parameter Pollutionに対する防御となる[5]

関連項目

脚注

参考文献

Related Articles

Wikiwand AI