Slide 1

Slide 1 text

Amazon Q Detector Library から学ぶセキュアコーディング クラメソさっぽろIT勉強会 (仮) #10: セキュリティ 2025/06/13 © Classmethod, Inc.

Slide 2

Slide 2 text

目次 1. 自己紹介 2. セキュアコーディングとは 3. IPAによる実装原則 4. Amazon Q Developer と Detector Library の概要 5. サポートされる言語とセキュリティ検出項目 6. 私の経験と C# における一般的な脆弱性と対策 7. 活用方法とメリット © Classmethod, Inc. 2

Slide 3

Slide 3 text

岩浅 貴大(いわさ たかひと) 所属: クラスメソッド株式会社 職種: ソリューションアーキテクト 経歴: 以前は C# / VB.NET 開発者として従事 現在は AWS アーキテクトを担当 最近よく使っている AWS サービス: Amazon Q Developer 自己紹介 © Classmethod, Inc. 3

Slide 4

Slide 4 text

セキュアコーディングの定義 セキュリティ脆弱性を作り込まないコーディング手法 攻撃者に悪用される可能性のあるコードを排除する取り組み 設計段階からセキュリティを考慮したアプローチ 出典: IPA「安全なウェブサイトの作り方」 OWASP「セキュアコーディングプラクティス」 セキュアコーディングとは © Classmethod, Inc. 4

Slide 5

Slide 5 text

セキュアコーディング標準を採用する 多くのセキュリティ対策は複数の箇所で同様の対策実施を行うことになる。標準を採用 して共通的に対応することで効率的に対応することができる。 もしも採用した標準で対策が不十分な部分が見つかったとしても、同様に対応できるの で比較的簡単に修正することができる。 出典: IPA「セキュアプログラミング講座」 IPAによる実装原則 © Classmethod, Inc. 5

Slide 6

Slide 6 text

Amazon Q Developer AWS が提供する開発者向けの AI アシスタント コードの品質向上とセキュリティ問題の検出が可能 Amazon Q Detector Library Amazon Q Developer が使用する検出ルールのリファレンス セキュリティ、品質、パフォーマンスの問題を検出 事前に学習することで問題を未然に防止できる Amazon Q Developer と Detector Library © Classmethod, Inc. 6

Slide 7

Slide 7 text

セキュアコーディングのポイントを事前に学んでおく © Classmethod, Inc. 7

Slide 8

Slide 8 text

Amazon Q Detector Library は多様なプログラミング言語をサポートしています: Java Python JavaScript/TypeScript C#/.NET Go Ruby PHP Kotlin 各言語に最適化されたセキュリティルールとベストプラクティスを提供 Amazon Q Detector Library のサポート言語 © Classmethod, Inc. 8

Slide 9

Slide 9 text

カテゴリ 検出項目例 認証・認可 弱いパスワードポリシー、不適切な権限設定 データ保護 機密情報の漏洩、安全でないデータ保存 コード注入 SQL インジェクション、XSS 脆弱性 暗号化 弱い暗号アルゴリズム、安全でない乱数生成 言語固有のセキュリティ検出 各言語の特性に合わせた検出ルールが用意されています 主要なセキュリティ検出項目 © Classmethod, Inc. 9

Slide 10

Slide 10 text

開発現場での実情 以前は C# / VB.NET 開発者として従事 多くの現場では機能開発に重点が置かれ、非機能要件はオマケくらいな感じだった XSSやSQLインジェクションなどの基本的な脆弱性対策は実施 言語固有の高度な脆弱性対策手法については知識不足だった → というわけで私の経験のある C# を使って解説します!! 私の経験:ソフトウェアエンジニアの視点から © Classmethod, Inc. 10

Slide 11

Slide 11 text

1. SQL インジェクション 安全でないコード: // Noncompliant: Detected a formatted string in a SQL statement. SqlCommand command = new SqlCommand(sql); 安全なコード: // Compliant: Use parameterized query string sql = "SELECT * FROM Customers WHERE EmployeeId = @EmployeeId"; SqlCommand command = new SqlCommand(sql); command.Parameters.Add(new SqlParameter("@EmployeeId", employeeId)); C# における一般的な脆弱性と対策 © Classmethod, Inc. 11

Slide 12

Slide 12 text

2. 安全でないデシリアライゼーション 安全でないコード: // Noncompliant: `TypeNameHandling.All` is not safe. JsonConvert.DeserializeObject( jsonpath, new JsonSerializerSettings { TypeNameHandling = TypeNameHandling.All } ); 安全なコード: // Compliant: `TypeNameHandling.None` is safe. JsonConvert.DeserializeObject( jsonpath, new JsonSerializerSettings { TypeNameHandling = TypeNameHandling.None } ); C# における一般的な脆弱性と対策 © Classmethod, Inc. 12

Slide 13

Slide 13 text

3. クロスサイトリクエストフォージェリ (CSRF) 安全でないコード: [HttpPost] // Noncompliant: No anti-forgery token validation. public ActionResult UpdateProfile(User user) { ... } 安全なコード: [HttpPost] [ValidateAntiForgeryToken] // Compliant: Enforces validation public IActionResult UpdateProfile(User user) { ... } C# における一般的な脆弱性と対策 © Classmethod, Inc. 13

Slide 14

Slide 14 text

4. クロスサイトスクリプティング (XSS) 安全でないコード: // Noncompliant: Directly use untrusted data return "value " + untrusted; 安全なコード: // Compliant: Encode untrusted data before use return "value " + HttpUtility.HtmlEncode(untrusted); C# における一般的な脆弱性と対策 © Classmethod, Inc. 14

Slide 15

Slide 15 text

5. HTTP Strict Transport Security (HSTS) ヘッダーの欠落 安全でないコード: // Noncompliant: HSTS HTTP header is missing. public void ConfigureNoncompliant(IServiceCollection service) { service.AddControllers(); } 安全なコード: // Compliant: `AddHsts` header is used. public void ConfigureCompliant(IServiceCollection service) { service.AddControllers(); service.AddHsts(options => { options.Preload = true; options.IncludeSubDomains = true; options.MaxAge = TimeSpan.FromDays(365); }); } C# における一般的な脆弱性と対策 © Classmethod, Inc. 15

Slide 16

Slide 16 text

1. 公式ドキュメントの参照 https://docs.aws.amazon.com/amazonq/detector-library/ 2. 言語別のルールセットの確認 自分のプロジェクトで使用している言語に関連するルールを優先的に学習 C# 開発者は .NET フレームワーク固有の脆弱性に注目 3. コードレビュー時のチェックリストとして活用 レビュー効率の向上と見落としの防止 Amazon Q Detector Library の活用方法 © Classmethod, Inc. 16

Slide 17

Slide 17 text

1. Amazon Q Detector Library はセキュアコーディングを学ぶ貴重なリソース 2. 多様な言語をサポートし、言語固有のセキュリティルールを提供 3. 私の経験から C# の例を紹介したが、各言語に応用可能な概念 まとめ © Classmethod, Inc. 17

Slide 18

Slide 18 text

© Classmethod, Inc.