UnrealIRCd:実環境で悪用されるコマンドインジェクション(CVE-2026-114713)
labelタグのエスケープ不備により、UnrealIRCdの一般ユーザーがリンクされたネットワークでサーバーコマンドを実行できます。6.2.7.1で修正され、実環境で悪用されています。
要点
- UnrealIRCdのlabeled-responseモジュールのエスケープ不備により、一般ユーザーがサーバー権限で実行されるサーバー間コマンドを注入できます。UnrealIRCdは2026年11月7日に6.2.7.1とホットパッチを公開しました。
- モジュールを読み込むUnrealIRCd 6.0.0から6.2.7のすべてのサーバーが、2台以上のサーバーがリンクされたネットワークで影響を受けます。既定の設定はこのモジュールを読み込みます。
- CVEレコードはCVSS v3.1 8.6 Highと評価しています。CISAのKnown Exploited Vulnerabilities(KEV)カタログは2026年11月13日に追加し、Stakeholder-Specific Vulnerability Categorization(SSVC)レコードは悪用が進行中と記しています。
- 6.2.7.1へ更新するか、ベンダーのホットパッチを適用し、モジュールのバージョンを確認してください。SPAMFILTERによる回避策は「修正方法」を参照してください。
影響を受けますか?
次の条件がすべて当てはまる場合に影響を受けます。
- サーバーがUnrealIRCd 6.0.0から6.2.7、または保守終了した5.xを実行している。
labeled-responseモジュールが読み込まれている。既定のmodules.default.confはこれを読み込みます。- ネットワークに2台以上のサーバーがリンクされている。CVEはこの構成でサーバー権限によるコマンド実行を説明しています。
- 一般ユーザーが接続し、IRCv3メッセージタグを送信できる。
単一のリンクされていないサーバーは、注入された行をピアへ中継しないため、CVEが示すサーバー権限の経路は当てはまりません。それでも更新してください。6.2.7.1はIPアドレスの漏えい2件を含む他の8件の問題も修正します。
| ブランチ | 影響を受けるバージョン | 修正バージョン |
|---|---|---|
| 6.x | 6.0.0から6.2.7 | 6.2.7.1 |
| 5.x | すべてのリリース(2023-07-01に保守終了) | なし。6.2.7.1へ更新 |
実行中のバージョンとモジュールの状態を確認します。
# Version of the running server
./unrealircd version
# Is the module loaded, and at which version?
./unrealircd module-status | grep labeled-response
モジュールの行がパッチの状態を示します。labeled-response 5.0は未修正です。labeled-response 5.0-hot-patch-bundle-20261107またはlabeled-response 6.2.7.1は修正済みです。
修正方法
6.2.7.1へ更新するか、再起動せずにホットパッチを適用し、モジュールの行を確認します。
- ベンダーの一時的なSPAMFILTERをネットワークに適用します。各サーバーでIRCOpとして実行します:
SPAMFILTER add -regex T block - Invalid_label ^label=(?![^\r\n;\x20]*\z)。復帰文字、改行、セミコロン、空白を含むlabelをブロックします。すべてのサーバーが6.0.4以降の場合にのみ機能します。 - 各サーバーで
./unrealircd hot-patch bundle-20261107を実行します。最後の行が、パッチがインストールされサーバーが正しくリハッシュされたことを示す必要があります。 - または
./unrealircd upgradeで更新して再起動します。Windowsのユーザーはベンダーサイトから6.2.7.1をダウンロードします。 ./unrealircd module-status | grep labeled-responseで確認します。出力はホットパッチのバンドルまたは6.2.7.1を示す必要があります。- すべてのサーバーを修正したらSPAMFILTERを削除します。
保守終了した5.xでは、各サーバーの設定にblacklist-module "labeled-response";を追加し、リハッシュではなく再起動します。UnrealIRCd 5は2023-07-01に保守終了しており、修正は提供されません。
ホットパッチはリリースの9件の問題すべてを対象にします。失敗した場合、ベンダーのホットパッチFAQがディストリビューション更新とビルドのケースを説明しています。6.2.7.1への更新が代替手段です。
根本原因は何ですか?
サーバーはIRCv3のlabelメッセージタグを固定長バッファーにコピーし、その後、タグ、パラメーター、行を区切るデリミターをエスケープせずに応答へ整形していました。
UnrealIRCd 6.2.7では、lr_pre_command()がstrlcpyでタグの値をcurrentcmd.labelへコピーします。検証はlabeled_response_mtag_is_ok()だけです。値が空でないこと、クライアントがlabeled-responseとbatchの機能に対応していること、値が64バイト以下であることを確認します。
int lr_pre_command(Client *from, MessageTag *mtags, const char *buf)
{
lr_clear();
if (IsServer(from))
return 0;
for (; mtags; mtags = mtags->next)
{
if (!strcmp(mtags->name, "label") && mtags->value)
{
strlcpy(currentcmd.label, mtags->value, sizeof(currentcmd.label));
currentcmd.client = from;
break;
}
}
return 0;
}
gen_start_batch()はsnprintfで@label=%s :%s BATCH +%s labeled-responseへlabelを書き込みます。lr_post_command()も単一応答の経路で同じことをします。
snprintf(packet, sizeof(packet) - 3,
"@label=%s%s%s",
currentcmd.label,
more_tags ? ";" : " ",
more_tags ? currentcmd.firstbuf + 1 : currentcmd.firstbuf);
IRCのメッセージは、タグのセクション、ソース、コマンド、パラメーターで構成されます。デリミターは次のように働きます。
- セミコロンはタグを区切ります。
- 空白はタグのセクションを終了します。
- 復帰文字または改行はメッセージを終了します。
したがって、これらのバイトを含むlabelは、UnrealIRCdが構築する応答の構造を変えます。labelはメッセージタグライブラリを通じてACK応答にもコピーされます。このライブラリも同じ未エスケープの値を使います。
どのように悪用されますか?
- 攻撃者はIRCv3タグを送信できるクライアントで、ネットワーク上の任意のサーバーへ一般ユーザーとして接続します。
- 攻撃者は、タグの区切り、空白、改行のいずれかを含む
labelタグを付けたコマンドを送信します。検証は長さとクライアント機能だけを見るため、サーバーは受け入れます。 - UnrealIRCdはそのlabelを
BATCHの開始、ACK応答、またはそのコマンド用にバッファーした単一応答へコピーします。 - デリミターが生成されたテキストを追加のタグ、パラメーター、または2つ目のIRCメッセージに分割します。
- 応答がサーバーリンクを通過します。ピアは追加のメッセージを信頼されたリンクからのサーバー間コマンドとして解析し、サーバー権限で実行します。
脆弱性を説明するのに公開エクスプロイトコードは不要で、ここではリンクしていません。ベンダーは、一般ユーザーがKILLやGLINEなど多くの操作を行えると述べています。CISAのレコードは悪用が進行中と記しているため、この手法は使用されています。
攻撃の流れは?
一般ユーザーがlabelにタグと行のデリミターを入れ、UnrealIRCdがエスケープせずに応答へコピーし、ピアサーバーが注入されたコマンドを信頼されたサーバーとして実行します。
コマンドを送信"] --> B["モジュールがデリミターを
確認せずlabelをコピー"] B --> C["応答が@label=<値> ...
として構築される"] C --> D["デリミターが応答を追加タグや
2行目に分割する"] D --> E["応答がサーバーリンクを通過"] E --> F["ピアが注入された行を
サーバー権限で実行"] F --> G["KILL、GLINEなどの
サーバーコマンドが実行される"]
攻撃者に何ができますか?
一般ユーザーが、サーバーまたはIRCOpだけが実行すべきコマンドを実行できます。他のユーザーやチャンネルに対するKILLやGLINEも含まれます。
影響には次の条件がすべて必要です。
- サーバーが影響を受けるバージョンを実行し、
labeled-responseを読み込んでいる。 - ネットワークに2台以上のサーバーがリンクされ、ピアが注入された行をサーバーコマンドとして解析する。
- 攻撃者が一般ユーザーとして接続できる。サーバーのアカウントもオペレーター権限も不要です。
- 攻撃者がIRCv3タグを送信できる。生のソケットやスクリプトのクライアントで十分です。
ベンダーはこの問題をUnrealIRCdで15年間で最も深刻と説明しています。CISAのSSVCレコードは技術的影響をtotal、自動化可能性をyesとしています。CVEレコードは整合性への影響のみを評価しています(C:N/I:H/A:N)。可用性と機密性への影響は、攻撃者が実行するコマンドによります。
修正が機能する理由
修正は、空白、セミコロン、バックスラッシュ、復帰文字、改行のいずれかを含むlabelを拒否します。値が応答の構造を変えることはなくなりました。
修正コミット05b5f5fdc8bbはlabeled_response_mtag_is_ok()に検査を1つ追加します。
int labeled_response_mtag_is_ok(Client *client, const char *name, const char *value)
{
if (BadPtr(value))
return 0;
+ if (strpbrk(value, " ;\\\r\n"))
+ return 0;
+
if (IsServer(client))
return 1;
検査はサーバーの分岐より前に実行されるため、リンクされたサーバーから届くタグにも適用されます。currentcmd.labelを使うすべての応答経路は、タグ区切り、パラメーター区切り、改行を含まない値を受け取ります。これによりバッチの開始、ACK応答、単一応答バッファーが対象になります。
ベンダーは同じ変更を6.2.7.1とホットパッチのバンドルに含めました。このCVEに対する修正は完全です。リリースの他の8件は別の変更です。
侵害されたかどうかを確認するには?
侵害の指標は公開されていません。CISAは悪用が進行中としていますが、ベンダーもCISAも、このCVEのリクエストパターン、被害者数、ログ署名を公開していません。
まずパッチの状態を確認します。未修正のサーバーが露出そのものです。
./unrealircd module-status | grep labeled-response
./unrealircd version
次に、ベンダーが挙げる影響をサーバーログで確認します。
- IRCOpや既知のサーバーリンクが発行していないKILL、GLINE、SVS*などのサーバーコマンド。
- 同じ時刻のサーバーリンクの切断やプロトコルエラー。
- オペレーターが行っていない設定やバンリストの変更。
UnrealIRCdのログはビルドとログレベルによって異なり、ブロックされた試行は痕跡を残さない場合があります。SPAMFILTERはlabelをブロックしたときに対応を記録します。フィルターが有効だった場合は、そのブロックメッセージを検索してください。
年表
- 2026-11-04:修正コミット
05b5f5fdc8bbが作成される。 - 2026-11-07:UnrealIRCdが6.2.7.1とホットパッチ
bundle-20261107を15:00 UTCに公開する。 - 2026-11-08:CVEレコードが公開され、ベンダーがoss-securityメーリングリストへ勧告を投稿する。
- 2026-11-12:CISAのSSVCレコードが悪用の進行中を示す。
- 2026-11-13:CISAがCVE-2026-114713をKEVカタログへ追加する。期限は2026-11-16。
よくある質問
CVE-2026-114713は実環境で悪用されていますか?
はい。CISAは2026年11月13日にKEVカタログへ追加し、SSVCレコードは11月12日時点で悪用が進行中としています。ベンダーの勧告は影響を説明していますが、キャンペーンや被害者は挙げていません。
SPAMFILTERの回避策は問題を完全に修正しますか?
いいえ。ネットワーク上のすべてのサーバーが6.0.4以降の場合にのみ、重大なlabelインジェクションをブロックします。6.2.7.1の他の8件は修正せず、一時的なフィルターであってパッチではありません。
UnrealIRCd 5を実行しています。どうすればよいですか?
UnrealIRCd 5は2023-07-01に保守終了しており、重大な問題の影響を受けます。各サーバーにblacklist-module "labeled-response";を追加して再起動し、その後6.2.7.1へ移行してください。ベンダーは他の保守終了バージョンを確認しておらず、影響を受ける可能性が高いと述べています。
単一のサーバーは影響を受けますか?
CVEは2台以上のサーバーがリンクされたネットワークでのサーバー権限によるコマンド実行を説明しています。単一のリンクされていないサーバーは注入された行をピアへ中継しないため、その経路は当てはまりません。それでも更新してください。6.2.7.1は他の8件も修正します。
ホットパッチを確認するには?
./unrealircd module-status | grep labeled-responseを実行します。行はlabeled-response 5.0-hot-patch-bundle-20261107またはlabeled-response 6.2.7.1である必要があります。単なるlabeled-response 5.0はパッチ未適用を意味します。
参考資料
- CVE-2026-114713レコード、MITRE CNA、2026-11-08公開、CVSS v3.1 8.6、CWE-140、CISA ADPのSSVCブロック:https://www.cve.org/CVERecord?id=CVE-2026-114713(2026年11月14日確認)
- UnrealIRCd「UnrealIRCd 6.2.7.1 released and hot-patch to fix 9 security issues」、2026年11月7日、勧告本文と問題一覧:https://www.openwall.com/lists/oss-security/2026/11/08/1(2026年11月14日確認)
- UnrealIRCdニュース一覧、リリース日、38%の市場シェア、ホットパッチの手順:https://www.unrealircd.org/index/news(2026年11月14日確認)
- 修正コミット
05b5f5fdc8bb「Fix CRITICAL issue where anyone could execute commands as server/IRCOp」、2026年11月4日:https://github.com/unrealircd/unrealircd/commit/05b5f5fdc8bb(2026年11月14日確認) - UnrealIRCd 6.2.7のソース、
src/modules/labeled-response.cの未検証のlabelコピーと応答構築:https://github.com/unrealircd/unrealircd/blob/59546a20f6c9b0dae1646727acf74b4b744e9b09/src/modules/labeled-response.c(2026年11月14日確認) - UnrealIRCdの既定モジュール一覧、
labeled-responseが既定で読み込まれる:https://github.com/unrealircd/unrealircd/blob/unreal60_dev/doc/conf/modules.default.conf(2026年11月14日確認) - CISA Known Exploited Vulnerabilitiesカタログ、CVE-2026-114713は2026-11-13追加、期限2026-11-16:https://www.cisa.gov/sites/default/files/feeds/known_exploited_vulnerabilities.json(2026年11月14日確認)