Software Design 2024年11月号　特集まとめ

https://amzn.asia/d/fmmvEMS

Software Design 2024年11月号の第一特集「新世代の開発スタイル はじめてのAI駆動開発
」、第二特集「ランサムウェア対策のアプローチ EDRとマイクロセグメンテーション」の概要を作成しました。

# 新世代の開発スタイル　はじめてのAI駆動開発　面倒な作業はAIに任せよう

### GitHub Copilotで楽々コーディング

GitHub Copilotは、AIを活用してコーディングを支援するツールである。ユーザーがコードを記述する際に、AIがコードの続きを提案したり、プロンプトに従って新しいコードを生成する。開発者の作業を補助することを目的としており、Visual Studio CodeやJetBrains製IDEなど、複数のエディタに対応している。

有償サービスであるGitHub Copilotは、GitHubアカウントを通じて契約し、拡張機能をエディタにインストールする必要がある。

Copilotは、開発者が書く変数名や関数名、コメントをヒントにしてコードを提案する。Pythonでの日付計算などの簡単なタスクでは、Tabキーで提案されたコードを簡単に確定できる。

Copilotにはインラインチャット機能もあり、列挙型の要素追加やJSONデータからの構造体生成など、具体的な指示に基づいてコードを編集できる。Copilotを効果的に使うためには、シンプルな指示を複数回に分けるのが良い。

提案されたコードはAIの推論に基づくものであり、必ずレビューし、テストを行う必要がある。

### AIチャットボットとペアプログラミング

AIチャットボットを使うことで、1人でもペアプログラミングが可能になる。たとえば、ChatGPTやGitHub Copilot Chatは、プロトタイプの生成やコードの問題点の指摘ができ、開発の質と速度を向上させる。具体的な指示を与えることで、より正確な出力が得られるため、プロンプトエンジニアリングが重要となる。

GitHub Copilot Chatは、Visual Studio Code上で利用できる。選択したコードの説明やエラー修正の指示を行うことができるが、AIツールは万能ではなく、生成されたコードの正確性には注意が必要である。AIツールは目的達成の手段として使うことが重要であり、常に生成物の検証が求められる。

### ChatGPTでプロトタイプをサクサク生成

AIツールを使うことで、プロトタイプの作成が迅速に進行する。

- UizardでのUI設計
- Figmaを使った編集
- Locofy.aiによるUIからコードへの変換
- GitHub Copilotでのロジック追加
- PostmanでのAPIテスト
 
などの流れで、短期間でプロトタイプが完成する。これにより、開発者は生産性を大幅に向上させることができる。

### Infrastructure as Code（IaC）で生成AIを活用する

Infrastructure as Code（IaC）は、インフラをコードとして定義する手法で、AWS CloudFormationやTerraformなどのツールを用いて管理される。生成AIを用いることで、IaCコードの作成が効率化される。コード生成の速度向上や人的エラーの削減、複雑な設計支援など、多くのメリットがある。

生成AIでのIaCコードの作成手順は、

1. プロンプト入力、
1. 生成コードのレビュー・検証、
1. インフラデプロイ
 
の3ステップからなる。

### AI駆動開発の将来

生成AIの進化により、AI駆動開発はコード生成だけでなく、要件定義や設計、テストなど、開発全体に広がる。AIはプロダクトオーナーの要件定義を支援し、品質保証やテスト計画の作成にも利用される。AI駆動開発の拡大に伴い、著作権や再現性、セキュリティといった課題にも取り組む必要がある。

AI駆動開発において、ITエンジニアはAIツールの選定やAIと人間の役割分担を明確にするスキルが求められる。AIを活用した開発環境の設計や、AIによる自動化プロセスを管理する能力が必要である。

----

# ランサムウェア対策のアプローチ

2024年上半期の日本国内におけるランサムウェア被害は深刻であり、多くの業種や規模の組織が攻撃を受けている。被害はメーカーを中心に、ITや建設、医療機関、商社などさまざまな業種に及んでいる。ランサムウェアの攻撃者は、主に「二重脅迫」を行う。これは、まず標的組織のネットワークに侵入し、重要なデータを盗み出した上で、データを暗号化して利用不能にする手口だ。攻撃者は、盗んだデータをダークウェブ上で公開することをちらつかせながら、暗号化解除の鍵と引き換えに身代金を要求する。

### 侵入経路と攻撃手法

ランサムウェアが組織内部に侵入する手口は主に5つある。

1. メールからの感染
1. リモートデスクトッププロトコル（RDP）
1. 改ざんされたWebサイト
1. VPN機器の脆弱性
1. 別のウイルスを介した感染

