ゆめさくセキュリティ

攻撃の種類の一覧

攻撃の名前から、どこで入力と命令が混ざるのか、守る側が何をすればよいのか、どのレッスンで手を動かせるのかを引けます。手口の一覧ではなく、仕組みと守りの入口です。

SQLi

SQL インジェクション

入力した文字列が SQL の命令として読まれ、ほかの人のデータまで読まれたり書き換えられたりします。

どこで混ざるか

値として渡すはずの入力が、命令の文字列に連結される所

守る側の要点

  • 値はプレースホルダで渡し、命令と混ぜない
  • 列の名前や並び順は、許した候補から選ぶ
  • データベースの利用者の権限を、要る分だけにする

対応するレッスン

XSS

クロスサイトスクリプティング

画面に出した入力がスクリプトとして動き、利用者のブラウザの中で、その人の権限で操作されます。

どこで混ざるか

データとして出すはずの入力が、HTML や JavaScript として解釈される所

守る側の要点

  • 出す場所 (本文、属性、URL) に合ったエスケープをする
  • テンプレートの自動エスケープを外さない
  • CSP で、読み込めるスクリプトを絞る

対応するレッスン

CSRF

クロスサイトリクエストフォージェリ

別のサイトを開いただけで、ログイン中のサービスに本人の意図しない書き込みが送られます。

どこで混ざるか

ブラウザが Cookie を自動で付けて送る所

守る側の要点

  • 状態を変える操作は GET で受けない
  • Cookie に SameSite を付け、トークンか Origin を確かめる
  • 大事な操作は、もう一度本人に確かめる

SSRF

サーバーを踏み台にした内部への到達

URL を取りに行く機能が悪用され、外からは届かない社内の機械や設定の置き場へ、サーバーが代わりに届いてしまいます。

どこで混ざるか

外の利用者が決めた行き先へ、内側のサーバーが通信する所

守る側の要点

  • 行き先は許した相手だけにし、名前を引いたあとの住所も確かめる
  • 転送の追いかけを止めるか、毎回確かめ直す
  • クラウドの設定の置き場は、トークン必須の方式にする

IDOR

他人のデータに届く認可の漏れ

URL の番号を 1 ⁠つ変えるだけで、ほかの人の注文や書類が見えてしまう穴です。

どこで混ざるか

ログインした人と、頼まれたデータの持ち主を突き合わせる所

守る側の要点

  • すべての操作で、その人がそのデータを扱ってよいかを確かめる
  • 確かめる処理を 1 ⁠か所にまとめ、書き忘れを防ぐ
  • 2 ⁠人の利用者で、互いのデータに届かない試験を置く

対応するレッスン

ディレクトリの外へ出る穴

パストラバーサル

ファイル名に上の階層を指す書き方を混ぜられ、置き場の外にある設定や鍵のファイルを読まれます。

どこで混ざるか

受け取った名前を、そのままファイルの住所につなげる所

守る側の要点

  • 利用者の付けた名前を使わず、こちらで ID を振って保存する
  • 住所を正規化してから、置き場の中かを確かめる
  • 保存する場所と配る場所を分ける

対応するレッスン

デシリアライズ

安全でないデシリアライズ

受け取ったデータをプログラムの部品に戻すときに、部品の中の処理まで呼ばれ、任意のコードが動きます。

どこで混ざるか

外から来たバイト列を、型や処理を持つ部品に戻す所

守る側の要点

  • 外から来たデータは JSON のような、処理を持たない形で受ける
  • 型を戻す仕組みを使うなら、戻してよい型を絞る
  • 署名は改ざんを防ぐだけで、中身の安全は保証しないと覚える

対応するレッスン

  • 2-7危ないデシリアライズ準備中

供給網の攻撃

サプライチェーン攻撃

使っている部品、ビルドの環境、委託先が先に破られ、正規の更新や取引の顔をして入ってきます。

どこで混ざるか

自分の外で作られた物を、確かめずに信じて取り込む所

守る側の要点

  • 使っている部品の一覧 (SBOM) を作り、穴の情報と突き合わせる
  • 取り込む物の署名と版を確かめ、勝手に上がらないよう固定する
  • 委託先の権限を絞り、連絡の経路を先に決めておく

対応するレッスン

偽のログイン画面と連絡

フィッシング

本物そっくりの連絡や画面でパスワードや認証の番号を入れさせ、本人として入り込みます。

どこで混ざるか

人が、画面や連絡の送り主を目で見て信じる所

守る側の要点

  • ドメインに結び付くパスキーで、偽の画面に入れても使えないようにする
  • 認証の番号の転送や、承認の押しすぎに気づける記録を残す
  • 助けを求める電話やチャットでも、本人確認の手順を変えない

対応するレッスン

侵入から暗号化まで

ランサムウェアの侵入の流れ

1 ⁠つの入口から入り、権限を広げ、控えごと暗号化して、データの持ち出しと合わせて脅す流れです。

どこで混ざるか

外から入れる機器や接続と、社内の管理者の権限の間

守る側の要点

  • 外からの接続はすべて多要素認証にし、例外を作らない
  • 控えはネットから切り離した場所にも置き、戻す練習をする
  • 管理者の権限の使われ方を見張り、夜間の動きに気づける記録を持つ

対応するレッスン

リスト型攻撃

パスワードの使い回しを狙うリスト型攻撃

ほかのサービスから漏れた ID とパスワードの組を、別のサービスのログインで次々に試されます。

どこで混ざるか

ログインの画面が、だれからの試行でも同じように受け付ける所

守る側の要点

  • 多要素認証かパスキーを用意する
  • 試行の回数と、失敗の偏りを見て止める
  • 漏れたパスワードの一覧と照らし、使わせない

対応するレッスン

許された以上の権限を得る

権限昇格

ふつうの利用者の権限で入ったあと、設定の誤りを足がかりに、管理者の権限まで広げられます。

どこで混ざるか

権限の低い処理と、高い権限で動く処理や設定の間

守る側の要点

  • 高い権限で動く物を減らし、要る時だけ持たせる
  • 管理者の操作は記録し、ふだんと違う使い方に気づく
  • 設定の見直しを、出す前の判定の項目に入れる

対応するレッスン

この一覧で扱わない物

実在のサービスや他人の機械を狙う手順、そのまま使える攻撃の文字列の一覧、道具の使い方、検知を逃れる方法は載せません。仕組みは深く書き、試すのは自分の PC の中だけです。