プログラムブログ

PHP、Database、ネットワーク、サーバセキュリティ

ソースコードチェックツール pixy

phpで記述したWebアプリケーションにクロスサイトスクリプティング、SQLインジェクションの脆弱性が存在しないかチェックしてくれるツール、pixy

FAQ等読むとまだphp5系には未対応、マルチバイトで書かれたソースはうまく解析できない場合がある、オブジェクト指向で書かれたソースはうまく解析できないなどの問題があるが、ソースを自動でチェックするという発想がすばらしい。

pixy自体はjavaで書かれており、windowsでもlinuxでも動作する。

今回はWindows上でpixyを設定、動作させた。

[準備]

  • pixy3.01 をダウンロード。
  • Windows上で解凍。 
  • ActivePerl インストール
    (必須ではない。パラメータの遷移グラフなど作成したい場合に必要となる)
  • graphvizダウンロード、解凍 http://www.graphviz.org/
    (必須ではない。パラメータの遷移グラフなど作成したい場合に必要となる)環境線数の設定で PATH にgraphvizのbin を追加

[実行]
perl を使わない場合(サンプルのgetstarted.phpをチェック)
(Pixyフォルダで) run-all.bat getstarted.php > getstarted-result.txt
※結果

Number of sinks: 2
Vulnerability detected!
- unconditional
- パスPixygetstarted.php:11
- Graph: xss2
Total Vuln Count: 1

[解説]
getstarted.phpの11行目(echo $b;)にXSSの脆弱性存在
グラフの2に脆弱性 ( Pixygraphs にtxtファイルと dotファイルが存在する。今回はxss_getstarted.php_2_dep.dot)
このgraphsフォルダには変数のフロー図が描かれている。
graphbizを用いて dotty xss_getstarted.php_2_dep.dot を実行すれば表示される。
perlを使う場合
perl run-all.pl getstarted.php > getstarted-result2.txt
※batで実行してもperlで実行しても結果は同じ
——————————————-

Tree図の作成
perl Pixyフォルダscriptstree.pl getstarted.php
※ここでdottyが起動するが大量の警告が発生する(100回ぐらい?)。
ポップアップ内容:

  1. dotty.lefty:
  2. draw language parser error: 18

OKボタンを押し続けると最終的には表示される。(文字コードの問題か?)


もっと簡素化したフロー図

perl Pixyフォルダscriptsquick_cfg.pl getstarted.php
同様にエラーがでる。ただし回数はtree.plより少なめ。
SQLインジェクションのチェックのみ実施
perl Pixyフォルダscriptsrun-sql.pl getstarted.php
XSSのチェックのみ実施
perl Pixyフォルダscriptsrun-xss.pl getstarted.php

1 Comment so far

  1. Centos Php5 9 月 29th, 2008

    anybody here know of a good site to find more info on centos php5? I’ve got this site bookmarked and im gonna keep checking it out, but i still would like to find a site that covers centos php5 a little more thoroughly..thanks

Leave a reply