VPN機器の脆弱性を狙った攻撃は特に多く、例えば、適切なパッチが適用されていない機器は、攻撃者の格好の標的となる。2024年上半期には、VPNを狙う攻撃が増加し、多くの侵入が確認された。また、侵入後の攻撃手法として、攻撃者は横展開（ラテラルムーブメント）を行い、Active Directoryやファイルサーバなどの内部システムに侵入する。この過程で、ブルートフォース攻撃や推測されやすいパスワードを利用することもある。

### ランサムウェアの変遷と防御策

初期のランサムウェアは「ばらまき型」であり、不正なWebサイトやフィッシングメールを通じて感染を広げる手法が主流だった。この時代の対策としては、バックアップの定期的な実施、不審なサイトやメールのブロック、エンドポイントでのマルウェアスキャンが効果的とされた。しかし、近年では標的型攻撃が主流となり、攻撃者は特定の企業ネットワークに侵入し、重要なデータを見極めた上で暗号化を行う。

こうした状況の変化に伴い、エンドポイントセキュリティには「予防」と「侵入後対応」の両面が求められるようになった。具体的には、 

- **EPP（Endpoint Protection Platform）** パターンマッチングを使い、マルウェア感染防止や外部からの攻撃通信ブロックなど、サイバー攻撃による侵害を「事前に防ぐ」ことを主目的とする
- **EDR（Endpoint Detection and Response）** を導入し、EPPをすり抜けたランサムウェアの動きを検知し、被害の最小化を図る。EDRは、攻撃者の行動を追跡し、異常なふるまいを検出することで、最終的な被害が発生する前に対応を行う
- **NGAV（Next Generation Anti-VIrus）** AIや機械学習などの技術を活用して、未知の脅威や高度なマルウェアを検知・ブロックする

パターンマッチング、ふるまい検知、機械学習型検索を組み合わせ、いつ自社の身に起こるかわからないインシデントに対して、適切に予測、予防、耐性、および復旧する能力である”サイバーレジリエンス”を高めることが求められます。

### 代表的なランサムウェアとその手口

2024年上半期では、「8Base」「LockBit」「Hunters International」などが特に多くの被害をもたらした。これらのランサムウェアは **RaaS（Ransomware as a Service）** として提供されることが多く、他の攻撃者に対してツールやサービスを提供する仕組みで運営されている。RaaSは、アフィリエイトモデルを採用しており、攻撃者が身代金を獲得した場合、収益の一部が開発者に還元される。このようなサービス化によって、ランサムウェアの攻撃はより組織的かつ効率的に行われるようになっている。

8Baseは特に多くの攻撃に用いられ、LockBitは長期間にわたる活動が特徴である。LockBitは暗号化と情報漏洩の両方を用いる二重脅迫型のランサムウェアで、特に2024年に入ってからも多数の被害を引き起こしている。

### EDRとマイクロセグメンテーション

従来のネットワークセグメンテーションは、サブネットやVLANを使ってネットワークを分割し、特定の通信の許可や拒否を行う。しかし、この方法では攻撃者が一度内部に侵入すると、横方向の攻撃（ラテラルムーブメント）が容易に行われる危険があった。これに対して、マイクロセグメンテーションは、ホストやプロセス単位で通信を制御し、サーバやクライアント間の通信も細かく監視・制御する。これにより、内部ネットワークでの攻撃の拡散を最小限に抑えることができる。

**マイクロセグメンテーションの主な機能**

1. **通信の可視化**:
   マイクロセグメンテーションでは、ネットワーク内のすべての通信を可視化し、どのデバイスがどのような通信を行っているかを把握する

2. **細粒度なアクセス制御**:
   通信の可視化を基に、プロセスやアプリケーションレベルでのアクセス制御が可能になる

3. **動的な防御**:
   マイクロセグメンテーションは、事前に定義されたルールに基づいて通信を制御するだけでなく、脅威情報を活用して動的に防御することが可能である

**マイクロセグメンテーションの課題と導入**

1. **導入の目的の明確化**:
   単に「ネットワーク全体を保護する」だけでは曖昧であるため、たとえば「特定のシステムを重点的に保護する」「RDPやSSHのアクセスを厳密に制限する」といった具体的なゴールを設定することが求められる。

2. **可視化と管理の複雑さ**:
   マイクロセグメンテーションは多くの情報を扱うため、初期導入時には通信の可視化や管理が複雑になる場合がある。そのため、可視化ツールやセキュリティエキスパートの支援を活用し、導入をスムーズに進めることが重要である。

**マイクロセグメンテーションの利点**

- **より細かいセキュリティ制御**:
  従来型のセグメンテーションでは難しかった粒度での通信制御が可能であり、内部ネットワーク全体を包括的に保護できる。

- **攻撃者の動きを限定**:
  たとえ攻撃者が内部に侵入した場合でも、マイクロセグメンテーションによって許可された通信以外は遮断されるため、攻撃の拡散を最小限に抑えることができる。