HackerOneはこのほど、「How a Privilege Escalation Led to Unrestricted Admin Account Creation in Shopify|HackerOne」において、2021年に電子商取引プラットフォーム「Shopify」から発見された権限昇格の脆弱性について解説した。
権限昇格の脆弱性は不正アクセスの脆弱性などと比べて報告件数が少ない。しかしながら、その影響による経済的損失は甚大なものになる可能性があるとして、対策の重要性を訴えている。
Shopifyの権限昇格の脆弱性
2021年に発見されたShopifyの権限昇格の脆弱性の詳細は、「Shopify | Report #1245736 - A non-privileged user may create an admin account in Stocky | HackerOne」にて報告されている。
この報告によると、脆弱性はShopifyの在庫管理アプリ「Stocky」に存在したという。初期の報告では、一般ユーザーがStockyのWeb APIへ正規のリクエストを行いその通信内容を取得。次に、管理者作成APIにリクエストを送信することで管理者権限を取得できるというものだった。
この報告から約10時間後、より深刻な脆弱性が報告される。攻撃を実行するうえで一般ユーザーアカウントは不要で、攻撃者はログインを試行するだけで攻撃に必要なCookieと認証トークンを取得できたという。攻撃者はトークン取得後に管理者作成APIにリクエストを送信することで、管理者アカウントを作成できたとされる。
脆弱性が及ぼす影響、脆弱性を回避する対策
この脆弱性の影響は甚大なものだった可能性があると指摘されている。在庫管理アプリ「Stocky」は在庫およびベンダー情報の更新、発注などを行うアプリで、攻撃者は大量の発注をかけることで標的企業に損害を負わせることができた。
幸いなことに本件は善意の研究者が発見したことで悪用前に修正された。HackerOneは同様の脆弱性を回避するために、オンラインサービスの開発者および運営者に次の対策の実施を推奨している。
- 認証後に発行するトークンは、信頼性の高い難読化技術を使用して使い捨てにする
- 顧客には一意で強力なパスワードを使用するように要求する。また、多要素認証(MFA: Multi-Factor Authentication)の利用も強く推奨する
- ログイン試行回数の制限が抜けているなど、認証処理の弱点を徹底的に調査する
- インジェクション攻撃を回避するために、すべての入力を適切にサニタイズしているかを検証する
- ロール(role)に割り当てられた権限を定期的に確認し、アプリを修正するたびにすべて再設定する。このとき、最小権限の原則を適用する
- 一定期間活動を確認できないユーザーおよびグループはログインを拒否、または削除する
- リクエストの発信元情報を信頼せず、すべてのリクエストに対し権限が適切かを検証する
権限昇格の脆弱性や不適切な認証の脆弱性は報告件数が全体の数%程度と、比較的少ない傾向にある。また、事前にログインを必要とする場合が多く、深刻度も低く評価される。しかしながら、攻撃者は多くのケースで管理者権限を必要としており、悪用の程度は低くない。
万が一、不正アクセスによりネットワークやシステムに侵入されても、権限を保護できれば影響を大幅に軽減できる可能性がある。そのため、システムの開発、運用、管理に携わる技術者および運用者には、脆弱性の確実な対策と権限の適切な管理が望まれている。