Security: predictable /tmp/nc_exit_status in postdetails - symlink clobber and TOCTOU
メンテナーはふだん 1 日以内に返信
関連するプルリクエストがすでにマージされています。
- #5035 @dgibbs64 による — マージ済み
評価
- 難易度
- 2/5
- 見積もり時間
- 1〜3時間
- 初心者へのやさしさ
- 84/100
調査の方向性
lgsm/modules/command_postdetails.sh の 63-65 行目付近から始め、termbin.com を呼び出し、/tmp/nc_exit_status に書き込み、それを読み戻すコマンドグループを調べてください。./gameserver pd を実行し、終了ステータスの処理が、予測可能な共有一時パスや書き込み/読み取りの競合状態に依存しなくなっていることを確認してください。
索引モデルが issue の本文から書いたものです。
説明
Security report (responsible disclosure)
Predictable /tmp/nc_exit_status file in postdetails — symlink clobber + write/read race
Affected: lgsm/modules/command_postdetails.sh:63-65
nc -w 10 termbin.com 9999
echo $? > /tmp/nc_exit_status
} | tr -d '\n\0')
nc_exit_status=$(cat /tmp/nc_exit_status)
Two problems:
- Fixed world-writable path with no
mktemp/O_EXCL/noclobber: a local attacker pre-creates/tmp/nc_exit_statusas a symlink to a victim-owned file (e.g.~/.bashrc). Next time the victim runs./gameserver pd, the redirect truncates the target with0\n— arbitrary file clobber as the victim user (CWE-59/CWE-377). - TOCTOU between write and read: an attacker can swap the file contents between line 63 and line 65 to corrupt the status logic; the file is also shared across concurrent LGSM instances.
Suggested fix
Drop the temp file entirely:
nc -w 10 termbin.com 9999
nc_exit_status=$?
…inside the same command group, or use mktemp under ${tmpdir} if the split is required.
Fix
Implemented in PR #5035: https://github.com/GameServerManagers/LinuxGSM/pull/5035 (merged into develop for v26.4.0).
- 主要言語
- Shell
- スター
- 4.9k
- フォーク
- 870
- 平均マージ
- 22時間 21分
- マージ済み PR(30日)
- 93
環境構築
このプロジェクトの開発コンテナを、あなたの GitHub アカウントでブラウザ上に起動します。
- Dockerfile・Docker Compose ファイルなし
- プルリクエストのテンプレートあり
- コントリビューションガイドを読む
はじめの一歩
- issue を最後まで読み、次にプロジェクトのコントリビューションガイドを読みます。
- 着手することを issue にコメントします — 二人が同じ作業をするのを防げます。
- リポジトリをフォークし、ブランチを切って変更します。
- issue 番号を参照したプルリクエストを送ります。
GameServerManagers/LinuxGSM のほかの issue
-
type: bug
難易度 3/5 半日 初心者へのやさしさ 42/100
GameServerManagers/LinuxGSM#5048 ·
メンテナーはふだん 1 日以内に返信
-
engine: unity3d engine: unreal4 Epic game: 7 Days to Die game: ARK: Survival Evolved game: Rust info: dependency type: feature
難易度 5/5 1週間以上 初心者へのやさしさ 8/100
GameServerManagers/LinuxGSM#5047 · コメント 1 件 ·
メンテナーはふだん 1 日以内に返信
-
[Bug]: libstdc++5:i386 is not available on Debian 13 or Ubuntu 26.04 (cod, cod2, coduo, mohaa)対応中かも このイシューにリンクされたプルリクエストがオープン中、またはマージ済みです。 オープンdistro: Debian distro: Ubuntu engine: idtech3 engine: iw2.0 engine: refractor game: Battlefield: Vietnam game: Call of Duty game: Call of Duty 2 game: Call of Duty: United Offensive game: Medal of Honor: Allied Assault info: dependency info: docker status: fixed in develop type: bug
難易度 3/5 半日 初心者へのやさしさ 42/100
GameServerManagers/LinuxGSM#5026 ·
メンテナーはふだん 1 日以内に返信
-
command: monitor type: feature
難易度 3/5 半日 初心者へのやさしさ 42/100
GameServerManagers/LinuxGSM#4995 ·
メンテナーはふだん 1 日以内に返信
-
feat(core): report a clear error when the configured branch doesn't exist対応中かも @dgibbs64 が 3 日前に担当しました。 オープンtype: feature
難易度 3/5 半日 初心者へのやさしさ 45/100
GameServerManagers/LinuxGSM#4994 ·
メンテナーはふだん 1 日以内に返信
GameServerManagers/LinuxGSM の issue をすべて見る
似ている issue
-
documentation needs-triage priority:medium
難易度 2/5 1〜3時間 初心者へのやさしさ 85/100
yeongseon/azure-functions-validation-python#546 ·
メンテナーはふだん 1 日以内に返信
-
help wanted new command
難易度 2/5 1〜3時間 初心者へのやさしさ 72/100
tldr-pages/tldr#24755 ·
メンテナーはふだん 1 日以内に返信
-
bug
難易度 2/5 1〜3時間 初心者へのやさしさ 88/100
elliotchance/vsql#244 ·
-
typos再び着手できるかも このイシューのプルリクエストはマージされずにクローズされました。 オープン
難易度 1/5 1〜3時間 初心者へのやさしさ 90/100
メンテナーはふだん 2 日以内に返信
-
afk-ok area:agents size:S
難易度 2/5 1〜3時間 初心者へのやさしさ 82/100
enorm-labs/event-junkie#3523 ·
メンテナーはふだん 1 日以内に返信