ソフトウェア

開発者たちが慣れ親しんだ「scp」コマンドはなぜ「時代遅れで柔軟性がなくすぐに修正できない」のか?


リモートサーバーとファイルをやり取りできる「scp」コマンドは、システム管理やソフトウェア開発の現場で長年親しまれてきましたが、オープンソースのSSH実装「OpenSSH」の最新版では利用を控えるべきとされています。手軽にサーバー間のファイル操作を行えるscpが非推奨とされた理由について、Linux開発者のジョナサン・コルベット氏が説明しています。

Deprecating scp [LWN.net]
https://lwn.net/SubscriberLink/835962/ae41b27bc20699ad/

scpはSSHプロトコルを使ってリモートサーバーとファイルやディレクトリを送受信できるコマンドで、ローカルでのデータコピーに利用する「cp」コマンドと似た操作体系を持っています。データは暗号化されるため安全なコマンドに思えますが、近年はscpに対する脆弱性が数多く見つかっており「状況によってはまったく安全でない場合もある」とコルベット氏は指摘しています。

例えばOpenSSH 8.0で修正された脆弱性「CVE-2019-6111」では、クライアントが実行したscpコマンドの意に反して、悪意のあるサーバーがクライアント上のファイルを上書き可能でした。他にもscpにコピー先のファイル名検証機能がないことを利用し、以下のようにサーバー側でコマンドを実行できる脆弱性「CVE-2020-15778」」も存在していました。


「scpが可能なサーバーはSSH接続による操作も可能なのだから、コマンドが実行できても問題ない」という考え方もありますが、scpのみを許可したいサーバーでは問題になるとコルベット氏。scpは設計が非常に古いため、新しいセキュリティ機能の追加やプログラムの修正が難しいとされており、OpenSSHはscpについて「時代遅れで、柔軟性がなくすぐに修正できない」プロトコルだと表明しています。

古くなったscpの代替として推奨されているコマンドが「sftp」や「rsync」コマンドです。特にsftpコマンドはOpenSSHパッケージに含まれており、追加のパッケージなしで利用することが可能です。しかし、sftpを使いこなすにはFTPの対話モードに関する知識が必要であり、scpと同じ感覚で利用できないのも事実。rsyncもscpと比較すると手軽さに欠けるとのこと。scpの使い勝手が開発者たちに深く刻み込まれていることも新しいコマンドへの移行を妨げているとコルベット氏は語っています。

by Alexander Boden

Linuxではifconfigコマンドからipコマンド、iptablesからnftablesなど、重要なコマンドの置き換えがしばしば起こりますが、新しいコマンドが開発者に浸透するには時間がかかります。内部でsftpが動作するscpコマンドの開発といった、いままでの資産をそのまま流用できるような試みもなされているため、すぐにscpコマンドが利用できなくなるということはなさそうです。

この記事のタイトルとURLをコピーする

・関連記事
世界中のSSHサーバーをターゲットに感染するP2Pボットネット「FritzFrog」 - GIGAZINE

新型コロナウイルスの影響で「半世紀以上前のプログラミング言語の使い手」が急募される事態に - GIGAZINE

古いシステムを「今は動いているから」といってそのまま放置してはいけない理由 - GIGAZINE

おなじみ「ping」コマンドの生みの親が20年以上前に開発秘話を記したブログ - GIGAZINE

in ソフトウェア, Posted by log1n_yi

You can read the machine translated English article here.