準備とブラケット。(統率者メモ 2026/07/10)

ブルーム張ろう統率者デッキ『リスの悪ふざけ』から、ほとんどのパーツを取り去り、「無限ルートが幾重にも存在する」レベルになった筆者の統率者デッキの中で頭一つ抜けて「殺意マシマシ」のデッキ。

以下、デッキリスト。太字はデッキに残っていたもの。見て分かるように、土地とコンボになるもの以外は差し替えています。

🌟 統率者

  • 《リスの将軍、サワギバ/Chatterfang, Squirrel General(BLC)》

🌲 クリーチャー

  • 《大釜の使い魔/Cauldron Familiar(ELD)》
  • 《ズーラポートの殺し屋/Zulaport Cutthroat(BLC)》
  • 《威名のソルジャー、セフィロス/Sephiroth, Fabled SOLDIER(FIN)》
  • 《無情な無頼漢/Ruthless Knave(XLN)》
  • 《実験的な菓子職人/Experimental Confectioner(WOE)》
  • 《悲哀の徘徊者/Woe Strider(BLC)》
  • 《巣穴の魂商人/Warren Soultrader(MH3)》
  • 《無慈悲な略奪者/Pitiless Plunderer(RIX)》
  • 《無情な屍技術師/Ruthless Technomancer(NEC)》
  • 《ヘイゼルの醸造主/Hazel's Brewmaster(BLC)》
  • 《溜め込む親玉/Hoarding Broodlord(MOM)》
  • 《エルフの神秘家/Elvish Mystic(TSR)》
  • 《金のガチョウ/Gilded Goose(BLC)》
  • 《ラノワールのエルフ/Llanowar Elves(_BR)》
  • 《極楽鳥/Birds of Paradise(RVR)》
  • 《森を護る者/Sylvan Safekeeper(MH3)》
  • 《茨越えの餌あさり/Thornvault Forager(BLB)》
  • 《献身のドルイド/Devoted Druid(SHA)》
  • 《裕福な亭主/Prosperous Innkeeper(BLC)》
  • 《小走り樫/Scurry Oak(MH2)》
  • 《不屈の補給兵/Tireless Provisioner(BLC)》
  • 《リスの小走り/Scurry of Squirrels(BLC)》
  • 《ペレグリン・トゥック/Peregrin Took(LTR)》
  • 《秘密を知るもの、トスキ/Toski, Bearer of Secrets(BLC)》
  • 《終わりなき巣網のアラスタ/Arasta of the Endless Web(BLC)》
  • 《永久の証人/Timeless Witness(MH2)》
  • 《深き森の隠遁者/Deep Forest Hermit(BLC)》
  • 《根花のヘイゼル/Hazel of the Rootbloom(BLC)》
  • 《歩行バリスタ/Walking Ballista(AER)》
  • 《アカデミーの整備士/Academy Manufactor(BLC)》
  • 《カルドーサの鍛冶場主/Kuldotha Forgemaster(SOM)》
  • 《マイアの戦闘球/Myr Battlesphere(TDC)》
  • 《悲哀の名誉教授 / Emeritus of Woe》 ★IN!
  • 《墓場の研究者 / Grave Researcher》 ★IN!

⚡ インスタント

  • 《命取りの論争/Deadly Dispute(BLC)》
  • 《切断マジック/Saw in Half(BLC)》
  • 《新緑の命令/Verdant Command(MH2)》
  • 《蓄え放題/Cache Grab(BLB)》
  • 《召喚の調べ/Chord of Calling(M15)》
  • 《暗殺者の戦利品/Assassin's Trophy(ACR)》
  • 《ウィンドグレイスの裁き/Windgrace's Judgment(BLC)》

📜 ソーサリー

  • 《群がり庭の虐殺/Swarmyard Massacre(BLC)》
  • 《根鋳造の弟子入り/Rootcast Apprenticeship(BLC)》
  • 《大渦の脈動/Maelstrom Pulse(BLC)》
  • 《Too Evil to Stay Dead / 死なせておくには邪悪が過ぎる》 ★IN!

🍇 エンチャント

  • 《清掃人の才能/Scavenger's Talent(BLB)》
  • 《アクロゾズの約定/Promise of Aclazotz(LCC)》
  • 《想起の拠点/Bastion of Remembrance(BLC)》
  • 《美食家の才能/Gourmand's Talent(BLC)》
  • 《パンくずの道標/Trail of Crumbs(ELD)》
  • 《殺しのサービス/Killer Service(NCC)》
  • 《イトリモクの成長儀式/Growing Rites of Itlimoc(XLN)》
  • 《似通った生命/Parallel Lives(WOT)》
  • 《陰湿な根/Insidious Roots(MKM)》

⚙️ アーティファクト

  • 《太陽の指輪/Sol Ring(BLC)》
  • 《恐竜の遺伝子/Dino DNA(REX)》
  • 《魔女のかまど/Witch's Oven(ELD)》
  • 《頭蓋骨絞め/Skullclamp(BLC)》
  • 《アシュノッドの供犠台/Ashnod's Altar(4ED)》
  • 《ヌカコーラ自動販売機/Nuka-Cola Vending Machine(PIP)》
  • 《前兆の時計/Clock of Omens(5DN)》
  • 《旗印/Coat of Arms(EXO)》
  • 《囀り吐き/Chitterspitter(BLC)》

🗺️ プレインズウォーカー / バトル

  • 《飢餓の潮流、グリスト/Grist, the Hunger Tide(MH2)》
  • 《イコリアへの侵攻/Invasion of Ikoria(MOM)》

⛰️ 土地

  • 《沼/Swamp》 ×7
  • 《森/Forest》 ×8
  • 《見捨てられたぬかるみ、竹沼/Takenuma, Abandoned Mire(NEO)》
  • 《ゴルガリの腐敗農場/Golgari Rot Farm(RAV)》
  • 《疾病の神殿/Temple of Malady(BLC)》
  • 《森林の墓地/Woodland Cemetery(BLC)》
  • 《黄昏のぬかるみ/Twilight Mire(BLC)》
  • 《ラノワールの荒原/Llanowar Wastes(BLC)》
  • 《緑ばんだ沼/Viridescent Bog(BLC)》
  • 《汚れた森/Tainted Wood(BLC)》
  • 《草むした墓/Overgrown Tomb(RAV)》
  • 《屍花の交錯/Necroblossom Snarl(BLC)》
  • 《風切る泥沼/Hissing Quagmire(OGW)》
  • 《眠らずの小屋/Restless Cottage(WOE)》
  • **《不気味な辺境林/Grim Backwoods(BLC)
  • 《群がりの庭/Swarmyard(BLC)》
  • **《風変わりな果樹園/Exotic Orchard(BLC)
  • 《祖先の道/Path of Ancestry(BLC)》
  • 《統率の塔/Command Tower(BLC)》
  • 《新緑の地下墓地/Verdant Catacombs(ZEN)》
  • 《成長の揺り篭、ヤヴィマヤ/Yavimaya, Cradle of Growth(MH2)》

OUT

  • 骨術師の達人
  • 悪魔の職工 (割と高い金で買いましたが……!)
        - 2つともタイムラグが発生するから
  • 発掘
        - コスト3までしか拾えないため。もっといいカードを見つけた。

IN

悲哀の名誉教授 / Emeritus of Woe (3)(黒)

クリーチャー ─ 吸血鬼(Vampire) 邪術師(Warlock)
このクリーチャーは準備済状態で戦場に出る。(準備済状態である間、あなたはこれの呪文のコピーを唱えてもよい。そうしたら、これを未準備状態にする。)
あなたの終了ステップの開始時に、そのターンに2体以上のクリーチャーが死亡していた場合、このクリーチャーは準備済状態になる。
//準備//
悪魔の教示者 / Demonic Tutor
(1)(黒)
ソーサリー
あなたのライブラリーからカード1枚を探し、そのカードをあなたの手札に加える。その後、ライブラリーを切り直す。
5/4

なんと「悪魔の教示者」内蔵。しかも、2体以上死ぬというのは「毎ターン使えるも同義」です。

墓場の研究者 / Grave Researcher (2)(黒)

クリーチャー ─ トロール(Troll) 邪術師(Warlock)
あなたのアップキープの開始時に、諜報1を行う。その後、あなたの墓地に3枚以上のクリーチャー・カードがあるなら、このクリーチャーは準備済状態になる。(準備済状態である場合、あなたはこれの呪文のコピーを唱えてもよい。そうしたら、これを未準備状態にする。)
//準備//
再活性 / Reanimate
(黒)
ソーサリー
墓地にあるクリーチャー・カード1枚を対象とする。それをあなたのコントロール下で戦場に出す。そのカードのマナ総量に等しい点数のライフを失う。
3/3

同じく「再活性」内蔵。これも「毎ターン使える」としか書かれていません。サワギバで除去したクリーチャーをこちらのものに引き込めます。

Too Evil to Stay Dead / 死なせておくには邪悪が過ぎる (2)(黒)

ソーサリー
チームワーク4(この呪文を唱えるための追加コストとして、あなたがコントロールしている望む数のクリーチャーを、パワーの合計が4以上になるように選んでタップしてもよい。)
あなたの墓地にありマナ総量が4以下であるクリーチャー・カード1枚を対象とする。この呪文がチームワークを用いて唱えられたなら、代わりに、あなたの墓地にあるクリーチャー・カード1枚を対象とする。それを戦場に戻す。

マーベル・スーパーヒーローズからの出演。発掘で手が届かなかった「4」に触ることができ、更にチームワークによって除去された(或いは文字通り真っ二つにした溜め込む親玉を拾えます)

自己申告

そもそもこれは手札の巡りで3キルが発生します。サーチも多め。今回の調整により「ほぼ毎ターン使える悪魔の教示者と再活性」が手に入ったので、ゲームチェンジャーカードを入れなくとも3の上位や4には入れるレベルだと思っています。

準備とパラドックス。(統率者メモ 2026/07/09)

自分の統率者デッキの中で「全体的なパワーは抑えめ」ながらも非常に気に入っているのがこちらの統率者デッキ、

