LibClamAV Warning: cli_scanxz: decompress file size exceeds limits|MaxFileSize・MaxScanSize・StreamMaxLength調整による恒久対処法

HOMEリナックスマスター.JP 公式ブログLinuxエラー対処法 > LibClamAV Warning: cli_scanxz: decompress file size exceeds limits|MaxFileSize・MaxScanSize・StreamMaxLength調整による恒久対処法
宮崎智広 この記事の監修:宮崎智広(Linux実務・教育歴20年以上・受講者3,100名超)

この記事のポイント

・LibClamAV Warning: cli_scanxz: decompress file size exceeds limitsの正体は走査上限超過
・解決はclamd.conf/freshclam.confのMaxFileSize・MaxScanSize・StreamMaxLength調整
・clamdscan/clamscanどちらでも有効、コマンドラインは--max-filesize/--max-scansize
・調整後はsystemctl restart clamavまたはfreshclam再起動で反映確認まで実施

「ClamAVでスキャン実行中にLibClamAV Warning: cli_scanxz: decompress file size exceeds limitsという警告が出るが何が起きているのか」「only scanning 27262976 bytesと出るが残りはスキャンされていないのか」と困っているシステム管理者の方は多いはずです。

この警告はClamAVがxz圧縮ファイルを展開する際の上限サイズに引っかかったときに表示されるもので、放置するとマルウェアの一部走査漏れにつながります。本記事ではdecompress file size exceeds limitsの意味と、MaxFileSize/MaxScanSize/StreamMaxLengthの設定変更による恒久対処法を整理します。

ClamAVでスキャン実行中に次の警告が表示された場合、
その意味と対策を紹介します。

警告メッセージ
LibClamAV Warning: cli_scanxz: decompress file size exceeds limits - only scanning 27262976 bytes
「このままじゃマズい」と感じていませんか?
参考書を開く気力もない、同年代に取り残される不安——
でも安心してください。プロのエンジニアはコマンドを暗記していません。
「現場で使える型」を効率よく使いこなしているだけです。
図解60P/登録10秒/解除も3秒 / 詳細はこちら

LibClamAV Warning: cli_scanxz: decompress file size exceeds limitsが発生する仕組み

ClamAVのスキャン対象の上限ファイルサイズは、
デフォルトで約25MBになっており、
これ以上大きいサイズのファイルはスキップする仕様になっています。

スキャン対象のファイルサイズ上限を変更するには、
max-filesizeオプションを変更することで対応します。
--max-filesize=

また、ファイルの先頭からどれくらい走査するかを
指定するには、max-scansizeオプションを設定します。
--max-scansize=

cli_scanxzはClamAVのxz圧縮ファイル展開ルーチンの名称です。tar.xzやログローテートされた*.xzアーカイブを走査する際に、展開後サイズが内部上限を超えるとdecompress file size exceeds limitsの警告がログ出力されます。only scanning 27262976 bytesは「先頭から27262976バイト(約26MB)だけ走査して残りはスキップした」という意味で、走査範囲が打ち切られているサインです。

ClamAVがこの上限を設けている理由は、悪意ある巨大zip/圧縮爆弾(zip bomb/xz bomb)対策でCPU・メモリを枯渇させない自衛機構として機能しているためです。したがって警告が出ること自体は異常ではなく、運用上「上限超過アーカイブが許容されるか」「スキャン漏れを許容できないか」をシステム要件に照らして判断する必要があります。

LibClamAVのMaxFileSizeとMaxScanSizeの違い

ClamAVには走査上限を司る2つの似たパラメータが存在し、それぞれ役割が違います。
パラメータ役割既定値
MaxFileSize個別ファイル単位のスキャン上限(このサイズを超えるファイルは丸ごとスキップ)25M
MaxScanSizeアーカイブ展開も含めた累計走査バイト数の上限100M
StreamMaxLengthclamdのstreamスキャン(INSTREAM)における1ストリーム上限25M
MaxRecursionアーカイブのネスト展開深さ上限17
MaxFiles1アーカイブ内で展開する最大ファイル数10000
cli_scanxzの警告で問われているのは主にMaxFileSizeとMaxScanSizeの2つです。展開後の.xzが既定25MBを越えていればMaxFileSize、累計100MBを越えていればMaxScanSizeで打ち切られます。両方を同時に引き上げる運用が現実的な落としどころです。

cli_scanxz警告のdecompress file size exceeds limitsを解消する設定方法

