こんにちは!イー・ガーディアンです。
今回は2024年2月1日〜3月18日は「サイバーセキュリティ月間」ということで、イー・ガーディアングループの脆弱性診断員(バグハンター)の皆さんと、昨年実際に診断した中で発見した脆弱性(悪用できるバグ)や開発の落とし穴について振り返ってみました。
近年、様々な業界でセキュリティの強化が挙げられていますが、実際はどうなのか見ていきましょう。
実際に発見!サイト開発の落とし穴
今回は、実際に脆弱性診断を行う診断員が2023年に見つけたバグ事象の中から、比較的分かりやすいものを紹介していきながら、開発時に改めて意識して欲しいポイントをお伝えします。
■パスワードを試し放題
ログイン失敗を何度繰り返しても制限がかからず、思い当たるパスワードをいくらでも試し放題な状態になっているケースがありました。
パスワードを間違えてロックがかかってしまった/しばらく使えなくなったなんて方もいらっしゃるかなと思いますが、こちらはその逆でログインを失敗してもペナルティが発生しません。本来はログイン失敗が複数回繰り返された際に、アカウントをロックもしくは一定時間利用できないようにすることで、不正アクセス等の攻撃からアカウントを保護する事が求められています。
しかし、開発時にこの設定が漏れていると、何度ミスしても制限が掛からないので攻撃者の足止めができません。攻撃者にとってストレスフリーなサイトになってしまっているということですね。
開発時の機能設定の抜け漏れはセキュリティ被害にも直結しますので、十分注意が必要です。
■登録したパスワードでログインができない?!
入力したIDとパスワードできちんと登録完了までできたのに、改めてログインをしようとすると正しく入力したにもかかわらずエラーになってログインできないというケースがありました。
最近、英数字や記号を不規則的に混在させた強力なパスワードの設定を推奨するサイトが増えてきていますよね。サイトによって使用可能な記号や文字数などのルールは様々ですが、同じサイト内のアカウント登録画面とログイン画面でルールが異なっていると、アカウント登録はできたのに、いざログインしようとすると文字数が長くて入力できなかったり、「使用できない記号が含まれています」などのエラーメッセージ表示がされ、ログインできなくなってしまいます。
パスワードをリセット・再設定すれば問題なく利用できますし、悪用される恐れがあるものではありませんが、利用者からしたら結構不便ですよね。
開発時には同じルールであるのかをきちんと確認しながら設定を統一するようにしましょう。
【Tips】ログイン失敗時のエラーメッセージが攻撃者へのヒントに
ログイン失敗時に表示されるエラーメッセージの差異によりアカウントの存在有無を確認できてしまう可能性があります。攻撃者は、エラーメッセージの違いを利用し事前にアカウントの有無を調査することでログイン失敗の回数を大幅に減らすことができるので、パスワードリスト攻撃の効率をあげることに繋がってしまいます。
例えば…
・●●●(アカウント名)は存在しません ➜ “このアカウントは存在しない”とわかる
・パスワードに誤りがあります ➜ “IDは正しい=アカウントが存在する”とわかる
ID・パスワードのどちらが誤っているのかがわかってしまうメッセージは避け、全て同じメッセージで統一するのが良いですね。
<推奨される記載例>
・アカウント情報に誤りがあります
・IDまたはパスワードに誤りがあります など。
最近はMFA(多要素認証)に対応しているサイトやログイン時のエラーメッセージが統一されているサイト(特に、ECサイトや企業向け管理ツールなど)が増えており、各企業のセキュリティ意識が高まってきていると思いますが、引き続き気をつけて欲しいポイントです。
■本来の権限以上の行為が可能に
続いては、閲覧権限しかないのに編集ができてしまう、例えば他のユーザー情報(プロフィール等)は見るだけのはずなのに編集できてしまったというようなケースです。
様々なWebサービスでは、ユーザーごとにどの機能を使えるか・どの操作が出来るか・どの情報にアクセスできるか等の権限を設定し、付与した権限以上の行為は行えないようにすることでリスクを最小限に抑えておくべきです。この設定ができていないと、本来閲覧できない情報へのアクセスや許可されていない操作が可能なため、機密情報・個人情報の漏洩、プログラムの不正改ざん、管理アカウントの乗っ取りなどが発生してしまいます。
開発段階で可能性のあるリスクをきちんと予想したうえで、誰にどこまで権限を与えるのか精査することは重要です。
【Tips】実は権限マトリクスがあると診断がスムーズに!
診断員としては、どの権限があればどの機能を利用できるのか等のアクセス権限をまとめた「権限マトリクス」があると診断しやすいのですが、大半の企業が権限マトリクスを用意していないのが実情です。
- そもそも作っていない
- 最初は作っていたがメンテナンスができていなくて使用できない
- 個別の機能開発の際には作るが、全体としてまとまったものはない
■翌日になってもタイムアウトにならない!?
ID・パスワードを使ったログインが必要なサイトで、翌日になってもずっとログインしたままタイムアウトにならないというケースがありました。これは、ログイン有効時間の制限ができていない、もしくは設定時間が長すぎる場合に発生する事象です。
ログインした状態を長時間続けていると、不正にアクセス・操作されたり、情報を抜き取られたりなどのリスクがあるため、多くのWebサービスでは15分〜30分程度の短い時間でタイムアウトになるように設定しています。中でもオンライン決済が可能なサイトは、クレジットカード情報の流出など大きな被害を被る可能性がありますので、とくに厳重に管理されています。
一方で、海外ではクレジットカードが貴重で1枚のカードを複数人でシェアする文化があり、また、最近ではアクセシビリティの観点から、セッション有効時間を長めに設けるサイトも増えています。
サイトによっては15分だとたしかに短い場合もあるかもしれませんが、半日後や翌日までずっと有効になっているのは流石にリスクが高いので、適度な長さで設定するようにしましょう。
■購入金額以上の割引ができてしまう
実際の購入金額以上の割引クーポンの適用ができてしまうケースもありました。
●円以上購入していないと利用できない等の利用条件付けができていなかったり、金額を反映させるシステムにバグがあると発生する事象です。
実はこれ、2000年頃から知られている伝説の脆弱性なんです。
当時はシステムの裏側で購入金額を不正に書き換えて減額する手法が主流でしたが、 最近はクーポンなどの割引価格を増加させる方法に変わってきているようです。
【Tips】パラメーター操作で無敵状態に
パラメーターの不正操作はオンラインゲームでも話題になったことがありました。 ゲーム機やソフトなどのデータを書き換えることで、「常時無敵状態」「無限アイテム」といった通常では起きないはずの事象を引き起こします。いわゆる “チート” と呼ばれる行為ですね。
このようなチート行為で不正に入手した貴重アイテムなどを売買するプレイヤーも現れ、業界的に問題視され各企業で様々な対策が行われています。
■使い慣れているフレームワークを選びがち
Webアプリケーション開発の現場では、開発期間を短くする事や人為的ミスを減らす事を目的に、1からコーディングするのではなく、プログラム開発のひな型となる様々な「フレームワーク」を使ってシステム開発が行われています。その「フレームワーク」の管理者が定期的なアップデートを行わずに放置していると、サポート期間が終了しているにも関わらず、そのまま気づかずに開発に活用し続けていたという事になってしまいます。
本来ならフレームワークを選ぶ段階でサポート期間も考慮すべきですが、開発者の好みや使いやすさなどで選んだ結果、サポート期間が短かったというケースも “あるある” ですよね…。
企業によっては、継続的なメンテナンスコストをかけることが出来ない等の理由から最新版へのアップデートは行わずに最低限の保守で運用しているという事もあります。
毎回でなくとも定期的に更新していれば大きな支障は無いのですが、長く放置していた場合は一気に最新版にするとファイルの設定や機能等が大きく変わるため開発の負荷が大きくなります。そのためさらに放置を続けサポート切れになってしまうケースも多いです。
オープンソースであるがゆえに、古いバージョンの急なサポート停止により開発が停滞してしまい危険な状態になってしまう場合もありますので、サポート期間の長いフレームワークを選択する、もしくは定期的なアップデートを心がけるようにしましょう。
さいごに
イー・ガーディアングループでは、サイバーセキュリティ対策のプロフェッショナル集団としての知見を活かし、お客様のWebサイトに最適な脆弱性診断を実施いたします。
Webサイトのセキュリティ対策に不安やお困りのことがありましたら、イー・ガーディアングループへお気軽にお問い合わせください。
イー・ガーディアンの「サイバーセキュリティサービス」詳細はこちら
【Behind the Scenes】幻の脆弱性を見つけると考古学者の気分に!?
診断員の中には、過去から有名な脆弱性を昨年初めて発見したというエピソードもありました。
古くからよく言われていた脆弱性は、フレームワークが優秀になり改善しつつあるとのことですが、ゼロにはなっておらず、たまにそういったレジェンド的な脆弱性を見つけた時は “これはあの幻の!?” という秘宝を見つけたような高揚感が得られるとのことでした。
セキュリティエンジニアならではの感想だと思いますが、もしこういった仕事にご興味ございましたら採用ページよりお問い合わせください!
EGセキュアソリューションズ採用ページはこちら