tac-tac-go
← Posts

Xの広告で出てきたTakumi Guardを試した件

はじめに

GMO が提供する「Takumi Guard」をご存知でしょうか?私はたまたまXの広告でみて紹介記事があまりなかったので試してみました。

使ってみた感想としては、インストール先のレジストリを1行変更するだけで、マルウェアなどを含んだ危険なパッケージのインストールを未然に防いでくれる ので便利そうです。


近年のサプライチェーン攻撃の増加

近年、サプライチェーン攻撃と呼ばれるサイバー攻撃が増加しています。直近でもaxiosLiteLLMという有名なパッケージやライブラリなどでも攻撃が報告されています。 私たちが普段開発アプリを作る際、便利な機能を簡単に使えるようにするため、npmやPyPIなどのパッケージをインストールします。しかし、その部品の中に「わざと名前を似せた偽物のパッケージ」や「乗っ取られた本物のパッケージ」が紛れ込んでいることがあります。これを開発環境でインストールしてしまうと、手元のPCから情報が盗まれたりする危険性があります。そのような攻撃を防げる可能性があり、基本的に無料で使えそうなので

Takumi Guardがいいなと感じるのは、以下の3つです:

  1. コードの変更が不要 アプリ自体のソースコードを変更する必要はありません。パッケージをダウンロードする時の「プロキシ」としてTakumi Guardを通すだけです。
  2. 導入がすぐに終わる 設定ファイルにたった1行追加するだけで、全プラットフォームに対応できます。
  3. 誤ってインストールしようとしても確実に止めてくれる 最新の脅威リストをもとに、悪意のあるパッケージならダウンロード時に「403 Forbidden(アクセス拒否)」としてエラーを出して守ってくれます。

手順:Docker環境を構築して効果を検証してみる

環境を汚さずに検証するため、仮想環境(Docker)を使って、本当に悪意あるパッケージがブロックされるのかを試してみましょう。

今回は、Takumi Guard側で用意されているテスト用の「擬似的な悪意パッケージ(@panda-guard/test-malicious)」を使って、インストールが失敗することを確認します。

1. 必要なファイルの作成

以下の2つのファイルを同じフォルダ内に作成します。

Dockerfile(Dockerの設計図)

FROM node:20-alpine
WORKDIR /app

# Takumi Guardの認証トークンを引数として受け取る
ARG TG_TOKEN

# 1. npmのレジストリ(取得元)をTakumi Guardに向け、トークンを設定する
RUN npm config set registry https://npm.flatt.tech/ \
    && npm config set //npm.flatt.tech/:_authToken ${TG_TOKEN}

# 2. ブロックされるかテスト用パッケージをインストールする
# (Takumi Guardが有効ならここでインストールが停止・ブロックされます)
RUN npm install @panda-guard/test-malicious

CMD ["node", "-v"]

docker-compose.yml(Dockerを便利に動かす設定ファイル)

services:
  takumi-guard-test:
    build:
      context: .
      args:
        # ここに取得したAPIキーを設定するか、環境変数経由で渡します
        - TG_TOKEN=${TG_TOKEN}

2. 環境変数にAPIキー(トークン)をセットして実行

ターミナル(黒い画面)を開き、取得したあなたのTakumi GuardのAPIキーを環境変数(PCの一時的な記憶領域)にセットします。

export TG_TOKEN="xxxxxxxxx"

その後、以下のコマンドを打ってDockerを起動・構築します。

docker-compose build

3. 検証結果:見事にブロックされる!

コマンドを実行すると、Docker内の構築が進みますが、パッケージをインストールする段階(RUN npm install @panda-guard/test-malicious)で以下のようなエラーが出て処理が止まります。

npm error code E403
npm error 403 403 Forbidden - GET https://npm.flatt.tech/@panda-guard%2ftest-malicious - Package blocked by security policy

「Package blocked by security policy(セキュリティポリシーによりブロックされました)」 というメッセージの通り、Takumi Guardがしっかりと危険なパッケージを検知し、インストール自体を強制終了させてくれました。

この設定を本番や開発のフローに取り入れておくだけで、「うっかり名前を間違えて危険なパッケージをインストールしてしまった」という人的ミスをシステムで防ぐことができます。

サプライチェーン攻撃なども近年問題になっているので、その防止策としてはいいのではないでしょうか?