gofr の BasicAuth 空資格情報の設定不備によりリモートで認証回避が可能に
この脆弱性は、app.EnableBasicAuth 関数が空文字列の引数を処理する際に有効性の検証を欠いていることに起因します。ユーザー名またはパスワードが正しく設定されていない場合でも、システムは空の資格情報レコードを登録して nil を返すため、攻撃者は Base64 エンコードされたコロンを含む Basic Auth ヘッダーを送信するだけで認証を通過できます。これによりアクセス制御を回避して保護されたリソースに直接アクセスでき、機密性と完全性に深刻な漏えいリスクをもたらします。
コンポーネント
gofr は Go 言語で構築された高性能なマイクロサービスフレームワークで、RESTful API の開発フローを簡素化し、標準化されたアプリケーションアーキテクチャを提供することを目指しています。中核コンポーネントには HTTP サーバー、ミドルウェアチェーン、設定管理システムが含まれ、依存性注入とモジュール設計をサポートします。主にスケーラブルなバックエンドサービスを素早く構築するために使われ、組み込みの認証ミドルウェアによってインターフェースへのアクセスの安全性を確保します。
種別
Improper Authentication (CWE-287)
リポジトリ
対処方法
- 開発者は基本認証のロジックを実装する際に入力パラメータが空でないことを厳格に検証し、ユーザー名またはパスワードが空の場合は直ちに認可フローを中止して明確なエラーを送出してください。あわせて境界条件に対する単体テストのカバレッジを充実させ、不正な設定が暗黙の機能低下ではなく想定どおりのセキュリティ遮断を引き起こすようにすることを推奨します。
eladmin で悪意ある SQL ファイルのアップロードによるインジェクションが可能になり、データベースのデータ漏えいと改ざんにつながる
攻撃者は POST /api/database/upload エンドポイントを利用して、悪意を持って細工した SQL 文を含む .sql ファイルをアップロードします。SqlUtils.batchExecute() メソッドは入力内容をパラメータ化もセキュリティフィルタリングもせず、Statement.addBatch() を直接呼び出して生の SQL を実行します。有効な入力検証の仕組みがないため、攻撃者は任意の SQL コマンドを実行でき、sys_user テーブルからユーザー名やパスワードハッシュなどのユーザー資格情報を窃取することも可能で、機微情報の漏えいとデータベースの完全性の破壊を招きます。
コンポーネント
eladmin は Spring Boot ベースのオープンソース管理画面システムで、マルチテナントやリモートデータベース接続の管理をサポートするデータベース保守モジュールをアーキテクチャに統合しています。このコンポーネントは SQL スクリプトの一括実行機能を手軽に提供することを目的としており、ユーザーは Web 画面から .sql ファイルをアップロードして自動的に解析・実行できます。これによりデータベースの初期化、スキーマ変更、データ移行などの運用作業を簡素化し、開発・テスト環境でのデータベース操作の効率を高めます。
種別
SQL Injection (CWE-89)
リポジトリ
対処方法
- SQL を直接連結して実行する方式に代えてプリペアドステートメントを使用し、実行可能な SQL 文の種類を厳しく制限し、許可リスト方式で危険なキーワードを除外するとともに、アップロードファイルの内容をサンドボックスで検査して、許可された DDL/DML 操作のみを含むことを確認することを推奨します。