RIPSでPHPのプログラムの脆弱性をチェックする

罰金担当の高橋です。今までは動作しているWebアプリについて、セキュリティチェックを行うツールを紹介してきましたが、今回はソースコードに対してセキュリティチェックを行うRIPSツールを紹介します。

RIPSとは

RIPSとはPHPソースコードの静的分析ツールです。PHPソースコードを解析し、セキュリティチェックや依存関係のグラフの作成を行います。RIPS自体はWebアプリケーションとして動作します。

実行環境の構築

RIPS自体を動作させるにはWebサーバーとPHPのインストールが必要です。今回は以下の環境で実行しました。ApachePHPはxamppを利用してインストールしました。

RIPSのインストール

  1. http://sourceforge.net/projects/rips-scanner/files/にアクセスをします

  2. 最新版のファイルを取得します(9/17時点ではrips-0.55.zipが最新)

  3. 上記で取得したファイルをディレクトリごとウェブルートディレクトリにコピーし、ブラウザでアクセスをすると以下の画面が表示されます

f:id:takahashih1234:20150918002424p:plain

実行

今回はXSSの検知を確認するために以下の2ファイルに対して実行します。

main.php

<?php
    require_once 'sub.php';
    $sum = add(1,2);
    echo $sum; // ここは3のみ表示になるのでXSSとして検出されないはず
    echo $_SERVER['HTTP_USER_AGENT']; // ここがXSSとして検出されるはず

sub.php

<?php
    function add($a, $b){
    $sum = $a + $b;
    return $sum;
}
  • 画面のpath / file:に上記のPHPファイルが格納されているパスを指定します。

  • vuln typeでチェックをする観点を設定します。今回はALLを選択します。

  • scanボタンをクリックすると、実行されます。実行が完了すると、以下のような画面が表示されます。 f:id:takahashih1234:20150927131144p:plain

  • main.phpのecho $_SERVER['HTTP_USER_AGENT'];が脆弱性が含まれている箇所として検出されました。

実行結果の見方

Resultsにはプログラムの静的分析の結果が表示されます。また、画面の右上にある4つのボタンでは以下の内容が表示されます。

  1. files:ファイルの一覧と呼び出し元を表すグラフが表示されます

  2. user input:プログラムで使用されている外部から入力される値の一覧が表示されます

  3. status:スキャンの結果が表示されます(スキャン後に表示されるResultsと同じ画面)

  4. functions:チェック対象のソースコード内で定義されている関数の一覧が表示されます

まとめ

セキュリティーチェック以外にも、入力項目一覧や、関数一覧などのソースコードの解析機能も便利だなと思いました。ただし、現在のバージョンではオブジェクト指向ソースコードに対応していないようです。また、インターフェースがWeb画面しか無いので、WebAPIもあれば使い勝手がよいと思いました。