数十年来の「古典的な」SQLインジェクションの欠陥が、Windowsサーバー全体を乗っ取る鍵に


  • Huntressが確認、OracleのSQLiを使って珍しいkhuntツールキットを展開
  • khuntによりOSコマンド実行、認証情報窃取、レジストリハイブの窃取が可能に
  • 対策には入力値のサニタイズなどが有効

攻撃者が、古典的なSQLインジェクション(SQLi)攻撃と巧妙なデータベースの手口を組み合わせることで、基盤となるシステムを完全に乗っ取ることに成功した事例が確認されました。

このインシデントの調査を依頼されたセキュリティ研究者のHuntressは、述べています。調査の結果、まず判明したのは数十年来の古典的な手法であるSQLインジェクション攻撃でした。Oracleをバックエンドに持つ公開アプリケーションが、フォームに入力されたSQLコマンドを、その妥当性を検証しないまま受け付けて実行してしまっていたのです。

これにより攻撃者は、khuntという名のデータベース常駐型ポストエクスプロイテーション・ツールキットをアップロードすることができました。この手法はサイバーセキュリティの世界における「白鯨」とも言える存在で、これまで広く議論されてきたものの、実際に野生で観測されることは稀でした。

対策方法

Huntressは次のように述べています。「その後に起きたことには、私たちも目を見張りました。SQLインジェクションを実行した後、脅威アクターはkhuntという名のデータベース常駐型ポストエクスプロイテーション・ツールキットのアップロードに成功していたのです。この手法自体は、oraexecと呼ばれる技術として長年にわたり議論・説明されてきたものですが、実際の攻撃でこの手法が使用された事例が文書化されることはほとんどありませんでした」

ツールキットとしてのkhuntは、攻撃者に複数の機能を提供します。具体的には、システム上でcmd.exeを起動して任意のOSコマンドを実行する機能、ユーザー名やパスワードを窃取する機能、ファイルの一覧表示・読み取り・検索・サイズ確認(つまり侵害したシステム内部を調べ回る機能)、ファイルの解凍機能などが含まれます。

攻撃者はこれだけの選択肢がある中で、PowerShellコマンドを実行し、Windowsレジストリツールを呼び出して、SAM、SECURITY、SYSTEMの各レジストリハイブをコピーするという行動を選びました。研究者らの説明によると、後にこのコピーを使って、システム上のローカルアカウントのパスワードハッシュを抽出・解読することができるとのことです。

こうした攻撃を防ぐため、Huntressはまずフォームがインジェクション可能な状態になっていないことを確認するよう推奨しています。「あらゆる入力に対して、適切な入力値のサニタイズとクエリのパラメータ化を実践してください」と同社は警告しています。「また、クエリを実行できる権限を持つユーザーに対して、過剰な権限を付与しないようにすることも重要です」

たとえSQLインジェクションが成功してしまったとしても、ユーザーアカウントがJavaソースを作成したりストアドプロシージャを実行したりできないようにしておくべきです。




翻訳元: https://www.techradar.com/pro/security/this-classic-decades-old-sql-injection-flaw-could-let-hackers-take-over-entire-windows-servers-thanks-to-a-nifty-database-trick

ソース: techradar.com