前回は、社内でWebコンテンツを作成し、サイトにアップロードして管理する場合のGumblar対策を解説した。Webコンテンツの作成を外部に委託している場合もあるだろう。そのような場合、委託先にも社内で作るときと同様のセキュリティ対策を求めることになる。具体的には、委託する場合の仕様書に、前回に説明したWebコンテンツ作成関連端末のぜい弱性対策を必須とする条項を入れることになる。

Webサイトへアップロードする前にコンテンツの安全性をチェック

 だが、委託仕様書などに従ったた契約における対策は、あくまで保険にしかならず、Gumblarが侵入する可能性に対して万全とはいえない。委託先から、Gumblarに汚染されたコンテンツが納品されてくる場合を想定して、あらかじめ安全なWebコンテンツの受け入れ態勢を作る必要があるだろう。

 GumblarによるWeb改ざんの方法は、FTPクライアントのIDとパスワードが盗まれて、遠くアメリカの端末からWeb改ざんされるような事例だけではない。ローカルPC内のWebコンテンツがGumblarにより汚染され、Webアップロード端末からWeb管理者みずからが、改ざんされたWebコンテンツをアップロードしてしまうという事例も多数報告されている。このため、WebコンテンツをWebサーバーにアップロードする前に、そのWebコンテンツがGumblarに汚染されていないかどうか、安全かどうかを確認することが重要である。

 そのための方法をいくつか紹介しよう。なお、これらのWebコンテンツの確認はWebコンテンツ作成関連端末の脆弱性対策を完璧に行った上で、インターネットに接続していない端末で実行する必要がある点には注意してほしい。万が一の際の二次感染を防ぐためである。

Webコンテンツの中身から特定のコードを発見する

 まずは、キーワードを検索するというチェック方法を見てみよう。初期のGumblarでは、不正な動作をするために挿入されるコードに特徴があった。このため、文字列を探す「grep」コマンドを使うことで、Gumblarに感染しているかどうか容易に判定可能だった。比較的簡単に判断可能なのが「/*GNU GPL*/」、「/*CODE1*/」、「/*LGPL*/」、「/*handle exception*/」、「/*Exception*/」といったキーワードが検出された場合である(表2)。コード内にこうしたパターンが発見されたら要注意である。

表2●Gumblar検知キーワード
GumblarキーワードGumblar記載例判定
/*LGPL*/<script>/*LGPL*/ try容易
/*GNU GPL*/<script>/*GNU GPL*/ try容易
/*CODE1*/<script>/*CODE1*/ try容易
/*Exception*/<script>/*Exception*/ try容易
{/*handle exception*/{/*handle exception*/} </script>容易
キーワードなし<script> try
キーワードなしString() Date() Array() のいずれかが含まれる。

 ところが最近では、特徴的なキーワードがない「<script> try」というパターンも出てきている。こうしたタイプの感染に備えて、JavaScriptでコーディングする際の規約として、こういったパターンを書かないような指定をしておくなどの対策が必要だろう。そうすれば、正規なコードと不正なコードの判別がしやすくなる。