Home
1262 words
6 minutes
【Unix】中間者攻撃の仕組みとSFTPの本当の役割

最終更新:2026-01-11

前回の記事では中間者攻撃(Man-in-the-Middle Attack: MitM)の概要を述べた。

本記事では、攻撃者が具体的にどのようにして通信の間に割り込むのかという技術的なメカニズムと、よくある誤解である「sftpならscpより安全なのか(MitMを防げるのか)」という点について解説する。


1. 中間者攻撃はどのように行われるか#

攻撃者が通信に割り込むためには、物理的または論理的にネットワーク経路を曲げる必要がある。最も代表的で、ローカルネットワーク(LAN)内で発生しやすい手法が ARPスプーフィング である。

ARPスプーフィングの仕組み#

LAN内の通信は、IPアドレスではなく MACアドレス(物理アドレス)を使って相手を特定している。どのIPがどのMACアドレスに対応するかを管理しているのが ARPテーブル である。

攻撃者はこの仕組みを悪用し、「嘘のARP応答」をばら撒くことで通信経路を奪う。

攻撃のステップ#

  1. 正常な状態

    • Client (Alice): Server (Bob) と話したい。BobのIPは 192.168.1.10 だ。
    • Switch: Bobは MAC:BB だね。AliceのパケットをBobへ送ろう。
  2. 毒入れ (ARP Poisoning)

    • Attacker (Eve) は、Aliceに対してこう囁く。

      「私が 192.168.1.10 (Bob) です。MACアドレスは MAC:EE (Eve) です」

    • 同時に、Bob(ルーター)に対してもこう囁く。

      「私が 192.168.1.5 (Alice) です。MACアドレスは MAC:EE (Eve) です」

  3. 経路の改竄

    • AliceのPCはARPテーブルを更新し、「Bob = EveのPC」と誤認する。
    • AliceがBobへ送ったつもりパケットは、全てEveのPCへ届くようになる。
  4. 中継と傍受

    • Eveは受け取ったパケットを(必要なら復号・記録・改ざんして)本物のBobへ転送する。
    • AliceとBobは「通信できている」ため、攻撃に気づかない。

これが物理的な切断を伴わずに通信を盗聴・乗っ取る代表的な手口である。


2. sftp は中間者攻撃を回避できるのか?#

結論から言うと、プロトコルを scp から sftp に変えただけでは、中間者攻撃は回避できない。

なぜ回避できないのか#

scpsftp も、下位層(通信の土管)として SSHプロトコル を利用している。 中間者攻撃は、この「SSHのコネクション確立」の段階で発生する。

  • scp の場合: 攻撃者が偽のサーバーとして振る舞い、偽の公開鍵を提示する。
  • sftp の場合: 攻撃者が偽のサーバーとして振る舞い、偽の公開鍵を提示する。

どちらの場合も、クライアント(あなた)が「このホスト鍵(指紋)は正しいか?」という検証を怠り、StrictHostKeyChecking=no や警告を無視して yes を押してしまえば、攻撃は成立する

つまり、中間者攻撃への耐性は「scpかsftpか」ではなく、「ホスト鍵の検証を正しく行っているか」に依存する。


3. では、なぜ「sftpが安全」と言われるのか?#

「sftpが安全」という文脈は、中間者攻撃(通信経路の盗聴)に対してではなく、「悪意あるサーバーによるクライアントへの攻撃」 に対して使われる。

ここを混同しないことが重要である。

脅威の種類攻撃の主体scp の場合sftp の場合
中間者攻撃 (MitM)ネットワーク上の第三者× 脆弱
(ホスト鍵確認を怠れば死ぬ)
× 脆弱
(ホスト鍵確認を怠れば死ぬ)
パストラバーサル
(勝手にファイルを上書き)
接続先のサーバー× 脆弱
(サーバーが返したパスを盲信する設計のため)
○ 安全
(プロトコルが厳格で、クライアント主導のため)

sftp が回避するもの#

以前の記事で触れた「サーバーが ../../.bashrc を送りつけてくる」といった攻撃に対し、sftp はプロトコルレベルで以下の対策を持っている。

  • 明確な命令セット: クライアントが「ファイルXを開け」「データを書け」と細かく指示するため、サーバーが勝手にファイル名を偽装する余地が少ない。
  • パスの正規化: クライアント側でパスの解釈を厳格に行う実装になっている。

まとめ#

セキュリティリスクと対策は、レイヤー(階層)を分けて考える必要がある。

  1. 中間者攻撃を防ぎたいなら

    • ツールは scp でも sftp でもどちらでも良い。
    • 重要なのは SSHのホスト鍵検証(Fingerprint確認) を徹底することである。
  2. 悪意あるサーバー(または侵害されたサーバー)から身を守りたいなら

    • scp は使わず、sftp を使うべきである。
    • これが OpenSSH が scp を非推奨とする本当の理由である。

「sftpを使えば魔法のように全てが安全になる」わけではない。適切な設定と運用(ホスト鍵の確認)があって初めて、その堅牢性が発揮されるのである。

【Unix】中間者攻撃の仕組みとSFTPの本当の役割
https://ss0832.github.io/posts/20260111_mitm_sftp/
Author
ss0832
Published at
2026-01-11
License
CC BY-NC-SA 4.0

Related Posts

【Unix】scpと中間者攻撃:ホスト認証の重要性
2026-01-11
scpコマンド利用時に潜む中間者攻撃(MitM)のリスクと、SSHのホスト鍵認証(StrictHostKeyChecking)がどのように通信を守っているかを解説します。
【Unix】scpコマンドの応用:帯域制限・3点間転送・踏み台活用
2026-01-11
scpコマンドの帯域幅制限(-l)や、セキュアな3点間転送(-3)、踏み台サーバーを経由するProxyJump(-J)など、高度な運用オプションについて解説します。
【Unix】scpコマンドの深層:歴史的背景とセキュリティリスク
2026-01-11
scpコマンドが抱える設計上の課題(CVE-2019-6111等)と、OpenSSHが推奨する代替手段(sftp)について、技術的な背景を解説します。
[Unix] sftpコマンド完全ガイド
2026-01-11
sftp(SSH File Transfer Protocol)について、実践的なコマンド操作、バッチ処理による自動化テクニックを網羅的に解説します。
【Steganography】画像ファイルにZIPを隠す「EOFインジェクション」の仕組みと再現
2026-01-12
画像ファイルのフォーマット仕様を逆手に取り、データの末尾に別のファイルを結合して隠蔽する「EOFインジェクション」の手法と、代替データストリーム(ADS)との違いについて解説します。
【PowerShell】 ファイルに隠された「Zone.Identifier」の正体と代替データストリーム(ADS)
2026-01-11
Windowsでインターネットからダウンロードしたファイルに付与される「Zone.Identifier」の実体であるNTFS代替データストリーム(ADS)について、PowerShellを用いた確認・操作方法を解説します。