概要
PostgreSQL管理ツール「pgAdmin 4」にクリティカルな脆弱性が発見され、リモートの攻撃者がセキュリティフィルターを迂回し、ホストサーバー上で任意のシェルコマンドを実行できる可能性が明らかになりました。
この脆弱性は「CVE-2025-13780」として追跡されており、pgAdmin 4のデータベース復元機能における弱点を悪用するものです。
脆弱性の詳細
- CVE ID: CVE-2025-13780
- 深刻度: Critical (クリティカル)
- 脆弱性の種類: Remote Code Execution (RCE) – リモートコード実行
- 影響を受けるコンポーネント: pgAdmin 4 (復元機能)
セキュリティ研究者らは、pgAdmin 4の「正規表現ファイアウォール」が特定の空白文字、特にキャリッジリターン(\r)を適切に考慮していなかったことを発見しました。
データベースをSQLファイルから復元する際、pgAdminは「psql」コマンドラインユーティリティを起動します。psqlはOSコマンドを実行できる強力なメタコマンド(例: 「!」)をサポートしているため、pgAdminはこれらの危険なコマンドを正規表現(regex)チェックでブロックしようと試みていました。しかし、このチェックが不十分でした。
具体的には、正規表現フィルターは行の冒頭または標準の改行文字の直後にあるバックスラッシュのみをチェックするように設計されていました。研究者たちは、改行とコマンドの間に代替の空白文字(例: キャリッジリターン)を挿入することで、悪意のあるコードをフィルターから隠せることを発見しました。Pythonベースの正規表現はこれを安全なテキストとして認識しましたが、基盤となるpsqlインタープリターはシーケンスを有効な改行として扱い、コマンドを実行してしまいました。
Endor Labsによると、この不一致により、攻撃者はpgAdminには無害に見えるSQLファイルを作成し、処理時にコード実行を引き起こすことが可能でした。概念実証では、「crlf_attack.sql」というファイルがpgAdminホストサーバー上でシェルコマンドを実行することに成功しました。
対策
開発チームはpgAdmin 4バージョン9.11でこの問題に対処しました。彼らはアプローチを全面的に変更し、複雑なテキストマッチングで入力ファイルをフィルタリングするのではなく、復元プロセスを「restrict」オプション付きで起動するようにしました。このディレクティブにより、psqlインタープリター自体が実行中に潜在的に危険なメタコマンドを無効にするよう強制されます。
この新しい方法は、外部のテキストスキャナーに依存するよりも、データベースツールの内部セキュリティ制御に頼るため、より堅牢な防御を提供します。
管理者は、このリスクを軽減するためにバージョン9.11への即時アップグレードを強く推奨されています。複雑なパーサーに対する正規表現ベースのパッチは、攻撃者が悪用できる残存するギャップを残すことが多いため、迅速な対応が求められます。
元記事: https://gbhackers.com/critical-pgadmin-flaw-execute-shell-commands-on-host/
