さまざまな分野での人工知能(AI)の役割が増大する中、サイバーセキュリティの仕事市場への影響についての質問がますます重要になっています。一方では、自動化とインテリジェントシステムはデータおよびITインフラストラクチャの保護に関連するプロセスを大幅に迅速化および効率化できます。他方では、AIが一部の機能で人々に取って代わる可能性があるため、利用可能な仕事の数が減少するという懸念もあります。これまでの私の観察からすると、少なくともセキュリティ専門家にとってはむしろ逆になるでしょう!
サイバーセキュリティにおけるAIの可能性
AIは短時間で大量のデータを分析する能力を持っており、これはサイバーセキュリティにおいて非常に重要です。なぜなら、脅威に対する迅速な対応がしばしば決定的だからです。機械学習アルゴリズムは、行動パターンや過去のデータの分析に基づいて、これまで知られていなかった脅威を検出することができます。これにより、セキュリティインシデントの特定と対応が迅速かつ正確になります。脅威の分析と対応のプロセスの自動化は、日常的なモニタリングやアラームへの対応を行う低レベルのセキュリティアナリストの職を削減する可能性があります。他方で、機械学習エンジニアリング、インテリジェント防御システムの管理、AIを用いた高度な脅威分析といった専門職が出現しています。専門家は、最新のAIツールの動作を理解するだけでなく、それを特定のセキュリティニーズに合わせて開発し、適応させる能力も必要とされるでしょう。
コード生成の自動化 = セキュリティエラーの増加 + 新しい脆弱性クラス
自動ツールによるエラーの導入
これまで以上に、アプリケーションの作成が簡単で、非技術者にもアクセスしやすく、迅速になっています。これにより、多くの新しいアプリケーションが急増しています。既存のソフトウェアにAI要素を導入するブームも伴っています。しかし、自動化、特にコードジェネレータや開発フレームワークの形を取ると、意図しないエラーやセキュリティホールが発生する可能性があります。これらのツールは、確立されたパターンやアルゴリズムに基づいて動作し、経験豊富なプログラマーが理解し使用するセキュリティの特定条件やニュアンスを考慮しない可能性があります。例えば、生成された自動コードが適切に設定されていない場合、SQLインジェクションやクロスサイトスクリプティング(XSS)などの攻撃に対して適切に保護されていない可能性があります。
Zoomin ZdocsのXSS
AIが急速に導入される中で見つけた単純な「反射型クロスサイトスクリプティング」の一例として、Zoomin Zdocsがあります。アプリケーションのドキュメントを扱う際にAIアシスタントを導入するのは素晴らしいアイデアのように思えますが、AIの回答が予測不可能であり、セキュリティエラーを引き起こす可能性があることを忘れてはなりません。Zoominのアプリケーションでは、次のような質問をアシスタントに投げかけるだけで十分でした:
<img src=1 href=1 onerror="javascript:alert(document.domain)"></img>?
これに対して、アシスタントは質問に対する答えが見つからないと回答し、その質問を引用しました。
I'm sorry, but I couldn't find a definitive answer to: <img src=1 href=1 onerror="javascript:alert(document.domain)"></img>?. Please provide more context or clarify your query.
リクエスト全体は以下のようになっています:
POST /api/aisearch/stream HTTP/1.1 |
サーバーの応答:
HTTP/2 200 OK |
ご覧のように、入力データは正しくバリデートおよびサニタイズされておらず、結果として挿入されたJavaScriptコードが実行されることになります:
不適切なレスポンス表示の例の疑似コード:
function displayResponse(userInput):
# ユーザー入力を読み込む
query = userInput
# 入力データをサニタイズせずにレスポンスを表示する
# これは、userInputに含まれるスクリプトが実行されるため不適切です
print("Odpowiedź na Twoje pytanie: " + query)
適切なレスポンス表示の例の疑似コード:
function sanitize(input):
# 入力データ中の特別なHTML文字を削除またはエンコードする。例えば、<、>、"、' など
return input.replace("<", "<").replace(">", ">").replace("\"", """).replace("'", "'")
function displayResponse(userInput):
# ユーザー入力を読み込む
query = userInput
# 入力データをサニタイズする
safeQuery = sanitize(query)
# 安全にレスポンスを表示する
# サニタイズは悪意のあるコードの実行を防ぎます
print("Odpowiedź na Twoje pytanie: " + safeQuery)
この脆弱性(他の多くの脆弱性とともに)は報告され、メーカーによって修正されました。
エラーの複製
自動化の主な欠点の1つは、同じコードが多くの場所で複製される可能性があり、エラーや脆弱性が広範に広がることです。生成コードコンポーネントにエラーがある場合(AIがエラーのあるコードで学習されている場合)、そのコードを使用するすべてのアプリケーションやシステムが潜在的に危険にさらされます。この現象はセキュリティの問題をスケールし、管理や修正をより困難にします。
監査およびコードレビューの困難さ
自動生成されたコードはしばしば複雑であり、「人間の」プログラマーにとって直感的でない方法で生成されます。これは、論理的なエラーやセキュリティの脆弱性を特定するために重要な手動レビューを難しくする可能性があります。生成コードの透明性と理解が欠如していると、セキュリティテスト中に重要な問題が見逃される可能性があります。
新しい脆弱性クラス
自動化は手動のコード作成の場合よりも新しい脆弱性クラスを導入する可能性があります。例えば、自動生成されたモジュール間の依存関係が開発者によって完全に理解または管理されない場合があり、依存関係やアプリケーションロジックに関連する攻撃の道を開くことになります。また、新しい脆弱性クラス(例えば、「プロンプトインジェクション」など)が出現しています。
OWASP Top 10 for Large Language Model Applications
OWASPは昨年、LLMの使用に伴う最大の脅威を特定し、保護のための推奨事項を発行するための作業を開始しました – OWASP Top 10 for LLLM。リストは次のようになっています:
LLM01: プロンプトインジェクション
適切な入力データを通じて大規模言語モデル(LLM)を操作することで、LLMの意図しない動作を引き起こすことができます。直接的なインジェクションはシステムのプロンプトを上書きし、間接的なものは外部ソースからのデータを操作します。
LLM02: 危険な出力処理
LLMの出力を制御せずに受け入れると、バックエンドシステムが危険にさらされる可能性があります。乱用されると、XSS、CSRF、SSRF、権限のエスカレーション、リモートコード実行などの深刻な結果を招く可能性があります。
LLM03: トレーニングデータの汚染
LLMのトレーニングデータが操作されると、セキュリティ、効果、倫理的な行動に影響を与える脆弱性やエラーが発生します。ソースには、Common Crawl、WebText、OpenWebText、および書籍が含まれます。
LLM04: モデルの誤使用
攻撃者はLLMにリソースを消費する操作を行わせ、サービスの劣化や高額な費用を引き起こします。LLMのリソース集約性とユーザー入力の予測不可能性がこの脆弱性を増大させます。
LLM05: サプライチェーンの脆弱性
LLMアプリケーションのライフサイクルは、脆弱なコンポーネントやサービスによって危険にさらされ、セキュリティ攻撃を引き起こす可能性があります。外部のデータセット、事前にトレーニングされたモデル、およびプラグインの使用は脆弱性を増加させる可能性があります。
LLM06: 機密情報の漏洩
LLMは回答の中で意図せずに機密データを漏洩させる可能性があり、これによりデータへの不正アクセス、プライバシーの侵害、およびセキュリティ侵害が発生します。これを防ぐためには、データのサニタイズと厳格な使用ポリシーの実装が重要です。
LLM07: 危険なプラグイン設計
LLMプラグインには、未処理の入力や不十分なアクセス制御が存在する可能性があります。アプリケーションの制御が欠如していると、悪用が容易になり、リモートコード実行などの結果を招く可能性があります。
LLM08: 過度の自律性
LLMベースのシステムは、意図しない結果を引き起こす行動を取る可能性があります。この問題は、過度の機能、過剰な権限、またはLLMベースのシステムに与えられた自律性によって引き起こされます。
LLM09: 過度の依存
LLMに過度に依存するシステムや人々は、LLMが生成する不正確または不適切なコンテンツにより、誤情報、コミュニケーションエラー、法的問題、セキュリティエラーのリスクにさらされる可能性があります。
LLM10: モデルの盗難
LLMの所有モデルへの不正アクセス、コピー、または盗難が問題です。これにより、経済的な損失、競争上の優位性の喪失、および機密情報へのアクセスの可能性が発生します。
どうする?どう生きる?
OWASPは、LLLMのTop 10リストとともに、組織内でLLMを実装する際の安全なアプローチに関する一連の推奨事項を発行しました – LLM AI Cybersecurity & Governance Checklist。プログラミングに関する推奨事項は以下の通りです:
- LLMコンポーネントの脅威をモデル化し、アーキテクチャの信頼境界を定める。
- データセキュリティ:データの機密性に基づく分類および保護の方法を確認する(ユーザー権限の管理方法および実装されている保護機構は?)。
- アクセス制御:最小権限の原則に従ってアクセス制御を実装し、多層防御手段を適用する。
- トレーニングプロセスのセキュリティ:トレーニングデータ、プロセス、モデル、およびアルゴリズムの管理に対して厳格な制御を要求する。
- 入力および出力のセキュリティ:入力データの検証方法、および出力のフィルタリング、サニタイズ、および検証方法を評価する。
- 監視および対応:ワークフローをマッピングし、監視および対応を行い、自動化を理解する。ログ記録および監査を行い、監査記録のセキュリティを確認する。
- 製品開発プロセスにアプリケーションテスト、ソースコードレビュー、脆弱性評価、およびペネトレーションテストを含める。
- LLMモデルまたはサプライチェーンの既存の脆弱性を確認する。
- プロンプトインジェクション、機密情報の漏洩、モデルの操作など、LLMソリューションに対する脅威や攻撃の影響を考慮する。
- モデルの汚染、不適切なデータ処理、サプライチェーン攻撃、モデルの盗難など、LLMモデルに対する攻撃や脅威の影響を調査する。
- サプライチェーンのセキュリティ:第三者による監査、ペネトレーションテスト、およびコードレビューを求める(初回および定期的なプロセスで)。
- インフラストラクチャのセキュリティ:プロバイダーが耐障害性テストをどのくらい頻繁に行うかを確認する。可用性、スケーラビリティ、およびパフォーマンスに関するSLAは?
- インシデント対応マニュアルを更新し、LLMに関連するインシデントを定期的なセキュリティ演習シナリオに組み込む。
- ジェネレーティブAIをサイバーセキュリティの他のアプローチと比較し、期待されるパフォーマンス改善を測定するためのメトリクスを特定または拡張する。