Security issues with electronic invoices

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 が公開しているセキュリティテストスイートは、kivitendopeppol‑pyZUV など実際の製品で 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 脆弱性一覧

製品脆弱性タイプ情報
kivitendoXXE2025‑03‑25 報告、3.9.2beta(2025‑03‑28)/3.9.2(2025‑05‑05)で修正;ソフトウェアスタック:Perl/XML::LibXML;CVE‑2025‑66370
peppol-pyBlind XXE2025‑11‑13 報告、1.1.1(2025‑11‑13)で修正;Python/Saxon;CVE‑2025‑66371
ZUV*Blind XXE2025‑11‑17 報告、README によると開発終了;Java/Saxon
papierkram.de E‑Rechnung‑ViewerXXE2025‑03‑30 報告、2025‑03‑31 で修正
EPO E‑Invoice ViewerXXE2025‑10‑13 報告、2025‑10‑14 で修正
portinvoiceXXE2025‑10‑29 報告、同日 で修正
xrechnung-erstellen.com E‑Rechnung ViewerXXE2025‑10‑14 報告、2025‑10‑16 で修正
Belegmeister ZUGFERD VIEWERBlind XXE2025‑11‑15(PDF アップロードのみ)報告、2025‑11‑25 で修正
E‑Rechnungs‑Validator by winball.deBlind XXE2025‑11‑17 報告、2025‑11‑19 で修正、確認済み
ZUGFeRD Community ZF/FX InvoiceportalBlind XXE2025‑11‑17 報告、未回答;再テスト(2025‑11‑25)では検証機能が削除(ZUV に依存)
REDACTED1XXE2025‑10‑29 報告、未回答;再テスト(2025‑11‑18)で修正不十分
REDACTED1Blind XXE2025‑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)


プライバシー表示

(ここに記載)

同じ日のほかのニュース

一覧に戻る →

2025/12/13 5:57

GNU Unifont

2025/12/13 7:02

Show HN: Tiny VM sandbox in C with apps in Rust, C and Zig

## Japanese Translation: uvm32 は、単一の C ファイルで書かれたミニマリストで依存関係を持たない仮想マシンサンドボックスです。 STM32L0 のような非常に小型のマイクロコントローラ上で動作し、4 KB 未満のフラッシュと 1 KB の RAM を使用します。静的割り当てのみで非同期設計となっています。 この VM は RISC‑V のサブセットを実装しており、軽量な管理インタフェースを公開しています。「if‑this‑then‑that」ロジックのために Lua、Duktape、MicroPython などの軽量スクリプトエンジンを置き換え、信頼できないコンポーネントや不安定な部品をサンドボックス化し、ターゲットコンパイラなしでモダン言語の「一度書けばどこでも実行できる」スクリプトを書けるようにすることが目的です。 主な特徴: - バイトコードアプリは C、Zig、Rust、またはアセンブリで記述可能。 - 非ブロッキングでシンプルな実行モデル。安全かつ最小限の型付けを備えた FFI を使用し、ホスト IO(stdio/ネットワーク)は想定していません。 - デザインは高速よりも安全性を優先しています。 - すべてのソースコードは `uvm32/` ディレクトリにあります。最小限のホスト例は `host‑mini` にあり、より高度なホストは `host/`、`host-parallel`、`host-arduino` にあります。 サンプルアプリケーションは VM の機能を示しています(C: helloworld, heap, conio, lissajous, maze, fib, sketch; Zig: zig‑mandel, zigtris, zigalloc, zigdoom; Rust: rust‑hello; アセンブリ: hello‑asm)。 ビルドとテスト用の Dockerfile が提供されており、`make dockerbuild`、`make dockershell` で構築・起動し、その後 `make` を実行してサンプルをコンパイル・実行します。ドキュメントはヘッダファイル `uvm32/uvm32.h` と `doc/README.md` にあります。本プロジェクトは MIT ライセンスで公開されています。

2025/12/13 5:15

Rats Play DOOM

## Japanese Translation: > **概要:** > 著者らは、ラットがDOOMをプレイできる完全にオープンソースの仮想現実装置をリリースしました。ゼロから構築されたこのシステムには、ハードウェア設計・ファームウェア・ソフトウェアがGitHubに掲載されており、他研究室でも簡単に再現または改良できます。バージョン 1(v1)はニューヨークのヴィクトール・トー氏によって開発され、ラットにDOOMコリドーを走行させるよう訓練しました。この実装はViceとPC Gamerで紹介されました。 > > 改良版(v2)はよりモジュラー化され、180°×80°の視野を持つ折りたたみ可能なAMOLEDスクリーン、新しいボールドライバー、強化された給餌器、ゲームイベントに同期した正確な10 µLの砂糖水投与が可能な改良リワード回路を備えています。追加センサーとランニングマシンのボール周囲に設置された光学フロー運動捕捉システムでトラッキング精度が向上しています。 > > ソフトウェアはPythonベースのモジュラースタック(arena_scenario.py)で、PC上で実行され、Raspberry PiとTCP経由で通信します。Piはリアルタイムセンサー読み取り・ボール駆動・リワード制御を担当します。すべてのコンポーネントはGitHubに文書化されており、3Dプリント可能なパーツや回路図も公開されています。 > > チーム(ヴィクトール・トー=ゲーマーラットコーチ、サンドル・マクラ=電気技師、アコス・ブラシュェク=ドキュメントリード)は、ラットが約2週間で慣れることを示しましたが、完全な訓練はまだ完了していません。 > > 現在の制限として、自動キャリブレーションスイートが無いため、ユーザーはセンサーの整列とリワードタイミングを手動で検証する必要があります。 > > 今後の課題は完全な訓練プロトコルの完成、キャリブレーションツールの改良、および他の行動タスクや種へ装置を拡張することです。低コストで完全にオープンなプラットフォームを提供することで、このプロジェクトは世界中の神経科学研究室の参入障壁を下げ、動物VR実験に依存する研究のスピードアップに寄与できる可能性があります。