
2026/02/17 16:34
**AURパッケージをレビューする手順** 1. **パッケージの検索** - `yay -Ss <package-name>` を実行するか、https://aur.archlinux.org/ にアクセスして手動で検索します。 2. **PKGBUILD の確認** - `PKGBUILD` ファイルを見て、ビルドスクリプトや依存関係、メンテナ情報を把握します。 - ソース URL が信頼できる(例:公式プロジェクトサイト)かどうかもチェックしてください。 3. **コメント欄の確認** - ユーザーが投稿したコメントから報告されているバグや互換性問題を探ります。 4. **パッケージの状態を検証** - `Last updated`(最終更新日)を見て、メンテナンスが継続しているか確認します。 - バージョン番号が上流リリースと一致しているかもチェック。 5. **依存関係の精査** - 必要なパッケージが公式リポジトリや信頼できる AUR ソースに存在するかを確認します。 6. **変更履歴(あれば)をレビュー** - 最近の変更点が記録されており、妥当であることを確認します。 7. **LICENSE ファイルの確認** - ライセンスがプロジェクトの要件に合致しているかどうかを検証します。 8. **ローカルテスト(任意ですが推奨)** - AUR リポジトリをクローンし、`makepkg -si` を実行した上でサンドボックス環境で機能確認を行います。 9. **問題の報告** - 不具合や懸念点が見つかった場合は、AUR ページに issue を投稿するか、メンテナへメールまたは Discord で連絡します。
RSS: https://news.ycombinator.com/rss
要約▶
Japanese Translation:
概要:
2025年7月18日、Arch Linuxチームはマルウェアを含む3つのAURパッケージを削除しました。著者と他のメンテナーは悪意あるコードを削除し、将来のアップロードを防止するための安全策を追加しました。AURはコンパイル済みバイナリではなくユーザーが書いたPKGBUILDスクリプトをホストしているため、1つでも妥協されたスクリプトがインストール時にroot権限で有害なコマンドを実行する可能性があります。
現在のモデレーションは、パッケージの主要メンテナーを転送または削除できるボランティアモデレーターに依存していますが、このシステムは古いと見なされています。セキュリティ強化のため、コミュニティではプルリクエストワークフローやより厳格なライセンスチェックを検討しており、#archlinux-aur IRCチャンネルとフォーラムで議論が進行中です。これらの変更は、AURに依存するユーザーを保護し、メンテナーへのレビュー基準を厳格化し、Linuxパッケージエコシステム全体の品質期待値を向上させることを目的としています。
本文
2025年7月18日(金)に発覚したAURのマルウェア事件
2025年7月18日(金)、Arch Linuxチームは、AURに3つのマルウェアを含むパッケージがアップロードされたことを通知されました。数名のメンテナ―(私も含め)でこれらのパッケージを削除し、悪意あるコードを完全に取り除き、将来同様の不正アップロードから守る対策を講じました。
既にクエント・ミシュード氏が「マルウェアの仕組み」を丁寧に解説しているので、ここでは詳細は省略します。興味があれば彼のブログをご覧ください。代わりに、パッケージングスクリプト(PKGBUILD)の基本的な構造と自分でレビューする方法を短くまとめます。
AURとは何か?
Arch User Repository(AUR)は、ユーザーが作成したパッケージングスクリプト(PKGBUILDファイル)を集めたリポジトリです。
aur.archlinux.orgにアカウントを持つ者なら誰でも、同名のパッケージが既に存在しない限り、Arch Linux用のスクリプトをアップロードできます。提出できる内容には「公式パッケージや他のAURパッケージと重複しないこと」などのルールがありますが、基本的には何でもOKです。
各パッケージはデフォルトで「最初にスクリプトをアップロードした人」がメインメンテナ―ですが、責任移譲やモデレーターによる削除などで変更されます。民主主義ではなく、功績主義でもありませんが、うまく機能しており、多数の有用なソフトウェアが揃っています。
AURからインストールする場合は、単にメインリポジトリからインストールするよりも手間が増します。
makepkgでPKGBUILDをビルドし、その結果得られるパッケージをインストールできますが、ビルド時にAURにしか存在しない依存パッケージが必要になることがあります。そのため、多くの人は「AURヘルパー」を使い、pacmanのような操作感で管理します。ただし、ヘルパーにも欠点があります。
誰でもPKGBUILDをアップロードできる仕組みは、参加障壁を下げてくれる一方で、悪意ある人物がマルウェアを公開するリスクも伴います。したがって、インストールする前にPKGBUILDを検証することが重要です。
PKGBUILDの構造
Arch LinuxのPKGBUILDは、あるパターンに従ったbashスクリプトです。以下は典型的な例です。
# Maintainer: John Doe <john@example.org> pkgname=example pkgver=1.0 pkgrel=1 pkgdesc="An example package" arch=(x86_64) url="https://example.org/" license=('WTFPL') install="example.install" source=("https://example.org/$pkgname-$pkgver.tar.gz" "$pkgname-$pkgver.patch::https://git.example.org/example/pull/42.patch") sha256sums=("de4bba005e86b4fbf0399e2cb492b1e941099b951a45137212507c2cbc8fae63" "b6dc933311bc2357cc5fc636a4dbe41a01b7a33b583d043a7f870f3440697e27") prepare() { cd "$pkgname-$pkgver" patch -p1 -i "$srcdir/$pkgname-$pkgver.patch" } build() { cd "$pkgname-$pkgver" ./configure --prefix=/usr make } check() { cd "$pkgname-$pkgver" make -k check } package() { cd "$pkgname-$pkgver" make DESTDIR="$pkgdir/" install }
-
メンテナ―行
プログラム上は使われませんが、ユーザーが問題発生時に連絡できるよう情報を載せます。前任者のメールアドレスも併記すると貢献者への感謝になります。 -
その後に続くメタデータ変数
| 変数 | 用途 |
|---|---|
| ビルド対象パッケージ名 |
| アップストリームのリリース番号。必ず増加させることでpacmanが更新判定します。 |
| パッケージリリース番号。を変えない限り、PKGBUILDを修正するたびにインクリメントし、新しいアップストリームでは1にリセット。 |
| ユーザー向けの短い説明。検索や一覧表示で使用されます。 |
| ビルド可能なCPUアーキテクチャのリスト。はアーキテクチャ非依存(Pythonパッケージなど)を示します。 |
| 追加情報へのリンク。使われない場合もあります。 |
| SPDX形式で表記する配布ライセンス。1つだけ指定してください。 |
| パッケージインストール・アップグレード・削除時にroot権限で実行されるスクリプト(任意)。 |
| URL、VCS URL、またはファイル名の配列。 |
| と同じ長さで、それぞれのSHA‑256チェックサムを指定。で検証スキップ(PGP署名など)。 |
ビルド関数
PKGBUILDには4つの段階があり、bash関数として実装されます。
- prepare() – パッチ適用やsedによる編集を行う。ここ以降はネットワークアクセスを避けるべきです(ただしGo・Node.js・Rust等では例外があります)。
- build() – ソフトウェアのコンパイル(
,configure
等)。最も時間がかかります。make - check() – 可能なら単体テストやスモークチェックを実行。
- package() – ビルドしたファイルを
配下に配置。必須関数です。$pkgdir
PKGBUILDレビューで注目すべきポイント
以下はPKGBUILDを検証する際の重要項目です。網羅的ではありませんが、よくある落とし穴をカバーしています。
1. source
配列の確認
source- ソースが悪意あるものでないかを最優先でチェックします。
- アップストリームプロジェクトに信頼できるか、公式Gitタグや公式サイトから取得しているかを確認。
- 著者のPGP署名があればさらに安心です。
- RFCで定義されている「trusted source」ガイドライン(AUR独自より厳しい)を参考にしてください。
- パッチもソースとして扱われますので、マルウェアコードや不要な変更が入っていないか必ず確認します。
2. ビルドステップの検証
,build()
,check()
でネットワークダウンロードは行わない。package()
もできれば避けるべきです(例外あり)。prepare()- コマンドは標準的なパッケージングコマンドに限定し、カスタムスクリプトは必ずアップストリームリポジトリから入手してください。
や類似権限昇格を実行していないか確認します。ビルドは非対話型のchroot環境で行われるため、こうした操作はエラーになります。sudo
3. インストールスクリプト(install
)の精査
install
ファイルが存在する場合は特に注意。インストール・アップグレード・削除時にroot権限で実行されます。install- 新しいpacmanフック (
) が追加されているかどうかも確認します。無害なもの(フォントキャッシュ再生成など)を除き、何をしているか把握できない場合は疑わしく見えます。/usr/share/libalpm/hooks
4. 理解できないコードは使わない
- AURはCAPTCHA回避が可能であれば誰でもアップロードできます。善意のパッケージでもバグや隠しマルウェアが混入するリスクがあります。
- 疑わしい点がある場合はまず質問を投げ、説明を求めてください。
パッケージが悪意あると疑ったら
- 相談 –
IRCチャンネル(Libera)やAURフォーラム、メールリストで情報共有。#archlinux-aur - 報告 – 本当にマルウェアが含まれている場合は、パッケージメンテナ―が削除・ブロックを行います。繰り返し違反者にはエスカレーション手順があります。
最後に
AURはかつて「FTPサーバーとして始めた小さな仕組み」で設計されたもので、協調的で敵対的ではない時代のために作られました。現在でもユーザー間の信頼が前提です。改善点としては、より厳格なモデレーション、Pull‑Requestワークフロー、PKGBUILDファイル自体の明確なライセンス付与などがあります。コミュニティがこれらを実装してくれれば、もっと安全に利用できるようになります。
それまでは、パッケージをレビューする際は慎重になり、常に警戒心を持ち続けてください。