1 ポイント 投稿者 GN⁺ 4 시간 전 | 1件のコメント | WhatsAppで共有
  • AURパッケージリポジトリ は、メンテナンスされていないパッケージを誰でも引き取り、PKGBUILDや関連ファイルの変更を提出できる仕組みであり、今回の事案では408件以上のパッケージが感染した形跡がある
  • 新しいAURパッケージメンテナーが信頼されたメンテナーになりすましてパッケージを引き取り、他のAURメンテナーが感染パッケージの削除作業を進めた
  • 初期の感染パッケージは、preinstallスクリプトで npm を実行し、悪性ペイロードである atomic-lockfile をインストールするよう改変されていた
  • その後の感染では、Bunで悪性の js-digest をインストールしており、NPMは当該パッケージを削除した
  • 多くのパッケージは使用頻度が低いものの、影響範囲が広く、情報窃取の挙動に加えて eBPFルートキット まで含むサプライチェーン攻撃である点が重要

事案の状況

  • 何が起きたのか

    • 新しいAURパッケージメンテナーが信頼されたメンテナーになりすまし、408件以上のパッケージを引き取って感染させた形跡がある
    • 侵害が報告された後、他のAURメンテナーが感染したパッケージを削除する作業を進めた
    • 2026-06-12T17:30:00Z時点で、AURメンテナーは すべての悪性コミットを削除したと報告している
    • AURメンテナーは、パッケージ引き取り機能を含む一部機能に統制と制限を適用する方針
    • Arch Linuxは Active AUR malicious packages incident の告知を出した
  • 悪性依存関係

    • 攻撃には少なくとも2つの別個の悪性依存関係が含まれる
    • 初期に影響を受けたパッケージは、preinstallスクリプトで npm を使って悪性ペイロードである atomic-lockfile パッケージをインストールするよう改変されていた
    • premake-git パッケージには、その変更の コミット例 がある
    • その後の感染では、Bunを使って悪性の js-digest をインストールしており、NPMは js-digest を削除した
    • 攻撃分析については、Preliminary analysis of AUR malware に詳しい分析がある

対応と侵害指標

  • 推奨される対応

    • Archを使っていない場合、今回のAURパッケージ侵害の直接的な影響対象ではない
    • Archユーザーは、影響を受けたパッケージ一覧を確認し、露出有無確認スクリプトでシステムを点検すべき
    • 原文でリンクされている aur_check.sh は古いバージョンであり、最新の確認対象は該当Gistの案内に従う必要がある
    • 侵害指標が見つかった場合は、適切なフォレンジック調査のためにシステムを保全すべき
    • 感染パッケージが見つかった場合は、一般的な侵害対応手順に従い、すべての認証情報を置き換え、Archの再インストールを検討すべき
    • ルートキットの可能性があるため、システムの信頼性は保証できなくなる
    • すべてのユーザーは、ネットワーク上で outbound Torトラフィックを遮断する対策を取るべき
  • 侵害指標

    • js-digest に組み込まれた悪性Linux実行ファイルのSHA256は 7883bda1ff15425f2dbe622c45a3ae105ddfa6175009bbf0b0cad9bf5c79b316 である
    • bpftool map list で不審な eBPF Maps を検出できる
    • 不審なmap名には hidden_pidshidden_nameshidden_inodes がある
  • 追加の確認事項

    • 既存のメンテナーアカウントが悪性コミットを行ったのではなく、既知のメンテナーアカウントがなりすまされたものである
    • 多くのパッケージは使用頻度が低いが、408件以上という感染範囲は大きい
    • 情報窃取の挙動に加えてeBPFルートキットまで含むサプライチェーン攻撃はまれな事例である
    • Socket.devの atomic-lockfile ページでは、悪性NPMパッケージのダウンロード数が134回と表示されている
    • NPMパッケージはユーザー herbsobering がメンテナンスしている
    • GitHubで herbsobering というユーザー名を検索すると、リバースシェル/プロキシツールとみられる単一コンテナイメージ herbsobering430 がある
    • AURパッケージリポジトリでは、パッケージが未管理状態と表示されると、誰でもそのパッケージを引き取り、PKGBUILDおよび関連ファイルの変更を提出できる
    • 放置されたパッケージを自動的に見つけて引き取る方法は珍しいことではなく、関連する背景は Mastodonスレッド にある

