Rails の軌道を維持する:コードインジェクション攻撃の阻止
Akamai では Web アプリケーションファイアウォール(WAF) を継続的に強化し、最高レベルのセキュリティをお客様のために確保することに注力しています。この取り組みの一環として、当社は Ruby on Rails(Rails)アプリケーションを標的とした コードインジェクション攻撃に特化した、新しい検知機能 の提供を開始することになりました。
Ruby on Rails アプリケーションの保護がきわめて重要である理由
Ruby on Rails は、その使いやすさ、柔軟性、堅牢なエコシステムにより、Web アプリケーション開発のためのフレームワークとして人気を集めています。Rails は開発期間の短縮が可能であり、しかもクリーンでサポート可能なコードベースを維持できるため、組織の規模にかかわらず開発者は大きな魅力を感じています。GitHub、Shopify、Airbnb、Basecamp など多くの有名ブランドが Ruby on Rails を使用してプラットフォームを構築していることからも、テクノロジー業界における重要性は明らかです。
しかし、開発者を魅了する一方で、Rails は同じ理由によりサイバー攻撃者にとっても魅力的なターゲットとなっています。自動化されたプロセスが増え、また、アプリケーションの相互運用に対するニーズがさらに高まっているため、攻撃者が隠れる場所も生まれてしまうのです。Rails アプリケーションの保護は、この重要なプラットフォームに存在する機微な情報と事業運営を守るために不可欠です。
Ruby on Rails に対する脅威の増加
長年にわたり、Rails は重大なセキュリティの脆弱性と攻撃ベクトルに何度も直面してきました。 Open Worldwide Application Security Project(OWASP) が提供する Rails のセキュリティに関するチートシートを見れば、開発者とセキュリティチームは警戒を続けざるを得ないことがわかります。
Rails で最も注目される脆弱性は JSON や YAML データ形式の安全でないデシリアライゼーションに関するものです。 しかしながら、開発者の不注意によりアプリケーションとユーザーのデータが別の種類の攻撃にさらされる可能性もあり、その 1 つがコードインジェクションです。特に、Ruby 言語の「eval」関数には注意する必要があります。この関数は、文字列入力から Ruby コードを動的に生成します。攻撃者が制御する入力がこの関数に入り込んでしまうと、任意の Ruby コードが実行されるおそれがあります。
そのようなケースの例を紹介しましょう。
def calculate
calc = params[:calc]
result = eval(calc)
render plain: result
End
この非常に単純な例では calculate のアクションで calc パラメーターをユーザー入力から取り出しますが、その入力内容には数学演算(1+2など)が含まれています。そして Ruby の eval メソッドが使用され、数学演算の結果が返されます。この仕組みがコードインジェクションの脆弱性につながるのは、攻撃者が任意の Ruby コードを提供して実行させる可能性があるためです。
攻撃者がこの脆弱性を悪用する方法
こうした脆弱性を利用するために、攻撃者は次のような悪性の Ruby コードを使用してリクエストに細工を施し、送ってくる可能性があります。
POST /calculate?ip=IO.popen('cat%20%2Fetc%2Fpasswd').read%20%23
デコードされた形式:
IO.popen('cat /etc/passwd').read #
このコマンドにより、システムの /etc/passwd ファイルの内容(システムユーザーに関する機密情報を含む)が読み取られます。末尾の # 記号は Ruby のコメントで、それ以降の内容はすべて無視され、コードの残りの部分から構文エラーが発生するのを防ぎます。
Akamai Adaptive Security Engine による緩和
巧妙なサイバー脅威が蔓延する中で、堅牢なセキュリティ対策の導入が不可欠になっています。当社最新の Adaptive Security Engine ルール 3000404(Ruby on Rails 機密業務に対する検知済みインジェクション攻撃)は、Rails アプリケーションでのコードインジェクション攻撃の検知と緩和において、より高いレベルの精度とカバレッジを提供します(図 1)。
主なメリット
精度の向上:高度な検知手法によりコードインジェクションの試行を正確に識別してブロックし、フォールス・ポジティブ(誤検知)を最小限に抑え、正当なトラフィックへの影響を回避します
包括的な対応:さまざまなコード・インジェクション・ベクトルに幅広く対応して、Rails アプリケーションを強力に保護します
当社顧客に対する Ruby on Rails コードインジェクション攻撃
Rails に特化した Akamai の新しいルールによって、毎日数万件もの Rails コードインジェクション試行が世界中で検知されています。 この数週間、 Adaptive Security Engine ルールの検知はピーク時で 1 日にほぼ 25 万件に達し、平均すると 1 日あたり約 7 万件の攻撃を緩和しています (図 2)。
これまで、3,000 を超える固有の攻撃 IP を確認しており、こうした攻撃の標的となったホストは 21,000 以上にのぼります。攻撃の試みは世界中で発生していますが、ほとんどがドイツで始まっています(図 3)。
今後の展望
セキュリティはビジネスの重要な側面であり、Akamai はお客様の期待に応えるだけでなくそれを上回るソリューションの提供に取り組んでいます。当社の WAF は包括的な保護を提供するように設計されており、Rails コードインジェクション検知ルールの追加によって、アプリケーションとデータを守るための防御メカニズムがさらに強化されます。
WAF 機能の革新と拡張を継続していく中で、当社が引き続き注力していくのは、お客様に対する最も効果的で信頼性の高いセキュリティソリューションの提供です。Akamai は、絶えず製品メニューの強化を図り、Web アプリケーションセキュリティの最前線に立ち続けます。これからも最新情報にご注目ください。
Adaptive Security Engine と Akamai の Web アプリケーションおよび API セキュリティソリューションの詳細については、 Akamai の担当者にお問い合わせ ください。