横への広がりと認証情報

レッスン 3-4

同じパスワードが 2 か所にあれば、被害は 2 倍になります。

目安 60 分 トラック 3 攻撃と検証の 4 本目

読み終えたら使い回しが効く理由と、分けて止める方法を説明できる

この頁の流れ

  1. 1なぜ横に広がれるのか
  2. 2脆いコードと直したコード
  3. 3ログでの見え方と検知
  4. 4直し方と確かめ方
  5. 5関わる事例
  6. 6確認クイズ
  7. 7説明課題
  8. 8一次資料
  9. 9次へ

侵入は、1 台で止まれば小さな事故です。大きくなるのは、そこから別のホストへ広がれた時です。広がりの燃料は認証情報で、使い回しがあるほどよく燃えます。ホストごとに一意の認証情報、漏えいした値を拒むこと、境目を信じない設計 (ゼロトラスト) で広がりを止め、試験で固めるところまでを扱います。

出典を確かめた日 2026年10月27日

なぜ横に広がれるのか

攻め手が 1 台に入っても、その 1 台だけなら被害は限られます。被害が事業の規模になるのは、そこから別のホストへ、別の口座へと広がれた時です。この広がりを、横への移動 (ラテラルムーブメント) と呼びます。

広がりの燃料は、認証情報です。入った 1 台からパスワードや鍵を集め、それが別のホストでも通れば、次へ進めます。だから、同じパスワードが 2 か所にあれば、1 か所の漏れが 2 か所の被害になります。

使い回しが効く理由

ホストごとに違う管理者パスワードを設定するのは手間なので、つい全台を同じにしがちです。すると、1 台から抜いた 1 つのパスワードが、すべての台の鍵になります。同じ人が複数のサービスで同じパスワードを使うのも同じで、どこか 1 か所の漏れが、他のすべてに効きます。

境目を信じない

「社内のネットワークの中だから安全」という前提も、広がりを助けます。NIST の SP 800-207 は、ゼロトラストとして、資産や利用者が社内の網にいるという理由だけで信頼を与えないと定めています。網のどこにいるかではなく、つなぐたびに資産ごとに確かめる考え方です。境目の内側に入られても、1 台ずつ確かめれば、横へ進みにくくなります。区画を分ける守りは、これと組み合わせて広がりをさらに抑えます。

脆いコードと直したコード

ラボの中の小さな関数で比べます。Python に付いている物だけで動き、外とは通信しません。

全ホスト共通か、ホストごとに一意か

脆いコード 全ホストで同じ管理者パスワード

Python

ADMIN_PW = "CommonP@ss"

def unlock(host, pw, vault=None):
    return pw == ADMIN_PW
直したコード ホストごとに別のパスワード

Python

def unlock(host, pw, vault):
    return pw == vault[host]

脆い方は、どの host でも同じ ADMIN_PW で開きます。1 台から抜けば、全台が開きます。直した方は、ホストごとに別の値を金庫 (vault) に持つので、1 台の鍵は、その 1 台しか開けません。1 か所の漏れが、1 か所で止まります。

漏えいした値を許すか、拒むか

脆いコード 漏えいした値でも設定を許す

Python

def set_password(user, pw, store):
    store[user] = pw
    return True
直したコード 漏えいの一覧にある値は拒む

Python

def set_password(user, pw, store, breached):
    if pw in breached:
        return False
    store[user] = pw
    return True

脆い方は、過去に漏れた有名なパスワードでも、そのまま設定できます。直した方は、漏えいの一覧 (breached) にある値を拒みます。NIST の SP 800-63B は、新しいパスワードを、よく使われる値や漏えいしたコーパスにある値と突き合わせて、あれば別の値を選ばせると定めています。同じ文書は、定期の強制変更は求めず、漏れた証拠があるときに変えさせるとしています。

ログでの見え方と検知

守る側は、1 つの認証情報が広がっていく動きを見張ります。見るのは、次の 3 つです。

見る物なぜ効くか
1 つの口座が多くのホストへログイン同じ鍵が広がっている疑いを、早くつかめる
端末からサーバーへの管理者ログオンふだん無い向きのログオンは、横への移動の疑い
業務時間の外の管理者の操作侵入と偵察は、時間外に繰り返されることがある

