OSWE合格体験記
はじめに
このたび、OffSec社が提供する OffSec Web Expert (OSWE) に合格しました。
本記事では、OSWEの概要、学習を通じて感じたこと、試験に向けて意識したポイントを、公開可能な範囲で整理してご紹介します。なお、試験規約に配慮し、具体的な試験内容や再現性の高い攻略情報には触れません。
OSWEとは
OSWEは、OffSec社が提供するWebアプリケーション向けの実技試験です。ブラックボックス寄りの診断とは異なり、ソースコードを読み解きながら脆弱性を特定し、影響を検証する力が問われます。
主に次のような能力が求められます。
- Webアプリケーションのコードリーディング
- アプリケーションの動作理解とデバッグ
- 脆弱性の発見と原因分析
- 検証用コードの作成と再現
OSCPやOSEPと比べると、OSWEは特に「ソースコードを根拠に仮説を立て、検証可能な形に落とし込む力」が重視される印象です。単に攻撃が成立することを確認するだけではなく、実際に脆弱性を悪用するエクスプロイトコードを実装する必要があるのが特徴的な部分です。
学習について
今回は Course + Cert Bundle を購入し、学習を進めました。執筆時点では、90日間のラボアクセス権と1回分の受験権が含まれる構成です。最新情報は変更される可能性があるため、受講前には公式サイトをご確認ください。
Get your OSWE Certification with WEB-300 | OffSec
学習内容は、私の普段の業務(ブラックボックスのWebアプリ診断)と近い領域も多く、比較的入りやすい印象でした。一方で、Webアプリケーションの挙動を表面的に追うだけでは足りず、実装の読み解きやデータフローの把握を丁寧に行う必要があります。
所感としては、OSCPやOSEPと比べると、学習全体のボリュームはややコンパクトに感じました。もちろん個人の得意分野や経験によって差はありますが、論点がWebアプリケーションに集中しているぶん、学習の軸は立てやすいと思います。
私はおおむね2か月程度で、演習環境(チャレンジラボ)を含めた学習を一通り完了しました。私の学習時間の目安は、平日が2〜3時間、休日が5〜6時間程度です。既知の内容はスキップして進めた箇所もありますが、標準的に取り組んでも90日あれば十分に学習可能なボリュームだと感じました。
チャレンジラボの難易度は、極端にひねられた問題というより、基礎的な内容が多い印象です。製品やフレームワーク固有の脆弱性を突く、というよりはテキストで学習した古典的な脆弱性を連鎖させていくイメージです。CTFのEasy~MediumくらいのWeb問題を想定しておけばよいと思います。様々なテクニックを多く知っていることよりも、実装を丁寧に読み、仮説を検証し切る姿勢のほうが重要でした。
試験について
OSWEはOffSecの300レベルに位置づけられる試験で、約48時間の実技試験と、その後24時間以内のレポート提出まで含めて評価されます。実技試験では二つのWebアプリケーションが与えられ、認証バイパスとRCEを達成することが求められます。認証バイパスは35点、RCEは15点の配点で、合格ラインは85点となります。
試験の内容は詳細にお伝えすることはできませんが、難易度は想定の範囲内でした。チャレンジラボと同程度と考えておけば大丈夫だと思います。私自身は、試験本番では大きく手が止まる場面は少なく、20時間程度ですべての課題を達成しました。特別なひらめきよりも、落ち着いて候補を絞り込み、検証と記録を積み上げることが重要です。
注意点を挙げるとすれば、ソースコードへのアクセス方法がチャレンジラボとは異なることです。詳細にはお伝えできませんが、ソースコードをローカルにダウンロードできない、という点を踏まえていろいろ想定しておくとよいと思います。
振り返りとアドバイス
OSWEはOSCPやOSEPとは違い、ソースコードがすべてです。ソースコードに必ず課題(認証バイパスとRCE)につながる脆弱性が含まれてるので、焦らず根気よく一つずつ可能性を検証していけばよいと思います。知らないと解けない、みたいなケースはOSCPやOSEPに比べると少ないと思います。
いきなり細部のコードを読み込むより、アプリケーションの全体像、データの持ち方、権限の流れを先に把握したほうが効率的な場面が多くあります。例えばアプリケーションが接続するDBにログインすれば、どのようなデータをどのような形式で持っているかが把握できます。データの形式によっては出題者の想定した解答が垣間見えることもあるかもしれません。局所的な挙動だけでなく、システム全体の設計や前提を押さえることが、結果的に近道になります。
同様ですが、試験に合格する、という観点ではメタ的な発想を持っておくとよいと思いました。例えば試験の形式上、RCEは必ず認証バイパスを成功させた後のみに達成可能という構成になっていると思います。そうすればおのずと悪用する脆弱性の順番や種類は絞れてくるはずです。メタ的な思考は実務では役に立たない、と思うかもしれませんが、さまざまな情報を組み合わせて目的を達成することはセキュリティエンジニアにとっては必須のスキルだと私は考えています。
おわりに
OSWEは、Webアプリケーションを深く理解しながら検証を進める力を問う、実務的な試験でした。受験対策としても有意義でしたが、それ以上に、日々の診断業務を見直すよい機会になりました。
これから受験される方は、表面的なテクニックの暗記ではなく、実装理解と検証の再現性を重視して学習を進めるとよいと思います。今回の受験で得た視点は、今後の業務にも活かしていきたいと考えています。