[{"data":1,"prerenderedAt":1409},["ShallowReactive",2],{"/ja-jp/blog/critical-rce-in-serena":3,"navigation-ja-jp":649,"banner-ja-jp":1082,"footer-ja-jp":1090,"blog-post-authors-ja-jp-Daniel Abeles|Abisheik Magesh":1344,"blog-related-posts-ja-jp-critical-rce-in-serena":1370,"blog-share-wrapper-ja-jp":1390,"next-steps-ja-jp":1400},{"id":4,"title":5,"authors":6,"body":9,"category":630,"date":631,"description":632,"extension":633,"externalUrl":634,"faq":634,"featured":260,"heroImage":635,"meta":636,"navigation":260,"path":637,"seo":638,"slug":641,"stem":642,"tags":643,"template":646,"updatedDate":647,"__hash__":648},"blogPosts/ja-jp/blog/critical-rce-in-serena.md","MCPコーディングエージェントSerenaに重大なリモートコード実行の脆弱性",[7,8],"Daniel Abeles","Abisheik Magesh",{"type":10,"value":11,"toc":610},"minimark",[12,23,35,38,43,46,53,56,59,64,67,77,87,91,102,136,154,158,171,336,351,354,380,386,435,438,441,444,450,453,456,463,466,469,472,475,478,481,485,489,496,500,503,519,522,525,528,585,587,590,594,597,600,603,606],[13,14,15,16,22],"p",{},"プロジェクトを開いた、ただそれだけで攻撃者のコードが動く。AIコーディングエージェントの中でも特に利用者の多いSerenaが、そういう状態になっていました。GitLabの脅威リサーチグループ（Threat Research Group）が見つけたのは、Serenaのプロセス内で任意のコードを実行できる重大なサーバーサイドテンプレートインジェクションです（",[17,18,21],"a",{"href":19,"rel":20},"https://github.com/oraios/serena/security/advisories/GHSA-pp25-4cg4-qcr9",[],"GHSA-pp25-4cg4-qcr9","、CVEは申請中）。serena-agent 1.6.1以前をお使いであれば、いますぐ1.7.0へ更新してください。",[13,24,25,26,30,31,34],{},"攻撃の手口は単純です。自分が管理するリポジトリに細工した",[27,28,29],"code",{},".serena/project.yml","を仕込み、SerenaのModel Context Protocol（MCP）サーバー経由でデベロッパーに開かせるだけ。信頼できないリポジトリにコードを実行させないためにSerenaが用意した制御",[27,32,33],{},"trusted_project_path_patterns","も、この経路には効きません。GitLabは2026年8月1日に非公開で報告し、メンテナーは8日後に修正版を公開しました。",[13,36,37],{},"MCPサーバーがソフトウェア開発ライフサイクルに組み込まれていくほど、この種のリスクは広がっていきます。今回のケースは、その早い時期の一例です。",[39,40,42],"h2",{"id":41},"mcpサーバーのアタックサーフェスが特殊な理由","MCPサーバーのアタックサーフェスが特殊な理由",[13,44,45],{},"これまでの開発ツールがコードベースに触れる範囲は、どれも狭く決まっていました。Linterは読むだけ、フォーマッターは書き換えるだけ、テストランナーは決められたハーネスを走らせるだけ。MCPサーバーはここが違います。大規模言語モデル（LLM）に、デベロッパー環境への汎用インターフェースをまるごと差し出すからです。ファイルシステムへのアクセス、シェルの実行、言語サーバーへの問い合わせ、場合によってはネットワークまで。便利さを生んでいるこの広さが、そのままサーバープロセスを乗っ取られたときの深刻さになります。",[13,47,48,49,52],{},"CI/CDパイプラインなら、隔離された環境で、権限を絞った認証情報だけを持って動きます。MCPサーバーはそうではありません。動く場所はデベロッパー自身のマシン、しかもデベロッパー自身のユーザー権限のままです。SSH鍵、クラウドの認証情報、",[27,50,51],{},".env","ファイル、ブラウザのセッション、社内ネットワークのリソース。そのデベロッパーが触れるものには、すべて手が届きます。サーバープロセスを1つ乗っ取られれば、ローカル環境がまるごと落ちたのと変わりません。",[13,54,55],{},"自分が書いたわけではないリポジトリを開く機会は、日常的にあります。新しいオープンソースライブラリを試す、バグレポートをトリアージする、コントリビューターのブランチをレビューする。どれもありふれた作業です。中身に目を通す前にサーバーがそのリポジトリを処理してしまえば、そこが攻撃者の入り口になります。Serena自身もこの脅威は想定しており、信頼できないリポジトリにコードを実行させないための信頼モデルを備えていました。ただ、その信頼モデルには穴が空いていました。",[39,57,58],{"id":58},"脆弱性の仕組み",[60,61,63],"h3",{"id":62},"serenaとは","Serenaとは",[13,65,66],{},"Serenaが掲げるうたい文句は「エージェントのためのIDE」。Claude、Cursor、CopilotなどのAIアシスタントを、MCP経由でローカルのコードベースにつなぎます。生のファイルシステムをLLMに渡すだけでは届かない、セマンティックなコード探索、リファクタリング、編集といった機能を提供するのが役割です。使い方は、ローカルでMCPサーバーとして起動し、アシスタントの接続先に指定するだけ。",[68,69,74],"pre",{"className":70,"code":72,"language":73},[71],"language-text","serena start-mcp-server --project /path/to/repo\n","text",[27,75,72],{"__ignoreMap":76},"",[13,78,79,80,82,83,86],{},"任意のローカルリポジトリをユーザーのOS権限のまま扱う以上、Serenaにも信頼ゲートは用意されています。どのプロジェクトパスを信頼済みとみなすかを決めるのが",[27,81,33],{},"で、プロジェクトを開いた瞬間にシェルコマンドを走らせる",[27,84,85],{},"activation_command","のような特権機能は、信頼済みプロジェクトでしか使えません。信頼していないリポジトリを開いても安全であること。それが、この設計が保証しようとしていた点でした。",[60,88,90],{"id":89},"到達点シンクサンドボックスなしのテンプレートエンジン","到達点（シンク）：サンドボックスなしのテンプレートエンジン",[13,92,93,94,97,98,101],{},"Serenaでは、プロジェクトごとにカスタムモードを定義できます。モードは名前付きの設定で、その",[27,95,96],{},"prompt","フィールドの中身は、プロジェクトがアクティブになるとLLMのシステムプロンプトに差し込まれる仕組み。問題はここから先にあります。SerenaはこのプロンプトをJinja2テンプレートとしてレンダリングしていました。",[27,99,100],{},"src/interprompt/jinja_template.py","を見てみましょう。",[68,103,107],{"className":104,"code":105,"language":106,"meta":76,"style":76},"language-py shiki shiki-themes github-light","# line 22\nself._env = jinja2.Environment()\n","py",[27,108,109,118],{"__ignoreMap":76},[110,111,114],"span",{"class":112,"line":113},"line",1,[110,115,117],{"class":116},"sAwPA","# line 22\n",[110,119,121,125,129,133],{"class":112,"line":120},2,[110,122,124],{"class":123},"sYu0t","self",[110,126,128],{"class":127},"sgsFI","._env ",[110,130,132],{"class":131},"sD7c4","=",[110,134,135],{"class":127}," jinja2.Environment()\n",[13,137,138,141,142,145,146,149,150,153],{},[27,139,140],{},"jinja2.Environment()","は、サンドボックスのかかっていない素の環境です。ここで公開される組み込みのグローバル変数は、属性をたどっていくとPythonのオブジェクトグラフ経由で",[27,143,144],{},"os","や",[27,147,148],{},"subprocess","にたどり着きます。この足がかりから任意コード実行までの手順はすでに広く文書化されており、特別な知識は要りません。Jinja2がまさにこの用途のために",[27,151,152],{},"SandboxedEnvironment","を用意しているにもかかわらず、ここでは使われていませんでした。",[60,155,157],{"id":156},"侵入経路信頼できない入力としてのプロジェクト設定","侵入経路：信頼できない入力としてのプロジェクト設定",[13,159,160,162,163,166,167,170],{},[27,161,29],{},"には",[27,164,165],{},"added_modes","というフィールドがあり、プロジェクトを開いたときに追加で有効化するモードをここに列挙します。そしてSerenaのモードローダーは、パス区切り文字を含む名前や",[27,168,169],{},".yml","で終わる名前を、そのまま読み込むファイルパスとして扱います。",[68,172,174],{"className":104,"code":173,"language":106,"meta":76,"style":76},"# context_mode.py, lines 29-30\ndef looks_like_yaml_path(s: str) -> bool:\n    return os.sep in s or (os.altsep and os.altsep in s) or s.lower().endswith((\".yml\", \".yaml\"))\n\n# context_mode.py, lines 130-135\n@classmethod\ndef load(cls, name_or_path: str | Path) -> Self:\n    if isinstance(name_or_path, Path) or looks_like_yaml_path(str(name_or_path)):\n        return cls.from_yaml(name_or_path)\n    ...\n",[27,175,176,181,205,255,262,268,277,296,318,330],{"__ignoreMap":76},[110,177,178],{"class":112,"line":113},[110,179,180],{"class":116},"# context_mode.py, lines 29-30\n",[110,182,183,186,190,193,196,199,202],{"class":112,"line":120},[110,184,185],{"class":131},"def",[110,187,189],{"class":188},"s7eDp"," looks_like_yaml_path",[110,191,192],{"class":127},"(s: ",[110,194,195],{"class":123},"str",[110,197,198],{"class":127},") -> ",[110,200,201],{"class":123},"bool",[110,203,204],{"class":127},":\n",[110,206,208,211,214,217,220,223,226,229,232,234,237,239,242,246,249,252],{"class":112,"line":207},3,[110,209,210],{"class":131},"    return",[110,212,213],{"class":127}," os.sep ",[110,215,216],{"class":131},"in",[110,218,219],{"class":127}," s ",[110,221,222],{"class":131},"or",[110,224,225],{"class":127}," (os.altsep ",[110,227,228],{"class":131},"and",[110,230,231],{"class":127}," os.altsep ",[110,233,216],{"class":131},[110,235,236],{"class":127}," s) ",[110,238,222],{"class":131},[110,240,241],{"class":127}," s.lower().endswith((",[110,243,245],{"class":244},"sYBdl","\".yml\"",[110,247,248],{"class":127},", ",[110,250,251],{"class":244},"\".yaml\"",[110,253,254],{"class":127},"))\n",[110,256,258],{"class":112,"line":257},4,[110,259,261],{"emptyLinePlaceholder":260},true,"\n",[110,263,265],{"class":112,"line":264},5,[110,266,267],{"class":116},"# context_mode.py, lines 130-135\n",[110,269,271,274],{"class":112,"line":270},6,[110,272,273],{"class":188},"@",[110,275,276],{"class":123},"classmethod\n",[110,278,280,282,285,288,290,293],{"class":112,"line":279},7,[110,281,185],{"class":131},[110,283,284],{"class":188}," load",[110,286,287],{"class":127},"(cls, name_or_path: ",[110,289,195],{"class":123},[110,291,292],{"class":131}," |",[110,294,295],{"class":127}," Path) -> Self:\n",[110,297,299,302,305,308,310,313,315],{"class":112,"line":298},8,[110,300,301],{"class":131},"    if",[110,303,304],{"class":123}," isinstance",[110,306,307],{"class":127},"(name_or_path, Path) ",[110,309,222],{"class":131},[110,311,312],{"class":127}," looks_like_yaml_path(",[110,314,195],{"class":123},[110,316,317],{"class":127},"(name_or_path)):\n",[110,319,321,324,327],{"class":112,"line":320},9,[110,322,323],{"class":131},"        return",[110,325,326],{"class":123}," cls",[110,328,329],{"class":127},".from_yaml(name_or_path)\n",[110,331,333],{"class":112,"line":332},10,[110,334,335],{"class":123},"    ...\n",[13,337,338,340,341,343,344,347,348,350],{},[27,339,165],{},"にパスらしき値が入っていれば、Serenaはそのファイルをリポジトリから読み込み、",[27,342,96],{},"フィールドを一言一句そのまま、サンドボックスのないレンダラーへ渡します。",[27,345,346],{},"yaml.safe_load","の使い方自体は正しく、YAMLのデシリアライズガジェットはきちんと止まります。ただし、",[27,349,96],{},"フィールドの中にあるただの文字列に対しては無力でした。YAMLパーサーから見れば、そこにあるのは無害なテキストにすぎません。インジェクションが起きるのはもっと後、その文字列がJinja2テンプレートとしてコンパイルされる瞬間でした。",[60,352,353],{"id":353},"信頼制御の迂回",[13,355,356,357,360,361,363,364,367,368,370,371,373,374,376,377,379],{},"信頼していないプロジェクトにコードを実行させないための仕組みが",[27,358,359],{},"is_trusted()","です。ただし、これが守っているのは2つの機能だけ。プロジェクトを開いたときにシェルコマンドを実行する",[27,362,85],{},"と、プロジェクト単位でツール設定を上書きする",[27,365,366],{},"ls_specific_settings","です。モードの読み込みとプロンプトのレンダリングを担う経路は、この",[27,369,359],{},"を一度も通りません。",[27,372,29],{},"の",[27,375,165],{},"は検証を受けないまま処理され、モードローダーは許可リストも信頼チェックも挟まずにファイルを読み込み、",[27,378,96],{},"フィールドをテンプレートエンジンへ渡します。",[13,381,382,383,385],{},"この迂回は、実際に手を動かして確認しました。",[27,384,33],{},"を空にして、どのプロジェクトも信頼済みにならない、どのデフォルト設定よりも厳しい条件を用意し、同じエンドツーエンドテストを回しています。結果は次のとおりです。",[387,388,389,406],"table",{},[390,391,392],"thead",{},[393,394,395,400,403],"tr",{},[396,397,399],"th",{"align":398},"left","機能",[396,401,402],{"align":398},"信頼ゲートの対象",[396,404,405],{"align":398},"信頼されていないプロジェクトでの結果",[407,408,409,422],"tbody",{},[393,410,411,416,419],{},[412,413,414],"td",{"align":398},[27,415,85],{},[412,417,418],{"align":398},"あり",[412,420,421],{"align":398},"ブロックされる",[393,423,424,429,432],{},[412,425,426,428],{"align":398},[27,427,165],{},"経由のテンプレートインジェクション",[412,430,431],{"align":398},"なし",[412,433,434],{"align":398},"実行される",[436,437],"br",{},[13,439,440],{},"シェルコマンドを実行することそのものが目的の機能は、きちんと止まります。ところが、同じ結果に別ルートで到達するテンプレートインジェクションのほうは、何にも止められません。保護機構の不備（CWE-693）と呼ばれるのは、まさにこういう状態です。信頼していないリポジトリにコードを実行させないこと。そのために存在するはずの信頼モデルが、ごく普通のプロジェクト読み込みに見える顔をしたまま迂回されてしまいます。",[60,442,443],{"id":443},"呼び出しチェーンの全体像",[68,445,448],{"className":446,"code":447,"language":73},[71],".serena/project.yml  (attacker-controlled, ships with the repo)\n  added_modes: [\"./path/to/attacker-mode.yml\"]\n        |\n        v\nSerenaAgentMode.load()            context_mode.py:130-135\n  from_yaml(name_or_path)\n  prompt = \u003Cattacker-controlled string>\n        |\n        v\nSerenaAgent._update_active_modes()    agent.py:1063\n        |\n        v\ncreate_system_prompt()                agent.py:996\n  _format_prompt(mode.prompt)\n  JinjaTemplate(prompt).render()      arbitrary code execution\n",[27,449,447],{"__ignoreMap":76},[13,451,452],{},"コードが動くのは、ごく普通のプロジェクトオープン処理の副作用として、しかもSerenaがLLMからの最初のリクエストを処理するより前のタイミングです。",[60,454,455],{"id":455},"影響範囲",[13,457,458,459,462],{},"Serenaが開発エコシステムに広がっている度合いは、無視できるものではありません。GitHubリポジトリのスターは27.8k、フォークは1.8k。PyPIでの",[27,460,461],{},"serena-agent","のダウンロード数は月あたり約136,000件に上ります。連携先もClaude Code、Cursor、VS Code、JetBrains IDE、Claude Desktop、OpenWebUIと幅広く、いま実際に使われているAI支援開発環境をひととおりカバーしています。",[13,464,465],{},"攻撃を成立させるのに、インフラも、リポジトリを開かせる以上のソーシャルエンジニアリングも要りません。ライブラリでも、サンプルプロジェクトでも、CTFの問題でも、一見便利そうなツールでもかまいません。攻撃者はそれを公開しておくだけ。デベロッパーがクローンしてSerenaで開いた瞬間に、コードが走ります。デベロッパーのマシンから手が届く範囲を考えれば、攻撃者の見返りはその場で確定します。提出されたリポジトリをSerenaが自動で処理するCI/CD構成なら、人の操作すら要りません。",[39,467,468],{"id":468},"新しいツールが古いバグを引き継ぐ理由",[13,470,471],{},"今回の脆弱性を成り立たせているパターンは、どれもSerenaに固有のものではありません。",[13,473,474],{},"1つ目は、ユーザー由来のデータがサンドボックスを通らずにテンプレートエンジンへ流れ込んだこと。テンプレートインジェクションはWebセキュリティで最も古い脆弱性クラスの1つで、多くのテンプレートエンジンは対策としてサンドボックスや制限モードを備えています。それでも成熟途上のエコシステムでは、設定駆動のテンプレート機能を作るときに、つい素の実装を選んでしまいがちです。同じことは、他のMCPツールでも起きるでしょう。",[13,476,477],{},"2つ目は、プロジェクト設定ファイルを信頼できる入力として扱ったこと。リポジトリの設定ファイルを書くのは、そのリポジトリの持ち主です。リポジトリを信頼しないという前提が入る脅威モデルでは、設定ファイルは攻撃者の手が入った入力にほかなりません。自分で作ったツールだと設定ファイルまでツールの一部のように見えてしまうため、この区別は曇りがちです。",[13,479,480],{},"3つ目は、信頼ゲートが一部のコードパスしかカバーしていなかったこと。Serenaの信頼モデルは、設計そのものは正しいものでした。ゲートは実在し、実装され、対象の機能もはっきりしています。抜けたのは、同じゲートの下に置かれないまま後から足されたコードパスでした。コードベースが育っていくなかで信頼の網羅性を保つには、いかにも特権的な経路だけでなく、プロジェクト由来の入力に触れる新しい経路をすべて意識してレビューし続けるしかありません。",[39,482,484],{"id":483},"今何をすべきか","今、何をすべきか",[60,486,488],{"id":487},"serenaを利用している場合","Serenaを利用している場合",[13,490,491,492,495],{},"いますぐserena-agent 1.7.0へ更新してください。修正ではテンプレートエンジンが",[27,493,494],{},"jinja2.sandbox.SandboxedEnvironment","に差し替えられ、インジェクションの経路が塞がれています。1.6.1以前を使い続けるのであれば、素性のわからないリポジトリは開かないでください。",[60,497,499],{"id":498},"mcpサーバーやaiコーディングツールを開発している場合","MCPサーバーやAIコーディングツールを開発している場合",[13,501,502],{},"以下は、LLMのためにプロジェクトディレクトリを読むツールであれば、どれにも当てはまる話です。",[504,505,506,510,513,516],"ul",{},[507,508,509],"li",{},"プロジェクト設定ファイルは、敵意を持ったリポジトリ所有者からの入力だと思って扱ってください。HTTPリクエストのボディと同じように構造を検証し、スキーマから外れたものは弾きます。",[507,511,512],{},"文字列がコードやコマンドに変わる場所を、全部洗い出してください。テンプレートのレンダリング、サブプロセスの呼び出し、プラグインの読み込み、動的インポート。それぞれについて、プロジェクトからの入力が届きうるのか、届くとしたら何が止めるのかをはっきりさせます。",[507,514,515],{},"信頼ゲートは1つの機能ではなく、すべての経路にかけてください。プロジェクト入力を読む機能を足すたびに、ゲートの範囲を見直します。",[507,517,518],{},"出荷前に、敵対的なリポジトリでテストしてください。思いつく限り攻撃的な設定を用意し、開いても何も動かないことを確かめ、その検証を自動化します。",[60,520,521],{"id":521},"セキュリティチームを率いている場合",[13,523,524],{},"MCPサーバーは、デベロッパーのユーザー権限をそのまま持って動く、新しいローカルのアタックサーフェスです。そのマシン上の他の特権ツールと同じ扱いをしてください。出発点は、自組織のどこでどのMCPサーバーが動いているかを把握することです。規模によっては、ツールとポリシーの整備が必要になるでしょう。そのうえで、MCPサーバーの更新にも他と同じ厳しさを持ち込みます。MCPサーバーの脆弱性は、それを動かしているすべてのマシンの脆弱性だからです。新しいMCPツールを検討するときは、信頼モデルの中身と、信頼できないプロジェクト入力に対するテスト方法をベンダーに尋ねてください。",[39,526,527],{"id":527},"開示タイムライン",[387,529,530,540],{},[390,531,532],{},[393,533,534,537],{},[396,535,536],{"align":398},"日付",[396,538,539],{"align":398},"内容",[407,541,542,550,557,565,577],{},[393,543,544,547],{},[412,545,546],{"align":398},"2026-08-01",[412,548,549],{"align":398},"AIコーディングエージェントのアタックサーフェスに関する調査の中で脆弱性を特定",[393,551,552,554],{},[412,553,546],{"align":398},[412,555,556],{"align":398},"GitHubの非公開セキュリティアドバイザリー経由で、完全なアドバイザリーと概念実証をメンテナーへ提出",[393,558,559,562],{},[412,560,561],{"align":398},"2026-08-05",[412,563,564],{"align":398},"メンテナーが報告を受理",[393,566,567,570],{},[412,568,569],{"align":398},"2026-08-09",[412,571,572,573,576],{"align":398},"serena-agent 1.7.0で修正版をリリース、公開アドバイザリーを公表（",[17,574,21],{"href":19,"rel":575},[],"）",[393,578,579,582],{},[412,580,581],{"align":398},"2026-08-10",[412,583,584],{"align":398},"メンテナーがGitHub CNAへCVEを申請",[436,586],{},[13,588,589],{},"報告に迅速かつ協力的に対応してくださったSerenaのメンテナーの皆様に感謝します。",[39,591,593],{"id":592},"gitlabにできること","GitLabにできること",[13,595,596],{},"同じパターンが自分のコードベースにないかを調べるなら、GitLab Duo Security Agentが使えます。「このプロジェクトは、ユーザーが操作できる文字列をテンプレートエンジンに通していないか」「このリポジトリに、実行コンテキストへ渡される設定ファイルはないか」。こうした問いかけが、現実的な出発点になります。",[39,598,599],{"id":599},"今後の展望",[13,601,602],{},"いまのMCPエコシステムは、10年前のnpmエコシステムとよく似た場所に立っています。成長が速く、採用がセキュリティの検証を追い越し、信頼の前提は暗黙のまま置かれている。今回のSerenaの件が特別かというと、そんなことはありません。むしろ、ありふれているからこそ意味があります。新しい技術が周辺のセキュリティ手法より速く成熟すれば、必ずこの種の問題が出てきます。そしてMCPは、いままさに速く成熟している最中。MCPサーバーがデベロッパーの標準インフラになるにつれ、同じような事例はさらに増えるとみています。",[13,604,605],{},"GitLabの脅威リサーチグループは、これからもAI開発ツールを調べ、責任ある開示を終えた知見を共有していきます。ブラウザ拡張機能、IDEプラグイン、CI/CDインテグレーション。デベロッパーのマシン上で大きな権限を持ち、自分では管理しきれないソースのデータを扱うこれらのツールに、セキュリティコミュニティは長く厳しい目を向けてきました。研究者の皆様にも、同じ目をMCPサーバーへ向けていただきたいと考えています。",[607,608,609],"style",{},"html pre.shiki code .sAwPA, html code.shiki .sAwPA{--shiki-default:#6A737D}html pre.shiki code .sYu0t, html code.shiki .sYu0t{--shiki-default:#005CC5}html pre.shiki code .sgsFI, html code.shiki .sgsFI{--shiki-default:#24292E}html pre.shiki code .sD7c4, html code.shiki .sD7c4{--shiki-default:#D73A49}html .default .shiki span {color: var(--shiki-default);background: var(--shiki-default-bg);font-style: var(--shiki-default-font-style);font-weight: var(--shiki-default-font-weight);text-decoration: var(--shiki-default-text-decoration);}html .shiki span {color: var(--shiki-default);background: var(--shiki-default-bg);font-style: var(--shiki-default-font-style);font-weight: var(--shiki-default-font-weight);text-decoration: var(--shiki-default-text-decoration);}html pre.shiki code .s7eDp, html code.shiki .s7eDp{--shiki-default:#6F42C1}html pre.shiki code .sYBdl, html code.shiki .sYBdl{--shiki-default:#032F62}",{"title":76,"searchDepth":120,"depth":120,"links":611},[612,613,621,622,627,628,629],{"id":41,"depth":120,"text":42},{"id":58,"depth":120,"text":58,"children":614},[615,616,617,618,619,620],{"id":62,"depth":207,"text":63},{"id":89,"depth":207,"text":90},{"id":156,"depth":207,"text":157},{"id":353,"depth":207,"text":353},{"id":443,"depth":207,"text":443},{"id":455,"depth":207,"text":455},{"id":468,"depth":120,"text":468},{"id":483,"depth":120,"text":484,"children":623},[624,625,626],{"id":487,"depth":207,"text":488},{"id":498,"depth":207,"text":499},{"id":521,"depth":207,"text":521},{"id":527,"depth":120,"text":527},{"id":592,"depth":120,"text":593},{"id":599,"depth":120,"text":599},"security-labs","2026-08-17","リポジトリを開いた瞬間に攻撃者のコードが動く。GitLabの脅威リサーチグループが、AIコーディングエージェントSerenaに重大なテンプレートインジェクションの脆弱性を発見しました。","md",null,"https://res.cloudinary.com/about-gitlab-com/image/upload/v1782237704/cj50chkvprjthczevmog.png",{},"/ja-jp/blog/critical-rce-in-serena",{"config":639,"title":5,"description":632},{"noIndex":640},false,"critical-rce-in-serena","ja-jp/blog/critical-rce-in-serena",[644,645],"security","security research","BlogPost","2026-08-18","zxWU2oKh9VdwUf5W4pl8_7OuEAu0F6OQcLHdNntKd6M",{"logo":650,"freeTrial":655,"sales":660,"login":665,"items":670,"search":1001,"minimal":1034,"duo":1052,"switchNav":1061,"pricingDeployment":1072},{"config":651},{"href":652,"dataGaName":653,"dataGaLocation":654},"/ja-jp/","gitlab logo","header",{"text":656,"config":657},"無料トライアルを開始",{"href":658,"dataGaName":659,"dataGaLocation":654},"https://gitlab.com/-/trial_registrations/new?glm_source=about.gitlab.com/ja-jp&glm_content=default-saas-trial/","free trial",{"text":661,"config":662},"デモをリクエスト",{"href":663,"dataGaName":664,"dataGaLocation":654},"/request-a-demo/","sales",{"text":666,"config":667},"サインイン",{"href":668,"dataGaName":669,"dataGaLocation":654},"https://gitlab.com/users/sign_in/","sign in",[671,757,845,850,925,979],{"text":672,"left":260,"config":673,"menu":675},"プラットフォーム",{"dataNavLevelOne":674},"platform",{"type":676,"link":677,"columns":681,"feature":746},"lists",{"text":678,"config":679},"プラットフォームを詳しく見る",{"href":680,"dataGaName":674,"dataGaLocation":654},"/ja-jp/platform/",[682,705,728],{"title":683,"items":684},"実行とワークフロー",[685,690,695,700],{"text":686,"config":687},"CI/CD",{"href":688,"dataGaLocation":654,"dataGaName":689},"/ja-jp/solutions/continuous-integration/","ci/cd",{"text":691,"config":692},"ソースコード管理",{"href":693,"dataGaLocation":654,"dataGaName":694},"/ja-jp/solutions/source-code-management/","source code management",{"text":696,"config":697},"アジャイルデリバリー",{"href":698,"dataGaLocation":654,"dataGaName":699},"/ja-jp/solutions/agile-delivery/","agile delivery",{"text":701,"config":702},"アーティファクト管理",{"href":703,"dataGaLocation":654,"dataGaName":704},"/ja-jp/artifact-central/","artifact management",{"title":706,"items":707},"セキュリティとガバナンス",[708,713,718,723],{"text":709,"config":710},"アプリケーションセキュリティテスト",{"href":711,"dataGaLocation":654,"dataGaName":712},"/ja-jp/solutions/application-security-testing/","application security testing",{"text":714,"config":715},"ガバナンスとコンプライアンス",{"href":716,"dataGaLocation":654,"dataGaName":717},"/ja-jp/solutions/software-compliance/","governance and compliance",{"text":719,"config":720},"シークレット管理",{"href":721,"dataGaLocation":654,"dataGaName":722},"/ja-jp/gitlab-secrets-manager/","secrets management",{"text":724,"config":725},"サプライチェーンセキュリティ",{"href":726,"dataGaLocation":654,"dataGaName":727},"/ja-jp/solutions/supply-chain/","supply chain security",{"title":729,"items":730},"コンテキストとAI",[731,736,741],{"text":732,"config":733},"エージェント型オーケストレーション",{"href":734,"dataGaLocation":654,"dataGaName":735},"/ja-jp/gitlab-duo-agent-platform/","agentic orchestration",{"text":737,"config":738},"コンテキストグラフ",{"href":739,"dataGaLocation":654,"dataGaName":740},"/ja-jp/gitlab-orbit/","context graph",{"text":742,"config":743},"可視性と測定",{"href":744,"dataGaLocation":654,"dataGaName":745},"/ja-jp/solutions/visibility-measurement/","visibility and measurement",{"config":747,"title":750,"text":751,"link":752},{"background":748,"textColor":749},"url('https://res.cloudinary.com/about-gitlab-com/image/upload/v1790185102/o7dn32anqcb6z8dgd3as.jpg')","#000","GitLabが選ばれる理由","ひとつのプラットフォームで、ソフトウェアライフサイクル全体を通じてスピードと制御を両立できます。",{"text":753,"config":754},"詳細はこちら",{"href":755,"dataGaName":756,"dataGaLocation":654},"/ja-jp/why-gitlab/","why gitlab",{"text":758,"left":260,"config":759,"menu":761},"ソリューション",{"dataNavLevelOne":760},"solutions",{"type":676,"link":762,"columns":766,"feature":836},{"text":763,"config":764},"すべてのソリューションを表示",{"href":765,"dataGaName":760,"dataGaLocation":654},"/ja-jp/solutions/",[767,785,803],{"title":768,"items":769},"成果",[770,775,780],{"text":771,"config":772},"DevOpsモダナイゼーション",{"href":773,"dataGaLocation":654,"dataGaName":774},"/ja-jp/assessments/devops-modernization-assessment/","devops modernization",{"text":776,"config":777},"セキュリティモダナイゼーション",{"href":778,"dataGaLocation":654,"dataGaName":779},"/ja-jp/assessments/security-modernization-assessment/","security modernization",{"text":781,"config":782},"AIモダナイゼーション",{"href":783,"dataGaLocation":654,"dataGaName":784},"/ja-jp/assessments/ai-modernization-assessment/","ai modernization",{"title":786,"items":787},"規模別",[788,793,798],{"text":789,"config":790},"エンタープライズ",{"href":791,"dataGaLocation":654,"dataGaName":792},"/ja-jp/enterprise/","enterprise",{"text":794,"config":795},"スモールビジネス",{"href":796,"dataGaLocation":654,"dataGaName":797},"/ja-jp/small-business/","small business",{"text":799,"config":800},"スタートアップ",{"href":801,"dataGaLocation":654,"dataGaName":802},"/ja-jp/solutions/startups/","startups",{"title":804,"items":805},"業界",[806,811,816,821,826,831],{"text":807,"config":808},"金融サービス",{"href":809,"dataGaLocation":654,"dataGaName":810},"/ja-jp/solutions/finance/","financial services",{"text":812,"config":813},"公共部門",{"href":814,"dataGaLocation":654,"dataGaName":815},"/ja-jp/solutions/public-sector/","public sector",{"text":817,"config":818},"通信",{"href":819,"dataGaLocation":654,"dataGaName":820},"/ja-jp/solutions/telecommunications/","telecommunications",{"text":822,"config":823},"自動車",{"href":824,"dataGaLocation":654,"dataGaName":825},"/ja-jp/solutions/automotive/","automotive",{"text":827,"config":828},"教育",{"href":829,"dataGaLocation":654,"dataGaName":830},"/ja-jp/solutions/education/","education",{"text":832,"config":833},"航空宇宙",{"href":834,"dataGaLocation":654,"dataGaName":835},"/ja-jp/solutions/aerospace/","aerospace",{"config":837,"title":838,"text":839,"link":840},{"background":748,"textColor":749},"GitLabのセキュリティ標準","セキュリティを犠牲にすることなく、ソフトウェアファクトリーを強化し、自律的なAIエージェントを実現する方法をご覧ください。",{"text":841,"config":842},"標準を見る",{"href":843,"dataGaName":844,"dataGaLocation":654},"/ja-jp/gitlab-security-standard/","gitlab security standard",{"text":846,"config":847},"価格",{"href":848,"dataGaName":849,"dataGaLocation":654,"dataNavLevelOne":849},"/ja-jp/pricing/","pricing",{"text":851,"config":852,"menu":854},"関連リソース",{"dataNavLevelOne":853},"resources",{"type":676,"link":855,"columns":859,"feature":916},{"text":856,"config":857},"すべてのリソースを表示",{"href":858,"dataGaName":853,"dataGaLocation":654},"/ja-jp/resources/",[860,888],{"title":861,"items":862},"検索する",[863,868,873,878,883],{"text":864,"config":865},"製品ドキュメント",{"href":866,"dataGaName":867,"dataGaLocation":654},"https://docs.gitlab.com/ja-jp/","docs",{"text":869,"config":870},"GitLab University",{"href":871,"dataGaName":872,"dataGaLocation":654},"https://university.gitlab.com/","university",{"text":874,"config":875},"技術デモ",{"href":876,"dataGaName":877,"dataGaLocation":654},"/ja-jp/gitlab-technical-demo-series/","demo series",{"text":879,"config":880},"インタラクティブデモ",{"href":881,"dataGaName":882,"dataGaLocation":654},"/ja-jp/demo-hub/","demo hub",{"text":884,"config":885},"GitLabサービス",{"href":886,"dataGaName":887,"dataGaLocation":654},"/ja-jp/services/","services",{"title":889,"items":890},"つなげる",[891,896,901,906,911],{"text":892,"config":893},"ブログ",{"href":894,"dataGaName":895,"dataGaLocation":654},"/ja-jp/blog/","blog",{"text":897,"config":898},"コミュニティ",{"href":899,"dataGaName":900,"dataGaLocation":654},"/community/","community",{"text":902,"config":903},"お客様事例",{"href":904,"dataGaName":905,"dataGaLocation":654},"/ja-jp/customers/","customers",{"text":907,"config":908},"パートナー",{"href":909,"dataGaName":910,"dataGaLocation":654},"/ja-jp/partners/","partners",{"text":912,"config":913},"イベント",{"href":914,"dataGaName":915,"dataGaLocation":654},"/events/","events",{"config":917,"title":918,"text":919,"link":920},{"background":748,"textColor":749},"GitLabの最新情報","最新の機能と改善点に関する情報をお届けします。",{"text":921,"config":922},"最新情報を読む",{"href":923,"dataGaName":924,"dataGaLocation":654},"/ja-jp/whats-new/","whats new",{"text":926,"config":927,"menu":929},"企業情報",{"dataNavLevelOne":928},"company",{"type":676,"columns":930},[931],{"items":932},[933,938,944,949,954,959,964,969,974],{"text":934,"config":935},"GitLabについて",{"href":936,"dataGaName":937,"dataGaLocation":654},"/ja-jp/company/","about",{"text":939,"config":940,"footerGa":943},"採用情報",{"href":941,"dataGaName":942,"dataGaLocation":654},"/jobs/","jobs",{"dataGaName":942},{"text":945,"config":946},"プレス",{"href":947,"dataGaName":948,"dataGaLocation":654},"/press/","press",{"text":950,"config":951},"ハンドブック",{"href":952,"dataGaName":953,"dataGaLocation":654},"https://handbook.gitlab.com/","handbook",{"text":955,"config":956},"経営陣",{"href":957,"dataGaName":958,"dataGaLocation":654},"/company/team/e-group/","leadership",{"text":960,"config":961},"投資家向け情報",{"href":962,"dataGaName":963,"dataGaLocation":654},"https://ir.gitlab.com/overview/default.aspx","investor relations",{"text":965,"config":966},"トラストセンター",{"href":967,"dataGaName":968,"dataGaLocation":654},"/ja-jp/security/","trust center",{"text":970,"config":971},"AI Transparency Center",{"href":972,"dataGaName":973,"dataGaLocation":654},"/ja-jp/ai-transparency-center/","ai transparency center",{"text":975,"config":976},"ニュースレター",{"href":977,"dataGaName":978,"dataGaLocation":654},"/company/contact/#contact-forms","newsletter",{"text":980,"config":981,"menu":982},"お問い合わせ",{"dataNavLevelOne":928},{"type":676,"columns":983},[984],{"items":985},[986,991,996],{"text":987,"config":988},"お問い合わせはこちら",{"href":989,"dataGaName":990,"dataGaLocation":654},"/ja-jp/sales/","talk to sales",{"text":992,"config":993},"サポートポータル",{"href":994,"dataGaName":995,"dataGaLocation":654},"https://support.gitlab.com/hc/en-us","support portal",{"text":997,"config":998},"カスタマーポータル",{"href":999,"dataGaName":1000,"dataGaLocation":654},"https://customers.gitlab.com/customers/sign_in/","customer portal",{"close":1002,"login":1003,"suggestions":1010},"閉じる",{"text":1004,"link":1005},"リポジトリとプロジェクトを検索するには、次にログインします",{"text":1006,"config":1007},"GitLab.com",{"href":668,"dataGaName":1008,"dataGaLocation":1009},"search login","search",{"text":1011,"default":1012},"提案",[1013,1016,1020,1022,1026,1030],{"text":1014,"config":1015},"GitLab Duo Agent Platform",{"href":734,"dataGaName":1014,"dataGaLocation":1009},{"text":1017,"config":1018},"コード提案（AI）",{"href":734,"dataGaName":1019,"dataGaLocation":1009},"Code Suggestions (AI)",{"text":686,"config":1021},{"href":688,"dataGaName":686,"dataGaLocation":1009},{"text":1023,"config":1024},"GitLab on AWS",{"href":1025,"dataGaName":1023,"dataGaLocation":1009},"/ja-jp/partners/technology-partners/aws/",{"text":1027,"config":1028},"GitLab on Google Cloud",{"href":1029,"dataGaName":1027,"dataGaLocation":1009},"/ja-jp/partners/technology-partners/google-cloud-platform/",{"text":1031,"config":1032},"GitLabを選ぶ理由",{"href":755,"dataGaName":1033,"dataGaLocation":1009},"Why GitLab?",{"freeTrial":1035,"mobileIcon":1039,"desktopIcon":1044,"secondaryButton":1047},{"text":656,"config":1036},{"href":1037,"dataGaName":659,"dataGaLocation":1038},"https://gitlab.com/-/trials/new/","nav",{"altText":1040,"config":1041},"GitLabアイコン",{"src":1042,"dataGaName":1043,"dataGaLocation":1038},"https://res.cloudinary.com/about-gitlab-com/image/upload/v1758203874/jypbw1jx72aexsoohd7x.svg","gitlab icon",{"altText":1040,"config":1045},{"src":1046,"dataGaName":1043,"dataGaLocation":1038},"https://res.cloudinary.com/about-gitlab-com/image/upload/v1758203875/gs4c8p8opsgvflgkswz9.svg",{"text":1048,"config":1049},"はじめに",{"href":1050,"dataGaName":1051,"dataGaLocation":1038},"https://gitlab.com/-/trial_registrations/new?glm_source=about.gitlab.com/ja-jp/get-started/","get started",{"freeTrial":1053,"mobileIcon":1057,"desktopIcon":1059},{"text":1054,"config":1055},"GitLab Duoの詳細はこちら",{"href":734,"dataGaName":1056,"dataGaLocation":1038},"gitlab duo",{"altText":1040,"config":1058},{"src":1042,"dataGaName":1043,"dataGaLocation":1038},{"altText":1040,"config":1060},{"src":1046,"dataGaName":1043,"dataGaLocation":1038},{"button":1062,"mobileIcon":1067,"desktopIcon":1069},{"text":1063,"config":1064},"/switch",{"href":1065,"dataGaName":1066,"dataGaLocation":1038},"#contact","switch",{"altText":1040,"config":1068},{"src":1042,"dataGaName":1043,"dataGaLocation":1038},{"altText":1040,"config":1070},{"src":1071,"dataGaName":1043,"dataGaLocation":1038},"https://res.cloudinary.com/about-gitlab-com/image/upload/v1773335277/ohhpiuoxoldryzrnhfrh.png",{"freeTrial":1073,"mobileIcon":1078,"desktopIcon":1080},{"text":1074,"config":1075},"料金ページに戻る",{"href":848,"dataGaName":1076,"dataGaLocation":1038,"icon":1077},"back to pricing","GoBack",{"altText":1040,"config":1079},{"src":1042,"dataGaName":1043,"dataGaLocation":1038},{"altText":1040,"config":1081},{"src":1046,"dataGaName":1043,"dataGaLocation":1038},{"title":1083,"titleMobile":1084,"button":1085,"config":1088},"GitLab Orbitが登場: AIエージェントのためのコンテキストレイヤー","GitLab Orbitが登場",{"text":753,"config":1086},{"href":739,"dataGaName":1087,"dataGaLocation":654},"orbit",{"layout":1089,"disabled":640},"release",{"data":1091},{"text":1092,"source":1093,"edit":1099,"contribute":1104,"config":1109,"items":1114,"minimal":1336},"GitはSoftware Freedom Conservancyの商標です。当社は「GitLab」をライセンスに基づいて使用しています",{"text":1094,"config":1095},"ページのソースを表示",{"href":1096,"dataGaName":1097,"dataGaLocation":1098},"https://gitlab.com/gitlab-com/marketing/digital-experience/about-gitlab-com/","page source","footer",{"text":1100,"config":1101},"このページを編集",{"href":1102,"dataGaName":1103,"dataGaLocation":1098},"https://gitlab.com/gitlab-com/marketing/digital-experience/about-gitlab-com/-/blob/main/content/","web ide",{"text":1105,"config":1106},"ご協力をお願いします",{"href":1107,"dataGaName":1108,"dataGaLocation":1098},"https://gitlab.com/gitlab-com/marketing/digital-experience/about-gitlab-com/-/blob/main/CONTRIBUTING.md/","please contribute",{"twitter":1110,"facebook":1111,"youtube":1112,"linkedin":1113},"https://twitter.com/gitlab","https://www.facebook.com/gitlab","https://www.youtube.com/channel/UCnMGQ8QHMAnVIsI3xJrihhg","https://www.linkedin.com/company/gitlab-com",[1115,1161,1218,1260,1303],{"title":846,"links":1116,"subMenu":1131},[1117,1121,1126],{"text":1118,"config":1119},"プランの表示",{"href":848,"dataGaName":1120,"dataGaLocation":1098},"view plans",{"text":1122,"config":1123},"Premiumを選ぶ理由",{"href":1124,"dataGaName":1125,"dataGaLocation":1098},"/ja-jp/pricing/premium/","why premium",{"text":1127,"config":1128},"Ultimateを選ぶ理由",{"href":1129,"dataGaName":1130,"dataGaLocation":1098},"/ja-jp/pricing/ultimate/","why ultimate",[1132],{"title":980,"links":1133},[1134,1137,1139,1141,1146,1151,1156],{"text":1135,"config":1136},"営業担当へのお問い合わせ",{"href":989,"dataGaName":664,"dataGaLocation":1098},{"text":992,"config":1138},{"href":994,"dataGaName":995,"dataGaLocation":1098},{"text":997,"config":1140},{"href":999,"dataGaName":1000,"dataGaLocation":1098},{"text":1142,"config":1143},"ステータス",{"href":1144,"dataGaName":1145,"dataGaLocation":1098},"https://status.gitlab.com/","status",{"text":1147,"config":1148},"利用規約",{"href":1149,"dataGaName":1150,"dataGaLocation":1098},"/terms/","terms of use",{"text":1152,"config":1153},"プライバシーに関する声明",{"href":1154,"dataGaName":1155,"dataGaLocation":1098},"/ja-jp/privacy/","privacy statement",{"text":1157,"config":1158},"Cookie設定",{"dataGaName":1159,"dataGaLocation":1098,"id":1160,"isOneTrustButton":260},"cookie preferences","ot-sdk-btn",{"title":672,"links":1162,"subMenu":1175},[1163,1165,1167,1169,1171,1173],{"text":678,"config":1164},{"href":680,"dataGaName":674,"dataGaLocation":1098},{"text":732,"config":1166},{"href":734,"dataGaName":735,"dataGaLocation":1098},{"text":686,"config":1168},{"href":688,"dataGaName":689,"dataGaLocation":1098},{"text":737,"config":1170},{"href":739,"dataGaName":740,"dataGaLocation":1098},{"text":719,"config":1172},{"href":721,"dataGaName":722,"dataGaLocation":1098},{"text":750,"config":1174},{"href":755,"dataGaName":756,"dataGaLocation":1098},[1176],{"title":1177,"links":1178},"トピック",[1179,1183,1188,1193,1198,1203,1208,1213],{"text":686,"config":1180},{"href":1181,"dataGaName":1182,"dataGaLocation":1098},"/ja-jp/topics/ci-cd/","cicd",{"text":1184,"config":1185},"GitOps",{"href":1186,"dataGaName":1187,"dataGaLocation":1098},"/ja-jp/topics/gitops/","gitops",{"text":1189,"config":1190},"DevOps",{"href":1191,"dataGaName":1192,"dataGaLocation":1098},"/ja-jp/topics/devops/","devops",{"text":1194,"config":1195},"バージョン管理",{"href":1196,"dataGaName":1197,"dataGaLocation":1098},"/ja-jp/topics/version-control/","version control",{"text":1199,"config":1200},"DevSecOps",{"href":1201,"dataGaName":1202,"dataGaLocation":1098},"/ja-jp/topics/devsecops/","devsecops",{"text":1204,"config":1205},"クラウドネイティブ",{"href":1206,"dataGaName":1207,"dataGaLocation":1098},"/ja-jp/topics/cloud-native/","cloud native",{"text":1209,"config":1210},"コーディングのためのAI",{"href":1211,"dataGaName":1212,"dataGaLocation":1098},"/ja-jp/topics/devops/ai-for-coding/","ai for coding",{"text":1214,"config":1215},"エージェント型AI",{"href":1216,"dataGaName":1217,"dataGaLocation":1098},"/ja-jp/topics/agentic-ai/","agentic ai",{"title":758,"links":1219},[1220,1222,1224,1226,1228,1231,1233,1235,1237,1239,1241,1243,1245,1248,1252,1256],{"text":771,"config":1221},{"href":773,"dataGaName":774,"dataGaLocation":1098},{"text":776,"config":1223},{"href":778,"dataGaName":779,"dataGaLocation":1098},{"text":781,"config":1225},{"href":783,"dataGaName":784,"dataGaLocation":1098},{"text":807,"config":1227},{"href":809,"dataGaName":810,"dataGaLocation":1098},{"text":1229,"config":1230},"公共機関",{"href":814,"dataGaName":815,"dataGaLocation":1098},{"text":817,"config":1232},{"href":819,"dataGaName":820,"dataGaLocation":1098},{"text":822,"config":1234},{"href":824,"dataGaName":825,"dataGaLocation":1098},{"text":827,"config":1236},{"href":829,"dataGaName":830,"dataGaLocation":1098},{"text":832,"config":1238},{"href":834,"dataGaName":835,"dataGaLocation":1098},{"text":789,"config":1240},{"href":791,"dataGaName":792,"dataGaLocation":1098},{"text":794,"config":1242},{"href":796,"dataGaName":797,"dataGaLocation":1098},{"text":799,"config":1244},{"href":801,"dataGaName":802,"dataGaLocation":1098},{"text":1184,"config":1246},{"href":1247,"dataGaName":1187,"dataGaLocation":1098},"/ja-jp/solutions/gitops/",{"text":1249,"config":1250},"ソフトウェアコンポジション解析",{"href":726,"dataGaName":1251,"dataGaLocation":1098},"software composition analysis",{"text":1253,"config":1254},"バリューストリーム管理",{"href":744,"dataGaName":1255,"dataGaLocation":1098},"value stream management",{"text":1257,"config":1258},"すべてのソリューション",{"href":765,"dataGaName":1259,"dataGaLocation":1098},"all solutions",{"title":1261,"links":1262},"リソース",[1263,1268,1273,1276,1278,1280,1282,1284,1286,1288,1290,1292,1294,1296,1299],{"text":1264,"config":1265},"インストール",{"href":1266,"dataGaName":1267,"dataGaLocation":1098},"/ja-jp/install/","install",{"text":1269,"config":1270},"クイックスタートガイド",{"href":1271,"dataGaName":1272,"dataGaLocation":1098},"/ja-jp/get-started/","quick setup checklists",{"text":864,"config":1274},{"href":1275,"dataGaName":867,"dataGaLocation":1098},"https://docs.gitlab.com/ja-jp",{"text":869,"config":1277},{"href":871,"dataGaName":872,"dataGaLocation":1098},{"text":874,"config":1279},{"href":876,"dataGaName":877,"dataGaLocation":1098},{"text":879,"config":1281},{"href":881,"dataGaName":882,"dataGaLocation":1098},{"text":884,"config":1283},{"href":886,"dataGaName":887,"dataGaLocation":1098},{"text":892,"config":1285},{"href":894,"dataGaName":895,"dataGaLocation":1098},{"text":897,"config":1287},{"href":899,"dataGaName":900,"dataGaLocation":1098},{"text":902,"config":1289},{"href":904,"dataGaName":905,"dataGaLocation":1098},{"text":907,"config":1291},{"href":909,"dataGaName":910,"dataGaLocation":1098},{"text":912,"config":1293},{"href":914,"dataGaName":915,"dataGaLocation":1098},{"text":975,"config":1295},{"href":977,"dataGaName":978,"dataGaLocation":1098},{"text":1297,"config":1298},"最新リリース",{"href":923,"dataGaName":924,"dataGaLocation":1098},{"text":1300,"config":1301},"すべてのリソース",{"href":858,"dataGaName":1302,"dataGaLocation":1098},"all resources",{"title":1304,"links":1305},"会社情報",[1306,1308,1310,1312,1314,1316,1318,1320,1322,1326,1331],{"text":934,"config":1307},{"href":936,"dataGaName":928,"dataGaLocation":1098},{"text":939,"config":1309},{"href":941,"dataGaName":942,"dataGaLocation":1098},{"text":945,"config":1311},{"href":947,"dataGaName":948,"dataGaLocation":1098},{"text":950,"config":1313},{"href":952,"dataGaName":953,"dataGaLocation":1098},{"text":955,"config":1315},{"href":957,"dataGaName":958,"dataGaLocation":1098},{"text":960,"config":1317},{"href":962,"dataGaName":963,"dataGaLocation":1098},{"text":965,"config":1319},{"href":967,"dataGaName":968,"dataGaLocation":1098},{"text":970,"config":1321},{"href":972,"dataGaName":973,"dataGaLocation":1098},{"text":1323,"config":1324},"Sustainability",{"href":1325,"dataGaName":1323,"dataGaLocation":1098},"/sustainability/",{"text":1327,"config":1328},"ダイバーシティ、インクルージョン、ビロンギング（DIB）",{"href":1329,"dataGaName":1330,"dataGaLocation":1098},"/ja-jp/diversity-inclusion-belonging/","Diversity, inclusion and belonging",{"text":1332,"config":1333},"現代奴隷制の透明性に関する声明",{"href":1334,"dataGaName":1335,"dataGaLocation":1098},"https://handbook.gitlab.com/handbook/legal/modern-slavery-act-transparency-statement/","modern slavery transparency statement",{"items":1337},[1338,1340,1342],{"text":1147,"config":1339},{"href":1149,"dataGaName":1150,"dataGaLocation":1098},{"text":1157,"config":1341},{"dataGaName":1159,"dataGaLocation":1098,"id":1160,"isOneTrustButton":260},{"text":1152,"config":1343},{"href":1154,"dataGaName":1155,"dataGaLocation":1098},[1345,1359],{"id":1346,"title":7,"body":634,"config":1347,"content":1350,"description":634,"extension":1353,"meta":1354,"navigation":260,"path":1355,"seo":1356,"stem":1357,"__hash__":1358},"blogAuthors/en-us/blog/authors/daniel-abeles.yml",{"template":1348,"gitlabHandle":1349},"BlogAuthor","dabeles",{"name":7,"config":1351},{"headshot":1352},"https://res.cloudinary.com/about-gitlab-com/image/upload/v1786473980/kjzctsiwvfc6afimsdtc.jpg","yml",{},"/en-us/blog/authors/daniel-abeles",{},"en-us/blog/authors/daniel-abeles","9j7gS6WI8857OrOR0VcnHZiFLXpZpnKFA3tgPdDU5hw",{"id":1360,"title":8,"body":634,"config":1361,"content":1362,"description":634,"extension":1353,"meta":1365,"navigation":260,"path":1366,"seo":1367,"stem":1368,"__hash__":1369},"blogAuthors/en-us/blog/authors/abisheik-magesh.yml",{"template":1348},{"name":8,"config":1363},{"headshot":1364},"https://res.cloudinary.com/about-gitlab-com/image/upload/v1787000354/gmgyvfesrvwdlvt52gdw.png",{},"/en-us/blog/authors/abisheik-magesh",{},"en-us/blog/authors/abisheik-magesh","kPev_Acm8MB5tgKMnU_Rkfq1sl42e8DixU6iNMXXfxI",[1371,1377,1383],{"title":1372,"description":1373,"heroImage":635,"category":630,"date":1374,"authors":1375,"slug":1376,"externalUrl":634},"AIコーディングエージェントDeepSeek-Reasonixに設定ファイル汚染によるコマンド実行の脆弱性","GitLabの脅威リサーチグループは、ファイルの差分を表示しただけで攻撃者のコードが動く脆弱性ConfigPoisoningをDeepSeek-Reasonixで発見しました。","2026-10-02",[8,7],"deepseek-reasonix-vulnerability-discovered",{"title":1378,"description":1379,"heroImage":635,"category":630,"date":1380,"authors":1381,"slug":1382,"externalUrl":634},"Node.jsサンドボックスライブラリvm2に、CVSS 10.0のリモートコード実行の脆弱性","GitLabの脅威リサーチグループは、Node.jsサンドボックスライブラリvm2に深刻なサンドボックス脱出の脆弱性を発見しました。公式ドキュメント記載の設定のまま、攻撃者のコードが実行されます。","2026-09-02",[8,7],"critical-remote-code-execution-in-vm2",{"title":1384,"description":1385,"heroImage":1386,"category":630,"date":1387,"authors":1388,"slug":1389,"externalUrl":634},"サンドボックスの閉鎖性は、AIエージェントが到達できる範囲で決まる","社内評価で行き詰まったAIエージェントは、許可リストに載っていた唯一のサービスの脆弱性を突き、わずか1時間でサンドボックスを脱出しました。エージェント時代の許可リスト設計に生じた死角と、テスト環境で到達範囲を絞るための4つの対策を解説します。","https://res.cloudinary.com/about-gitlab-com/image/upload/v1786468880/uxouffutvvwsbxzikhyc.png","2026-08-12",[7],"ai-agent-sandbox",{"header":1391,"text":1392,"button":1396,"disclaimer":1399},"無料の\n\n30日間のGitLabトライアルを開始\n",[1393,1394,1395],"GitLab Duo Agent Platformへのアクセス","GitLabの最も高度な機能を試す","AIで複雑なタスクを自動化する",{"text":656,"config":1397},{"href":1398,"dataGaName":659,"dataGaLocation":895},"https://gitlab.com/-/trials/new?glm_content=default-saas-trial&glm_source=about.gitlab.com/ja-jp/blog/","クレジットカードなしでご登録いただけます。",{"header":1401,"blurb":1402,"button":1403,"secondaryButton":1407},"今すぐ開発をスピードアップ","DevSecOpsに特化したインテリジェントオーケストレーションプラットフォームで実現できることをご確認ください。\n",{"text":656,"config":1404},{"href":1405,"dataGaName":659,"dataGaLocation":1406},"https://gitlab.com/-/trial_registrations/new?glm_content=default-saas-trial&glm_source=about.gitlab.com/ja-jp/","feature",{"text":980,"config":1408},{"href":989,"dataGaName":664,"dataGaLocation":1406},1791944943788]