
Pardus My Computer Os コマンドインジェクション
CVE-2024-12970 は、Pardus オペレーティングシステムの My Computer ソフトウェアに存在する OS Command Injection(OSコマンドインジェクション)の脆弱性を定義します。この脆弱性により、ユーザーはファイル名パラメータを通じてシステムコマンドを注入でき、攻撃者はシステム上で悪意のあるコマンドを実行できます。
この脆弱性は、Pardus My Computer ソフトウェアの 0.7.2 より前のバージョンに存在します。
脆弱性は get_file_info 関数に存在します。この関数は、ユーザーから受け取ったディスク情報を取得するために subprocess 呼び出しを使用しています。ただし、この呼び出し内のファイルパスパラメータ (file) が適切に検証されていないため、ユーザーが指定したディスク名を通じて OS Command Injection の脆弱性を引き起こします。
関数:
def get_file_info(file, network=False):
if network:
try:
process = subprocess.check_output(f"df '{file}' --block-size=1000 -T | awk 'NR==1 {{next}} {{print $1,$2,$3,$4,$5,$7; exit}}'", shell=True, timeout=1)
except subprocess.TimeoutExpired:
print("timeout error on {}".format(file))
return None
この脆弱性は、file パラメータがユーザーによって指定され、そのパラメータが subprocess.check_output() 関数で直接使用されることに基づいています。ユーザーは file パラメータに任意のディスク名を指定でき、そのディスク名はシェルコマンドで直接使用されます。これにより、ユーザーはコマンドインジェクションを行うことが可能になります。
脆弱性のあるパラメータの例:
process = subprocess.check_output(f"df '{file}' --block-size=1000 -T | awk 'NR==1 {{next}} {{print $1,$2,$3,$4,$5,$7; exit}}'", shell=True)
この脆弱性を悪用するために、攻撃者は接続するディスクの名前に次のような悪意のあるペイロードを配置できます:
&' <çalıştırılmak istenen shell komutu> #
この名前を持つディスクが Pardus My Computer を介してマウントされると、exploit が実行されます。