恒久対処はclamd.confとfreshclam.confの編集です。配布パッケージにより配置場所は異なります。

RHEL系: /etc/clamd.d/scan.conf
Debian/Ubuntu: /etc/clamav/clamd.conf
ソースビルド: /usr/local/etc/clamd.conf

clamd.confでMaxFileSize/MaxScanSizeを引き上げる

エディタでclamd.confを開き、コメントアウトされている上限項目を有効化します。

[root@host ~]# vi /etc/clamd.d/scan.conf

MaxFileSize 200M
MaxScanSize 800M
StreamMaxLength 200M
MaxRecursion 30
MaxFiles 50000
書き換えたあとはclamdを再起動して反映します。

[root@host ~]# systemctl restart clamd@scan
[root@host ~]# systemctl status clamd@scan
Debian/Ubuntu系はサービス名がclamav-daemonです。

root@host:~# systemctl restart clamav-daemon

clamscanコマンドラインでMaxFileSizeとMaxScanSizeを指定する

clamd(常駐デーモン)を経由せずclamscanで都度走査する場合は、コマンドラインオプションで上書きできます。

[root@host ~]# clamscan --max-filesize=200M --max-scansize=800M -r /var/log/
シェルスクリプトでバッチ走査するときは、--max-filesizeと--max-scansizeをペアで指定するのが安全です。--max-filesizeだけ引き上げてもMaxScanSizeで打ち切られて意味がなくなるケースが多いので注意してください。

freshclam.confのStreamMaxLengthを揃える

clamavmilterなどのストリーミング系で大きい添付ファイルを走査する構成では、freshclam.confまたはclamavmilter.confのStreamMaxLengthもclamd.confと揃える必要があります。

[root@host ~]# grep StreamMaxLength /etc/clamd.d/scan.conf /etc/freshclam.conf
ここで値が食い違っているとPostfixやSMTPゲートウェイ経由でメール添付がスキャン未完のまま通過する事故になり得ます。

cli_scanxz警告を放置するリスクとファイルサイズexceeds limitsの判断軸

警告が出ても処理自体は止まらないため、つい放置されがちですが、only scanning N bytesと出ているということは「残りのバイト列にマルウェアが入っていても検出できなかった」状態です。

特にxz圧縮されたlinuxカーネルソース・rpmパッケージ・バックアップアーカイブを定期スキャンしている環境では、25MB/100MBの既定値は2026年現在の運用実態に対して小さすぎる場合が多いです。

運用状況推奨対応
バックアップ.tar.xzを毎日走査MaxFileSize/MaxScanSizeを実バックアップサイズ+20%へ拡張
SMTPゲートウェイ/添付スキャンStreamMaxLengthをmessage_size_limitと整合
エンドユーザー端末/ホームディレクトリ既定のまま放置可(zip bomb耐性優先)
CIサーバー/アーティファクト保管庫--max-filesize/--max-scansizeをジョブ毎に指定
ファイルサイズexceeds limitsの判断軸は「走査対象がzip bomb攻撃面か/業務アーカイブか」の二択です。前者なら既定維持・後者なら上限拡張、と分けて運用するのが現実解です。

cli_scanxz警告と関連するLibClamAV Warningログを切り分ける

cli_scanxz以外にも、似た形のLibClamAV Warningがいくつかあります。原因と対処を切り分けるための一覧です。

警告メッセージ主な原因対処
cli_scanxz: decompress file size exceeds limitsxz展開上限超過MaxFileSize/MaxScanSize拡張
cli_scangzip: decompress file size exceeds limitsgzip展開上限超過同上、加えてMaxRecursion確認
cli_scanzip: Maximum file size exceededzip内の単一ファイル上限MaxFileSizeのみ拡張
LibClamAV Warning: cli_scanbzip: BZ_DATA_ERRORbzip2展開不整合対象ファイル自体の破損確認
LibClamAV Warning: Bytecode: signature too old定義ファイル鮮度freshclam実行
同じLibClamAV Warningでも原因はバラバラなので、cli_scanxz単独で判断せず周辺の警告メッセージも合わせて読み解いてください。

file size exceeds limits対処後の動作確認手順

設定変更後、本当に走査範囲が広がったか確認する手順です。

1. clamd.confの最終値を確認する

[root@host ~]# grep -E "MaxFileSize|MaxScanSize|StreamMaxLength" /etc/clamd.d/scan.conf
コメント記号#が外れていること、値が想定通りであることを目視確認します。

