🛡️ Webエンジニアのための技術者倫理テスト 🚀

Webサービスの脆弱性を発見したり、APIの仕様の穴を見つけて、AIエージェントで自動化できることに気づいたとき、誰に・どこまで・どの順番で公開して伝えるべきか、あなたの技術者倫理を試します。全20問×5点=満点100点、合格は90点以上です。

あなたの倫理観をテストする

Webサービスの脆弱性、非公開APIを叩く、AIエージェントによる自動化。 「できる」と「やってよい」の境界を、20問で確認しましょう。

所要時間の目安は5分です。

問1 / 20 5点

参加者募集ページでXSSらしき挙動を見つけた

地域イベントの参加者募集ページで、会場名を検索するフォームに<script>alert(1);</script>を入れたところ、ブラウザにアラートが表示された。ページには主催団体名、問い合わせ先、参加申込フォームへのリンクもある。あなたは「XSS見つけた!」と思い、注意喚起のため、スクリーンショット、団体名、URLをSNSに投稿しようとしている。

問2 / 20 5点

友人にDMで修正を促す

友人が文化祭用に作った予約アプリを触っていたところ、入力欄に特殊な文字シングルクォート'を入れるとエラーが出た。SQLインジェクションの可能性があると思ったあなたは、公開チャットではなく友人にDMで『この入力でエラーが出た。もしかするとSQLインジェクションかもしれない。必要なら一緒に直そう』と伝えた。

問3 / 20 5点

メニューIDを総当たりで列挙する

飲食店のモバイルオーダー画面では見えないメニューを探すため、メニューIDを1から10万まで機械的に試して一覧を作った。

問4 / 20 5点

公式ロゴを非公式ツールのREADMEに載せる

飲食店のモバイルオーダーを便利にする非公式ツールをAIエージェントを使って作ってGitHubで公開した。READMEの一番上に企業の公式ロゴを大きく載せ、『非公式だけど便利です』『許可はとっていません』『自己責任で利用してください』と免責事項も含めて非公式ツールであることをきちんと説明した。

問5 / 20 5点

管理画面が見えた証拠を仲間内に見せる

いろいろ試した結果、外部サービスの管理画面にアクセスすることができてしまった。『俺が見つけた証拠』として、管理画面のスクリーンショットを仲間内に見せたところ、画面には利用者の名前、メールアドレス、予約内容が映っていた。

問6 / 20 5点

飲食店の公式モバイルオーダーを解析しCLI化する

友人と飲食店に行き、テーブルのQRコードからモバイルオーダー画面を開いた。ブラウザの開発者ツールで通信を観察したところ、注文APIらしきリクエストが見えた。あなたは同じリクエストを送れるライブラリ・代替クライアント・CLIを作り、実際の店舗でその代替手段から注文しようとしている。

問7 / 20 5点

自分が管理していないサイトで何度もスクリプトを試す

地元の飲食店のWebサイトの動きが気になり、もしかしたらXSSがあるかもしれないと思い、営業中の実在サイトに対して、何度も攻撃可能性のある検証コードの入力を試した。

問8 / 20 5点

店舗のQRトークンを別テーブルに使う

飲食店で自分のテーブルのQRコードを読み取り、URLに注文用トークンらしき文字列が含まれていることに気づいた。仕組みを理解したくなり、隣のテーブルのQRコードや別テーブルのトークンでも注文できるか試そうとしている。

問9 / 20 5点

SQLインジェクションか確認するために深掘りする?

地域の美容室の予約サイトで、名前欄に特殊な文字を入れたところ、データベースエラーらしき画面が出た。あなたはSQLインジェクションかもしれないと思い、さらに入力を変えて、他人の予約日時、氏名、電話番号が見えるかどうか確認しようとしている。

問10 / 20 5点

返事がないので3日後にSNS公開する

イベント申込サイトで脆弱性らしき挙動を見つけ、問い合わせフォームから運営会社に連絡した。しかし3日たっても返事がなかった。あなたは不安になり、緊急で対応が必要と考え、注意喚起のため『このサイト危険です』とURLつきでSNSに投稿した。

問11 / 20 5点

友人のアプリの脆弱性を全体チャットで指摘する

授業の課題発表で、友人が作った掲示板アプリをクラス全員に公開した。コメント欄に<script>alert(1);</script>を入れると画面表示が崩れることに気づいた。あなたは全体チャットに「このアプリ、XSSできる。これ入れてみ」と書き、実際に動く入力例も貼ろうとしている。

問12 / 20 5点

本番APIを使わずモックで再現する

レストランでの注文用クライアントを学習目的で開発しています。実店舗の注文APIは叩かず、ローカルPC上にモックサーバーを作った。架空のメニューと架空の注文番号だけを使い、注文ライブラリ・代替クライアント・CLIやAIエージェント連携を学習用に再現した。

問13 / 20 5点

具体情報なしで『学校のシステムが脆弱』と投稿する

学生が、学内システムの挙動を見て不安になり、『この学校の出欠確認システム、たぶん脆弱』とSNSに書いた。ただし、URL、攻撃手順、スクリーンショット、個人情報は出していない。

問14 / 20 5点

AIエージェントに実店舗の注文権限を渡す

飲食店のテーブルで、あなたはAIエージェントに『甘いものを頼んで』と話しかけるだけで、飲食店の注文APIを呼び出して実店舗に注文する仕組みを作った。注文前の確認画面や上限設定はまだない。

問15 / 20 5点

仲間内Discordなら共有してよい?

放課後、友人と使っている外部Webサービスのログイン画面で、エラー表示の出方が不自然なことに気づいた。あなたは『これ、たぶん突破できるかも』と思い、仲のよい数人だけのDiscordにURLと試した入力例を共有しようとしている。

問16 / 20 5点

IDORの可能性を深追いせず報告する

授業で使う提出システムで、自分の提出物URLの末尾が `/submissions/1042` のような連番になっていることに気づいた。別の番号に変えると他人の提出物が見えるかもしれないと思ったが、あなたは他人の番号を試さず、担当者に『IDOR、つまりURLの番号変更だけで他人の提出物が見える可能性があります。自分のURLだけで気づきました』と報告した。

問17 / 20 5点

食品アレルギーや年齢確認のUIを迂回する

飲食店のモバイルオーダー画面では、商品によってアレルギー注意や年齢確認の表示が出る。しかし自作クライアントでは、その確認画面を省いて直接注文APIを呼び出せるようにした。

問18 / 20 5点

アクセス負荷だけを見て『問題ない』と判断する

自作ツールは、飲食店のモバイルオーダー画面と同じ注文APIを1回叩くだけなので、サーバー負荷はほぼ変わらない。あなたは『負荷が同じなら問題ない』と判断したが、その注文は実際に厨房へ流れることが想定される。

問19 / 20 5点

比較的適切な行動をすべて選ぶ

次のうち、比較的適切な行動をすべて選びなさい。

問20 / 20 5点

危険な共有になりうるものをすべて選ぶ

次のうち、SNS、クラス全体チャット、友人Discordなど、運営者以外の第三者に見える場所へ共有すると危険になりうるものをすべて選びなさい。『運営者だけに個別に送る報告』と『第三者に見える場所への共有』は分けて考えます。