オープンソースプロジェクト
juice-shop/juice-shop avatar
juice-shop/juice-shop

OWASP Juice Shopを脆弱性演習環境として読む

OWASP Juice Shop: おそらく最も最新かつ洗練された安全でない Web アプリケーションです。

スター 13,871フォーク 19,613TypeScriptMIT

ひと目でわかる

これは何?
OWASP Top Tenを含む欠陥を意図的に組み込んだWebアプリケーションを、導入方法、Node.js対応、教材、運用上の境界から整理します。
誰に向いている?
向いているのは、隔離した環境でWebの脆弱性、CTF、検査ツールの挙動を学びたいチームです。通常のECサイトや安全性を期待する検証環境には向きません。
商用利用できる?
できます。MIT は寛容なライセンスで、著作権表示とライセンス表示を残せば、使用・改変・販売が可能です。
今もメンテナンスされている?
されています。最後のコミットは 1 日前です。
何の言語で書かれている?
主に TypeScript です(GitHub の言語統計による)。

回答はプロジェクトの GitHub データ(最終同期:2026年9月15日)と当サイトの分析に基づくもので、法的助言ではありません。

オープンソース詳細解説

買い物サイトの形をした演習対象

OWASP Juice Shopは、現実のオンラインショップに似せた、意図的に安全でないWebアプリケーションです。READMEはセキュリティトレーニング、意識向上デモ、CTF、セキュリティツールのテストを用途として挙げています。つまり、通常の業務アプリケーションとして品質や保護を評価する製品ではなく、攻撃と防御の観察対象として設計されたプロジェクトです。

対象にはOWASP Top Ten全体の脆弱性と、実際のアプリケーションで見られる他の欠陥が含まれると説明されています。詳細な機能一覧やアーキテクチャはREADMEではなく公式プロジェクトページに案内されます。学習資料として使う場合も、演習用データと本番データを同じネットワークやブラウザ環境に置かない設計が必要です。

最初の起動はlocalhostに閉じる

ソースからはNode.jsを用意し、`git clone https://github.com/juice-shop/juice-shop.git --depth 1`、`cd juice-shop`、`npm install`、`npm start`の順に実行し、`http://localhost:3000`を開きます。配布アーカイブは最新リリースに添付され、展開後に`npm start`で起動します。アーカイブには、npm installを行ったOSとNode.js版に結び付いた`sqlite3`と`libxmljs2`のバイナリが含まれます。

Dockerでは`docker pull bkimminich/juice-shop`の後、`docker run --rm -p 127.0.0.1:3000:3000 bkimminich/juice-shop`を使えます。127.0.0.1へのバインドは、この演習用サービスをLANへ不用意に出さないための出発点になります。Vagrantの手順もありますが、VirtualBoxと指定IPを使う構成なので、採用前に自分の隔離条件と合うか確認すべきです。

Node.js表は起動条件の一部に過ぎない

READMEの互換性表では、26.xと24.xと22.xがサポート対象かつテスト済み、25.xはサポート対象ですが未テストとされています。22.xより古い版は対象外です。24.x向けにはWindows、macOS、Linuxのx64配布物と、masterのlatest、developのsnapshotに対応するlinux/amd64およびlinux/arm64のDockerイメージが示されています。

各メジャー版について自動テストは最新のマイナー版で実行されるため、同じメジャー版ならどの古い版でも動くという意味ではありません。研修資料と実行環境を固定するなら、使用したリリースタグ、Node.jsの正確な版、Dockerイメージのタグを記録し、再起動後に`http://localhost:3000`で画面が開くことを確認します。

外部依存を使うチャレンジの扱い

一部のチャレンジはAIまたはLLMプロバイダーを正しく動かすために必要とREADMEに書かれています。外部プロバイダーの設定方法は、コンパニオンガイドの外部依存設定へ分離されています。これは全機能がローカルだけで完結するという説明ではありません。

演習の範囲を決めるときは、AIを使うチャレンジを含めるか、プロバイダーへ送信されるデータがない教材だけに絞るかを先に決めます。OWASP Juice ShopのOWASP Juice ShopのREADMEが示すライブデモはデプロイテストと先行確認用で、独自のハッキング用途に使わないよう注意されています。デモURLを対象にして演習するのではなく、自分で立ち上げた環境を使う判断が必要です。

攻略を支える公式コンパニオンガイド

公式の『Pwning OWASP Juice Shop』は、脆弱性の一覧、発見と悪用のヒント、各チャレンジの段階的な解決策を扱います。カスタムブランド化、CTF支援、トレーナー向けガイドも追加資料として案内されています。PDF、Kindle、ePub版はLeanpubから無料で入手でき、ガイド自体はCC BY-NC-ND 4.0です。

READMEはセットアップのトラブルシューティングをコンパニオンガイドへ誘導し、質問やサポート依頼のためにGitHub issueを使わずGitterを利用するよう求めています。研修担当者は、受講者の解答をそのまま配るのか、ヒントだけを段階的に提示するのかをガイドの構成に合わせて決めると、アプリケーションと教材の役割を混同しにくくなります。

MITライセンスが許すことと許さないこと

ソフトウェアはMITライセンスで、利用、複製、変更、統合、公開、配布、サブライセンス、販売が許可されています。配布物や実質的な部分には著作権表示と許可表示を含める必要があります。READMEに記された著作権年は2014年から2026年です。

ライセンスはソフトウェアを現状のまま提供し、保証を置きません。これは、OWASP Juice ShopをOWASP Juice Shopを脆弱性演習に使えることと、運用中の安全性やサポートが保証されることを切り分ける記述です。採用判断では、教育目的の価値、外部公開をしないネットワーク設計、使う版の固定をセットで記録してください。

演習環境を壊さずに再現する記録

再現性を重視する研修では、OWASP Juice Shopのリリースタグ、Node.jsのメジャー版、起動方式を教材の冒頭に固定します。Dockerを使う場合は`127.0.0.1:3000`のポート指定を残し、コンテナログとブラウザで開いたチャレンジの状態を分けて保存します。

受講者が外部サイトや公式デモへ接続しないよう、対象URLを自分のJuice Shopだけに限定します。AI依存チャレンジを扱わない回はその範囲を明記し、扱う回はAPIキーを教材や共有ログへ残さない運用にします。これらは一般的な心得ではなく、READMEが示す起動経路、デモの用途、外部依存に対応した演習設計です。

編集部の結論

向いているのは、隔離した環境でWebの脆弱性、CTF、検査ツールの挙動を学びたいチームです。通常のECサイトや安全性を期待する検証環境には向きません。最初に127.0.0.1へ限定してDocker版を起動し、意図的な脆弱性を外部へ公開していないことと、利用するNode.jsまたはイメージの版を確認してください。

公式情報源

  1. Official documentation
  2. Official README
  3. Project repository
  4. Release notes
コミュニティノート

コミュニティノート