ドクター・フー統率者デッキの『パラドックスパワー』。

統率者 (2枚)

  • 《13代目ドクター/The Thirteenth Doctor(WHO)》
  • 《ヤズミン・カーン/Yasmin Khan(WHO)》

The Thirteenth Doctor / 13代目ドクター (1)(緑)(青)
伝説のクリーチャー — タイムロード(Time Lord) ドクター(Doctor)

パラドックス ― あなたがあなたの手札以外から呪文1つを唱えるたび、クリーチャー1体を対象とする。それの上に+1/+1カウンター1個を置く。
チーム・ターディス ― あなたの終了ステップの開始時に、あなたがコントロールしていてカウンターが置かれている各クリーチャーをそれぞれアンタップする。
2/2

Yasmin Khan / ヤズミン・カーン (3)(赤)
伝説のクリーチャー — 人間(Human) 探偵(Detective)
(T):あなたのライブラリーの一番上にあるカード1枚を追放する。次のあなたの終了ステップまで、それをプレイしてもよい。
ドクターのコンパニオン(もう一方がドクター(Doctor)であるなら、あなたは統率者2体を使用できる。)
3/3

を軸にした「手札以外で唱えさえすれば何かしらのイベントが起きる」カードを中心に構成されています。以下、リスト。(太字がオリジナル

クリーチャー (21枚)

  • 《熱心な秘儀術師、ハルダン/Haldan, Avid Arcanist(C20)》
  • 《ダニー・ピンク/Danny Pink(WHO)》
  • 《オペレーション・ダブル、オスグッド/Osgood, Operation Double(WHO)》
  • 《大界の回収者/Vastlands Scavenger(SOS)》
  • 《一足飛びの司令塔/Striding Shotcaller(SOC)》
  • 《再鍛の刃、ラエリア/Laelia, the Blade Reforged(MH3)》
  • 《火星の女王、イラクサ/Iraxxa, Empress of Mars(WHO)》
  • 《骨集めのドラコサウルス/Bonehoard Dracosaur(LCI)》
  • 《燃え盛るティラノサウルス/Flaming Tyrannosaurus(WHO)》
  • 《探索するドルイド/Questing Druid(WOE)》
  • 《グレアム・オブライエン/Graham O'Brien(WHO)》
  • 《義理堅いルパリ族、カルバニスタ/Karvanista, Loyal Lupari(WHO)》
  • 《秘儀を運ぶもの、パコ/Pako, Arcane Retriever(C20)》
  • 《戦慄の狼の伝令官、ファルドーン/Faldorn, Dread Wolf Herald(CLB)》
  • 《氷刻み、スヴェラ/Svella, Ice Shaper(KHM)》
  • 《自然の怒りのタイタン、ウーロ/Uro, Titan of Nature's Wrath(THB)》
  • 《スパイダーマン2099/Spider-Man 2099》
  • 《フロストフェアのチョウチンアンコウ/Frost Fair Lure Fish(WHO)》
  • 《月の雛/Lunar Hatchling(WHO)》
  • 《不死者、ミー/Me, the Immortal(WHO)》
  • 《のたうつ嵐、ザイリス/Xyris, the Writhing Storm(DMC)》

インスタント (9枚)

  • 《熟慮/Think Twice(WHO)》
  • 《光輝の高揚/Surge of Brilliance(WHO)》
  • 《サイバーへの変換/Cyber Conversion(WHO)》
  • 《混沌のねじれ/Chaos Warp(WHO)》
  • 《英雄的介入/Heroic Intervention(WHO)》
  • 《活性の力/Force of Vigor(OTP)》
  • 《成長のらせん/Growth Spiral(WHO)》
  • 《感電の反復/Galvanic Iteration(MID)》
  • 《マグマ・オパス/Magma Opus(STX)》

ソーサリー (16枚)

  • 《思案/Ponder(WHO)》
  • 《定業/Preordain(WHO)》
  • 《量子ずれ/Quantum Misalignment(WHO)》
  • 《アールンドの天啓/Alrund's Epiphany(KHM)》
  • 《信仰無き物あさり/Faithless Looting(DMC)》
  • 《一攫千金/Strike It Rich(MH2)》
  • 《迫りくるフラックス/Impending Flux(WHO)》
  • 《タイム・ボルテックスの中へ/Into the Time Vortex(WHO)》
  • 《冒涜の行動/Blasphemous Act(WHO)》
  • 《三顧の礼/Three Visits(WHO)》
  • 《遥か見/Farseek(WHO)》
  • 《耕作/Cultivate(WHO)》
  • 《明日への探索/Search for Tomorrow(WHO)》
  • 《表現の反復/Expressive Iteration(BRC)》
  • 《間の悪い爆発/Ill-Timed Explosion(MKM)》
  • 《倒壊と再建/Wreck and Rebuild(WHO)》

エンチャント (6枚)

  • 《プロパガンダ/Propaganda(WHO)》
  • 《パイロットにする/Become the Pilot(WHO)》
  • 《鏡割りの寓話/Fable of the Mirror-Breaker(NEO)》
  • 《過去へ帰還せよ/Return the Past(WHO)》
  • 《花の絨毯/Carpet of Flowers(WHO)》
  • 《中はとても広い/Bigger on the Inside(WHO)》

アーティファクト (8枚)

  • 《太陽の指輪/Sol Ring(WHO)》
  • 《秘儀の印鑑/Arcane Signet(WHO)》
  • 《ターディス/TARDIS(WHO)》
  • 《衝動のタリスマン/Talisman of Impulse(WHO)》
  • 《好奇のタリスマン/Talisman of Curiosity(WHO)》
  • 《レーザー・スクリュードライバー/Laser Screwdriver(WHO)》
  • 《コンフェッション・ダイアル/Confession Dial(WHO)》
  • 《打ち砕かれた尖塔、オゾリス/Ozolith, the Shattered Spire(MOM)》

プレインズウォーカー (1枚)

  • 《反逆の先導者、チャンドラ/Chandra, Torch of Defiance(KLD)》

土地 (37枚)

  • 《島/Island(WHO)》 2
  • 《山/Mountain(WHO)》 2
  • 《森/Forest(WHO)》 4
  • 《隠された火山/Hidden Volcano(LCI)》
  • 《トレンザロアの時計塔/Trenzalore Clocktower(WHO)》
  • 《凍沸の交錯/Frostboil Snarl(WHO)》
  • 《焦熱島嶼域/Fiery Islet(WHO)》
  • 《眠らずの尖塔/Restless Spire(WOE)》
  • 《嵐削りの海岸/Stormcarved Coast(WHO)》
  • 《轟音の滝/Thundering Falls(MKM)》
  • 《商業地区/Commercial District(MKM)》
  • 《燃えがらの林間地/Cinder Glade(WHO)》
  • 《根縛りの岩山/Rootbound Crag(WHO)》
  • 《落石の谷間/Rockfall Vale(WHO)》
  • 《獲物道/Game Trail(WHO)》
  • 《隠れた茂み/Sheltered Thicket(WHO)》
  • 《夢根の滝/Dreamroot Cascade(WHO)》
  • 《迷路庭園/Hedge Maze(MKM)》
  • 《繁殖池/Breeding Pool(DIS)》
  • 《冠水樹林帯/Waterlogged Grove(WHO)》
  • 《神秘の神殿/Temple of Mystery(WHO)》
  • 《蔦明の交錯/Vineglimmer Snarl(WHO)》
  • 《ケトリアのトライオーム/Ketria Triome(IKO)》
  • 《祖先の道/Path of Ancestry(WHO)》
  • 《風変わりな果樹園/Exotic Orchard(WHO)》
  • 《開拓地の野営地/Frontier Bivouac(WHO)》
  • 《ギャリフレイ評議堂/Gallifrey Council Chamber(WHO)》
  • 《統率の塔/Command Tower(WHO)》
  • 《樹木茂る山麓/Wooded Foothills(ONS)》
  • 《僻地の灯台/Desolate Lighthouse(WHO)》
  • 《有望な鉱脈/Promising Vein(LCI)》
  • 《不吉な墓地/Ominous Cemetery(WHO)》

今回の調整枠

この「準備呪文」の2つ。

Striding Shotcaller / 一足飛びの司令塔 (緑)(青)
クリーチャー — トロール(Troll) ドルイド(Druid)
到達
あなたがコントロールしている1体以上のクリーチャーがプレイヤー1人に戦闘ダメージをを与えるたび、このクリーチャーは準備済状態になる。(準備済状態である間、あなたはこれの呪文のコピーを唱えてもよい。そうしたら、これを未準備状態にする。)
//準備//
作戦通り/Run the Play
(X)(緑)(青)
ソーサリー
クリーチャー最大X体を対象とする。それらの上にそれぞれ+1/+1カウンター1個を置く。ターン終了時まで、それらのクリーチャーは飛行を得る。カード1枚を引く。
0/4

大界の回収者 / Vastlands Scavenger (1)(緑)(緑)
クリーチャー ─ 熊(Bear) ドルイド(Druid)
接死
このクリーチャーは準備済状態で戦場に出る。(準備済状態である間、あなたはこれの呪文のコピーを唱えてもよい。そうしたら、これを未準備状態にする。)
//準備//
生命への束縛 / Bind to Life
(4)(緑)
インスタント
カード7枚を切削する。その後、その中からクリーチャー・カード1枚を戦場に出す。
4/4

この「準備」によって生まれる呪文は追放領域に置かれます。つまり「手札以外から呪文を唱える」がしっかり誘発。

  • 一足飛びの司令塔
    • 本デッキのドローエンジン+13台目ドクターのチーム・ターディスの柱。
  • 大界の回収者
    • コスト踏み倒しのみならず、墓地を7枚も肥やしてフラッシュバックや脱出の糧となります。

このデッキ、ユニバースビヨンド出身のデッキでありながら

  • 衝動的ドロー
  • フラッシュバック
  • 預言
  • 出来事
  • 続唱
  • (今回の)準備

などのデッキに自然に組み込めるのが強み。それさえ達成できれば別にいいので、本デッキはブラケット2レベルに落として

  • コンボはないがシナジーはある
  • 青系なのに打ち消しなし
  • ほどほどに遊べる

として、なんだかんだで2年半ぐらいは崩さず調整を続けているお気に入りです。

Linuxエディタ「nano早見表」

論争があるのは知っていますが、それでも、これを紹介する理由があります。

「複数行の選択を可能に出来た」

という今更ながらの感動があったので。

ファイル操作

操作キー
保存Ctrl + O
Enterで保存確定Enter
終了Ctrl + X

カーソル移動

操作キー
上・下・左・右矢印キー
行頭へ移動Ctrl + A
行末へ移動Ctrl + E
1ページ上Ctrl + Y
1ページ下Ctrl + V

検索・置換

操作キー
検索Ctrl + W
次を検索Alt + W
置換Ctrl + \

コピー・切り取り・貼り付け

1行だけ操作

操作キー
行を切り取り(削除)Ctrl + K
貼り付けCtrl + U

複数行を操作

  1. 選択開始位置へ移動
  2. EscA(または Ctrl + ^)でマーク開始
  3. カーソルを移動して範囲選択
  4. 以下を実行
操作キー
選択範囲を切り取り(削除)Ctrl + K
選択範囲をコピーAlt + 6
貼り付けCtrl + U

Undo / Redo

操作キー
元に戻すAlt + U
やり直しAlt + E

その他便利なコマンド

操作キー
ヘルプCtrl + G
カーソル位置表示Ctrl + C
指定行へジャンプCtrl + _
コマンド一覧表示Ctrl + G

Linux端末でよく使うキー

^ = Ctrl

M- = Alt(Metaキー)

Altキーが効かない端末では、

Esc を押して離し、その後キーを押す

例:

  • EscA = Alt + A
  • EscU = Alt + U
  • Esc6 = Alt + 6

よく使う操作の流れ

複数行を削除

Esc → A
↓で範囲選択
Ctrl + K

複数行をコピー

Esc → A
↓で範囲選択
Alt + 6
Ctrl + U

検索・置換

Ctrl + W
検索文字入力
Enter

Ctrl + \
検索文字
Enter
置換文字
Enter

教材価値の高いログ:なぜ攻撃者は最初にWordPressを探すのか

筆者に限らず、Webサーバを運用すると必ずと言っていいほど見かけるアクセスがあります。

GET /wp-login.php
GET /wp-admin/
GET /wp-config.php
GET /config.php
GET /.env

言わずと知れたWordpress/laravel管理画面のURLやDB情報などが飛び交う重要ファイル。

「うちはWordPressじゃないんだけど?」

と思う人も多いでしょう。実際、筆者のVPSもWordPressを詰んでいません。(公開しているWordpressは専用サービスを借りています)

それでも毎日のように飛んできます。では、攻撃者は何を考えて「見たらアクセスするのが礼儀」レベルでアクセスしてきているのでしょうか。

インターネットは「総当たり」の世界

多くの人は、「誰かが自分のサイトを狙っている」と考えがちです。

しかし実際には逆です。攻撃者は運営元をまず見ません。彼らが見ているのは

「世界中に存在する何千万台ものWebサーバ」

です。ですから

WordPress
Laravel
Node.js
Next.js
Joomla
Drupal

といった利用者が非常に多い技術から順番に試します。

WordPressが最優先になる理由

WordPressは世界中のWebサイトのかなりの割合を占めています。つまり、攻撃者は

「WordPressだけ狙う」

だけでも膨大な成果が期待できます。さらに

  • 古いプラグイン
  • 更新されていないテーマ
  • 初期設定のままの管理画面

なども珍しくありません。攻撃者から見ると、WordPressは「狙う価値が非常に高い標的」です。

そして、Wordpressは

/wp-config.php
/wp-config-sample.php
/wp-login.php

など、「アキレス腱となるファイル」がほぼ決まっているという「やりやすい」材料です。

実際のログ

以下は実際に筆者のサーバへ届いたログを、IPアドレスやホスト名をダミー化したものです。

なぜ、この手の攻撃者情報を晒さないかというと「テロリストに名前を与える必要はない」という哲学と、「誰がやったかは問題ではない。私が興味があるのは何をしたかである」という考えです。

[Mon Jul 06 01:06:34.509624 2026] [security2:error] [pid 111111:tid 222222222222222] [client 192.0.2.1:40372] [client 192.0.2.1] ModSecurity: Warning. Matched phrase "config.php" at REQUEST_FILENAME. [file "/usr/share/modsecurity-crs/coreruleset/rules/REQUEST-930-APPLICATION-ATTACK-LFI.conf"] [line "150"] [id "930130"] [msg "Restricted File Access Attempt"] [data "Matched Data: config.php found within REQUEST_FILENAME: /config.php"] [severity "CRITICAL"] [ver "OWASP_CRS/4.28.0"] [tag "application-multi"] [tag "language-multi"] [tag "platform-multi"] [tag "attack-lfi"] [tag "paranoia-level/1"] [tag "OWASP_CRS"] [tag "OWASP_CRS/ATTACK-LFI"] [tag "capec/1000/255/153/126"] [hostname "example.com"] [uri "/config.php"] [unique_id "DUMMY_UNIQUE_ID_000001AAAAA"]
[Mon Jul 06 01:06:34.510601 2026] [security2:error] [pid 111111:tid 222222222222222] [client 192.0.2.1:40372] [client 192.0.2.1] ModSecurity: Access denied with code 403 (phase 2). Operator GE matched 5 at TX:blocking_inbound_anomaly_score. [file "/usr/share/modsecurity-crs/coreruleset/rules/REQUEST-949-BLOCKING-EVALUATION.conf"] [line "233"] [id "949110"] [msg "Inbound Anomaly Score Exceeded (Total Score: 5)"] [ver "OWASP_CRS/4.28.0"] [tag "anomaly-evaluation"] [tag "OWASP_CRS"] [hostname "example.com"] [uri "/config.php"] [unique_id "DUMMY_UNIQUE_ID_000001AAAAA"]
[Mon Jul 06 01:06:34.511256 2026] [security2:error] [pid 111111:tid 222222222222222] [client 192.0.2.1:40372] [client 192.0.2.1] ModSecurity: Warning. Unconditional match in SecAction. [file "/usr/share/modsecurity-crs/coreruleset/rules/RESPONSE-980-CORRELATION.conf"] [line "119"] [id "980170"] [msg "Anomaly Scores: (Inbound Scores: blocking=5, detection=5, per_pl=5-0-0-0, threshold=5) - (Outbound Scores: blocking=0, detection=0, per_pl=0-0-0-0, threshold=4) - (SQLI=0, XSS=0, RFI=0, LFI=5, RCE=0, PHPI=0, HTTP=0, SESS=0, COMBINED_SCORE=5)"] [ver "OWASP_CRS/4.28.0"] [tag "reporting"] [tag "OWASP_CRS"] [hostname "example.com"] [uri "/__jailhouse_lock/topgear.html"] [unique_id "DUMMY_UNIQUE_ID_000001AAAAA"]
[Mon Jul 06 01:06:40.426322 2026] [security2:error] [pid 333333:tid 444444444444444] [client 192.0.2.1:35882] [client 192.0.2.1] ModSecurity: Warning. Matched phrase "wp-config-" at REQUEST_FILENAME. [file "/usr/share/modsecurity-crs/coreruleset/rules/REQUEST-930-APPLICATION-ATTACK-LFI.conf"] [line "150"] [id "930130"] [msg "Restricted File Access Attempt"] [data "Matched Data: wp-config- found within REQUEST_FILENAME: /wp-config-sample.php"] [severity "CRITICAL"] [ver "OWASP_CRS/4.28.0"] [tag "application-multi"] [tag "language-multi"] [tag "platform-multi"] [tag "attack-lfi"] [tag "paranoia-level/1"] [tag "OWASP_CRS"] [tag "OWASP_CRS/ATTACK-LFI"] [tag "capec/1000/255/153/126"] [hostname "example.com"] [uri "/wp-config-sample.php"] [unique_id "DUMMY_UNIQUE_ID_000002BBBBB"]
[Mon Jul 06 01:06:40.427672 2026] [security2:error] [pid 333333:tid 444444444444444] [client 192.0.2.1:35882] [client 192.0.2.1] ModSecurity: Access denied with code 403 (phase 2). Operator GE matched 5 at TX:blocking_inbound_anomaly_score. [file "/usr/share/modsecurity-crs/coreruleset/rules/REQUEST-949-BLOCKING-EVALUATION.conf"] [line "233"] [id "949110"] [msg "Inbound Anomaly Score Exceeded (Total Score: 5)"] [ver "OWASP_CRS/4.28.0"] [tag "anomaly-evaluation"] [tag "OWASP_CRS"] [hostname "example.com"] [uri "/wp-config-sample.php"] [unique_id "DUMMY_UNIQUE_ID_000002BBBBB"]
[Mon Jul 06 01:06:40.428290 2026] [security2:error] [pid 333333:tid 444444444444444] [client 192.0.2.1:35882] [client 192.0.2.1] ModSecurity: Warning. Unconditional match in SecAction. [file "/usr/share/modsecurity-crs/coreruleset/rules/RESPONSE-980-CORRELATION.conf"] [line "119"] [id "980170"] [msg "Anomaly Scores: (Inbound Scores: blocking=5, detection=5, per_pl=5-0-0-0, threshold=5) - (Outbound Scores: blocking=0, detection=0, per_pl=0-0-0-0, threshold=4) - (SQLI=0, XSS=0, RFI=0, LFI=5, RCE=0, PHPI=0, HTTP=0, SESS=0, COMBINED_SCORE=5)"] [ver "OWASP_CRS/4.28.0"] [tag "reporting"] [tag "OWASP_CRS"] [hostname "example.com"] [uri "/__jailhouse_lock/topgear.html"] [unique_id "DUMMY_UNIQUE_ID_000002BBBBB"]

要約するとこんな形です。

[client 192.0.2.1]
GET /config.php

REQUEST-930
Restricted File Access Attempt

↓

REQUEST-949
Inbound Anomaly Score Exceeded

↓

HTTP 403

数秒後、

GET /wp-config-sample.php

REQUEST-930
Restricted File Access Attempt

↓

REQUEST-949
Inbound Anomaly Score Exceeded

↓

HTTP 403

となりました。

このログから読み取れること

筆者がこのログに着目したのは

config.php
↓

wp-config-sample.php

という順番です。これは、

  1. 「PHPかな?」
  2. 「WordPressかな?」

という判定ルーチンそのもの。人間ならこの順番にはなりません。典型的な自動スキャナです。

さらに注目したい点

以前紹介した、ModSecurityのカスタム設定。

HostヘッダーがIPアドレスなら遮断

Hostヘッダーが存在しなければ遮断

というカスタムルール。今回は一切反応しませんでした。

つまり攻撃者は

  • DNSで名前解決
  • 正しいHostヘッダーを付与
  • 普通のHTTPリクエスト

を組み立てています。IPアドレスへ適当に投げるだけのBOTより一段階上です。

そのためにModSecurityは通常の検査を実施し、

REQUEST-930
↓
REQUEST-949
↓
403

という流れで処理しています。

筆者が「教材」と述べた面白い理由

このログには、

OWASP CRSの典型的な動きがそのまま残っています。

CRS:930
危険なリクエストを検知
↓
CRS:949
異常スコアが閾値を超えた
↓
処理:403アクセス拒否

つまり、「ModSecurityがどのように判断して遮断するのか」を学ぶ教材として非常に分かりやすいログです。

そして一番重要なこと

今回の攻撃は、筆者個人を狙ったものではありません。世界中のWordPressサイトを探す途中で、たまたま筆者のLAMPサーバへ届いただけです。(何せ、動いているのは全く別のCMSです)

しかし、その「たまたま」からでも学べることはたくさんあります。

ログには、

  • 攻撃者が何を探しているのか
  • どんな順番で調べるのか
  • WAFがどこで判断したのか

がすべて残っています。

サーバ管理者にとってログは「嫌なもの」ではなく、攻撃者の思考を無料で教えてくれる教材です。

撤回:コンボ。(統率者メモ 2026/07/06)

このデッキから2ヶ月ほど経ち、デッキを見直しました。

ブラケット3。なので、

  • ゲームチェンジャーカードは3枚まで。
  • サーチカード1枚だけ(尤も、これが一番警戒される《けちな贈り物》ですが
  • 追加ターンなし
  • 無限コンボは上述したように抜きました。

を守っている形。

リスト

  • 元のカード
  • 別エキスパンションの差し替えカード

統率者

  • 《悟った喪失者、ナーセット/Narset, Enlightened Exile(MAT)》

《悟った喪失者、ナーセット/Narset, Enlightened Exile(MAT)》
(1)(青)(赤)(白)
伝説のクリーチャー — 人間(Human) モンク(Monk)
あなたがコントロールしているすべてのクリーチャーは果敢を持つ。
悟った喪失者、ナーセットが攻撃するたび、墓地にありマナ総量が悟った喪失者、ナーセットのパワーより小さくクリーチャーでも土地でもないカード1枚を対象とする。それを追放し、コピーする。あなたはそのコピーを、そのマナ・コストを支払うことなく唱えてもよい。
3/4

以下、デッキです。ブラケット3の規定に沿って、

    デッキ

    クリーチャー

    • 《僧院の導師/Monastery Mentor(TDC)》
    • 《若き紅蓮術士/Young Pyromancer(TDC)》
    • 《カルデラの葬火喰らい/Caldera Pyremaw(TDC)》
    • 《マナ形成のヘルカイト/Manaform Hellkite(TDC)》
    • 《モンスーンの魔道士、ラル/Ral, Monsoon Mage(MH3)》
    • 《第三の道の偶像破壊者/Third Path Iconoclast(TDC)》
    • 《嵐捕りの導師/Stormcatch Mentor(BLB)》
    • 《双対の声、ヴェイラン/Veyran, Voice of Duality(TDC)》
    • 《迷える黒魔道士、ビビ/Vivi Ornitier(FIN)》
    • 《三学の修得者、エルシャ/Elsha, Threefold Master(TDC)》

    インスタント

    • 《剣を鍬に/Swords to Plowshares(PIP)》
    • 《魂の仕切り/Soul Partition(BRO)》
    • 《皆に命を!/Everybody Lives!(WHO)》
    • 《断れない提案/An Offer You Can't Refuse(SNC)》
    • 《考慮/Consider(TDC)》
    • 《ジュワー島の撹乱/Jwari Disruption(ZNR)》
    • 《ナーセットの逆転/Narset's Reversal(TDC)》
    • 《大あわての捜索/Frantic Search(TDC)》
    • 《極性を反転せよ/Reverse the Polarity(WHO)》
    • 《けちな贈り物/Gifts Ungiven(CHK)》 → [Game Changer 1/3]
    • 《この町は狭すぎる/This Town Ain't Big Enough(OTJ)》
    • 《意志の力/Force of Will(ALL)》 → [Game Changer 2/3]
    • 《崇高な天啓/Sublime Epiphany(TDC)》
    • 《時を越えた探索/Dig Through Time(KTK)》
    • 《削剥/Abrade(TDC)》
    • 《カズールの憤怒/Kazuul's Fury(ZNR)》
    • 《大勝ち/Big Score(TDC)》
    • 《プリズマリの命令/Prismari Command(TDC)》
    • 《発展+発破/Expansion+Explosion(TDC)》
    • 《マグマ・オパス/Magma Opus(TDC)》

    ソーサリー

    • 《セヴィンの再利用/Sevinne's Reclamation(DMR)》
    • 《解体の波/Dismantling Wave(TDC)》
    • 《マキンディの暴走/Makindi Stampede(ZNR)》
    • 《大群退治/Vanquish the Horde(TDC)》
    • 《定業/Preordain(TDC)》
    • 《思案/Ponder(TDC)》
    • 《豚の呪い/Curse of the Swine(TDC)》
    • 《多様な洞察力/Manifold Insights(C16)》
    • 《複製の儀式/Rite of Replication(TDC)》
    • 《信仰無き物あさり/Faithless Looting(TDC)》
    • 《一攫千金/Strike It Rich(MH2)》
    • 《ジェスカイの意志/Will of the Jeskai(TDC)》
    • 《炎の中の過去/Past in Flames(MM3)》
    • 《マナ噴出/Mana Geyser(TDC)》
    • 《熱狂のリフレイン/Rousing Refrain(OTC)》
    • 《表現の反復/Expressive Iteration(TDC)》
    • 《時の一掃/Time Wipe(WHO)》

    ソーサリー + インスタント

    • 《ギャリフレイの陥落+終止符を/Gallifrey Falls+No More(WHO)》

    エンチャント

    • 《亡霊の牢獄/Ghostly Prison(TDC)》
    • 《志同じく/Aligned Heart(TDC)》
    • 《嵐追いの才能/Stormchaser's Talent(BLB)》
    • 《豪奢の呪い/Curse of Opulence(TDC)》
    • 《死の国からの脱出/Underworld Breach(THB)》 → [Game Changer 3/3]
    • 《苦々しい再会/Bitter Reunion(BRO)》
    • 《美術家の才能/Artist's Talent(BLB)》
    • 《鳴り響くドラム/The Sound of Drums(WHO)》
    • 《ジェスカイの隆盛/Jeskai Ascendancy(KTK)》
    • 《思考の旋風/Whirlwind of Thought(TDC)》

    プレインズウォーカー

    • 《崇高な工匠、サヒーリ/Saheeli, Sublime Artificer(WAR)》
    • 《時を解す者、テフェリー/Teferi, Time Raveler(WAR)》

    アーティファクト

    • 《太陽の指輪/Sol Ring(TDC)》
    • 《秘儀の印鑑/Arcane Signet(PIP)》
    • 《発展のタリスマン/Talisman of Progress(PIP)》
    • 《確信のタリスマン/Talisman of Conviction(PIP)》
    • 《独創のタリスマン/Talisman of Creativity(PIP)》
    • 《コーリ鋼の短刀/Cori-Steel Cutter(TDM)》

    土地

    • 3:《平地/Plains(PIP)》
    • 4:《島/Island(PIP)》
    • 3:《山/Mountain(PIP)》
    • 《天上都市、大田原/Otawara, Soaring City(NEO)》
    • 《フェアリーの集会場/Faerie Conclave(10E)》
    • 《工業公国、リンドブルム/Lindblum, Industrial Regency(FIN)》
    • 《神聖なる泉/Hallowed Fountain(DIS)》
    • 《アダーカー荒原/Adarkar Wastes(TDC)》
    • 《氷河の城砦/Glacial Fortress(TDC)》
    • 《天界の列柱/Celestial Colonnade(WWK)》
    • 《蒸気孔/Steam Vents(GPT)》
    • 《シヴの浅瀬/Shivan Reef(TDC)》
    • 《硫黄の滝/Sulfur Falls(PIP)》
    • 《さまよう噴気孔/Wandering Fumarole(OGW)》
    • 《聖なる鋳造所/Sacred Foundry(RAV)》
    • 《戦場の鍛冶場/Battlefield Forge(TDC)》
    • 《断崖の避難所/Clifftop Retreat(TDC)》
    • 《鋭い突端/Needle Spires(OGW)》
    • 《統率の塔/Command Tower(PIP)》
    • 《風変わりな果樹園/Exotic Orchard(PIP)》
    • 《神秘の僧院/Mystic Monastery(PIP)》
    • 《ラウグリンのトライオーム/Raugrin Triome(IKO)》
    • 《危険地帯/Perilous Landscape(TDC)》
    • 《乾燥台地/Arid Mesa(ZEN)》
    • 《沸騰する小湖/Scalding Tarn(ZEN)》
    • 《溢れかえる岸辺/Flooded Strand(ZNE)》

    抜いた理由は簡単。

    「これが揃うほど舞っているような環境ではなくなった」

    です。近年の統率者デッキ構築済みは非常に優秀(このベースデッキだって2020年代から鑑みれば十分に強いレベルです)なので、小細工に頼るよりは

    「むしろ盤面と手札で勝とう」

    という気持ち。

    盤面を受けつつ派手な動きにしています。上記リストで一番好きなカードは

    Manifold Insights / 多様な洞察力 (2)(青)
    ソーサリー
    あなたのライブラリーの一番上からカードを10枚公開する。ターン順で次の対戦相手から始めて、各対戦相手はそれぞれ、その中から異なる土地でないカードを1枚選ぶ。選ばれたカードをあなたの手札に加え、残りをあなたのライブラリーの一番下に無作為の順番で置く。

    この100円カード的なものですが

    • 3枚の有効牌が選べる
    • 対戦相手全員を統率者というよりもプロレスの醍醐味である「裏切り」「一時的共闘」「サプライズ」に強制的に参加させる
    • 何よりなーセットで再利用できる

    として選んだ形。

    3年目の統率者。

    ここから丸3年。

    現在のリストはこの形です。

    統率者

    • グレムリンの神童、ジンバル/Gimbal, Gremlin Prodigy

    あなたがコントロールしているすべてのアーティファクト・クリーチャーはトランプルを持つ。
    あなたの終了ステップの開始時に、赤の0/0のグレムリン(Gremlin)・アーティファクト・クリーチャー・トークン1体を生成する。それの上に+1/+1カウンターX個を置く。Xは、あなたがコントロールしていて名前の異なるアーティファクト・トークンの数に等しい。

    クリーチャー (31)

    • 《金属の徒党の種子鮫/Chrome Host Seedshark(MOM)》
    • 《河童の砲手/Kappa Cannoneer(NEC)》
    • 《煌めくドラゴン/Shimmer Dragon(MOC)》
    • 《破片撒きのスフィンクス/Sharding Sphinx(MOC)》
    • 《ガラクタ這い/Junk Winder(MOC)》
    • 《黄金架のドラゴン/Goldspan Dragon(KHM)》
    • 《ピア・ナラーとキラン・ナラー/Pia and Kiran Nalaar(MOC)》
    • 《ゴブリンの武器職人、トッゴ/Toggo, Goblin Weaponsmith(CMR)》
    • 《永遠の証人/Eternal Witness(5DN)》
    • 《ウークタビーの王子、キーボ/Kibo, Uktabi Prince(J22)》
    • 《不屈の補給兵/Tireless Provisioner(MOC)》
    • 《ペレグリン・トゥック/Peregrin Took(LTR)》
    • 《砂嵐 of Salvager/Sandstorm Salvager(BIG)》
    • 《目ざとい新人/Sharp-Eyed Rookie(MKM)》
    • 《桜族の長老/Sakura-Tribe Elder(CHK)》
    • 《金のガチョウ/Gilded Goose(MOC)》
    • 《極楽鳥/Birds of Paradise(RVR)》
    • 《ミュータントの親友、ミケランジェロ/Michelangelo, Mutant BFF(TMT)》
    • 《転置された恐竜/Displaced Dinosaurs(WHO)》
    • 《歩行バリスタ/Walking Ballista(AER)》
    • 《搭載歩行機械/Hangarback Walker(ORI)》
    • 《歩行格納庫の自動機械/Stridehangar Automaton(DRC)》
    • 《アカデミーの整備士/Academy Manufactor(MOC)》
    • 《ワームとぐろエンジン/Wurmcoil Engine(SOM)》
    • 《ガチョウ of 母/The Goose Mother(WOE)》
    • 《氷刻み、スヴェラ/Svella, Ice Shaper(KHM)》
    • 《双子唱者、アドリックスとネヴ/Adrix and Nev, Twincasters(C21)》
    • 《私立探偵、ダッガン/Duggan, Private Detective(WHO)》
    • 《波ふるい/Wavesifter(MKC)》
    • 《テルカーの技師、ブルーディクラッド/Brudiclad, Telchor Engineer(MUL)》
    • 《フラクタルの花、エシックス/Esix, Fractal Bloom(MKC)》

    インスタント (4)

    • 《シンクロ解除/Desynchronization(ACR)》
    • 《ウルザの命令/Urza's Command(BRO)》
    • 《手慣れた複製/Masterful Replication(MOC)》
    • 《召喚の調べ/Chord of Calling(M15)》

    ソーサリー (6)

    • 《機織りの季節/Season of Weaving(BLB)》
    • 《原初の命令/Primal Command(STA)》
    • 《根絶やし/Uproot(BOK)》
    • 《真夜中の耕作/Midnight Tilling(ECL)》
    • 《焦熱の合流点/Fiery Confluence(MOC)》
    • 《冒涜の行動/Blasphemous Act(WHO)》

    アーティファクト (10)

    • 《改良式鋳造所/Retrofitter Foundry(DRC)》
    • 《太陽の指輪/Sol Ring(ZNC)》
    • 《シミックの印鑑/Simic Signet(RVR)》
    • 《始まりの液体/The Ooze(TMT)》
    • 《スカイクレイブの秘宝/Skyclave Relic(MOC)》
    • 《複製する指輪/Replicating Ring(MOC)》
    • 《エシカの戦車/Esika's Chariot(KHM)》
    • 《共同魂の刃/Blade of Shared Souls(ONE)》
    • 《世界歩きの兜/Worldwalker Helm(BIG)》
    • 《連合の蛹/Combine Chrysalis(MOC)》

    エンチャント (6)

    • 《月への封印/Imprisoned in the Moon(VOC)》
    • 《機械化製法/Mechanized Production(AER)》
    • 《荒廃した芽ぐみ/Blighted Burgeoning(MOM)》
    • 《殺しのサービス/Killer Service(NCC)》
    • 《惑星共生/Terrasymbiosis(EOE)》
    • 《倍増の季節/Doubling Season(WOT)》

    プレインズウォーカー (3)

    • 《ウルザの後継、カーン/Karn, Scion of Urza(DOM)》
    • 《崇高な工匠、サヒーリ/Saheeli, Sublime Artificer(MOC)》
    • 《王冠泥棒、オーコ/Oko, Thief of Crowns(ELD)》

    土地 (38)

    • 4 《島/Island》
    • 2 《山/Mountain》
    • 4 《森/Forest》
    • 《モリアの坑道/Mines of Moria(LTR)》
    • 《苔汁の橋/Mosswort Bridge(TDC)》
    • 《ホビット庄/The Shire(LTR)》
    • 《硫黄の滝/Sulfur Falls(DOM)》
    • 《尖塔断の運河/Spirebluff Canal(KLD)》
    • 《凍沸の交錯/Frostboil Snarl(MOC)》
    • 《蒸気孔/Steam Vents(GPT)》
    • 《シヴの浅瀬/Shivan Reef(ORI)》
    • 《焦熱島嶼域/Fiery Islet(MH1)》
    • 《内陸の湾港/Hinterland Harbor(ISD)》
    • 《燃えがらの林間地/Cinder Glade(MOC)》
    • 《怒り狂う山峡/Raging Ravine(CLB)》
    • 《銅線の地溝/Copperline Gorge(SOM)》
    • 《獲物道/Game Trail(WHO)》
    • 《踏み鳴らされる地/Stomping Ground(RNA)》
    • 《火の灯る茂み/Fire-Lit Thicket(SHM)》
    • 《植物の聖域/Botanical Sanctum(KLD)》
    • 《ヤヴィマヤの沿岸/Yavimaya Coast(C20)》
    • 《蔦明の交錯/Vineglimmer Snarl(MOC)》
    • 《繁殖池/Breeding Pool(DIS)》
    • 《シミックの成長室/Simic Growth Chamber(DIS)》
    • 《遊牧民の前哨地/Nomad Outpost(MOC)》
    • 《ケトリアのトライオーム/Ketria Triome(IKO)》
    • 《統率の塔/Command Tower(ZNC)》
    • 《無限地帯/Myriad Landscape(ZNC)》
    • 《ホビット庄の段々畑/Shire Terrace(LTR)》
    • 《霧深い雨林/Misty Rainforest(ZNE)》
    • 《樹木茂る山麓/Wooded Foothills(ONS)》

    確かにカード単位ではオリジナルはかなり減っています。

    しかし、

    • アーティファクト・トークンを並べる
    • トークンの種類を増やす
    • トークン同士をシナジーさせる
    • 最後は巨大な盤面で押し切る

    というプレイ体験は、発売当初のジンバルとほとんど同じです。

    しかも、AIの力を使ってトークンのデザインまで出来ています。

    色々なデッキを試しては壊しの方が多いのですが、このデッキに関しては一貫して「アーティファクト・トークンという増え続けるものをどうやって遊んでいくか」があるためずっと使える。

    そういう意味でいいデッキが私を選んでくれました。

    Node.jsを狙った自動スキャン攻撃。その時、攻撃者は何を見ていたのか。

    先だっての記事で、「IPアドレス直打ちやヘッダーがないアクセスはたたき落とす」という設定を紹介しました。では、そういう直打ち以外の「きちんとこちらのホスト名、ドメイン名を調べ、そしてリクエストヘッダーも指定した攻撃はどういうものになるのか?」の実例を、筆者が実際に受けたログから紹介します。

    1. 検出されたログの抜粋

    以下は、検知されたエラーログの要約です(連続して複数のルールに抵触したため、重要なものを抜粋・統合しています)。

    今回も攻撃者のIPアドレスは残しません。「テロリストに名前を与えてはいけない」からです。

    # 1. Unicode難読化とプロトタイプ汚染の検知
    [Date/Time] [security2:error] [client 192.0.2.1] ModSecurity: Warning. Pattern match "(?i)\\\\x5cu[0-9a-f]{4}" at ARGS:0. [file "REQUEST-920-PROTOCOL-ENFORCEMENT.conf"] [id "920540"] [msg "Possible Unicode character bypass detected"] [data "ARGS:0={\x22value\x22:\x22{\x5c\x22then\x5c\x22: \x5c\x22$B0\x5c\x22}\x22,\x22then\x22:\x22$1:__proto__:then\x22, ..."] [hostname "example.com"]
    
    # 2. リモートコード実行(RCE)の検知
    [Date/Time] [security2:error] [client 192.0.2.1] ModSecurity: Warning. Pattern match ... at ARGS:0. [file "REQUEST-932-APPLICATION-ATTACK-RCE.conf"] [id "932235"] [msg "Remote Command Execution: Unix Command Injection"] [data "Matched Data: eval)(global[\x5c\x22\x5c\x5cu0042... .from('KGFzeW5jIGZ1bmN0aW9uKCl7..."] [hostname "example.com"]
    
    # 3. Node.js インジェクションおよびプロトタイプ汚染ルールの発火
    [Date/Time] [security2:error] [client 192.0.2.1] ModSecurity: Warning. Pattern match ... [file "REQUEST-934-APPLICATION-ATTACK-GENERIC.conf"] [id "934100"] [msg "Node.js Injection Attack 1/2"]
    [Date/Time] [security2:error] [client 192.0.2.1] ModSecurity: Warning. Pattern match "__proto__" at ARGS:0. [file "REQUEST-934-APPLICATION-ATTACK-GENERIC.conf"] [id "934130"] [msg "JavaScript Prototype Pollution"] [hostname "example.com"]
    
    # 4. 異常スコア超過によるアクセス拒否(403)の実行
    [Date/Time] [security2:error] [client 192.0.2.1] ModSecurity: Access denied with code 403 (phase 2). Operator GE matched 5 at TX:blocking_inbound_anomaly_score. [file "REQUEST-949-BLOCKING-EVALUATION.conf"] [id "949110"] [msg "Inbound Anomaly Score Exceeded (Total Score: 65)"] [hostname "example.com"]

    2. 攻撃の意図

    この攻撃の主な意図は、

    • サーバーの制御権の奪取(バックドアの設置)
    • クラウド認証情報の窃取」 です。

    ログに記録されたペイロード(ARGS:0)を解析すると、以下の3つのステップを実行しようとしていたことが分かります。

    • プロトタイプ汚染 (Prototype Pollution):
      • JavaScript特有のオブジェクト仕様である __proto__then を悪用し、アプリケーション全体の挙動を書き換えようとしています。
    • 難読化によるWAFの回避:
      • Buffer という文字列を \u0042\u0075\u0066... のようにUnicodeエスケープし、WAFの単純な文字列チェックをすり抜けようとしています。
    • ペイロードの実行(RCE)
      • 送信データ内には Base64 でエンコードされたスクリプト(KGFzeW5j...)が含まれていました。これをデコードすると、// fast_recon_v6 — signature-rotated recon payload(自動偵察用スクリプト)というコメントが出現します。
      • 攻撃が成功すると、サーバー内部で eval() が実行され、AWSやGCPといったクラウド環境のメタデータ(IMDS)から認証情報を盗み出す、あるいは外部からコマンドを自由に入力できる状態(リモートコード実行)に陥る危険がありました。

    3. 攻撃者の「技術スタック」

    ログから推測される、この攻撃を仕掛けてきたボット(または攻撃者)の技術的な背景やツール群は以下の通りです。

    • 言語・ターゲット環境:
      • JavaScript / Node.js
      • ターゲットを完全に Node.js(Express や Next.js などのWebフレームワーク)に絞り込んでいます。
    • 使用ツール:
      • 既知の脆弱性スキャンツール(自動化ボット)
      • * ペイロード内のコメント(fast_recon_v6)から、アンダーグラウンドやオープンソースで流通している、あるいは独自に開発された高度な自動脆弱性スキャン・バックドア設置ツールキットである可能性が高いです。
    • インフラ(踏み台): クラウドサービス(Google Cloud など)
      • * 接続元IPを調査すると大手のパブリッククラウドに割り当てられたIPであり、攻撃者は自身のアドレスを隠すため、クラウド上のVPSや乗っ取ったサーバーを踏み台にしてスキャンを実行しています。

    4. 攻撃が成功してしまった場合のシーケンス(最悪のシナリオ)

    もしWebアプリケーション側に脆弱性があり、WAFを導入していなかった場合、攻撃は以下のように進行します。

    sequenceDiagram participant Attacker as 攻撃者 participant Server as Webサーバー (Node.js) participant IMDS as クラウドメタデータ (IMDS) Attacker->>Server: 不正なJSONデータ (Prototype Pollution + Base64ペイロード) を送信 Note over Server: 脆弱性によりオブジェクトが汚染され、<br/>内部で eval() が実行される Server->>Server: 悪意あるスクリプト (fast_recon) が作動 Server->>IMDS: クラウドの認証情報 (IAMトークン等) をリクエスト IMDS-->>Server: 認証情報を返却 Server-->>Attacker: 盗み出した認証情報・サーバー情報を送信 Note over Attacker: サーバーの完全な制御権、<br/>およびクラウド全体の権限を掌握

    5. 今回の ModSecurity が阻止した実際の動き

    実際には、ModSecurity(OWASP CRS)がリクエストの段階で脅威を検知し、アプリケーションにデータが届く前に処理を遮断しました。

    sequenceDiagram participant Attacker as 攻撃者 participant WAF as WAF (ModSecurity) participant Server as Webサーバー Attacker->>WAF: 不正なJSONデータを送信 (ホスト: example.com) Note over WAF: ルール 920540: Unicode難読化を検知<br/>ルール 934130: __proto__ (プロトタイプ汚染) を検知<br/>ルール 934100: Node.jsコード注入を検知 Note over WAF: 異常スコアを計算 (合計 65点 / 閾値 5点)<br/>スコア大幅超過のため、アクセスを拒否 WAF-->>Attacker: HTTP 403 Forbidden (アクセス拒否) Note over Server: 攻撃リクエストはサーバー(アプリ層)<br/>に到達せず、無傷で終了

    6. そもそもの問題として

    筆者のサイトにNode.jsは含まれていないというのがポイントです。筆者の技術スタックが

    • LAMP
    • もしくはRails

    という枯れた技術だったのが幸いしていました。攻撃者は「Node.jsだと決めつけていた」のです。

    自動スキャンは効率を重視します。相手が誰かではなく、「大量に存在する技術スタック」に対して決め打ちでペイロードを送りつけます。つまり、この攻撃は筆者個人を狙ったものではなく、「Node.jsで動いているなら当たれ」という散弾銃です。そして今回は、その散弾がたまたまLAMP環境に飛んできただけでした。

    WAFはその誤射を淡々と403へ変え、ログだけを残しました。ログを読むということは、「何を防いだか」を知るだけではありません。攻撃者が世界をどう見ているかを知ることでもあるのです。

    とはいえ、筆者がModSecurityで設定している

    # 1-3. IPアドレス直打ちアクセス対策
    SecRule REQUEST_HEADERS:Host "@rx ^[\d.]+(:\d+)?$" \
        "id:10004,\
        phase:1,\
        deny,\
        status:404,\
        log,\
        msg:'[CUSTOM RULE] Host header is a numeric IP address (incl port). Blocked immediately.',\
        tag:'application-attack',\
        tag:'PROTOCOL_VIOLATION/INVALID_HREQ'"
    
    # Hostヘッダーが存在しない場合は即ブロック
    SecRule &REQUEST_HEADERS:Host "@eq 0" \
        "id:10005,\
        phase:1,\
        deny,\
        status:404,\
        log,\
        msg:'[CUSTOM RULE] Missing Host Header. Blocked immediately.'"

    を見事すり抜けました。つまり、きちんと筆者VPSのドメインを調べ、正しいHostヘッダーを付与してきたということです。この点については、攻撃者に敬意を表します。少なくとも、IPアドレス直打ちしかできないボットよりは、こちらを相手として認識していたのですから。そのおかげでWAF(ModSecurity)は仕事をし、評価を行い、その上でブロックしました。

    この状況をたとえて言うならば『ジョジョの奇妙な冒険 戦闘潮流』の

    まず、このワムウに殺される資格はあるッ!

    といったところでしょうか。

    セキュリティデッキを組もう:ModSecurity Request-900-Exclusionの編集意義

    MtGやDMを遊んだことがあるのであれば聞いたことがあるだろう

    「カードはルールに勝つ
     (カードの効果とルールが直接矛盾した場合、カードの効果を優先する)」

    という大原則。

    「カードを2枚引く」

    というシンプルなテキストであっても、通常、プレイヤーは1ターンに1枚のみカードを引くと言うルールがありますが、カードにそう書かれていればそのルールを無視した挙動が可能になります。

    一見すると乱暴な言葉ですが、実際にはゲームデザイン上もっとも重要な考え方の一つです。

    基本ルールは全員共通。しかし、カードには「この場合だけは例外」が書かれています。だからこそ何万種類ものカードが共存できます。

    実は、この考え方は ModSecurity にも、そのまま当てはまります。

    今回、私がModSecurityに導入している「REQUEST-900-EXCLUSION-RULES-BEFORE-CRS.conf」について解説します。

    REQUEST-900-EXCLUSION-RULES-BEFORE-CRS.confとは?

    ModSecurityで本格的な防御を行う際、多くの人が「OWASP CRS(Core Rule Set)」という、世界中のセキュリテイ専門家が作った強力な既製ルール集を導入します。

    CRSは非常に優秀ですが、何千もの緻密なルールが詰まっているため、上から順にすべてをチェックするとそれなりの処理コスト(CPUやメモリ)がかかります。

    また、これは非常にデリケートでガチガチなので

    1. ファイルをアップロードした
    2. コードを書き込んだ
    3. クリックを繰り返した

    だけで「こいつは怪しい動きをしている」として、アクセスそのものを遮断する「偽陽性」が発生します。

    そこで、膨大なCRSの本体を書き換えることなく

    1. プログラムのコードやコマンドラインなどを投稿するのはOK
    2. だが、それを使った攻撃は許さない
    3. 複雑なスキャンは不要。「悪・即・斬」レベルで不審な攻撃をたたき落とす
    4. 逆に「こいつは面白い動きをするからハニーポットに誘導しよう」

    などの「デッキを作るような感覚で」膨大なCRSを制御する方法として用意されているのが、REQUEST-900-EXCLUSION-RULES-BEFORE-CRS.conf(以下、900番BEFOREルール)です。

    設置例

    筆者環境

    • ModSecurity 2.9.7
    • Core Rule Set 3.3.5
    • Apache 2.4
    • Ubuntu 24.04

    どこに置くか?

    筆者環境の場合は

    /usr/share/modsecurity-crs/coreruleset/rules配下のREQUEST-900-EXCLUSION-RULES-BEFORE-CRS.confですが、

    /home/hoge/script/REQUEST-900-EXCLUSION-RULES-BEFORE-CRS.conf

    など、自分がメンテナンスしやすい位置にこのファイルの実体を置いておき、ln -sfでシンボリックリンクを張る方が非常に簡単です。というのも、「このデッキ調整」はデリケートな作業なので何回も何十回も調整が必要になります。そのたびに深い階層を掘ってファイルを編集するのは効率的ではありません。

    とはいえ、シンボリックファイル is Evil だったりrootアカウントしかないとかいう方はいるので流儀に合わせてください。

    ケーススタディ

    効果的なカスタム案

    筆者が実際に使っている中で最も効果的なルールがこれです。

    # IPアドレス直打ちアクセス対策 
    SecRule REQUEST_HEADERS:Host "@rx ^[\d.]+(:\d+)?$" \
        "id:10004,\
        phase:1,\
        deny,\
        status:404,\
        log,\
        msg:'[CUSTOM RULE] Host header is a numeric IP address (incl port). Blocked immediately.',\
        tag:'application-attack',\
        tag:'PROTOCOL_VIOLATION/INVALID_HREQ'"
    
    # Hostヘッダーが存在しない場合は即ブロック
    SecRule &REQUEST_HEADERS:Host "@eq 0" \
        "id:10005,\
        phase:1,\
        deny,\
        status:404,\
        log,\
        msg:'[CUSTOM RULE] Missing Host Header. Blocked immediately.'"
    • id:10004:
      • 正規表現 @rx ^[\d.]+(:\d+)?$ を使い、Hostヘッダーの中身が「数字とドットだけ(または末尾にポート番号)」で構成されているかを判定します。IPアドレス直打ちであれば、その瞬間に合致(マッチ)します。
    • id:10005:
      • 変数の頭に & をつけることで、そのヘッダーの「個数」を数えます。@eq 0(=0個、つまりHostヘッダーが存在しない)場合にマッチします。
    • phase:1:
      • これが非常に重要です。リクエストの解析が始まった「最速の段階(フェーズ1)」で検査を行います。
    • deny, status:404:
      • 条件にマッチしたら、荷物の中身(Body)を見るまでもなく、即座に通信を拒否し、404エラーを返して追い払います。

    カスタム案が拾ったログ

    以下、実際に私のサーバにアクセスしたログです。

    # 例①:Hostヘッダー自体が存在しない(欠落)
    [ security2:error] ModSecurity: Access denied with code 404 (phase 1). ... [file "/usr/share/modsecurity-crs/coreruleset/rules/REQUEST-900-EXCLUSION-RULES-BEFORE-CRS.conf"] [line "72"] [id "10005"] [msg "[CUSTOM RULE] Missing Host Header. Blocked immediately."]
    
    # 例②:Hostヘッダーがドメインではなく「IPアドレス直打ち」
    [ security2:error] ModSecurity: Access denied with code 404 (phase 1). ... [file "/usr/share/modsecurity-crs/coreruleset/rules/REQUEST-900-EXCLUSION-RULES-BEFORE-CRS.conf"] [line "63"] [id "10004"] [msg "[CUSTOM RULE] Host header is a numeric IP address (incl port). Blocked immediately."]
    sequenceDiagram Note over Crawler: 不正なリクエストを送信<br>(Host: 192.0.2.1) Crawler->>ModSecurity_WAF: HTTP GET / (Host不正) Note over ModSecurity_WAF: phase:1 で瞬時に検知!<br>背後のWebサーバーやアプリには<br>一切パスさせない ModSecurity_WAF-->>Crawler: 404 Not Found (即座に遮断)

    という形で、ModSecurityの背後にあるコンテンツに一切触れさせることなく追い払うことができます。

    余談:これで追い返して問題は無いのか?

    ありません。断言します。なぜなら、ローカル運用ならいざ知らず、ドメインで動くモダンインターネットにおいて

    http://203.0.113.6

    などと直打ちするケースはほぼありません。なので、IPアドレス直打ちはほぼ確実に「膨大なIPをしらみつぶしに探し回るボット」です。

    そして、Webサイトを閲覧するとき、ブラウザとサーバーの間では「データの荷物」がやり取りされています。この荷物は、大きく分けると「ヘッダー(Header)」「ボディ(Body)」の2つで構成されています。

    郵便に例えると、以下のようなイメージです。

    • ヘッダー(Header): 封筒の表面。「宛先」「差出人」「中身の形式」などが書かれた管理情報。
    • ボディ(Body): 封筒の中身。「実際のページデータ(HTML)」や「画像」そのもの。

    普段目にするWebページは「ボディ」ですが、それを正しく届けて表示するためには、不備のない「ヘッダー(封筒の表面)」を付与するというのがブラウザの挙動です。

    900番BEFOREルールである意味

    そして、このファイルは「CRSが動く前に対処できる」という、MtGで言う「打ち消し呪文」のようなものとして機能します。

    もし、これをRESPONSE-999-EXCLUSION-RULES-AFTER-CRS.confという「最終的に評価するルール」で書いた場合

    sequenceDiagram Crawler->>ModSecurity_WAF: HTTP GET / (Host: 192.0.2.1) Note over ModSecurity_WAF: 1.900番BEFORE ルール(何もなし) -> 通過 Note over ModSecurity_WAF: 2. メインCRS審査(数千のルール) Note over ModSecurity_WAF: SQLインジェクションの検査...OK<br>XSSの検査...OK<br>(延々とノーマル審査が続く) Note over ModSecurity_WAF: 3. (AFTERルールに書いた場合) Note over ModSecurity_WAF: ここでようやくルール10004にヒット ModSecurity_WAF-->>Crawler: 404 Not Found (一応遮断はできたが...)

    という流れになります。

    もしクローラーが超高速で連射してきた場合、この「無駄なフルコンボ審査」のせいでModSecurity自体の処理が追いつかなくなり、サーバーのCPU使用率が100%に張り付いて、一般ユーザーのアクセスが重くなる(あるいは落ちる)という本末転倒な事態が起きます。

    このカスタム案の意義

    OWASP CRSは非常に優秀です。

    SQLインジェクション、XSS、RCEなど、現代的な攻撃に対する膨大な知見が詰め込まれており、何も考えずに導入しても一定以上の防御力を得られます。

    しかし、それはあくまで「世界中の誰にでも当てはまる最大公約数」です。

    私のサーバーには私のサイト構成があり、私の利用者がおり、私の攻撃ログがあります。

    だからこそ

    • このサイトではコードの投稿は許可する
    • このURLへの異常なクロールだけは絶対に許さない
    • この挙動は攻撃ではないので除外する
    • この通信はコンテンツを見る価値すらないので即座に落とす
    • 面白い相手ならハニーポットへ誘導する

    という「自分だけのルール」が必要になります。そのための「私のデッキ」が900番BEFOREルールです。

    CRS本体を直接編集する必要はありません。

    世界中のセキュリティ専門家が更新し続けるルールセットはそのまま利用し、自分の環境だけに必要な判断を、カードを1枚追加するような感覚で差し込めます。

    だから冒頭で紹介した

    「カードはルールに勝つ」

    という考え方が、そのままModSecurityにも当てはまるのです。

    CRSという基本ルールがあり、その前に「このサイトではこうする」という例外を定義する。それだけで、自分だけのWAFが出来上がります。

    私にとってREQUEST-900-EXCLUSION-RULES-BEFORE-CRS.confは、単なる設定ファイルではありません。

    毎日流れてくるログを眺め、

    • 「これは900番で落とせるな」
    • 「このクローラーはハニーポット送りにしよう」
    • 「これはCRSに任せた方がいい」

    そんな調整を繰り返しながらデッキをチューニングしていく場所です。Webサイトを運営する人にとって、攻撃ログは鬱陶しいものに見えるかもしれません。

    しかし見方を変えれば、それは次の一枚を考えるための対戦ログでもあります。

    オリジナルに手を加えない意義

    また、この900番BEFOREルールを別ファイルとして管理する最大の理由は、「本家に手を入れない」ことです。

    CRSは更新され続けます。

    もしCRS本体を書き換えてしまうと、アップデートのたびに差分を確認し、競合を解消し、自分の修正を書き戻す必要があります。

    一方、自分のデッキを900番BEFOREだけに閉じ込めておけば、CRSが更新されても自分のカードはそのまま使い続けられます。

    新しいサーバーへ移行するときも、自分のデッキを1枚コピーするだけです。デッキは、一度組んで終わりではありません。

    • 新しい攻撃ログを見つけたら1枚差し替え、
    • 不要になったカードは抜き、
    • 新しい環境に合わせて調整していく。

    世界中の専門家が作ったルールセットを土台に、自分のサイトで得た対戦ログから一枚ずつカードを選び、デッキを育てていく。それが私にとってのREQUEST-900-EXCLUSION-RULES-BEFORE-CRS.confです。

    統率者デッキ:サイオンズ・スペルの入れ替え候補

    先だって購入した統率者デッキ。この攻勢を維持したまま、更に楽しくなりそうなカードをストレージから…… というよりも、パーツ取りで他がある状態での他の構築済みから引っ張ってきました。

    パーツ取りのために買っていたドクター・フー統率者デッキ「悪の支配者」から

    Vislor Turlough / ヴィスラー・ターロー (3)(黒)
    伝説のクリーチャー — ならず者(Rogue)
    ブラック・ガーディアンとの取引 ― ヴィスラー・ターローが戦場に出たとき、あなたは「対戦相手1人はこれのコントロールを得る。」を選んでもよい。そうしたなら、そのプレイヤーがコントロールし続けているかぎり、これは使嗾される。
    あなたの終了ステップの開始時に、カード1枚を引き、その後、あなたの手札にあるカードの枚数に等しい点数のライフを失う。
    ドクターのコンパニオン(もう一方がドクター(Doctor)であるなら、あなたは統率者2体を使用できる。)
    2/5

    Wound Reflection / 傷の反射 (5)(黒)
    エンチャント
    各終了ステップの開始時に、各対戦相手はこのターンに自分が失ったライフの点数に等しい点数のライフを失う。(ダメージによりライフは失われる。)

    Blink / まばたき (2)(青)(黒)
    エンチャント — 英雄譚(Saga)
    (この英雄譚(Saga)が出た際とあなたのドロー・ステップの後に、伝承(lore)カウンター1個を加える。IVの後に、生け贄に捧げる。)
    I,III ― クリーチャー1体を対象とする。オーナーはそれを自分のライブラリーに加えて切り直す。その後、調査を行う。(そのプレイヤーは手掛かり(Clue)トークン1つを生成する。)
    II,IV ― 先制攻撃と警戒と「対戦相手1人がクリーチャー呪文1つを唱えるたび、ターン終了時まで、このパーマネントはクリーチャーでない。」を持つ黒の2/2のエイリアン(Alien)・天使(Angel)アーティファクト・クリーチャー・トークン1体を生成する。

    Hunted by The Family / ファミリーの擬態 (5)(青)(青)
    ソーサリー
    あなたがコントロールしていないクリーチャー最大4体を対象とする。それらの各クリーチャーにつきそれぞれ、そのコントローラーは「そのクリーチャーは白の1/1の人間(Human)クリーチャーになりすべての能力を失う。」か「あなたはそれのコピーであるトークン1つを生成する。」かの最悪の二択を行う。


    同じくドクター・フー統率者デッキ『過去からの来襲』より

    The Second Doctor / 2代目ドクター (2)(白)(青)
    伝説のクリーチャー — タイム(Time) ロード(Lord) ドクター(Doctor)
    すべてのプレイヤーの手札の上限はなくなる。
    見上げた文明人 ― あなたの終了ステップの開始時に、各プレイヤーはそれぞれカード1枚を引いてもよい。次の自分のターンまで、それを行った各対戦相手はそれぞれ、あなたやあなたがコントロールしているパーマネントを攻撃できない。
    2/4

    Trial of a Time Lord / タイムロードの審判 (1)(白)(白)
    エンチャント — 英雄譚(Saga)
    (この英雄譚(Saga)が出た際とあなたのドロー・ステップの後に、伝承(lore)カウンター1個を加える。IVの後に、生け贄に捧げる。)
    I,II,III ― 対戦相手がコントロールしていてトークンでないクリーチャー1体を対象とする。これが戦場を離れるまで、それを追放する。
    IV ― あなたから始めて各プレイヤーは「無罪」または「有罪」のいずれかに投票する。「有罪」がより多くの票を得たなら、これにより追放されている各カードのオーナーはそれぞれ、そのカードを自分のライブラリーの一番下に置く。


    更にドクター・フー統率者デッキ『タイミーワイミー』から

    Grasp of Fate / 命運の掌握 (1)(白)(白)
    エンチャント
    命運の掌握が戦場に出たとき、対戦相手1人につき、そのプレイヤーがコントロールする土地でないパーマネントを最大1つまで対象とし、命運の掌握が戦場を離れるまでそれを追放する。(それらのパーマネントはオーナーのコントロール下で戦場に戻る。)

    Wedding Ring / 結婚指輪 (2)(白)(白)
    アーティファクト
    結婚指輪が戦場に出たとき、これが唱えられていた場合、対戦相手1人を対象とする。そのプレイヤーはこれのコピーであるトークン1個を生成する。
    《結婚指輪/Wedding Ring》という名前のアーティファクトをコントロールしている対戦相手のターンにそのプレイヤーがカード1枚を引くたび、あなたはカード1枚を引く。
    《結婚指輪/Wedding Ring》という名前のアーティファクトをコントロールしている対戦相手のターンにそのプレイヤーがライフを得るたび、あなたはその点数に等しい点数のライフを得る。

    このあたり、

    • 統率者の誘発を助け
    • 自分を守り
    • 政治的駆け引きも多い

    防御札。ここまで自由度が高い統率者はそうそう見られないとして、カードの発見が楽しいです。

    AIのトークン消費はなぜバラつくのか?――創作・分析・編集で「脳の使い方」が違うように見える話

    AIを日常的に使っていると、ふとこんなことに気付きます。

    • 「この依頼は意外と利用量が増えないな」
    • 「逆に、この程度の文章なのに思った以上に消費する」

    私自身、普段はGeminiを使って画像生成プロンプトの修正や競馬予想の分析、ブログの推敲、物語の執筆など、さまざまな用途でAIを利用しています。

    その中で感じたのは、「依頼する内容によって利用量の増え方がかなり違う」ということでした。

    もちろん、AI各社は利用量の計算方法を公開しているわけではありません。表示される消費量が単純なトークン数なのか、推論時間なのか、それらを組み合わせた独自の指標なのかは分かりません。

    この記事は、あくまで私が日常的に使う中で見えてきた経験則です。

    「文字数」よりも「何をさせるか」の方が重要だった

    最初に不思議だと思ったのが、画像生成プロンプトです。5000文字を超える長いプロンプトを修正しても、トークンの利用量は数%程度で済むことがあります。一方で、「1000文字くらいの短い物語を書いてください」と依頼すると、それだけで10%近く増えることもありました。

    文字数だけを見れば、前者の方が圧倒的に長いはずです。ところが、AIにとって重要なのは文字数ではなく、「どんな仕事を頼まれているか」なのではないか、と感じるようになりました。

    ゼロから創る仕事は、とにかく重そうだ

    物語を書く仕事は、AIにとってかなり負荷が高いように見えます。

    1. 登場人物を考え、
    2. 会話を自然につなぎ、
    3. 伏線を張り、
    4. 最後まで一貫性を維持する。

    しかも文章は一気に完成するわけではありません。

    AIは「次に来る最も自然な単語は何か」を少しずつ判断しながら、文章を積み重ねていきます。つまり、1000文字の小説を書くということは、「1000文字分の判断」を積み重ねる作業でもあります。

    もちろん内部では人間のように「悩んでいる」わけではありませんが、利用量という観点では、このような創作タスクほど大きく増える傾向を私は何度も経験しました。(少なくともGeminiで可視化されている利用量を見る限り、その傾向ははっきり現れています。)

    分析や編集は「答えを探す仕事」

    逆に、競馬予想の分析やブログの校正、画像生成プロンプトの修正などは、それほど利用量が増えないことが多くあります。もちろん分析にも推論は必要です。

    競馬であれば過去データや馬場状態、展開などを整理して結論を導かなければなりません。しかし、これは「何もないところから世界を創る」仕事ではありません。

    与えられた情報を整理し、関連性を見つけ、答えを導く仕事です。画像生成プロンプトの修正も同様です。

    • 「かわいい雰囲気を少し減らして」
    • 「夕暮れを夜景に変更して」
    • 「背景をモンサンミッシェルからセントマイケルズマウントに変更して」

    といった依頼では、新しい世界を創造しているのではなく、既にある設計図を編集しています。人間に例えるなら、小説を書くよりも、設計図を赤ペンで修正する仕事に近い印象があります。

    文体変換は「下絵が完成している」

    個人的に最も面白かったのが、文体変換です。

    例えば、私がよくやっているのが

    • 「歴史的事実をニンジャスレイヤー風に書く」
    • 「ハリー・ポッターを池波正太郎風に書く」

    といった依頼です。

    これも一見すると創作のようですが、実際の利用量はゼロから物語を書く場合よりかなり少なく感じられました。

    この理由を考えてみると、文体変換では「何が起こるか」は既に決まっています。

    AIが考える必要があるのは、「どう表現するか」だけです。

    これは白紙のキャンバスに絵を描く作業ではなく、完成した下絵に画風を合わせて色を塗るようなものです。物語の骨格が既に存在するため、ゼロから組み立てるよりも効率よく処理できるのではないか、と感じています。

    AIにも「得意な仕事」と「重い仕事」がある

    今回の観察から、私の中ではAIへの依頼は次のようなイメージになりました。

    • データ整理・分析(かなり軽い)
      • 与えられた情報を整理する仕事
    • 編集・文体変換 (軽い)
      • 内容はそのままに表現を整える仕事
    • ゼロからの創作(重い)
      • 内容そのものを組み立てる仕事

    もちろん境界は曖昧ですし、実際の内部処理がこの通りだと断言することはできません。(AIの仕様そのものがブラックボックスであることは、皆様もご存じでしょう)それでも、利用量の増え方を見ていると、この順番で負荷が高くなっているように見えます。

    AIを使い分けるヒント

    この経験則を踏まえると、AIを効率よく使う方法も見えてきます。

    • 「物語のプロットだけは自分で考え、AIには文章を書き直してもらう」
    • 「まず箇条書きで構成を作り、そのあと文体だけ整えてもらう」

    という使い方です。ゼロから創作を任せるよりも、利用量を抑えながら質の高いアウトプットを得られる場面が少なくありません。

    なので「揮発性のアイデアは人間が捕まえ、形にするのはAIに任せる」やり方は相当効率的です。

    おわりに

    この記事は、AIの内部仕様を解説したものではありません。(そもそも筆者はAIを使うことはあっても作る技術はありません)

    あくまで、一人のヘビーユーザーとして毎日のようにAIを使い続ける中で見えてきた経験則です。それでも、「文字数」ではなく「AIにどんな仕事を頼むか」で利用量が変わるように見えるという発見は、とても興味深いものでした。

    AIは万能な魔法ではなく、それぞれの仕事に向き・不向きがあります。

    人間が「何を考え」、AIに「何を考えてもらうか」を意識するだけでも、同じAIでも驚くほど付き合い方は変わってきます。AIの「脳の使い方」を少し意識するだけで、その能力をより引き出せるのではないでしょうか。

    Page 1 of 297

    Powered by WordPress & Theme by Anders Norén