JPCERT/CC は、ランサムウェアの被害で、影響を受けた機械をすぐに切り離すことを勧めています。切り離しは、まさに横への広がりを止める手当てです。広がる前に、認証情報を分け、境目を信じない設計にしておくほど、切り離す範囲も小さくなります。

直し方と、直ったことの確かめ方

自分の PC の中だけで行います。外のサービスや、他人の機械には向けません。

  1. 作業用のフォルダに、ホスト 3 つと、それぞれの管理者パスワードの表を作る
  2. 脆い unlock に、1 台のパスワードを渡し、3 台すべてが開くことを確かめる
  3. ホストごとに別のパスワードにし、1 台の値では他の台が開かないことを確かめる
  4. set_password に漏えいの一覧の照らし合わせを足し、一覧にある値が拒まれることを確かめる
  5. ネットワークは、用途ごとに区画を分け、区画をまたぐ通信を既定で止める (境目を信じない設計)
  6. 下の試験を足し、共通のパスワードに戻すと試験が落ちることを確かめる
  7. 終わったら、作業用のフォルダごと消す
1 つの漏れが広がらないことを固める試験

Python

def test_leak_stays_on_one_host(vault):
    # web の鍵では db は開かない
    assert unlock("db", vault["web"], vault) is False

def test_breached_password_rejected():
    store = {}
    bad = {"CommonP@ss"}
    assert set_password("u", "CommonP@ss", store, bad) is False

試験は「1 台の鍵は 1 台しか開けず、漏えいした値は設定できない」ことを固定します。あとで誰かが全台を同じパスワードに戻しても、ここで止まります。

関わる事例

LINE ヤフーでは、委託先の PC の感染を起点に、NAVER と共通だった認証の基盤と、広いネットワークのつながりを通じて、社内へ侵入が広がりました。認証の基盤とネットワークが分かれていなかったことが、横への広がりを助けています。

半田病院では、VPN 装置の既知の脆弱性が放置され、そこから入られて電子カルテが暗号化され、2 か月以上診療が止まりました。Marriott では、買収した Starwood の網への侵入を 4 年間検知できず、その間に横へ広がられていました。使い回しの例としては、23andMe で、他のサービスから漏れた使い回しのパスワードで口座が乗っ取られ、血縁をたどる機能を通じて約 700 万人分の情報が漏れています。どれも、認証情報を分け、区画を分けていれば、広がる範囲を抑えられた場面です。

確認クイズ

1 問目

社内のサーバー 20 台で、管理者パスワードをすべて同じにしています。横への広がりを止めるには、どうするのがよいですか。

答えだと思う選択肢を押すと、その場で正誤と理由が開きます。

2 問目

新しいパスワードの設定で、横への広がりを助けないために、何を確かめますか。

答えだと思う選択肢を押すと、その場で正誤と理由が開きます。

説明課題

次のことを、自分の言葉で 3 行にまとめてください。書けたら、このレッスンは修了です。

  • 認証情報の使い回しが効く理由と、分けて止める方法
模範解答を見る

同じパスワードが複数のホストにあると、1 台から抜いた 1 つの鍵が、すべての台を開けてしまう。だから、ホストごとに別の鍵にして金庫で管理し、1 台の漏れを 1 台で止める。あわせて、新しいパスワードは漏えいの一覧と突き合わせて拒み、区画を分けて境目を信じない設計にすると、横への広がりが止まる。

一次資料

どれも 2026年10月27日に開いて、題と中身を確かめました。

次へ

次のレッスンは「クラウドの攻撃の経路」です (準備中)。権限の設定とロールの連鎖で、環境ぜんたいの境目がどう決まるかを扱います。

次のレッスン 3-5 AssumeRole とロールの連鎖

このレッスンにつながる物

トラック 3 攻撃と検証の中で

前のレッスン 3-3 権限昇格

学んだことを次につなげる

ゆめさくセキュリティは、攻撃の仕組みを知り、自分の PC の中で壊して直し、守る側の判断を身につけるための学びの場です。

ラボはすべて自分の PC の中 (127.0.0.1) で閉じます。自分が管理していない相手に試すことは扱いません。