2. clamdのconfに変更が読み込まれているか確認する

[root@host ~]# systemctl restart clamd@scan
[root@host ~]# journalctl -u clamd@scan --since "1 minute ago"
起動時のログにLOG_VERBOSEが入っていればMaxFileSizeの実値が出力されます。

3. 大きめのアーカイブで実スキャンする

[root@host ~]# clamdscan --verbose /var/backup/full_$(date +%Y%m%d).tar.xz
完走してdecompress file size exceeds limitsの警告が出なければ調整成功です。再発する場合は上限値をさらに引き上げるか、対象ファイルを除外する判断に切り替えます。

cli_scanxz警告に関するよくある質問

Q. cli_scanxz警告が出てもウイルス検知は動いていますか

A. 警告で示されたバイト数(only scanning Nbytes)まではシグネチャ照合が走っています。それ以降のバイト列は照合されていないため「先頭が無害でも末尾に潜むペイロードは見逃す」状態です。

Q. MaxFileSizeを大きくし過ぎる副作用はありますか

A. 巨大ファイル1つでスキャン処理が長時間ロックされ、CPU・メモリ使用量が跳ね上がります。SMTPゲートウェイに統合している場合はメール配送遅延・タイムアウトに直結するため、StreamMaxLengthとmessage_size_limitを揃えて運用してください。

Q. cli_scanxzが出るxzファイルだけ除外する方法はありますか

A. clamd.confのExcludePathで除外パターンを指定するか、clamscanの--exclude=でファイル名パターンを除外できます。zip bombリスクが高いダウンロード領域などはあえて除外しない方が安全です。

Q. clamavのバージョン違いで挙動は変わりますか

A. ClamAV 0.103以降、デフォルト上限値の見直しと項目名整理が行われています。0.102以前のバージョンを使っている場合は項目名が異なる場合があるので、必ず使用バージョンに対応した公式ドキュメントを参照してください(clamconf -V/clamscan --versionで確認可能)。

本記事のまとめ

項目対処要点
警告の意味xz展開後サイズが上限を超え、only scanning N bytesで打ち切られている
主な調整パラメータMaxFileSize/MaxScanSize/StreamMaxLength
設定ファイルclamd.conf(RHEL=/etc/clamd.d/scan.conf, Deb=/etc/clamav/clamd.conf)
コマンドライン指定--max-filesize=/--max-scansize=でペア指定
反映確認systemctl restart clamd→journalctl→大きめアーカイブで実走査
放置リスクマルウェア走査漏れ、特にバックアップ・SMTPゲートウェイで致命
トレードオフzip bomb耐性を犠牲にするため、走査領域ごとに値を分ける運用
LibClamAV Warning: cli_scanxz: decompress file size exceeds limitsは「走査範囲が打ち切られた」という運用上の重要シグナルです。MaxFileSize/MaxScanSize/StreamMaxLengthの3点をclamd.confで揃えて引き上げ、systemctl restartで反映、実アーカイブで動作確認するまでがワンセットの作業になります。

無料メルマガで学習を続ける

Linuxの実践スキルをメールで毎週お届け。
登録は1分、解除もいつでも可。

登録無料・いつでも解除できます

暗記不要・1時間後にはサーバーが動く

3,100名以上が実践した「型」を無料で公開中

プロのエンジニアはコマンドを暗記していません。
「現場で使える型」を効率よく使いこなしているだけです。
その「型」を図解60Pにまとめた入門マニュアルを、完全無料でプレゼントしています。

登録10秒/合わなければ解除3秒 / 詳細はこちら

Linux無料マニュアル(図解60P) 名前とメールで30秒登録
宮崎 智広

この記事を書いた人

宮崎 智広(みやざき ともひろ)

株式会社イーネットマーキュリー代表。現役のLinuxサーバー管理者として20年以上の実務経験を持ち、これまでに累計3,100名以上のエンジニアを指導してきたLinux教育のプロフェッショナル。「現場で本当に使える技術」を体系的に伝えることをモットーに、実践型のLinuxセミナーの開催や無料マニュアルの配布を通じてLinux人材の育成に取り組んでいる。

趣味は、キャンプにカメラ、トラウト釣り。好きな食べ物は、ラーメンにお酒。休肝日が作れない、酒量を減らせないのが悩み。最近、ドラマ「フライトエンジェル」を観て涙腺が崩壊しました。


Linux無料マニュアル(図解60P) 名前とメールで30秒登録