セキュリティ監査
vendored fragglet/lhasa デコーダのソースレベル監査。
攻撃面
lhasa は デコーダ。攻撃面は基本的に LHA 形式の
パーサ + 少数の出力パスだけ。エンコーダ+デコーダ
(元の lha バイナリ)に比べてずっと小さい。
- エンコーダなし——入力アーカイブが子プロセスを 起動したり、予測可能な場所に書き込んだり、ユーザの ために動作することはあり得ない。
- 静的ビルド——動的依存なし、共有ライブラリなし、 コンストラクタ/デストラクタ順バグなし。
lha l/lha t/lha pはファイルシステム副作用なし——読み取り専用。副作用は 明示的なlha xでだけ起きる。
CVE 履歴
2026-07-15 時点で fraggle / lhasa または
vendored 派生に対する公開 CVE はない。アップストリーム NEWS に
記載されている主な修正:
- v0.6.0 (2026-06-17):
-pm2-デコーダのcopy_decode[]読み取りオーバーフロー。 悪用可能とは考えられていないが修正済み (Yukimura / @damseleng が報告)。 - v0.5.0 (2025-08-01):list 出力の微調整 (おもに表向き)。
ファジング準備状況
アップストリームは
test/fuzzer.c
に libFuzzer ハーネスを用意している。
make check はファジング corpus + 歴史的回帰サンプルを
回す。
ljh-sh/lhasa の CI は継続的ファジングには**まだ**接続していない ——次のステップは OSS-Fuzz の統合(アップストリームが入れば)。 0.6.0 のオーバーフロー修正は、ファジングが実際にプロダクション コードに届いている最新の証拠。
サプライチェーン
- Vendoring:
upstream/lhasa/はgit subtreeスナップショット。NOTICE.md に merge commit と re-vendor コマンド。 - パッチ:ゼロ。vendored ツリーはアップストリーム
75ed835と完全一致。 - ビルド決定論:ビルド監査 を参照。同じソース + 同じ runner + 同じツールチェーン = 再現可能な SHA256SUMS。
脅威モデル & 残留リスク
- 悪意ある .lzh アーカイブ:攻撃面は小さい
(decoder-only、シェルインジェクションパスなし)。緩和策:
展開前に
lha t。可能なら SHA256 で照合。 lha xのパストラバーサル:現代の lhasa は一般的なケース(絶対パス、..)を処理。 信頼できないアーカイブをlha xする前にlha lで確認を。- 圧縮爆弾の増幅:LZH 自体は zip のように巨大には 増幅しない。巨大サイズのものはなおサイズ確認を。
decoder-only 設計が中核的な安全性主張。lhasa は 危険なコンテンツを生成しない、アーカイブ内の既存のものを レンダリングするだけ。
脆弱性開示
メール:fragglet@gmail.com(アップストリームメンテナー)。
ljh-sh/lhasa 配布特有の問題(CI、リリース成果物)には GitHub issue。