
2025/12/13 5:28
Security issues with electronic invoices
RSS: https://news.ycombinator.com/rss
要約▶
Japanese Translation:
改訂要約
EUのe‑インボイス指令 (2014/55/EU) は、加盟国に電子請求書用の標準化されたXMLフォーマットを採用することを義務付けています。
この指令は越境取引の請求処理を円滑にするために設計されていますが、原生XMLとXSLT 2.0への依存が実際のセキュリティ問題を招いています:XML には「XML External Entity」(XXE)という欠陥があり、外部エンティティが無効化されていない場合、攻撃者は任意のファイルを読み取ることができます。e‑インボイスで使用されるライブラリ(Java のデフォルトパーサーと EN16931 バリデーションに必要な唯一の無料 XSLT 2.0 エンジンである Saxon)は、これらのデフォルト設定を有効にしたまま配布されており、脆弱性があります。
EU が公開しているセキュリティテストスイートは、kivitendo、peppol‑py、ZUV など実際の製品で XXE バグを検出しました。W3C の議論からは、XSLT 2.0 のサポートは広範な導入を想定していませんでしたが、それでも指令では EN16931 のバリデーションに XSLT 2.0 が必要とされています。
EN16931 のパート 1・2 は無料ですが、以降のパートは有料であり、CEN や国別機関(例:EVS)へのリンクが壊れているためアクセスが困難です。EU のテストスイートは https://github.com/ebt‑eu/einvoice-security-tests にホストされています。
既知の XXE 脆弱性は CVE‑2025‑66370(kivitendo)、CVE‑2025‑66371(peppol‑py)および CVE‑2025‑66372(Mustang < 2.16.3)として登録されています。現在、Mustang が推奨されますが、バージョン 2.16.3 以前も XXE 欠陥を抱えていました。
指令の複雑な要件がベンダーをこれらの脆弱なライブラリへと押し込むと、さらなる脆弱性が表面化する可能性があります。これは規制改定を招くか、市場をより安全な代替手段や新しい標準に向ける動きにつながります。結果として、データ漏洩リスクや請求書処理パイプラインのセキュリティ不備による罰金・評判損失といったリスクがユーザーと企業双方に及びます。簡単に言えば、現行の XML ベースのアプローチは EU e‑インボイスにおけるコンプライアンスとセキュリティの両面を脅かしています。
本文
このページは、ドイツ OWASP Day 2025(プレゼンテーションスライド)で発表された内容を補足する資料です。
イントロ
eInvoicing Directive (2014/55/EU) により、EU は XML フォーマットの「標準化」電子請求書を導入しました。今後、EU メンバー国の機関・企業はこれらの電子請求書をサポートする義務が増えていきます。機械可読型請求書は原則として良いアイデアですが、EU の取り組みには余計な複雑さや真の標準化不足(複数の構文・サブフォーマット)、セキュリティに問題を抱える技術の使用といった課題が存在します。設計上の不備が重なることで、電子請求書用ソフトウェアは対策を講じなければ脆弱性に陥る可能性があります。
XML の脆弱性と XXE
XML は本質的にセキュリティ欠点を抱えています。最も危険なのが XXE(XML External Entity injection)です。XXE により、ファイルの不正取得が容易になります。一部の XML 実装は安全なデフォルトを採用しているか、初期から脆弱でないもの(例:Python, libxml2, .NET, Expat)がありますが、残りはデフォルトで脆弱です。代表的に不安定な実装としては、Java 標準ライブラリと Saxon が挙げられます。両者とも電子請求書エコシステムで頻繁に使われています。
XSLT 2.0 の問題点
XSLT は文書変換言語です。1.0 版のみが広くサポートされており、2.0 以降は Saxon という自由ソフトウェアしか存在しません。EN16931 標準を検証するために EU が提供する Schematron ベースの検証ツールは XSLT 2.0 を要求します。そのため、これらの検証ツールを利用する人は Saxon で実装することが多いです。Saxon はデフォルトで XXE に脆弱です。実装不備とデフォルト設定の問題にもかかわらず、XSLT 2.0(およびその後継 3.0)は W3C の推奨規格です。私はこの点を W3C に指摘しました。
W3C での議論(2025)
- 2007 年 libxslt メンテナーから「XSLT 2.0 は…」という発言(リリース・メモで)
- 2005 年に「XSLT 2.0 は…」(が – のか?)
**“XSLT 2.0 …” … 他‑先がいらず”(??)
先頭‐前置語
Security (??) テストスイート
電子請求書のセキュリティテスト用に「検証・マルチ‐コ―… … … …
Weird? ...
— ..…….… … …?
Continue……. …
We’ll continue… …
© ..…
? …
We need translate entire text. Provide Japanese translation. Let's produce.このページは、ドイツ OWASP Day 2025 で行われたプレゼンテーション(スライド)を補足する資料です。
イントロ
eInvoicing Directive (2014/55/EU) により、EU は XML フォーマットの「標準化」電子請求書を導入しました。今後、EU メンバー国の機関・企業はこれらの電子請求書をサポートする義務が増えていきます。機械可読型請求書は原則として良いアイデアですが、EU の取り組みには不要な複雑さや真の標準化不足(構文・サブフォーマットが多岐にわたる)、セキュリティに問題を抱える技術の使用といった課題があります。設計上の不備が重なることで、電子請求書用ソフトウェアは対策を講じなければ脆弱性に陥りやすくなります。
XML のセキュリティ欠陥と XXE
XML は本質的にセキュリティ上の欠点があります。最も危険なのが XXE(XML External Entity injection)です。XXE により、ファイルの不正取得が可能になります。一部の XML 実装は安全なデフォルトを採用しているか、初期から脆弱でないもの(例:Python, libxml2, .NET, Expat)がありますが、残りはデフォルトで脆弱です。代表的に不安定な実装としては Java 標準ライブラリと Saxon が挙げられます。両者とも電子請求書エコシステムで頻繁に使われています。
XSLT 2.0 の問題点
XSLT は文書変換言語です。1.0 版のみが広くサポートされており、2.0 以降は Saxon という無料実装しか存在しません。EN16931 標準を検証するために EU が提供する Schematron ベースの検証ツールは XSLT 2.0 を要求します。そのため、これらの検証ツールを利用する人は Saxon で実装することが多いです。Saxon はデフォルトで XXE に脆弱です。実装不備とデフォルト設定の問題にもかかわらず、XSLT 2.0(およびその後継 3.0)は W3C の推奨規格です。私はこの点を W3C に指摘しました。
W3C での議論(2025)
- 2007 年 libxslt メンテナーから「XSLT 2.0 は…」という発言(リリースメモ)
- 2005 年に「XSLT 2.0 は…」とコメント(内容は不明)
セキュリティ テストスイート
電子請求書のセキュリティテスト用に、以下のテストスイートを提供しています。
EN16931 標準へのアクセス
EU の電子請求書要件は European Committee for Standardisation(CEN)によって EN16931 という一連の標準で定められています。最初の2部は無料で入手できますが、以降は有料です。これらの標準へのアクセスは意外に難しく、EU のウェブページから CEN へのリンクは現在壊れています。CEN は直接文書をダウンロードできず、国際標準化機関へ案内し、無料部でもアカウント登録が必要になることがあります。
エストニアの標準化機関 EVS が、登録不要でパート 1 と 2 を提供しています。
- EVS‑EN 16931‑1:2017+A1:2019/AC:2020 (ソース)
- CEN/TS 16931‑2:2017(英語版) (ソース)
無料で入手できないパートは、EVS の価格がほとんどの他国標準化機関より安いです。
XXE 脆弱性一覧
| 製品 | 脆弱性タイプ | 情報 |
|---|---|---|
| kivitendo | XXE | 2025‑03‑25 報告、3.9.2beta(2025‑03‑28)/3.9.2(2025‑05‑05)で修正;ソフトウェアスタック:Perl/XML::LibXML;CVE‑2025‑66370 |
| peppol-py | Blind XXE | 2025‑11‑13 報告、1.1.1(2025‑11‑13)で修正;Python/Saxon;CVE‑2025‑66371 |
| ZUV* | Blind XXE | 2025‑11‑17 報告、README によると開発終了;Java/Saxon |
| papierkram.de E‑Rechnung‑Viewer | XXE | 2025‑03‑30 報告、2025‑03‑31 で修正 |
| EPO E‑Invoice Viewer | XXE | 2025‑10‑13 報告、2025‑10‑14 で修正 |
| portinvoice | XXE | 2025‑10‑29 報告、同日 で修正 |
| xrechnung-erstellen.com E‑Rechnung Viewer | XXE | 2025‑10‑14 報告、2025‑10‑16 で修正 |
| Belegmeister ZUGFERD VIEWER | Blind XXE | 2025‑11‑15(PDF アップロードのみ)報告、2025‑11‑25 で修正 |
| E‑Rechnungs‑Validator by winball.de | Blind XXE | 2025‑11‑17 報告、2025‑11‑19 で修正、確認済み |
| ZUGFeRD Community ZF/FX Invoiceportal | Blind XXE | 2025‑11‑17 報告、未回答;再テスト(2025‑11‑25)では検証機能が削除(ZUV に依存) |
| REDACTED1 | XXE | 2025‑10‑29 報告、未回答;再テスト(2025‑11‑18)で修正不十分 |
| REDACTED1 | Blind XXE | 2025‑11‑18 報告、未回答、未修正 |
| **ZUGFeRD ** …?…? | ||
| (※ZUV は開発停止。Mustang が推奨されます。Mustang も XXE に脆弱でした(CVE‑2025‑66372)。 |
さらに
- ZUGFeRD、XRechnung など:Wie elektronische Rechnungen zum Sicherheitsrisiko werden(ドイツ語記事、Golem、2025‑12‑12)
質問は?
お気軽にご連絡ください。
テキストとロゴは CC0 で配布しています。ロゴは svgrepo.com の 3 つのアイコンを組み合わせたもので、すべて CC0 です。ウェブページは Pico CSS(MIT ライセンス)と Hugo を使用しています。
作成者:Hanno Böck (作成日:2025‑11‑25、最終更新:2025‑12‑12)
プライバシー表示
(ここに記載)