2014年を揺るがしたインジェクション攻撃の手口と対策:セキュリティ強化塾(1/4 ページ)
2014年はOpenSSL、Struts2、bashと、深刻な脆弱(ぜいじゃく)性が次々に公表された。特に顕著だった攻撃手口と対策を紹介する。
2014年は春からOpenSSL、Struts2、bashなど、Webアプリケーションの基盤として広く普及した製品に深刻な脆弱(ぜいじゃく)性があることが次々に公表され、信頼していたIT基盤が突然崩れ去るような恐怖を味わった人も多かったのではないだろうか。
しかし、セキュリティ情報に敏感で脆弱性公表に即座に対応できればそれほどの心配はないはず。怖いのは、脆弱性の存在に気付かず製品を利用する場合や、自社で開発したアプリケーションの脆弱性に気付いていない場合だ。攻撃を受けてひそかに機密情報が流出したかもしれない。
今回は、特にWebアプリケーションの脆弱性を狙う攻撃として2014年に顕著だったSQLインジェクションとOSコマンドインジェクション、さらにbashやStruts2の脆弱性と対策について紹介し、セキュリティ実装と運用の勘所を考えてみたい。
SQLインジェクションで11万件のカード情報流出
2013年5月、国内通信機器レンタルサービス業者(A社)がSQLインジェクション攻撃(図1)を受けて個人情報が流出したことを発表した。A社のWebサーバが攻撃を受け、約11万件のカード名義人名、住所、カード番号、有効期限、セキュリティコードが流出したのだ。これらの情報を悪用すれば、クレジットカードの不正使用が簡単にできてしまう。
漏えいに同社が気付いたのは、契約先の決済代行会社からの連絡だった。3月から同社のサービスに申し込んだ顧客のカード情報などが流出したのだが、連絡を受けるまで同社自身では気付けなかった。
事件後、セキュリティ強化や体制見直しが行われ、カード情報は同社が保有せず、外部の決済サービスを利用することとなった。ビジネスプロセスの見直しとセキュリティ強化対策、顧客へのおわびクーポンの提供など、巨額にのぼるとみられる出費を余儀なくされた上、ブランドイメージも相当に傷ついた。
実はこの程度の期間の情報漏えいは珍しいことではない。数年単位で少しずつ情報を窃取されていたケース、数年前にSQLインジェクション攻撃によって仕込まれたバックドアを利用して、脆弱性がなくなったシステムからある日突然情報が抜き取られたケースも報告される。
つまり、脆弱性の存在と悪用の実態に無自覚でいると、まったく気付かないままに情報漏えいが進み、ある日突然被害が表れてがくぜんとするわけだ。SQLインジェクション以外にも、Webアプリケーションの脆弱性はたくさんある。IPAでは2012年発行の「安全なウェブサイトの作り方」において次の9点を挙げる。
- SQLインジェクション
- OSコマンドインジェクション
- パス名パラメータの未チェック、ディレクトリトラバーサル
- セッション管理の不備
- クロスサイトスクリプティング
- CSRF(クロスサイトリクエストフォージェリ)
- HTTPヘッダインジェクション
- メールヘッダインジェクション
- アクセス制御や認可制御の欠落
これらの脆弱性がWebアプリケーションに潜在することは、現実的にはほとんど避けられない。できるだけ脆弱性を作りこまないような配慮に加え、肝心なのは存在が明らかになり次第、脆弱性を迅速に排除するか、脆弱性が被害につながらないような回避策を講じることだ。
代表的なWebアプリケーションの脆弱性を狙う攻撃として、SQLインジェクションとOSコマンドインジェクションを中心に手口のあらましと対策について考えてみよう。
Copyright © ITmedia, Inc. All Rights Reserved.