Aikido

Aikido x Drydock | メンテナンス担当者がマルウェアのリリース前にそれを検知する方法

執筆者
Dania Durnas

メンテナンス担当者の方々へ。今回、Drydockと提携しました。これにより、メンテナンス担当者はパッケージを承認する前にその内容を正確に確認できるようになり、マルウェアをリリース後に公表するのではなく、配布前に検知できるようになります。Drydockを使えば、ステージングされたリリースが公開される前に実際のバイトデータを読み取ることができるため、問題のあるバージョンは事後検証ではなく、承認段階で検出されます。npmおよびPyPIのメンテナンス担当者の方には、Drydockを無料でご利用いただけます。

マルウェアが公開される前に阻止する

この1年は、オープンソースパッケージに対するマルウェア攻撃が相次ぎました。「【緊急】大規模なマルウェア攻撃!」といった警告やツイートを目にするのも、もはや日常茶飯事となっています。検知や報告体制の改善は重要ですが、公表しなければならない段階になってしまっては、すでに手遅れです。パッケージのメンテナには、このプロセスのより早い段階でさらなる支援が提供されるべきです。そうすることで、問題が一般に拡散し、誰もがパニックに陥り、被害の収拾に追われる事態になる前に、問題を検知し、未然に防ぐことができるようになるからです。

npmが最近発表した「段階的公開」機能は、この方向への一歩と言えます。このアップデートでは「ステージングキュー」が導入され、すべてのパッケージバージョンは、2段階認証(2FA)を設定したメンテナが手動で公開を承認するのを待機することになります。しかし、これによりレビューの機会は生まれるものの、メンテナは準備されたパッケージの中身を詳細に確認することはできません。バージョン番号は確認できますが、パッケージ内のデータ内容や、リポジトリの現在の状態から何が変更されたか(変更がある場合)については把握できないのです。

Aikido は、メンテナンス担当者がマルウェア攻撃を未然に防げるよう支援することに尽力しています。そのため、Drydockと提携し、パッケージの公開をより安全にし、ステージング公開の利便性を高めています。 npm や PyPI のパッケージをメンテナンスしている方にとって、Drydock を利用すれば、公開前にリリースに含まれる内容を無料で確認できます。Drydock はステージングされた npm パッケージを分析し、承認前にバイト単位で何が変更されたかを正確に表示します。これにより、承認を行うメンテナンス担当者は、準備されたパッケージの中身を初めて確認できるようになります。

ステージング公開機能がない PyPI の場合、Drydock はその代わりにリリースパイプライン内で同様のレビューを実行します。この方法は、ステージングなしで公開される npm パッケージにも適用されます。その他のレジストリへの対応も近日中に予定されています。 

ドライドックの仕組み

新しいステージング版が登場すると、Drydock はそのバージョンを取得し、正確な tarball を一時的なサンドボックスにダウンロードして、前回公開されたバージョンとの差分を比較し、ダッシュボード上にレポートを表示します。すべての変更点を確認でき、セキュリティに関連する変更にはフラグが付けられ、深刻度順にランク付けされています。 これらのフラグは、マルウェアが依存する要素、例えば新しいインストール前またはインストール後のライフサイクルスクリプト、以前には存在しなかったファイル、プロセスを生成したりネットワークにアクセスしたりするコード、あるいは追加されたバイナリなどを検出します。各検出結果は、それが導入された行にピン留めされるため、レビューは膨大なソースコードの壁ではなく、数秒で目を通せる短いリストとして確認できます。検出結果を確認した後、自身の2FAを使用してnpmでの公開ステップを承認します。

上記のフローは、npm での段階的な公開を前提としています。PyPI の場合、あるいはステージングなしで公開される npm パッケージの場合、Drydock はGitHub Actionsの環境ゲートとして機能します。リリースは、レジストリに到達する前にパイプライン内で一時停止します。Drydock はビルドされたアーティファクトを審査し、同じ差分と重大度順にランク付けされた検出結果を投稿します。そして、何かが公開される前に、メンテナーが Drydock 内で承認または却下を行います。

Drydock 自体は公開を行わないため、リリースプロセスに新たな障害要因が加わることはありません。Drydock は読み取り専用の npm トークンを使用しており、その権限はステージングされた公開内容を確認するのに必要な最小限のものに限定されています。ファイルの一覧やテキストの読み取りのみに制限されているため、パッケージの内容を実行することは決してありません。また、人間による確認を重視するという方針に基づき、最終的な判断は毎回人間が行います。

マルウェアの悪循環を断ち切る 

npm やその他のパッケージマネージャーが登場した当初、即時公開は、メンバー同士の信頼関係があったからこそ急速に成長できたエコシステムのための機能でした。しかし今日では、攻撃者がエクスプロイト 公開のスピードとエクスプロイト 、マルウェア攻撃を仕掛けています。

段階的な公開は、公開前にバージョンを保留することで、このパターンを打破します。Drydockは、拒否する猶予があるうちに、メンテナンス担当者に変更内容を正確に提示することで、この保留に意味を持たせます。問題の発生は、損害が生じた後の事後検証ではなく、最初のダウンロードが行われる前に捕捉されるのです。

それが、メンテナンス担当者にとって理想的な世界です。マルウェアの公開情報で目を覚ますことが減り、自ら問題を発見して阻止できるようになること。

設定は簡単で、費用は一切かかりません。パッケージに対して npm のステージドパブリッシングを有効にし、読み取り専用トークンを使用して Drydock を組織に接続するだけで、ステージドバージョンのレビューが自動的に開始されます。GitHub Actions の設定については、GitHub アプリと環境を連携させるだけで完了します。Drydock の詳細や利用開始方法については、公式サイトをご覧ください。

共有:

https://www.aikido.dev/blog/drydock-pre-publish-package-review

ニュースを購読する

4.7/5
誤検知にうんざりしていませんか?
10万人以上のユーザーと同様に Aikido をお試しください。
今すぐ始める
パーソナライズされたウォークスルーを受ける

10万以上のチームに信頼されています

今すぐ予約
アプリをスキャンして IDORs と実際の攻撃パスを検出します

10万以上のチームに信頼されています

スキャンを開始
AI がどのようにアプリをペンテストするかをご覧ください

10万以上のチームに信頼されています

テストを開始

今すぐ、安全な環境へ。

コード、クラウド、ランタイムを1つの中央システムでセキュアに。
脆弱性を迅速に発見し、自動的に修正。

クレジットカードは不要です。 | スキャン結果は32秒で表示されます。