1件のコメント

 
GN⁺ 4 시간 전
Hacker Newsの意見
  • AUR はユーザーが作成した PKGBUILD の集まりにすぎない、ということを受け入れるべきだ
    AUR からインストールするすべての PKGBUILD のソースは必ず確認すべきで、アップデートも例外ではない。これは 10年以上前からずっと議論されてきた前提であり、yay のような公式 AUR ヘルパーが存在しない理由もここにある
    Arch Linux がエリート主義的だという不満も多いが、現実には自分が何をしているかを理解していて、各段階で手取り足取り案内されることを望まない人向けのディストリビューションだ。無作為な AUR パッケージをインストールしてシステムを壊したり侵害されたりしたなら、それは自己責任だということでもある
    ただし、誰でも AUR パッケージを引き継げる時代は終わるかもしれない。毎回影響を受けたパッケージを差し戻すコストだけ見ても大きすぎる。代案としてすべての引き継ぎ依頼を審査するのも負担が重く、毎回役に立つ保証もない

    • AUR でインストールするすべての PKGBUILD ソースを確認すべきだというなら、それは ブラウザー拡張、VSCode 拡張、NuGet パッケージ、Cargo クレート、Python パッケージ、npm パッケージなどにも同じように当てはまるのではないかと思う
      インターネットアクセスがない、あるいは公開されても構わないものにしかアクセスしない環境で実行しない限り、その通りだと思う
      AUR はそうではないかもしれないが、他のエコシステムは権限モデルやサンドボックスで理論上は改善可能だ。ブラウザー拡張にはその選択肢がすでにあるが、「一般」ユーザーはほとんど使っていない
      残念ながら 99.99% の人はすべてを確認できないか、その時間がない。信頼されたメンテナーがいるディストリビューションのパッケージや、権限とある程度の審査がある iOS App Store のような場所が最も安全に見える
    • これが実際の解決策だとは思えない。こうした攻撃の一般的な流れは、依存関係のどこかにペイロードを隠すことだった
      今回は PKGBUILD の中でかなり雑に npm install しているので少し異例だ。今では AUR 以外のほぼすべてのパッケージリポジトリも同じ問題を抱えており、依存関係の連鎖全体を手作業で監査するのは現実的ではない
      もちろん、私にも解決策はない
    • ユーザーのごく一部でも実際にこれをやっていると信じるのは、現実から著しく乖離した考え
    • AUR がユーザー作成 PKGBUILD の集まりだという点が、PyPI エコシステム、npm、Docker Hub 全体とどれほど違うのかと思う
      人々は SELinux を無効にし、--privileged は seccomp と AppArmor を無効化し、サンドボックス脱出の CVE も存在する
    • 誰でも AUR パッケージを引き継げたこと自体、そもそもあってはならなかった
      最終的には username/packagename-bin|git のような構造になってほしい。そうすれば、人々が実際に何を誰からインストールしているのかがずっと明確になるはずだ
  • このキャンペーンはまだ進行中だ。たった今、昔の自分のパッケージのひとつが引き継がれたというメールを受け取ったが、それは何年も動いておらず、しばらく孤児パッケージになっていたものだ。引き継ぎ直後に 悪意あるコミット が入った
    今は npm の代わりに bun を使っているようなので、npm ベースの回避策は効果がない可能性が高い
    https://aur.archlinux.org/cgit/aur.git/commit/?h=toggldeskto...

    • この段階になると、孤児パッケージの引き継ぎ という概念自体が壊れているのではないか、いっそ廃止すべきではないかと思う
      不便ではあるだろうが、他人が放棄したパッケージを引き継がせる代わりに、AUR が新規投稿を強制し、一定期間が過ぎた孤児パッケージを定期的に削除するほうがよいかもしれない
    • 私もたった今、監視していた AUR パッケージのひとつが、孤児パッケージだったという理由で見知らぬ人に渡ったという通知を受けた
  • AUR から何かをインストールするときに注意が必要なのは当然で、以前から怪しいパッケージ、つまりビルドが壊れていたりパッケージ化が不適切だったりするものは常にあったが、能動的な悪意の挿入 を目にするのは懸念される
    AUR には大きな問題が 2 つあると思う。第一に、サードパーティーのコードをおおむね信頼できた、もう少し平等主義的だったオープンソース時代の名残だという点。第二に、孤児パッケージを誰でも既存の履歴と検証実績をそのまま引き継いで取得できるという点だ
    第一の時代はすでに過ぎ去っており、第二は AUR アカウントにより厳格な統制を設けるか、AUR ヘルパー側に追加の保護措置を入れることで緩和できる。たとえば最近所有者が変わったパッケージなら、大きくて怖い警告を表示するような形だ。それでもただ y を押して進む人はいるだろうが、ないよりはましだ
    あるいは AUR ヘルパー自体を避け、必要なパッケージを PKGBUILD から直接確認してビルドする方法もある

    • パッケージ引き継ぎポリシー が合理的だった時代は一度もなかった
    • AUR ヘルパーはむしろ、確認の手順をワークフローに組み込みやすくしてくれると思う
      確認するよう積極的に促し、最後にリスクを受け入れたあとで変更があったかどうかも知らせてくれる
      ただし、「AUR は有害だ」という見方は新しいものではない。AUR を使う人はここにあるリスクを理解すべきで、実質的には StackOverflow で見つけたものを curl | bash するより一段階ましな程度だ
  • この件から7時間以上経っているのに、archlinux.org や aur.archlinux.org ではまだ何の言及もない。なぜなのか分からない。ユーザーがこの件を認識していると示す措置を取るまでは、AUR を止めるべきだった
    例えば AUR API の URL を少し変更して、yay/yaourt ユーザーが何が起きたのか調べるように仕向けることはできる。新しい API には、ユーザーへ通知し、続行前にメッセージを読んだことを確認する仕組みが必要だ。特に、すべてのマルウェアを見つけられたかも確実でない状況ならなおさらだ
    また、取り下げられた、または侵害された AUR コミットのデータベースが必要で、ユーザーがそのパッケージをインストールしたことがあれば警告する仕組みも必要だ

    • 良くも悪くも、AUR にはこの警告が常に存在している
      名前そのものにも入っているし、Wiki にも AUR はユーザーリポジトリであり、盲目的に信頼してはならないと明確に案内されている
      すぐ上の大きな赤い枠にもそのまま書かれている: https://wiki.archlinux.org/title/Arch_User_Repository
      AUR には絶対にインストールしないものがたくさんあり、そのすべてをメーリングリストで流すのが最善だとは思わない
      悪意あるパッケージをインストールしたユーザーへ警告するというアイデア自体は嫌いではないが、実現性は低い。AUR には商用ツールにあるようなインストール追跡がないからだ。誰がどのパッケージをインストールしたか、どうやって分かるのか? AUR は基本的にパッケージの場所を示す電話帳に近く、ログインや認証情報すら要求しない
      だから警告は、ユーザーが注意を払っていれば実行できるツールから出るべきで、実際に注意を払うことが求められる。例: https://gist.github.com/Kidev/59bf9f5fb53ab5eee99f19a6a2fc39...
    • そうあるべきではない。基本的なセキュリティ助言を真剣に受け取らない人が一部いるからといって、みんなのワークフローを壊してはいけない
      新しい API がユーザーに通知して、読んだことまで確認するというのは、いったいどう動くべきなのか? AUR パッケージはただの git リポジトリであり、AUR ヘルパーが何をするかしないかを Arch メンテナーが制御することはできない
    • AUR のトップページには告知を出すべきだと思う。個人的には、Arch のホームページに短い案内と AUR ページの告知へのリンクがあっても役立つと思う
      既知の影響パッケージを全部列挙したくないとしても、少なくとも AUR パッケージを使う人は、自分が使うすべてのパッケージのすべてのファイルを読むべきだという公式見解くらいは勧告すべきだ
    • 告知が出た: https://archlinux.org/news/active-aur-malicious-packages-inc...
    • Socket.dev の数値を信頼できるなら、影響は幸いかなり小さそうだ
      それももっともではある。影響リストの一部のパッケージは知っているが、ひどく古く、上流プロジェクトももう保守されていない
      全体の被害者数がどれくらいかは分からないが、AUR チームは正確な数字を持っている可能性が高い。影響度に応じて最善を尽くして対処しているのだろうと思う
  • こういうことは結局避けられなくなっていて、変化がなければ今後さらに頻繁に起きる可能性が高い。AUR PKGBUILD システムはとても気に入っていて、自分で書くときにもよく活用している
    最も深刻で、しかも直しやすい問題は、孤児パッケージを誰でも引き取れるのに、その事実がエンドユーザーにまったく知らされないことだ
    パッケージを削除させるのは、かかる手間の割に得るものが少ないので、管理権を手放す最適な方法が孤児パッケージ化になってしまう。これは逆であるべきだと思う。少なくともユーザーには、パッケージが孤児になったことを明確に知らせるべきだ
    この負担は paru や yay のような AUR ヘルパー側により大きくあるのかもしれず、そうした変更をしてくれることを勧めたい

  • 侵害されたパッケージをスキャンする簡単なスクリプトがある
    https://cscs.pastes.sh/aurvulntest20260611.sh
    私のスクリプトではないが、読んで把握しやすい。絶対にスクリプトをそのまま bash にパイプしてはいけない

    • もっと速い代替もある
      comm -1 -2 <(pacman -Qq | sort) <(curl -s https://gist.githubusercontent.com/quantenProjects/… | sort)
      comm(1) を学ぶのに悪いタイミングというものはない
    • これはパッケージがインストールされているかだけを確認していて、インストールされたバージョンが感染していたかまでは確認しない
      たぶん自分みたいにしばらく、数か月 yay -Syu を実行していなかったなら大丈夫なんだろう? …そうだよね?
      くそっ、Arch を再インストールする羽目にはしないでくれ。前回は1週間かかった
      更新: archinstall は良い。15分くらいで復旧できた
    • そのリストが完全だという保証はない
      常に PKGBUILD とソースを確認すべきだ。AUR はそもそも信頼の置けるものではない。むしろ、こうした侵害がもっと早く起きなかったことの方が驚きだ
    • pacman は日付ロケールをサポートしているので、9 Jun を検索する方法は英語ロケールや似た形式を使うロケールでしか動かない
      自分の環境向けに直した後は jd-gui が引っかかったが、実際には侵害の約2時間前に jd-gui-bin をインストールしていた。その晩、ソースのコンパイル待ちをしたくなくて怠けて -bin パッケージを選んだおかげで運が良かったようだ
  • Archコミュニティがスクリプトやツールを素早く公開している。
    現在、感染の有無を確認するための最新の統合ユーティリティはこれ。
    https://github.com/lenucksi/aur-malware-check
    また、aur-requestメーリングリストには、悪意あるコミットを巻き戻すための削除依頼や孤児化依頼が多数投稿されている。
    https://lists.archlinux.org/archives/list/aur-requests@lists...

    • 初歩的な質問だが、これはArchや公式の出所によるものではないのに、どうやって信頼できると分かるのだろうか。
      そのスクリプトには理解しづらい部分が多く、コードを読むだけで安全かどうかを簡単には判断できない。
      公式のArch開発者側からの反応や解決策を期待してしまう。
    • リポジトリのREADME下部にある星グラフが気に入った。
      こうした大規模マルウェア攻撃にまつわる切迫感と重要度がよく伝わる。
  • 10年ほど前にArch LinuxでエミュレータのMednafenをインストールした記憶がある。プログラムは起動しなかったが、それは自分のシステムにないライブラリにリンクされていたためだった。
    調べてみると、メンテナが自分のシステムでソフトウェアをビルドしており、そのシステムにあったライブラリが使われていたのに、依存関係には記載されていなかった。
    それは公式メンテナンス対象のパッケージで、こういうものは専用のビルドサーバーで作られるものだとずっと思っていたので、任意のボランティアや自宅のコンピュータでビルドされるとは考えてもいなかった。Archが今でも同じ方式でビルドしているのかは分からないが、その出来事は十分に怖く、ディストリビューションを乗り換えるきっかけになった。

    • pkgctl buildを使っていても、こうしたことは起こりうる。makedepends=が推移的に共有ライブラリをビルド環境へ持ち込んでいたのに、depends=には入っていないケースだ。
      .so依存関係が検出されると警告は出るが、それを見て対処するのはメンテナの役目だ。
      安全性とセキュリティの観点では、Arch Linuxは再現可能ビルドプロジェクトを牽引する一角であり、OSのかなりの部分について、そのバイナリが本当にソースコードからビルドされたものかを独立に検証できる。公式パッケージの監査体制はNixOSより強く、Debianと同程度だ。
      https://reproducible.archlinux.org/
      ただし、これらすべては今回のAURの件とはまったく別の話だ。
    • こうした問題を捕まえるために、クリーンなイメージ上でパッケージをビルドしてインストールを試せるツールがある。たとえばpkgctlだ。
      メンテナであれば、公開前にこうしたツールを必ず使うべきだ。
    • 比較的最近まで、こうしたやり方は一般的だった。Debianも長いあいだそのように運用しており、完全に禁止されたのは2019年になってからだ。
  • この問題の解決策は何だろうか。こうしたパッケージは、ネットワークアクセスのないDockerコンテナ内でインストールすべきなのだろうか。これがAURにだけ限られると考えるべきではないと思う。
    2026年には、すべてのソフトウェアの出所を疑うべきだ。特にバイブコーディングが広がっている状況ではなおさらで、クローズドソースのソフトウェアはブラックボックスなので、オープンソース以上にひどい混沌になっている。

    • 信頼できない「アプリストア」は、AURやFlatpakなどを含めてサンドボックス内に置くべきだ。デフォルト、あるいは選択肢として、少なくとも仮想マシンくらいは必要に思える。
    • 言いたくはないが、Qubes OSの人たちは正しかった。解決策は、アプリを仮想マシンで積極的に隔離することだ。
      本気で乗り換えた場合、バッテリー持ちがどれほど悪化するのか知っている人はいるだろうか。
    • SLSA導入が必要だ。
    • Flatpak
  • 関連ニュースがさらに出てきている。
    https://www.phoronix.com/news/Arch-Linux-AUR-400-Compromised
    実行されると単にメールを送るか通知を表示するカナリアバイナリを作って、それをnpmと呼ぶというアイデアを考えたことがある。
    この時点で、npmバイナリの名前を変えないのは大きなリスクだ。