まとめ
以上が「Beyond XSS: Webフロントエンドセキュリティの宇宙を探る」の全コンテンツです。まず、XSSでフロントエンドセキュリティについて議論し、さまざまな種類のXSSと攻撃方法を紹介しました。次に、サニタイズ、CSP、最新のTrusted TypesとSanitizer APIなどの防御技術について議論しました。
次に、JavaScript言語の機能に起因するプロトタイプ汚染、HTMLを使用してJavaScriptに影響を与えるDOM Clobbering、JavaScriptを必要としないCSSインジェクションなど、JavaScriptを直接実行せずに攻撃できるいくつかのテクニックを紹介しました。攻撃はJavaScriptに限定されないことを皆さんに認識していただきたいと考えています。
また、制限を回避するさまざまな攻撃についても探求し、オリジンとサイトの違いを理解し、CORSの基本原則と問題を引き起こす可能性のある一般的な設定ミスを把握しました。また、CSRFとSameSite Cookieについても見ていき、セキュリティ防御は単一点ではなく、ほとんどの状況で安全を確保するための階層的なアプローチであることを理解しました。
最後に、iframeを介して実行されるクリックジャッキング、自動MIMEタイプ検出によって達成される攻撃、そして個人的に好きなXSLeaksなど、その他の興味深いセキュリティトピックを紹介しました。これらの違いを通じて、違いを検出し、影響を与えるさまざまな方法を探求しました。
最初の投稿で述べたように、フロントエンドセキュリティは宇宙です。XSS以外にも、発見されるのを待っている美しい惑星がたくさんあります。それは常にそこにありましたが、あなたが気づかなかっただけです。
セキュリティの世界では、フロントエンドセキュリティは、他の分野と比較して注目度が低いのは事実です。なぜなら、それが引き起こす可能性のある影響は通常小さいからです。たとえば、一部のXSS攻撃は1人のユーザーのみを標的とし、データへのアクセスが制限される場合があります。しかし、サーバーにSQLインジェクションの脆弱性がある場合、XSSでは取得できないハッシュ化されたパスワードを含む数百万のユーザーレコードを一度に取得できる可能性があります。
しかし、これは私のフロントエンドセキュリティへの愛情に影響を与えません。フロントエンドセキュリティは常に私に驚きをもたらし、フロントエンドエンジニアとして、私はフロントエンドドメインのほんの一部にしか触れておらず、まだ馴染みのないものがはるかに多いことに気づかせてくれるので、私はフロントエンドセキュリティを楽しんでいます。フロントエンドエンジニアとして、フロントエンドセキュリティを学ぶことは必要だと考えています。情報セキュリティは、エンジニアが持つべき基本的なスキルであり、専門的能力の一部です。
私の意見では、多くのフロントエンドエンジニアは、フロントエンドセキュリティを理解したり、慣れ親しんだりすることを嫌がっているのではなく、単にそれが存在することを知らないか、どこから始めればよいかわからないだけです。以前述べたように、プロトタイプ汚染はセキュリティコミュニティではよく知られているようですが、なぜ私がフロントエンドを学んでいたときに誰もそれについて教えてくれなかったのでしょうか?したがって、過去2年間のフロントエンドセキュリティに関する私自身の理解を要約することに加えて、この一連の記事がセキュリティ知識をフロントエンドコミュニティに還元し、より多くの人々にフロントエンドセキュリティを認識させることを願っています。
この一連の記事に期待することがあるとすれば、それはフロントエンドエンジニアにとって必読の古典の1つになることです。
私は常に、開発とセキュリティは密接に関連していると信じてきました。開発は、プロジェクト全体の構造とエンジニアが通常どのように作業するかを理解するのに役立ちます。一方、セキュリティは、多くの詳細に関する知識を提供し、各コンポーネントが何をするのか、それらがどのように統合されるのかをより深く理解できるようにします。この知識は、開発を別の視点から見て、より安全なソフトウェアを作成するのにさらに役立ちます。
フロントエンドセキュリティに興味があり、実践的な経験を積みたい場合は、PortSwiggerのWeb Security Academyをお勧めします。初心者でも気軽に試せる、すぐに使える無料のラボがたくさん用意されています。
最新のフロントエンドセキュリティ知識を常に把握したい場合は、Twitterでこれらの個人をフォローすることもお勧めします。それぞれが私の目にはフロントエンドセキュリティの専門家であり、専門分野も異なります(順不同)。
それ以外にも、彼らから多くのことを学びました。
- @kinugawamasato: フロントエンドセキュリティとJavaScriptの操作に非常に精通しています。TeamsのRCE脆弱性を発見し、フロントエンドセキュリティの専門知識を示しました。
- @terjanq: Googleで働くセキュリティ研究者で、ブラウザの操作とフロントエンドセキュリティに精通しています。XS-Leaks Wikiを維持しており、XS-Leaksに関する豊富な経験を持っています。
- @brutelogic: XSSマスターであり、ブログには練習用のXSSチャレンジがたくさんあります。
- @albinowax: PortSwiggerの主任研究者であり、毎年新しいWeb攻撃技術を発表しています。
- @garethheyes: PortSwiggerのセキュリティ研究者でもあり、ブラウザに関連する多くのフロントエンド脆弱性を発見しています。フロントエンドセキュリティとJavaScriptに精通しています。
- @filedescriptor: Cookie tossingとCookie bombについて議論した以前の投稿で言及しました。
- @SecurityMB: 古典的なGmailのDOM Clobberingを発見し、Mutation XSSを使用してDOMPurifyをバイパスしたことで知られています。現在、Googleでも働いています。
以前の記事であまり頻繁に言及されなかったフロントエンドセキュリティコミュニティの他の著名な専門家もいます(言及しなかったからといって専門家ではないという意味ではありません。単に現時点で忘れていただけかもしれませんし、これらの人々をフォローするとTwitterが自動的に他の専門家を推薦してくれます):@lbherrera_、@RenwaX23、@po6ix、@Black2Fan、@shhnjk、@cgvwzq、@S1r1u5_。
結論
この一連の記事で議論された技術は独創的なものではなく、すべてこれらの専門家と広大なオンラインインターネットからのものです。私は単にそれらを整理して説明しているだけです。
このシリーズでは、すべての実際の例と、あまり知られていない脆弱性や問題の出典を含めました。可能な限り著者をクレジットしました。省略がある場合は、遠慮なくご指摘ください。
このシリーズが好きか嫌いかにかかわらず、GitHub Discussionsにコメントを残して、私に知らせてください。また、知りたいセキュリティ問題や記事に関する疑問について議論するためにコメントを残すこともできます。
Webフロントエンドセキュリティの宇宙を一緒に探検してくれてありがとう。将来、他の銀河でまた会えることを願っています!