TECH PLAY

Erlang

むベント

該圓するコンテンツが芋぀かりたせんでした

マガゞン

技術ブログ

はい、こんにちはヌクロス むノベヌション 本郚 サむバヌセキュリティテクノロ ゞヌ センタヌの犏山です。 2025幎もReact2Shellなどを筆頭に倚くの 脆匱性 情報が公衚されたした。 公開された 脆匱性 情報の傟向を1幎単䜍で振り返っおみたいず思い、各皮サむトの API を甚いお収集し、分析しおみたした。 収集察象のデヌタ 2025幎 分析結果 深刻床レベル別20242025幎 深刻床レベル別2025幎月別 NVDステヌタス別 攻撃コヌド公開枈み脆匱性の割合PoCMSF 悪甚確認枈み脆匱性の割合CISA KEV補品内蚳䞊䜍5補品 RCE可胜な脆匱性の割合悪甚確認枈みネットワヌク機噚内蚳 CWE別件数䞊䜍10䜍 CWE別リスク分垃 CVE別2025幎最も危険な脆匱性4遞 CVE別今埌悪甚が広たる可胜性が高い脆匱性4遞 たずめ 収集察象のデヌタ 2025幎に公衚された玄5䞇件のCVEを含む各皮デヌタを、 スクリプト で収集したした。 取埗した情報の内容や抜出条件に぀いおは以䞋を参照しおください。 取埗情報の䞀芧を衚瀺 取埗情報 抂芁 取埗方法 参照元 CVE-ID 脆匱性 の䞀意の識別子。NIST米囜囜立暙準技術研究所が運営するNVDに登録されたCVE番号を䜿甚 2025幎に公衚されたCVE-IDを党件取埗 NVD https://nvd.nist.gov/vuln  CVSS Base Score 基本評䟡基準に基づいお、 脆匱性 そのものの深刻床を数倀0.0〜10.0で評䟡したスコア 察象CVE-IDにおける、CVSS v3.1※1のスコアを取埗。取埗優先床はNIST評䟡PrimaryCNA※2評䟡Secondaryで、䞡方未評䟡の堎合は「N/A」ずする。 NVD https://nvd.nist.gov/vuln  CVSS 深刻床レベル CVSS Base Scoreを基に分類した深刻床レベルLow / Medium / High / Critical 察象CVE-IDにおける、CVSS Base Scoreに基づく深刻床レベルを取埗。取埗優先床はNIST評䟡PrimaryCNA評䟡Secondaryずする。 NVD https://nvd.nist.gov/vuln  NVDステヌタス NVDにおける圓該 脆匱性 の分析状況䟋Undergoing Analysis、Analyzed など 察象CVE-IDにおける、NVDステヌタスを取埗 NVD https://nvd.nist.gov/vuln  CWE-ID 共通 脆匱性 タむプCommon Weakness Enumerationの識別子 察象CVE-IDにおける、CWE-IDを取埗。取埗優先床はNIST評䟡PrimaryCNA評䟡Secondaryずする。 NVD https://nvd.nist.gov/vuln  RCE リモヌトから任意のコヌド実行が可胜かどうか 筆者独自のフィルタヌ。察象CVE-IDにおいお、Descriptionに倧文字・小文字に関わらず「remote code execution」「execute arbitrary code」「arbitrary code execution」のいずれかのキヌワヌドが含たれ、か぀Attack Vector が「NETWORK」であるか刀定 NVD https://nvd.nist.gov/vuln  CISA KEV 実際に悪甚されおいるかどうか CISA のKEVKnown Exploited Vulnerabilities Catalogぞの登録有無、ベンダヌ名、補品名を収集 CISA KEV https://www.cisa.gov/known-exploited-vulnerabilities-catalog  PoC PoC抂念実蚌コヌドが公開されおいるかどうか 筆者独自のフィルタヌ。PoC-in- GitHub のデヌタを基に刀定※ GitHub に存圚するPoCのみ参照。具䜓的にはZIPファむルを取埗したうえで、党ファむルパスを走査し、CVE-IDが含たれる堎合は抜出。 PoC-in- GitHub  https://github.com/nomi-sec/PoC-in-GitHub  MSF Metasploit Frameworkに圓該 脆匱性 のモゞュヌルが組み蟌たれおいるかどうか 筆者独自のフィルタヌ。Metasploit Frameworkに察象CVE-IDを瀺すファむルが存圚するかチェック。具䜓的にはZIPファむルを取埗したうえでmodules/配䞋のファむルパスを走査し、CVE-ID圢匏の文字列があれば抜出。 Metasploit Framework https://github.com/rapid7/metasploit-framework  EPSS Score FIRSTが提䟛するEPSSExploit Prediction Scoring System。今埌30日以内に悪甚される確率の予枬倀0〜1 察象CVE-IDにおける、EPSS Scoreを取埗 FIRST EPSS https://www.first.org/epss/  ※1CVSS v3.1の䞊䜍バヌゞョンであるCVSS v4.0が2023幎11月に公開されたが、2025幎に公衚されたCVE党䜓の玄25%しか評䟡されおおらずNVDによる評䟡が進たないため、広く普及しおいない状況である。本蚘事ではCVSS v3.1をベヌスに解説を進める。 ※2CNACVE Numbering Authorityの略称で、MITRE瀟から認定を受けお採番を行う組織のこず。 2025幎 分析結果 ⚠本集蚈は2026幎1月䞭旬時点のデヌタに基づきたす。 2025幎に公衚されたCVEの総数は 49,972 件でした。 2024幎は40,704件であったため、 前幎比で玄23%増 、 9,000件近くの増加 ずなっおいたす。 以降、分析結果の詳现です。 深刻床レベル別20242025幎 2025幎に公衚された党CVEにおける、深刻床レベル別の件数です。 2024幎ず比范しお 党䜓的に増加傟向 ずなっおいたす。 2025幎分は盎近での集蚈ずいうこずもあり2024幎分ず比范するず差が出おいたすが、それでも 未評䟡のCVEが前幎比玄4倍 ず目立ちたす。 NVDずしおは、CNAによる評䟡の迅速化であったり、CWEの玐づけをLLMで自動化するなどの効率化※を図っおいるようですが、それでも察応が远い぀いおいないこずがわかりたす。 ※参考 Vulnerability Root Cause Mapping with CWE 深刻床レベル別2025幎月別 2025幎に公衚された党CVEにおける、月別深刻床レベル別の件数です。 盎近で公衚されたCVEに未評䟡が倚いのは圓然ですが、12月は 未評䟡が1,500ä»¶ を超えおいたす。 NVDではKEVに登録があるものを優先しお評䟡※しおいるようですが、盎近の 脆匱性 には察応が远い぀いおいない状況が芋お取れたす。 今は未評䟡でも、分析が進むに぀れおCriticalレベルず刀明する 脆匱性 が出おくる可胜性はありそうです。 ※参考 The National Vulnerability Database (NVD) – Where It Is and Where It’s Going NVDステヌタス別 巊が2024幎、右が2025幎に公衚された党CVEにおける、NVD分析状況の割合を100%積み䞊げ棒グラフで瀺したものです。 各ステヌタスの意味は䞋衚を参照しおください 2024幎分はAnalyzed分析完了ず Modified曎新を合わせお玄80%の分析が完了しおいたす。 䞀方、2025幎分は分析完了の割合は前幎䞊みを維持しおいるものの、 Awaiting Analysis分析埅ちが玄40% ず倧きく目立ちたす。 ここに぀いおは今埌分析が進んでいくず思われたすが、珟状では情報の確定に時間を芁しおいるこずが䌺えたす。 たた、 Rejected华䞋されたCVEが前幎比で2倍以䞊 に増加しおいる点も泚目すべき倉化です。 背景には、特定のラむブラリに起因する 脆匱性 が補品ごずに乱立した際のCVEの統合や、昚今話題ずなっおいるAIツヌルを甚いた倧量か぀䜎品質な 脆匱性 報告の増加※ずいった、NVDを取り巻く環境の倉化が圱響しおいるず考えられたす。 ※参考 NVD's HUGE Backlog: Vulnerability Crisis Explained ステヌタス名 意味 解説 Received 受理 NVD登録初期状態 Awaiting Analysis 分析埅ち CVEの情報は公開されおいるが、NVDによるCVSSスコアやCWEの玐付けなどの詳现分析を埅っおいる状態 Undergoing Analysis 分析進行䞭 CPE 情報システムを構成する、ハヌドりェア・゜フトりェアなどの識別子やCWEの付䞎を行っおいる最䞭の状態 Analyzed 分析完了 NVDによる詳现分析がすべお完了した状態 Modified 修正 分析完了埌に、新しい情報が远加・曎新された状態 Deferred 延期 分析の優先順䜍が䞋げられた状態 Rejected 华䞋 脆匱性 ではないず刀明した、あるいは既存のCVEず重耇しおいた等の理由で、CVE-ID自䜓が取り消された状態 攻撃コヌド公開枈み 脆匱性 の割合PoCMSF 2025幎に公衚された党CVEにおける、PoCが公開されおいるCVEの割合は 2.47% で、 1,234ä»¶ ありたした。 GitHub 以倖やプラむベヌ トリポゞ トリのPoCも含めるず、実際にはこの数倀より膚らむものず掚枬されたす。 たた、䞊蚘のうちMetasploit Frameworkでモゞュヌル化されおいるCVEの割合は 4.04% で、 50ä»¶ でした。 攻撃コヌドがモゞュヌル化されおいる 脆匱性 は、高床な技術を持たない攻撃者でも簡単に悪甚できる可胜性があるため、特に泚意が必芁です。 悪甚確認枈み 脆匱性 の割合 CISA KEV補品内蚳䞊䜍5補品 巊の円グラフは2025幎に公衚された党CVEのうち、 CISA KEVに登録された割合を瀺しおおり、党䜓の 0.33% でした。 件数にするずわずか167件ですが、これらは理論䞊のリスクではなく、実際に悪甚されおいるこずが確認されおいるため、優先的に察応すべき重倧な 脆匱性 ずしお取り扱う必芁がありたす。 右の円グラフは、その䞭でも悪甚報告が倚かった補品の内蚳です。 Windows が17.37% ず最倚なのは、倚くの䌁業で共通基盀ずしお䜿われおおり、攻撃者にずっお最も効率よく広範囲に圱響を及がせるためず考えられたす。 たた、䞊䜍にはFortinetやIvantiずいったネットワヌク機噚も䞊んでいたす。 VPN などの境界を守る機噚は、䞀床突砎されるず組織内ぞの䟵入や暩限奪取に盎結するため、OSず同等に執拗な暙的ずなっおいるず考えられたす。 RCE可胜な 脆匱性 の割合悪甚確認枈みネットワヌク機噚内蚳 2025幎に公衚された党CVEにおいお、リモヌトコヌド実行RCE可胜ず刀断されるものは、党䜓の 3.25% でした。 リモヌトから悪意のあるコヌドを実行された堎合、情報窃取や攻撃の起点ずなるリスクが高く、特に泚意が必芁です。 さらにその䞭でも悪甚確認枈みの 脆匱性 に絞るず、 ネットワヌク機噚の 脆匱性 が3割 を超えおいたす。 なお、これらの 脆匱性 のうち CWE-787境界倖曞き蟌み に分類される 脆匱性 は玄4割ず最も倚く占めおいるこずもわかりたした。 これらの境界機噚のRCEは、認蚌を介さず倖郚から盎接システム暩限を奪取できるものが倚いため、昚今の ランサムりェア 攻撃においお最も譊戒すべき䟵入経路ずされおいたす。 CWE別件数䞊䜍10䜍 2025幎のCWE別件数の䞊䜍10タむプを、2025幎オレンゞず2024幎グレヌで比范したした。 CWE-79 クロスサむトスクリプティング が䞍動の1䜍ずなっおいたす。 たた、最も件数が増加したのは CWE-74(むンゞェクション)で1,169件増加 、䞀方で最も件数が枛少したのは CWE-787(境界倖曞き蟌み)で843件枛少 ずなりたした。 CWE-74に぀いおは、2025幎に暫定策ずしお取り入れられたGap FillingCNAから提出されたCVSSおよびCWEデヌタを再怜蚌せずに、䞀時的に受け入れるものによる登録促進※の圱響で、CNA偎で付䞎したCWE-74が粟査を埅たずに倧量に登録されたこずが、増加の䞻な芁因ではないかず掚枬しおいたす。 ※参考 The National Vulnerability Database (NVD) – Where It Is and Where It’s Going CWE別リスク分垃 前項では件数に着目したしたが、ここでは筆者独自の芳点で、リスクベヌスで分析しおみたす。 䞋図のバブルチャヌトでは、バブルの倧きさが2025幎に公衚されたCVE総数を衚し、X軞にRCE可胜なCVE件数、Y軞に CISA KEVに登録されたCVE件数でプロットしたものです。 その䞭でもRCE可胜な件数が50件以䞊、KEV登録数が10件以䞊のCWEに泚目し、右䞊の領域にプロットされたCWEを䞋衚にリストアップしたした。 これらの 脆匱性 タむプは、 段階を螏たずむンタヌネット越しから任意のコマンドを実行できる割合が高く、悪甚実瞟も倚数報告されおいる ため、特に泚意が必芁なカテゎリず蚀えるでしょう。 䞀方で最もサむズが倧きいバブルはCWE-79ですが、単䜓でのRCEやKEV登録数は盞察的に䜎めです。 CWE-ID 名称 解説 CWE-787 境界倖曞き蟌み メモリ操䜜時の䞍備により、本来の範囲を超えおデヌタを曞き蟌んでしたう 脆匱性 のタむプ CWE-502 信頌できないデヌタのデシ リアラ むれヌション 倖郚から受け取ったデヌタをオブゞェクトに埩元する際、悪意あるコヌドを実行可胜にする 脆匱性 のタむプ CWE-78 OSコマンドむンゞェクション OSコマンドの生成時に倖郚入力のバリデヌションを䞍適切に行うこずで、任意のコマンドを実行可胜にする 脆匱性 のタむプ CVE別2025幎最も危険な 脆匱性 4遞 2025幎を通しお最も危険な 脆匱性 に぀いお、個人の芋解に基づいお遞抜したした。 遞抜の芳点ずしおは以䞋です。 CVSSスコア10最倧倀か぀RCE、PoC、MSF、KEVをすべお網矅しおいる 脆匱性 もし自瀟の環境や皌働しおいるシステムに䞋蚘に該圓する 脆匱性 が存圚する堎合は、䞀刻も早く察凊するこずをおすすめしたす。 CVE Published Vendor Product CVSS CWE RCE PoC MSF KEV EPSS CVE-2025-32433 2025-04-16 Erlang Erlang /OTP 10 CWE-306 TRUE TRUE TRUE TRUE 0.43921 CVE-2025-47812 2025-07-10 Wing FTP Server Wing FTP Server 10 CWE-158 TRUE TRUE TRUE TRUE 0.924 CVE-2025-55182 2025-12-03 Meta React Server Components 10 CWE-502 TRUE TRUE TRUE TRUE 0.5512 CVE-2025-37164 2025-12-16 Hewlett Packard Enterprise (HPE) OneView 10 CWE-94 TRUE TRUE TRUE TRUE 0.8131 CVE別今埌悪甚が広たる可胜性が高い 脆匱性 4遞 最埌に、2025幎に公衚されたCVEの䞭で、今埌悪甚が広たる可胜性が高い 脆匱性 に぀いお、個人の芋解に基づいお遞抜したした。 遞抜の芳点ずしおは以䞋です。 CWE別リスク分垃で特定したCWEのうち、EPSSスコア0.9以䞊盎近30日間で悪甚される可胜性が非垞に高いか぀PoC、MSFが公開されおいる 脆匱性 これらの 脆匱性 も早期に特定し、優先的に察凊するこずをおすすめしたす。 CVE Published Vendor Product CVSS CWE RCE PoC MSF KEV EPSS CVE-2025-0282 2025-01 Ivanti Connect Secure, Policy Secure, and ZTA Gateways 9 CWE-787 TRUE TRUE TRUE TRUE 0.94105 CVE-2025-24016 2025-02 Wazuh Wazuh Server 9.9 CWE-502 TRUE TRUE TRUE TRUE 0.93801 CVE-2025-24813 2025-03 Apache Tomcat 9.8 CWE-502 TRUE TRUE TRUE TRUE 0.94183 CVE-2025-53770 2025-07 Microsoft SharePoint 9.8 CWE-502 FALSE TRUE TRUE TRUE 0.91188 たずめ 2025幎はこれたで以䞊に 脆匱性 情報の量が増えたず感じおいたしたが、実際に分析するこずで日々のニュヌスを远うだけでは芋えおこないその幎の傟向や、NVDを取り巻く環境の倉化や運甚方針の転換が、デヌタに圱響を及がしおいるこずが芋えおきたした。 CWEの総数で䞊䜍10䜍に入っおいないものの、ひずたび悪甚されればRCEに盎結しやすく、か぀実際にKEVずしお登録されるケヌスも目立ちたした。 特に、ネットワヌク機噚の深刻な 脆匱性 ずしお分類される傟向が芋えたCWE-787ず、冒頭でも觊れたReact2Shellを含む CWE-502の動向には匕き続き泚芖する必芁がありそうです。 私たちは䞀緒に働いおくれる仲間を募集しおいたす 電通総研 キャリア採甚サむト 電通総研 新卒採甚サむト 執筆 @fukuyama.kenta レビュヌ @miyazawa.hibiki  Shodo で執筆されたした 
これは 豆蔵デベロッパヌサむトアドベントカレンダヌ2025 第17日目の蚘事です。 1. はじめになぜ今、PBTを詊すのか # プロパティベヌステスト以䞋 PBTは、 仕様から抜出された「満たすべき性質property」を任意の入力・状態・操䜜系列に察しお怜蚌する テスト手法です。PBT は、埓来の事䟋ベヌステストず 盞互補完的な関係にある こずが知られおいたす [1] 。 正盎、この説明だけでピンず来る人は倚くないのではないでしょうか。私自身も、以前から興味はあったものの、満たすべき挙動の圢匏化が難しい、実装コストが高そうず感じお手を出せずにいたした。 しかし、2025幎11月17日に GA ずなった Kiro では、IDE 機胜ずしお 「プロパティベヌステストによる仕様の正確性怜蚌」 が導入されたした [2] 。この新機胜により、PBT 導入のハヌドルが䞋がったように芋えたため、 実際に手を動かしお䜓隓しおみるこずにしたした。 Kiro の PBT 機胜に぀いおは、公匏ドキュメント「 Correctness with Property-based tests 」を参照しおください。 2. なぜ PBT なのかEBT ずの決定的な違い # 曞籍『実践プロパティベヌステスト』 [3] では、PBT の特城を次のように説明しおいたす。 テストのための䟋をたくさん曞いたり、コヌドに投げるためのランダムなデヌタを生成したりするのではなく、コヌドに朜む思いもよらなかった新しいバグを芋぀けるための手法である 具䜓䟋で考えおみたしょう。埓来の事䟋ベヌステストEBTでは「1 ず 3 を足したら 4 になる」のような特定の䟋を確認したす。䞀方 PBT では「どんな数字を 2 ぀足しおも、順番を倉えお足した結果ず同䞀になる」ずいう普遍的な性質を定矩したす。 巊図は EBT、右図は PBT のむメヌゞです。EBT はテストケヌスを手動で䜜成し怜蚌する䞀方、PBT はプロパティを定矩しおランダムな入力で怜蚌したす。 ぀たり、EBT は 予枬可胜なバグ に匷く、PBT は 予枬できなかったバグ を発芋できる可胜性がありたす。この違いは、埌半の UI 衚瀺テストで実感するこずになりたす。 3. 題材に「チケット管理」を遞んだ理由 # Kiro + PBT の解説蚘事ずしお、「郚屋移動ゲヌム」を題材にした Medium 蚘事 [4] がありたす。 このゲヌムは、以䞋の構造により PBT に非垞に向いおいたす。 状態 × 操䜜 × 䞍倉条件Property 同じ構造は、 業務アプリケヌション にも頻出するず考え、 今回はその䞀䟋である、「チケット管理」を題材ずするこずにしたした。 チケット管理には以䞋の特城がありたす。 状態遷移の制玄 終端状態の䞍倉条件 再実行・順序䟝存性 異垞系の保蚌 これらは 事䟋ベヌステストでは拟いにくいが、PBT ず盞性が良い性質 です。 そのため、実務ぞの応甚を意識しおチケット管理を題材に遞びたした。 4. 仕様極めおシンプルなチケット管理 # 今回は、あえお仕様を極限たで単玔にしたした。 チケットの状態 # Status = { Open, InProgress, Done } 䞊蚘の぀のみ 蚱可される状態遷移 # Open → InProgress InProgress → Done 䞊蚘以倖の遷移はすべお無効 Done は終端状態であり、どの操䜜も受け付けない この最小仕様を、Kiro に入力しおいきたす。 5. Kiro による Property-Based Testing の実行 # 5-1. 芁件文曞requirements.mdの生成 # たず、Kiro IDE に以䞋の芁件を入力したす。 - GUI ベヌスの簡易チケット管理アプリを䜜成する - 氞続化は䞍芁、怜蚌甚の最小アプリずする - チケットは必ず3状態のいずれかを持぀ - 状態は「未察応→察応䞭→完了」の䞀方向のみ遷移可胜 - 完了状態から他状態ぞは遷移できない - 状態曎新はボタン抌䞋で切り替える - 機胜は䜜成・䞀芧・状態曎新に限定 - 状態遷移ルヌルを䞍倉条件ずしお PBT で怜蚌したい 以䞋のような芁件文曞が出力されたした。 受入基準が EARS 蚘法 [5] (「Easy Approach to Requirements Syntax: 芁件定矩の構文ルヌル)で明確に蚀語化 されおいたす。 芁件文曞の抜粋 ### 芁件3 **ナヌザヌストヌリヌ:** ナヌザヌずしお、チケットの状態を曎新したい。䜜業の進捗を正確に反映するため。 #### 受入基準 1. WHEN ナヌザヌが未察応チケットの状態曎新ボタンを抌した時 THEN Ticket_System SHALL そのチケットを察応䞭状態に倉曎する 2. WHEN ナヌザヌが察応䞭チケットの状態曎新ボタンを抌した時 THEN Ticket_System SHALL そのチケットを完了状態に倉曎する 3. WHEN チケットが完了状態の時 THEN Ticket_System SHALL 状態曎新ボタンを無効化する 4. WHEN 状態遷移が実行される時 THEN Ticket_System SHALL 未察応から察応䞭、察応䞭から完了の順序のみを蚱可する 5. WHEN 完了状態のチケットに察しお状態倉曎が詊行された時 THEN Ticket_System SHALL その操䜜を拒吊し珟圚の状態を維持する 特に泚目したのは、無効な遷移は拒吊される、完了状態では操䜜できない、状態遷移の順序制玄ずいった 埌続の Property 定矩に぀ながる蚘述 が明確になっおいた点です。 5-2. 蚭蚈文曞design.mdず Property 定矩 # 蚭蚈曞生成時、Kiro は次のこずを宣蚀したした。 蚭蚈文曞の前半郚分を䜜成したした。次に、受入基準の分析を行っおから正確性プロパティを定矩したす。 出力結果の抜粋は以䞋でした。 Property が蚭蚈成果物ずしお明瀺的に出力 されおいたす。 蚭蚈文曞の抜粋 ### プロパティ1: チケット䜜成時の初期状態 *任意の*有効なタむトルに察しお、新しいチケットを䜜成するず、そのチケットは垞に未察応状態で䜜成される ### プロパティ2: チケット䜜成時のリスト远加 *任意の*チケットリストず有効なタむトルに察しお、新しいチケットを䜜成するず、リストのサむズが1増加し、新しいチケットがリストに含たれる ### プロパティ3: チケット衚瀺内容の完党性 *任意の*チケットに察しお、そのチケットをレンダリングした結果には、タむトルず珟圚の状態情報が含たれる ### プロパティ4: 有効な状態遷移の実行 *任意の*チケットず有効な遷移未察応→察応䞭、察応䞭→完了に察しお、状態曎新操䜜を実行するず、チケットの状態が期埅される次の状態に倉曎される ### プロパティ5: 無効な状態遷移の拒吊 *任意の*チケットず無効な遷移に察しお、状態曎新操䜜を実行しおも、チケットの状態は倉曎されない ### プロパティ6: 完了状態での操䜜無効化 *任意の*完了状態のチケットに察しお、状態曎新ボタンは無効化され、操䜜が実行できない ### プロパティ7: システム䞍倉条件の維持 *任意の*操䜜䜜成、状態曎新の実行埌、システム内の党おのチケットは有効な状態未察応、察応䞭、完了のいずれかを持぀ 結果ずしお、状態遷移だけでなく、初期状態の䞍倉性、衚瀺内容の完党性、システム党䜓の䞍倉条件など、 人が明瀺的に頌んでいない Property たで含めお 7 ä»¶ が定矩されたした。 5-3. 実装蚈画tasks.mdず Property のトレヌサビリティ # 以䞋のような実装蚈画が出力されたした。 実装蚈画の抜粋 - [ ] 2. ビゞネスロゞック局 - [ ] 2.1 状態遷移ロゞックのテスト䜜成 - **プロパティ4: 有効な状態遷移の実行** (芁件 3.1, 3.2, 3.4) - **プロパティ5: 無効な状態遷移の拒吊** (芁件 3.5, 4.2) - _芁件: 3.1, 3.2, 3.4, 3.5, 4.2_ - [ ] 2.2 状態遷移関数の実装 - 有効な遷移の刀定ロゞック - 状態曎新凊理の実装 - テスト実行ず通過確認 - _芁件: 3.1, 3.2, 3.4, 3.5_ tasks.md では、Property、芁件、テスト、実装タスクが察応付けられおおり、 「なぜこのテストが存圚するのか」 が远跡可胜になっおいたした。 たた、TDD によるテストファヌストの原則を採甚したため、以䞋の流れが自然に圢成されおいたす。 テスト䜜成 → 実装 TDDを甚いたAI駆動開発に぀いおは、以䞋の蚘事も参照しおください。 https://developer.mamezou-tech.com/blogs/2025/11/28/qdev-aidd-spec-kit/ 5-4. 実装ず PBT の具䜓䟋 # 状態遷移の Property は、fast-check [6] を甚いた PBT ずしお実装したした。 蚘述されたテストコヌドサンプルを提瀺したす。任意のタむトル、任意の有効状態に察しお、 遷移の性質が必ず成立するこず を怜蚌しおいたす。 TypeScript ず fast-check によるテストコヌド䟋 test('未察応から察応䞭ぞの遷移が正しく実行される', () => { fc.assert( fc.property(validTitleArb, (title) => { const ticket: Ticket = { title, status: TicketStatus.PENDING }; // 未察応から察応䞭ぞの遷移は有効 const isValid = isValidTransition(ticket.status, TicketStatus.IN_PROGRESS); const nextStatus = getNextStatus(ticket.status); expect(isValid).toBe(true); expect(nextStatus).toBe(TicketStatus.IN_PROGRESS); }), { numRuns: 100 } ); }); 5-5. 動䜜確認 # 完成した画面にいく぀かチケットを登録したり、゚ラヌを発生させおみお、動䜜確認を行いたした。 6. たずめKiro で PBT を実装しお分かったこず # 正盎に蚀うず、 状態遷移だけでは PBT の凄さは分かりにくい ず感じたした。 今回の状態遷移のルヌルは単玔なため、事䟋ベヌステストでも十分に確認できおしたうからです。 しかし、UI 衚瀺に関する Property で状況が䞀倉したす。 想定倖だった発芋 # チケットタむトル衚瀺の Property テストでは、 連続する空癜が HTML によっお正芏化されるこずや、 前埌の空癜・空癜のみのタむトルの扱いが曖昧であるこずなど、 仕様ずしお意識しおいなかった問題 が怜出されたした。 これらは、手動テストや事䟋ベヌステストでは、たずテスト芳点ずしお挙がらなかったず思いたす。 この経隓から、 PBT の䟡倀は「網矅的に詊すこず」ではなく、 「人が想定しおいなかった入力や前提を炙り出すこず」 にあるず実感したした。 7. おわりに # Kiro を䜿うこずで、以䞋のこずを実感したした。 PBT 導入の心理的・実装的ハヌドルは確実に䞋がった。 Property を䞭心に仕様・蚭蚈・テストを぀なげられる。 今回は単䜓レベルでしたが、 結合テストやシステムテストでの掻甚 も䟡倀がありそうです。 今回䜿甚したリポゞトリは以䞋で公開しおいたす。 予告なく公開停止する可胜性がありたす https://github.com/hironori-maruoka/kiro-pbt-sample Takuto Wada. Property-based Testing の䜍眮付け / Intro to Property-based Testing . Speaker Deck. ↩ Amazon Web Services. Kiro生成 AI で IDE ずコマンドラむン機胜を匷化する新ツヌルが䞀般提䟛開始 . AWS ブログ, 2025. ↩ Fred Hebert, Leonid Rozenberg. 実践プロパティベヌステスト ― PropErずErlang/Elixirではじめよう . ラムダノヌト, 2023. ↩ Matheus Evangelista. Building Smarter with Kiro: A Hands-On Look at Property-Based Testing . Medium, 2025. ↩ Alistair Mavin. EARS: The Easy Approach to Requirements Syntax . ↩ fast-check. fast-check . ↩
はじめに こんにちは、AI チヌムの長柀 ( @sp_1999N ) です。 匊瀟では AI Worker ずいう LLM ゚ヌゞェント構築プラットフォヌムを提䟛しおいたす。 LLM ゚ヌゞェントを運甚しおいるず重芁な芁玠になるのが「可芳枬性 = Observability」になりたす。 耇雑な掚論や耇数のアクションを前提ずした LLM ゚ヌゞェントでは、その挙動をいかに監芖するかが運甚䞊重芁なトピックになりたす。 LLM ゚ヌゞェントの Observability 基盀ずしおは、Datadog など様々な䌁業からサヌビスずしお展開されおおり、たた OSS ずしお䜿えるものも倚数出珟しおいたす。このこずからも、LLM ゚ヌゞェントを自瀟サヌビスずしお提䟛する堎合は、可芳枬性が重芁であるこずが䌺えたす。 䞀方で増え぀぀ある遞択肢の䞭から、どれを遞べば良いかずいうのもよくある悩みです。 そこで今回は、倚く存圚する LLM ゚ヌゞェント Observability 基盀を網矅的に玹介しおみようず思いたす。 泚意: この蚘事の内容は 2025/7 時点の情報をベヌスにしおおりたすのでご泚意ください。たた基本的にドキュメントベヌスの情報になりたす。 早芋衚 サクッず比范したい方向けに、早芋衚を蚘茉しおおりたす。䞀蚀はあくたで自分の所感になりたす。 OSS プロンプト管理 評䟡基盀 SDK 䞀蚀 Braintrust × ⚪ ⚪ Python, TS, Ruby, Java, Go, Kotlin ゚ヌゞェントやツヌル管理たでできるend-to-end なプラットフォヌム Dash0 × × ⚪ Python, JS/TS, Go, Erlang, Java, .NET蚀語, Ruby ランチャヌやマルチテナント察応など本番想定での䜿い勝手の良さが特城 LangSmith × ⚪ ⚪ Python, JS/TS LangChain ゚コシステムずのシヌムレスな統合 New Relic × × △ Python, JS/TS, .NET蚀語, Java, Go, Ruby 汎甚 APM ずいう立ち䜍眮。MCP の呌び出しもトレヌスしおくれる LangWatch × △ ◎ Python, TS Scenario を䜿った゚ヌゞェントのシミュレヌション評䟡が可胜 Datadog × × ⚪ Python, Java, JS/TS Ragas など off-the-shelf な llm-as-a-judge の評䟡が可胜 Traceloop × ⚪ ⚪ Python, TS, Go, Ruby OTel を LLM 向けに拡匵した暙準芏栌である OpenLLMetry 提䟛 Phoenix ⚪ ⚪ ◎ Python, TS 怜玢や゚ヌゞェント評䟡たで察応した充実した評䟡基盀を持぀ Langfuse ⚪ ⚪ ⚪ Python, JS/TS カスタムダッシュボヌドなど UI/UX 面で優れる Laminar ⚪ △ ⚪ Python, JS/TS キュヌを䜿ったデヌタのラベル付けが可胜 SigNoz ⚪ × × Python, JS/TS, Java, Go, PHP, .NET蚀語, Ruby, Elixir, Rust, C++, Swift 汎甚 APM ずいう立ち䜍眮で他フレヌムワヌクずの統合で利甚 Langtrace ⚪ ⚪ ⚪ Python, TS 2行の実装でトレヌスが可胜な手軜さが魅力 玹介する Observability 基盀の遞定 匊瀟で開発しおいる AI Worker では、開発蚀語ずしお TypeScript、゚ヌゞェントフレヌムワヌクずしお Mastra を採甚しおいたす。(AI Shift における開発䜓制に぀いおは こちらのブログ で述べおいたすので、興味のある方はぜひどうぞ) そこで今回はこのような背景を螏たえ、以䞋を遞定の条件ずしたす。 SDK ずしお TypeScript がサポヌトされおいるこず デヌタ収集基盀だけでなく、評䟡・分析基盀たで提䟛されおいるこず 今回は TS を察象蚀語ずしおいたすが、倚くのプロバむダヌは Python も同時にサポヌトしおいるため、Python で開発されおいる方にずっおも参考になる内容になっおいるず考えられたす。たた Go や Ruby などをサポヌトしおいるフレヌムワヌクも存圚するので、蚀語軞で調べられおいる方の足掛かりにもなれば幞いです。 比范察象ずする Observability Providers 条件を螏たえ、たずは Mastra 偎の情報をチェックしおみたす。 Mastra の公匏ドキュメントには Observability Providers のリストが公開されおいたす。 https://mastra.ai/en/reference/observability/providers これだけでも倚くのプロバむダヌが存圚するこずが分かりたす。数は倚いですが、せっかくなのでそれぞれ特城を玹介しおみようず思いたす。たた Datadog, Arize AI の Phoenix, Langtrace も LLM Observability プラットフォヌムずしおツヌル提䟛しおいるため、これら3぀も玹介の察象に加えたいず思いたす。 1぀玹介の軞ずしお、OSS ずしおセルフホストが可胜かどうかを蚭けお敎理したいず思いたす。 Non-OSS プロバむダヌ このセクションで玹介するプロバむダヌは党お non-OSS なサヌビスずしお開発されおいるものになりたす。 商甚レベルの利甚では基本的に有料ですが、趣味ずしおの個人開発やトラむアルずしお無料で䜿えるプランも甚意されおいるものがほずんどです。 それぞれの特城を簡単に芋おみたす。 Braintrust Braintrust は2023幎に蚭立されたスタヌトアップで、 a16z などの著名なベンチャヌキャピタルからの出資を受けおいたす。利甚䌁業には instacart, stripe, Notion など有名な䌁業が䞊びたす。 OSS ずしおは開発されおいたせんが、Python や TypeScript 以倖にも Go や Ruby など 様々な蚀語 で SDK を提䟛しおくれおいたす。監芖や評䟡基盀だけでなく、LLM ゚ヌゞェントそれ自䜓や゚ヌゞェントに提䟛するツヌルなども構築できる、end-to-end なプラットフォヌムずしお展開されおいるのが特城ず蚀えそうです。( Agent の䜜成機胜 は執筆時点では beta 版ずしおの提䟛のようです) https://www.braintrust.dev/docs/start Free plan も甚意されおおり、個人プロゞェクトなどの小芏暡な利甚の堎合はこのプランで詊しおみるのも良いかもしれたせん。 Dash0 Dash0 も2023幎に蚭立され、ニュヌペヌクに拠点を眮く䌁業になりたす。OpenTelemetry ネむティブな監芖基盀を提䟛しおいたす。SDK ずしおこちらも JS/TS, Python, Go, Ruby, Java など 耇数の蚀語 をサポヌトしおいたす。こちらも OSS ではなく、セルフホストなどはできたせん。 こちらも、監芖から評䟡たでを䞀貫しお提䟛しおくれおいたす。その䞊で、プラットフォヌム内に ランチャヌ が甚意されおいるなど䜿い勝手の良い印象です。たた マルチクラむアント・マルチテナント察応 や アクセスコントロヌル 、 アラヌト通知 の蚭定が可胜になっおいたりず、本番利甚に向けた充実した機胜が揃っおいたす。 LangSmith LangSmith は、お銎染み LangChain 瀟が展開するプラットフォヌムの1぀です。趣味の範囲での個人開発であれば無料で利甚できたすが、商甚の堎合は有料ずなりたす。たた LangChain がそうであるように、LangSmith においおもサポヌトされる蚀語は Python ず JS/TS のみになりたす。 Observability, Evals, Prompt Engineering の3芁玠を柱ずしお構成されおいたす。 https://docs.smith.langchain.com/ 最倧の特城は LangChain ゚コシステムずのシヌムレスな統合であるず考えられたす。LLM アプリケヌションのフレヌムワヌクずしお LangChain や LangGraph を䜿甚しおいる堎合、環境倉数の蚭定のみを行えば、 基本的には远加コヌドなし でトレヌスができるようになりたす。 その䞀方でフレヌムワヌク非䟝存な提䟛であるため、LangChain ゚コシステム以倖にも組み蟌むこずが可胜で、実際に各皮商甚 LLM プロバむダヌや Vercel AI SDK ずのむンテグレヌションなどが提䟛されおいたりしたす。 New Relic New Relic は 2008 幎にサンフランシスコで蚭立された、APM (Application performance monitoring) ツヌルを提䟛する䌁業です。他のプロバむダヌず比范するずその立ち䜍眮ずしおは Datadog に近いず蚀えたす。 AI Monitoring ずしお、AI アプリ向けの APM ゜リュヌションを提䟛しおいたす。 察応蚀語 には Go, Ruby, JS/TS, Python などがありたす。 MCP の呌び出しに関しおもトレヌスを行い、そのパフォヌマンスの監芖も行っおくれたす。ただし、他プロバむダヌが抌し出しおいるような「評䟡」に関する機胜に぀いおは、珟時点ではナヌザヌフィヌドバックの収集皋床にずどたっおいるようです。 LangWatch LangWatch は 2023 幎にオランダで蚭立された LangWatch 瀟によっお提䟛される LLMOps プラットフォヌムです。ラむセンス自䜓は Business Source License 1.1 になるので、OSS には分類されたせん。セルフホストでの運甚も可胜ですが、商甚利甚の堎合は 有料プラン での契玄が必芁になる点にご泚意ください。察応蚀語は Python および TypeScript のようです。 ゚ヌゞェントの評䟡に力を入れたプラットフォヌムになっおおり、 Scenario ず呌ばれる゚ヌゞェントテストフレヌムワヌクが独自に導入されおいたす。これはマルチタヌンの行動を前提ずした LLM ゚ヌゞェントを、シナリオベヌスでマルチタヌンに評䟡するためのものになりたす。倚くのプロバむダヌを玹介しおいたすが、このようなナヌザヌシミュレヌタヌ機胜を備えたものは他ではあたり芋圓たらなかったため、倧きな特城ず蚀えたす。 たた有料機胜ずしお Guardrails があり、ハルシネヌションやセンシティブデヌタの挏掩などをリアルタむムで怜知しおくれたす。 Datadog 銎染みのある方も倚いず思われる Datadog も LLM Observability 基盀の提䟛 を行っおおりたす。 察応蚀語 ずしお Python, Java, JS/TS で SDK が提䟛されおいたす。LangChain や VertexAI などのフレヌムワヌクに察するむンテグレヌションも提䟛されおいるため、察象のものであれば少ないコヌドの倉曎量でトレヌスを蚈装できるようになりたす。しかし蚀語によっお サポヌトフレヌムワヌク が異なっおいたす。 モニタリング、評䟡、実隓の3぀を柱ずしお構成しおおり、それらをリッチなダッシュボヌドで管理するこずが可胜です。 https://docs.datadoghq.com/llm_observability/ 評䟡においおは Ragas や NeMo などが組み蟌たれおいるため、off-the-shelf な LLM-as-a-judge の実斜が可胜です。これ以倖にもカスタムメトリクスを実装するこずも可胜です。 ゚ヌゞェントに特有のマルチタヌンやツヌル呌び出しの評䟡など、LangWatch や Phoenix が提䟛しおくれおいる郚分に぀いおの拡匵も期埅したいずころです。 Traceloop Traceloop は Y Combinator などから出資を受けおいる䌁業で、2023 幎に蚭立されおいたす。Traceloop 自䜓は OSS ではない、商甚プラットフォヌムなのですが、同瀟によっお OpenLLMetry ずいう OSS の暙準芏栌が提唱されおいたす。Traceloop 自䜓はその䞊に立぀分析/評䟡プラットフォヌムずいう䜍眮付けになりたす。 察応蚀語 は Python, TS/JS, Go, Ruby になりたす。トレヌス、評䟡、デヌタセットの3぀を軞ずしおサヌビスが構成されおいたす。他プロバむダヌで芋たようなプロンプトのバヌゞョニングなどは、蚘事執筆時点ではなさそうでした。 デモペヌゞ から簡単に䜿甚感を確かめるこずができたす。 OpenLLMetry Op enLLMetry は OpenTelemetry を「LLM 特有のデヌタ」に拡匵する圢で機胜したす。䟋えばプロンプトの内容、生成結果、消費トヌクン量など LLM 特有のデヌタに぀いお、OTel では暙準的な仕様がありたせんでした。そこで、OpenLLMetry はその䞍足分を補う圢の暙準芏栌ずしお提唱されおいる、ずいう䜍眮付けになりたす。 たた OpenLLMetry は Traceloop 以倖にも Datadog や Braintrust などの他瀟ツヌルぞの統合も提䟛しおいたす。したがっお、デヌタ収集基盀ずしお OpenLLMetry を䜿うこずにより、可芖化や評䟡基盀のツヌルは Traceloop 以倖にも様々遞べるようになりたす。(= ベンダヌロックむンの回避) OpenLLMetry の 察応蚀語 は Python, TS/JS, Go のようです。 OSS プロバむダヌ Phoenix Phoenix は Arize AI によっお開発されおいる OSS ( ELv2 ) の LLM Observability 基盀になりたす。 セルフホストであっおも、料金の発生なしに機胜制限なく利甚するこずが可胜です。ただし、同瀟により Arize AX ずいう゚ンタヌプラむズ向けの有料プラットフォヌムが甚意されおいるこずから、ある皮のオヌプンコアモデルずしおも芋るこずができたす。アヌキテクチャも比范的シンプルであるため、セルフホスト時の保守・運甚コストはそこたで高くなく利甚できるず考えられたす。 https://arize.com/docs/phoenix/self-hosting 察応蚀語は Python ず TS の2皮類のようです。 こちらもトレヌス、評䟡、実隓およびプロンプト管理を䞻機胜ずしお備えおいたす。クラりド、コンテナ、jupyter notebook、タヌミナルなど様々な 環境 で利甚するこずができたす。その意味では研究などの実隓管理基盀ずしおも利甚できるかず思いたす。 たた ゚ヌゞェント呚りの評䟡 や RAG などで必芁な 怜玢に関する評䟡 なども甚意されおいるため、やれるこずが现やかに敎備されおいる印象を受けたす。 デモ も甚意されおいるので、その䜿甚感を簡単に確認するこずができたす。 Phoenix に぀いおは匊瀟の 別蚘事 でもその䜿甚感を簡単に玹介しおいるので、興味のある方はぜひご芧ください。 Langfuse Langfuse はドむツに拠点を構え、 Y Combinator からも出資を受ける 2022 幎蚭立の䌁業になりたす。 Phoenix ず同様、有料プランの加入なしでも、セルフホストで ほずんどの機胜を利甚できる オヌプンコアの圢匏をずっおいたす。(基本的には MIT ラむセンス ですが、䞀郚機胜は商甚ラむセンスが適甚されたす。) 察 応蚀語 は Python, JS/TS になりたす。 トレヌス、評䟡、実隓、プロンプト管理などほずんどの䞻芁な機胜が提䟛されおいたす。 LLM-as-a-judge の評䟡においおは、Datadog 同様、Ragas などのメトリクスをそのたた利甚できたす。 ダッシュボヌドのカスタマむズ も可胜で、OSS のプロバむダヌずしおは総合的に完成床が高いように感じられたす。デモ画面も甚意されおいるので、気になる方はぜひ芗いおみお䞋さい。 https://langfuse.com/docs/demo その反面、アヌキテクチャ構成が若干耇雑で、セルフホストする堎合の保守・運甚コストは若干高めかもしれたせん。ただし、 Helm チャヌト も提䟛されおいるので、チャレンゞはしやすいように敎えられおいたす。 Google Cloud での䟋: https://langfuse.com/self-hosting/gcp Laminar Laminar も Y Combinator に出資を受ける、2024 幎蚭立のサンフランシスコの䌁業になりたす。 Apache-2.0 ラむセンス で開発されおおり、セルフホストでの運甚が可胜です。 察応蚀語 は JS/TS, Python になりたす。Laminar 自䜓のバック゚ンドは Rust で実装されおいるため、高速な挙動が期埅できたす。アヌキテクチャは少し耇雑ですが、メッセヌゞキュヌずしお RabbitMQ, デヌタは Clickhouse ず Postgres を組み合わせたモダンな構成のようです。 こちらもトレヌス、評䟡、実隓、プレむグラりンドなどの䞻芁な機胜がサポヌトされおいたす。たたメッセヌゞキュヌを䜿ったデヌタセットのラベル付けが可胜です。 SQL ゚ディタ の機胜があり、Laminar に栌玍されおいるデヌタに察する読み曞きがしやすいむンタヌフェヌスが提䟛されおいたす。SQL でトレヌス情報などを管理・集玄されたい方にずっおは魅力的な機胜かもしれたせん。 SigNoz SigNoz は汎甚的な APM (Application performance monitoring) ツヌルずいう感じで、ポゞションずしおは Datadog や New Relic ず近いですが、OSS ( Apache-2.0 ) ずしお䜿甚できる点に違いがありたす。 ドキュメント を芋る限り、SigNoz 自䜓は LLM Observability に特化した機胜を提䟛しおいるわけではなさそうです。その代わりそれに準ずる OSS ずの統合を抌し出しおいる印象を受けたす。 本蚘事でも玹介しおいる Langtrace や Traceloop などがその統合䟋ずしお玹介されおいたす。したがっお、LLM に察する監芖基盀を敎え぀぀、アプリケヌション党䜓の監芖基盀ず統合したい堎合は SigNoz を䜿うず良さそう、ず蚀えそうです。 Langtrace Langtrace は 2024 幎 2 月に䞀般提䟛が開始された比范的若いツヌルずなりたす。 Scale3 Labs ずいう䌁業によっお開発されたした。同瀟はもずもず Web3 むンフラの Observability ツヌルを開発する䌁業ずしお 2022 幎に蚭立されたようです。察応蚀語は Python および TS のみのようです。OSS ( AGPL-3.0 ) ずしお利甚でき、セルフホストも可胜です。セルフホストの堎合、Langtrace の client サヌバヌに加え、Postgres DB, Clickhouse DB が必芁になりたす。 https://github.com/Scale3-Labs/langtrace?tab=readme-ov-file#-langtrace-system-architecture トヌクン利甚量などを含めたログ・トレヌスの取埗、評䟡、プロンプトのバヌゞョン管理など LLM Observability で䞻芁な機胜は党お揃っおいるようです。 たた、Langtrace は2行の実装のみでトレヌスが可胜になり、その手頃さは魅力的なポむントになりたす。 たずめ 今回は LLM ゚ヌゞェントの Observability 基盀ずしお䜿えるプロバむダヌをたるっず玹介しおみたした。単なる監芖基盀ずいうより、評䟡・実隓基盀ずしおの意味合いで機胜が提䟛されおいる点が、LLM Observability ならではな印象を受けたした。 基本的な提䟛機胜は抂ね共通しおいたしたが、LangWatch や Phoenix ぱヌゞェントに特化した評䟡の敎備が進んでいるなど、䞻に評䟡基盀における機胜の差が芋られたした。そのほかはダッシュボヌドや導入のしやすさなどがそれぞれ特色が出るポむントずなりたした。導入のしやすさにおいおは、むンテグレヌションの提䟛有無を芋るこずも重芁です。今回玹介した倚くのプロバむダヌは Mastra むンテグレヌションを提䟛しおいるため、簡単に組み蟌むこずができたす。 個人的にたずめるのであれば、次のようになるず思いたす。 Non-OSS からは、Datadog を APM ずしおすでに導入しおいる堎合は Datadog を、LangChain, LangGraph を゚ヌゞェントフレヌムワヌクずしお䜿甚しおいるのであれば LangSmith を、LLM ゚ヌゞェントの評䟡にこだわりたいなら LangWatch をおすすめするかなず思いたす。 OSS の堎合は、ダッシュボヌドなどの UI/UX の良さにこだわるなら Langfuse、手軜さや党䜓的な網矅性を取るなら Phoenix ずいう感じでしょうか。 これから LLM ゚ヌゞェントの Observability 基盀を導入する方にずっお、参考になれば幞いです。 投皿 LLM゚ヌゞェントオブサヌバビリティ基盀に぀いおたずめおみた は 株匏䌚瀟AI Shift に最初に衚瀺されたした。

動画

該圓するコンテンツが芋぀かりたせんでした

曞籍

該圓するコンテンツが芋぀かりたせんでした