テック技報最新号へ →
コード

シェル: curl … | bash を | bashka に変えて、実行前にスクリプトを静的検査する

インストール手順の curl -fsSL https://example.com/install.sh | bash の bash を bashka に置き換えると、スクリプトを解析して危険な処理(認証情報の読み取り、外部送信、リバースシェルなど)があれば止めてくれる。

@matsuu · 投稿 2026-09-20
#shell#security#サプライチェーン#curl#インストール

使い方

sh
# 導入(2026-10 時点で Homebrew から入れられる)
brew install bashka
# ほか: cargo install bashka / mise use -g github:dmtrKovalenko/bashka

# いつものインストール手順の末尾を bashka にする
curl -fsSL https://pyenv.run | bashka

何を見ているか

  • 💀(即ブロック): webhook.site・Discord・ngrok・生 IP への送信、SSH 鍵やクラウド認証情報の読み取り、env | curl のような環境変数の持ち出し、/dev/tcp や nc -e のリバースシェル。
  • 🔴(危険): curl -k など証明書検証の無効化、eval による難読化、シェルの rc ファイルや ~/.ssh への書き込み、cron 登録、core.hooksPath の書き換え、ダウンロードしたプログラムをそのまま実行する二段構えなど。
  • 🟡(参考): チェックサム未検証、main / latest など固定されていない参照からのダウンロード、apt リポジトリの追加。
  • ✅(良い兆候): set -euo pipefail、--proto '=https' --tlsv1.2、sha256sum -c や署名検証。
  • スクリプトの中でさらに別のスクリプトを取ってきて実行している場合は、その先まで追って解析する。

インストール記録の管理

bashka 経由で入れたものは ~/.local/share/bashka/installed.toml に記録され、bashka list で一覧、bashka remove <name> で入れたバイナリとディレクトリをまとめて消せる。curl | bash で入れたツールの消し方が分からなくなる問題も減る。

注意

  • 静的解析なので万能ではない(実行時に取得する内容が変わるサーバー側の差し替えなどは防げない)。怪しいと出たら中身を読む前提で使う。
  • 可能なら Homebrew や公式パッケージなど、署名・バージョン固定された経路で入れる方が安全。

出典

X の元の投稿を開く