セキュリティ研究者によると、Linuxコマンド「less」を使用してインターネットからダウンロードしたファイルの内容を表示することは、リモートコード実行につながる可能性のある危険な操作です。
一見すると、less はファイルの内容をターミナルウィンドウに出力し、ユーザーがファイルを前後に移動できるようにするだけの無害なコマンドのように見えます。less はファイルの編集はできませんが(これは広く使用されている vi のようなファイルエディタで行います)、ファイル全体をメモリに読み込むことなく、データをリアルタイムで表示できるという利点があります。これは、大きなファイルを扱う際に便利です。
Lessはテキストファイルの閲覧によく使われますが、UbuntuやCentOSを含む多くのLinuxディストリビューションでは、アーカイブ、画像、PDFなど、より多くのファイル形式をサポートしています。これは、これらのシステムでは、lessがlesspipeと呼ばれるスクリプトによって拡張されており、このスクリプトは様々なサードパーティ製ツールを利用して様々な拡張子のファイルを処理しているためです。
Linux、BSD、Chrome OS、そして Windows 以外の世界の最新情報を知りたいですか? Windows 以外の世界のコラムページをブックマークするか、RSS フィードをフォローしてください。
lesspipe、ひいてはlessが依存するサードパーティ製ツールは、悪意のある入力を考慮して設計されていないと、Googleのセキュリティエンジニアであるミハル・ザレフスキー氏は日曜日、Full Disclosureセキュリティメーリングリストへのメッセージで述べた。
Zalewski 氏が、lesspipe がサポートするプログラムの 1 つである cpio ファイル アーカイブ ユーティリティに対して、不正な入力をアプリケーションに送り込む脆弱性テスト ツールであるファジング プログラムを実行したところ、任意のコード実行につながる可能性のあるメモリ バグがすぐに特定されました。
「これはcpioの単一のバグだが、他のlesspipeプログラムの多くも同様、あるいはそれ以上の問題があることは間違いない」と研究者は述べた。
Ubuntu のマニュアルによると、lesspipe は次の拡張子のファイルをサポートしています: *.arj、*.tar.bz2、*.bz、*.bz2、*.deb、*.udeb、*.doc、*.gif、*.jpeg、*.jpg、*.pcd、*.png、*.tga、*.tiff、*.tif、*.iso、*.raw、*.bin、*.lha、*.lzh、*.pdf、*.rar、*.r[0-9][0-9]、*.rpm、*.tar.gz、*.tgz、*.tar.z、*.tar.dz、*.gz、*.z、*.dz、*.tar、*.jar、*.war、*.xpi、*.zip、*.zoo。
「CentOSでは、lesspipeにはgroff + troff + grotty、man、cpioなどが含まれているようです」とZalewski氏は述べた。「Ubuntuではisoinfo(?!)、binutilsのarなどが含まれています。古くてあまり知られていない圧縮ユーティリティやドキュメントコンバータも登場しています。」
Zalewski 氏が Open Source Security というメーリング リストで調査結果を共有した後、他の人々が他の lesspipe ツールや less 自体における同様の問題を指摘し始めました。

「お二人の意見に賛成です。私にとってこれは重要な問題です」と、ベルンハルト・ヘルマンという名のユーザーがザレフスキー氏と別の研究者の投稿に返信しました。「ファイルがマルウェアかどうかを確認している最中にマルウェアに感染したり、ディストリビューション(Linuxディストリビューション)がバックグラウンドで何か動作していて、それに気づかないなんてことは避けたいです。」
多くのユーザーは、あまり知られていない拡張子のファイルに対して less を実行することはおそらくないだろうが、「結局のところ、ダウンロードしたファイルに対して less を実行しても RCE [リモートコード実行] にはつながらないという期待があると思うが、多くのディストリビューションの lesspipe の動作はほぼ確実にこれに違反している」と Zalewski 氏は述べた。
lesspipe が使用するすべてのツールに対してファズテストを実行し、可能な限り多くの脆弱性を特定し、それらの欠陥を関係する開発者に報告するには、相当の労力がかかります。一部のツールは非常に古く、開発者の対応が遅れる可能性、あるいは対応が遅れる可能性もあります。
Zalewski氏によると、現時点では、LinuxシステムでLESSOPENおよびLESSCLOSE環境変数が設定されている場合は、それらを削除することでセキュリティを強化できるという。これらの変数は、サポートされている拡張子のファイルに対してlessを実行する際に、自動的にlesspipeを呼び出す。
Linux のコマンドライン ユーティリティの脆弱性が見つかる傾向が高まっているようですが、これは 9 月に Bash Unix シェル自体に Shellshock の脆弱性が見つかったことに始まります。
先月、Zalewski氏は、strings、objdump、readelfといったコマンドラインツールで使用されるライブラリにリモートコード実行の脆弱性を発見しました。数日後、人気のwgetやtnftpといったコマンドラインプログラムにも同様の脆弱性が発見され、修正されました。