セキュリティエンジニアが気になった脆弱性対策まとめ(XSS編)
OSS(オープンソースソフトウェア)のソースコードを読むことは、多くのITエンジニアにとってたいへん良い勉強になります。
しかし個人的にはソースコードをただ読むのではなく、変更履歴を追跡して何故そのように変更したのか、何がダメだったのか等いろいろ考えてみることをお勧めしたいです。
特に脆弱性対策に関する変更履歴を追跡することは、セキュリティエンジニアの基礎体力向上に役に立つのではないかと考えます。
今回はXSS(クロスサイトスクリプティング)対策に関するソースコードの変更履歴をピンポイントでいくつかご紹介いたします。
MISP ソースコード
https://github.com/MISP/MISP/commit/01521d614cb578de75a406394b4f0426f6036ba7
<h2><?= __(‘Sharing Group %s’, h($sg[‘SharingGroup’][‘name’]));?></h2>
オープンソースの脅威インテリジェンスプラットフォームです。
Viewにおいてパラメーター値を出力する際にエスケープ処理を施しています。
YOP Poll ソースコード
echo “<label>” . esc_html( $answer[‘stext’] );
WordPressにアンケート機能を提供するプラグインです。
Viewにおいてパラメーター値を出力する際にエスケープ処理を施しています。
WordPress Popular Posts ソースコード
<img src=”<?php echo esc_url($fallback_thumbnail_url); ?>” alt=”” />
人気記事をランキング表示するWirdPressのプラグインです。
Viewにおいてパラメーター値を出力する際にエスケープ処理を施しています。
EC-CUBE ソースコード
https://www.ec-cube.net/info/weakness/20210610/index30.php
var $img = $(proto_img); $('img', $img).attr('src', path);
株式会社イーシーキューブが開発するオープンソースのECサイト構築システムです。
クライアントサイドスクリプトにおいて安全が確認されているライブラリ関数を使用しています。
SEO Panel ソースコード
$category = htmlentities($category, ENT_QUOTES);
オープンソースのSEO効果検証ツールです。
Controllerにおいてパラメーター値にエスケープ処理を施しています。
エスケープ処理後の値を用いた評価や演算に問題がないこと、Viewの出力箇所がここで実施したエスケープ処理で問題ないことなど後に続く処理を追いかけてみましょう。
まとめのまとめ
いかがだったでしょうか。
XSS(クロスサイトスクリプティング)は広く知られた脆弱性で対策方法も既に確立していますが、コーディング時のミスや対策忘れなどヒューマンエラーが影響しやすい状況もあり、今日でも根絶できていない脆弱性です。
今回ご紹介した各ソフトウェアも何千とある対策すべき箇所のうち一部の箇所で問題が発生している状況だと考えられます。
脆弱性との戦いはこれからも続きます。
担当:TH