GitHubに潜む「不可視文字攻撃」GlassWormとは|Linuxエンジニアが知るべきOSSサプライチェーンの脅威

HOMEリナックスマスター.JP 公式ブログセキュリティ > GitHubに潜む「不可視文字攻撃」GlassWormとは|Linuxエンジニアが知るべきOSSサプライチェーンの脅威

この記事の監修:宮崎智広(Linux教育歴15年以上・受講者3,100名超)
「GitHubのコードをそのまま使って大丈夫か?」
OSSを日常的に活用するLinuxエンジニアにとって、ここ最近もっとも注意すべき脅威が水面下で急拡大しています。

日経クロステックの報道(2026年4月)によると、「GlassWorm」と呼ばれる新型サイバー攻撃がGitHubやnpm、Open VSXといったコード管理プラットフォームで猛威を振るっており、151件以上のGitHubリポジトリと433件以上のソフトウェアパッケージが汚染されていることが確認されています。

この記事では、GlassWormの仕組みをLinuxエンジニア向けにわかりやすく解説し、現場での対策を考えます。

この記事のポイント

・GlassWormはUnicode不可視文字を使い、コードレビューをすり抜けてマルウェアを埋め込む
・1行のコードの中に1万8000行以上の悪意あるコードが隠せることが判明
・GitHubのOSSを利用する開発・運用現場は今すぐ対策が必要
・検出にはテキストエディタでのUnicode確認や専用ツールの活用が有効


GitHubに潜む「不可視文字攻撃」GlassWormとは|Linuxエンジニアが知るべきOSSサプライチェーンの脅威
「このままじゃマズい」と感じていませんか?
参考書を開く気力もない、同年代に取り残される不安——
でも安心してください。プロのエンジニアはコマンドを暗記していません。
「現場で使える型」を効率よく使いこなしているだけです。
図解60P/登録10秒/解除も3秒 / 詳細はこちら

GlassWormとは何か?

GlassWorm(グラスワーム)は、2025年10月にイスラエルのセキュリティ企業が初めて発見し、2026年3月に急増が明らかになった新型のサプライチェーン攻撃です。

「Worm(ワーム)」という名前がついていますが、自己増殖型のウイルスとは少し異なります。むしろ「見えない(Glass)」という特性が本質で、コードレビューをしても肉眼ではまったく発見できないように設計された攻撃手法です。

攻撃者は「善意の開発協力者」を装い、OSSプロジェクトにプルリクエスト(コード変更提案)を送ります。表面上のコードは正常に見えますが、その1行の中に不可視文字として大量の悪意あるコードが埋め込まれているのです。

Unicode不可視文字を悪用する仕組み

1. 不可視文字とは

Unicodeには、画面に何も表示されない「制御文字」や「異体字セレクター」と呼ばれる文字が存在します。これらは通常、テキストの書式や言語表示の調整に使われるものですが、GlassWormはこれを悪用します。

攻撃者はこれらの不可視文字を大量に組み合わせることで、表示上は何もない空白や1行のコードに見せかけながら、内部に独立した実行可能なコードを隠します。

2. 1行に1万8000行が隠れる

実際の攻撃事例では、たった1行のコードの中に1万8000行以上の悪意あるコードが隠されていた事例が確認されています。

コードエディタ(VS Codeなど)で見ると普通の1行。しかしテキストバイナリダンプで確認すると、膨大なデータが格納されていることがわかります。

# 一見普通に見えるコードの例(実際は1行に不可視データが埋め込まれている) source_code = "normal_function()" # ← この1行に見えない悪意ある文字列が存在 # od(オクタルダンプ)コマンドで検証する方法 $ od -c suspicious_file.py | head -5 # 不可視文字があれば \xe2\x80\x8b などのバイト列が大量に現れる

3. コードレビューで検出できない理由

GitHubのPR(プルリクエスト)画面、多くのコードエディタ、そしてLLM(大規模言語モデル)によるコードレビューでも、この不可視文字は見えません。

コードの「意味的な部分」だけを評価するため、視覚的に存在しない文字を攻撃として検出できないのです。これが「Glass(見えない)」と呼ばれる理由です。

GitHubに潜む「不可視文字攻撃」GlassWormとは|Linuxエンジニアが知るべきOSSサプライチェーンの脅威 - 解説

感染規模と影響範囲

2026年4月時点で確認されている被害規模は以下の通りです。

プラットフォーム/対象 確認された汚染数
GitHubリポジトリ 151件以上
ソフトウェアパッケージ全体 433件以上
対象プラットフォーム GitHub、npm、Open VSX
初発見 2025年10月(イスラエルのセキュリティ企業)

特にnpmはNode.jsのパッケージ管理システムとして世界中のWebシステムで利用されており、汚染パッケージが依存関係経由で伝播するサプライチェーン攻撃のリスクが極めて高い状況です。

Linuxエンジニアが今すぐできる対策

1. 外部コードの取り込みは必ずバイト単位で検証する

視覚的なコードレビューだけでは限界があります。以下のコマンドを使い、不可視文字が混入していないか確認することを習慣にしましょう。

# 不可視Unicode制御文字の確認(catで非表示文字を可視化) $ cat -A suspicious_file.py # hexdumpで生バイトを確認 $ hexdump -C suspicious_file.py | head -20 # 特定のUnicode制御文字ブロック(U+200B等)を検索 $ python3 -c " content = open('suspicious_file.py', encoding='utf-8').read() suspects = [hex(ord(c)) for c in content if ord(c) in range(0x200B, 0x200F) or ord(c) in range(0xFE00, 0xFE0F)] print(f'疑わしい文字: {suspects[:10]}') print(f'合計: {len(suspects)}件') "

2. 信頼できるソースからのみパッケージを取得する

npmやpipでパッケージをインストールする際は、以下を確認する習慣をつけましょう。

・公式ページと一致するパッケージ名か(typosquattingに注意)
・メンテナーが最近変わっていないか
・コントリビューターが突然増えていないか(攻撃者が紛れ込んでいる兆候)
・ダウンロード数が急に増加していないか(拡散後の指標)

3. CIパイプラインに静的解析ツールを組み込む

自動ビルド・デプロイを行うCI/CDパイプラインに、Unicode不可視文字の検出ツールを組み込むことを推奨します。

# GitHub Actionsでの例:怪しいUnicode文字を含むファイルを検出 - name: Check for invisible Unicode characters run: | python3 -c " import os, sys found = False for root, dirs, files in os.walk('.'): for fname in files: if fname.endswith(('.py', '.js', '.sh')): path = os.path.join(root, fname) content = open(path, encoding='utf-8', errors='ignore').read() suspects = [i for i, c in enumerate(content) if ord(c) in range(0x200B, 0x200F) or ord(c) in range(0xFE00, 0xFE0F) or ord(c) == 0x00AD] if suspects: print(f'[WARN] {path}: {len(suspects)}件の不可視文字') found = True sys.exit(1 if found else 0) "

4. LLMによるコードレビューを過信しない

ChatGPTやGitHub CopilotなどのAIツールでコードを確認しても、この種の攻撃は検出できません。AIレビューはあくまで補助ツールとして位置づけ、重要なコードの変更は人間による詳細なバイト検証を必ず行いましょう。

なぜこれがLinuxエンジニアにとって重大なのか

サーバー管理者・インフラエンジニアは、日常的にシェルスクリプト、Ansible、Pythonスクリプト、各種ミドルウェアをOSSから導入します。

15年以上サーバー運用に関わってきた経験から言えば、「公式GitHubのコードだから安全」という思い込みは今や通用しません。攻撃者はOSSの「信頼の連鎖」そのものを狙っているのです。

特にLinuxサーバー環境では、汚染されたスクリプト1本が実行されることで、以下のような被害につながる可能性があります。

・バックドアの設置(リモートアクセスを許可する設定が埋め込まれる)
・認証情報の窃取(/etc/passwdやSSH鍵へのアクセス)
・ランサムウェアの実行(ファイルの暗号化・削除)
・他のサーバーへの横移動(内部ネットワークへの侵入)

本記事のまとめ

項目 内容
攻撃名 GlassWorm(グラスワーム)
手口 Unicode不可視文字を使いコードに悪意ある処理を隠蔽
被害規模 151件以上のGitHubリポジトリ、433件以上のパッケージ
検出困難な理由 コードエディタ・LLMでは不可視文字が見えない
対策1 od -c/hexdump/python3でバイト単位検証
対策2 パッケージの出所・メンテナー変更を確認
対策3 CIパイプラインに不可視文字検出ツールを組み込む

OSSは現代のLinuxインフラに欠かせない存在ですが、「コードが公開されているから安全」という思い込みはすでに危険な時代になっています。

GlassWormはその象徴です。コードレビューの習慣に「バイト単位の検証」を加えることが、今のLinuxエンジニアに求められるセキュリティ意識です。

参考: 日経クロステック「不可視文字でマルウエア混入 GitHubなどで汚染拡大、開発基盤の信頼揺らぐ」(2026年4月掲載)

「Linuxが分かる」を実感できる学習を始めませんか?

セキュリティ意識の高いLinuxエンジニアになるには、コマンドの使い方だけでなく、現場でのリスク管理の「型」を身につけることが大切です。
ネットの切れ端の情報をコピペするだけでなく、現場で通用する安全なLinuxサーバー構築の「型」を体系的に身につけたい方へ、『Linuxサーバー構築入門マニュアル(図解60P)』を完全無料でプレゼントしています。

「独学の時間がもったいない」「プロから直接、現場の技術を最短で学びたい」という本気の方には、2日で実務レベルのスキルが身につく【初心者向けハンズオンセミナー】も開催しています。


暗記不要・1時間後にはサーバーが動く

3,100名以上が実践した「型」を無料で公開中

プロのエンジニアはコマンドを暗記していません。
「現場で使える型」を効率よく使いこなしているだけです。
その「型」を図解60Pにまとめた入門マニュアルを、完全無料でプレゼントしています。

登録10秒/合わなければ解除3秒 / 詳細はこちら

Linux無料マニュアル(図解60P) 名前とメールで30秒登録

宮崎 智広

この記事を書いた人

宮崎 智広(みやざき ともひろ)

株式会社イーネットマーキュリー代表。現役のLinuxサーバー管理者として15年以上の実務経験を持ち、これまでに累計3,100名以上のエンジニアを指導してきたLinux教育のプロフェッショナル。「現場で本当に使える技術」を体系的に伝えることをモットーに、実践型のLinuxセミナーの開催や無料マニュアルの配布を通じてLinux人材の育成に取り組んでいる。

趣味は、キャンプにカメラ、トラウト釣り。好きな食べ物は、ラーメンにお酒。休肝日が作れない、酒量を減らせないのが悩み。最近、ドラマ「フライトエンジェル」を観て涙腺が崩壊しました。


図解60pのLinux無料マニュアル
登録10秒/自動返信でDL
無料で受け取る