Coders Conquer Security Infrastructure as Codeシリーズ:セキュリティ設定ミス - 不適切な権限設定

現代のサイバーセキュリティに対する脅威は、いたるところに存在し、絶え間なく続いています。その状況は深刻化しており、プログラムのデプロイ後に脅威に対応し続けることはほぼ不可能です。そのため、賢明な組織はInfrastructure as Code(IaC)の概念を取り入れています。これは、開発者がアプリケーションの作成段階からセキュリティ対策に関与する手法です。本シリーズでは、開発者が組織内で安全なInfrastructure as Codeをデプロイするために必要なステップを理解し、セキュリティ対策を万全に整えることを目的としています。
セキュリティ設定ミス、特に不適切な権限設定は、開発者が新しいユーザーを作成したり、タスクを実行するためのツールとしてアプリケーションに権限を付与したりする際に最も頻繁に発生します。例えば、データベースから情報を収集するためにこれを行う場合があります。しかし、新しいユーザーの権限設定が過剰であったり、タスクに対してデフォルトのまま設定されていたりすると、コードに深刻な脆弱性が生じる可能性があります。
本題に入る前に、今のスキルを試してみませんか?不適切な権限設定による脆弱性を見つけて修正してみてください。
結果はいかがでしたか?さらに詳しく掘り下げていきましょう。
ユーザーやアプリケーションにフル権限を与えたり、新しいユーザーが実行すべきことや制限すべき動作を定義しなかったりすることは、新しいコードを素早く実装する最も簡単な方法です。すべてが順調に進めば、アプリケーションはその権限を使って割り当てられたタスクを完了します。しかし危険なのは、攻撃者がこのプロセスを発見し、そのユーザーを乗っ取ることです。特定のアプリケーションの特定の機能のために作成されたユーザーであっても、乗っ取られれば、攻撃者が他のアプリケーションやデータ、さらにはネットワーク全体を危険にさらす可能性があります。
セキュリティ設定ミスはどのように悪用されるのでしょうか?
その危険性を可視化するために、Dockerクラウド環境で一般的なタスクがどのようにコーディングされるかを見てみましょう。開発者がPrometheus MySQL Exporterサービスを使用してデータベースから情報を収集する場合を想定します。これを実現する最も簡単な方法は、Exporterにデータベースへのアクセス権限を付与することです。そのコードは以下のようになるかもしれません。
FROM mysql:latest
COPY ./scripts/create_users.sh /docker-entrypoint-initdb.d/
USER 999
CREATE USER exporter@% IDENTIFIED BY $EXPORTER_PASSWORD;
GRANT ALL ON *.* TO exporter@%;
½ GRANT SELECT ON performance_schema.* TO exporter@%;
これなら確かにExporterはタスクを完了できます。しかし、権限が適切に定義されていないため、実際には何でもできてしまう状態です。もちろん、Exporter自体がプログラムされた動作以外を行うことはありません。しかし、攻撃者がExporterサービスを乗っ取ったらどうなるでしょうか?フル権限が与えられているため、攻撃者はSQLサービスに対してあらゆる種類の不正な操作を実行できてしまいます。
不適切な権限設定の解消とセキュリティ強化
ここでもInfrastructure as Codeの概念が重要になります。アプリケーションの作成段階からセキュリティをコードに組み込んでおけば、サイバーセキュリティの観点からネットワークの基盤は常に強固なものとなります。
先ほどのDockerの例で、開発者がPrometheus MySQL Exporterにデータベースのクエリを許可したい場合、実行すべきタスクを定義することで、より安全に実現できます。良い例を以下に示します。
FROM mysql:latest
COPY ./scripts/create_users.sh /docker-entrypoint-initdb.d/
USER 999
CREATE USER exporter@% IDENTIFIED BY $EXPORTER_PASSWORD;
GRANT PROCESS, REPLICATION CLIENT ON *.* TO exporter@%;
GRANT SELECT ON performance_schema.* TO exporter@%;
この場合、Prometheus MySQL Exporterサービス用に設定されたMySQLユーザーは、MySQLサービスに対して制限された権限しか持ちません。具体的には、PROCESS権限とREPLICATION CLIENT権限のみが許可されています。これにより、悪意のあるユーザーが乗っ取られたPrometheus MySQL Exporterサービスを悪用することを防げます。
コードレベルで権限を制限することで、ユーザーやアプリケーションが必要最小限の権限のみを持つように保証できます。これはネットワークの保護とInfrastructure as Codeの概念を実践する上で非常に有効です。
この脆弱性に関する詳細や、組織や顧客を他のセキュリティ上の欠陥から守る方法については、Secure Code Warriorのブログページをご覧ください。また、Secure Code Warriorトレーニングプラットフォームのショーケースを試して、サイバーセキュリティスキルを常に最新の状態に保つことも可能です。
AI主導の開発をリリース前にガバナンスする
AIを活用したリスク測定、コミット時のセキュアコーディングポリシーの強制、そしてSDLC全体を通じたセキュアなデリバリーの加速を実現します。
他のブログ記事を見る
セキュアコーディング、AIガバナンス、ソフトウェアリスク管理に関する専門的なコンテンツをご覧ください。
%252520%252520(3).avif)
Supercharged Security Awareness: How Tournaments are Inspiring Developers at Erste Group
Lorem ipsum dolor sit amet, consectetur adipiscing elit. Suspendisse varius enim in eros elementum tristique. Duis cursus, mi quis viverra ornare, eros dolor interdum nulla, ut commodo diam libero vitae erat. Aenean faucibus nibh et justo cursus id rutrum lorem imperdiet. Nunc ut sem vitae risus tristique posuere.

Security as culture: How Blue Prism cultivates world-class secure developers
Learn how Blue Prism, the global leader in intelligent automation for the enterprise, used Secure Code Warrior's agile learning platform to create a security-first culture with their developers, achieve their business goals, and ship secure code at speed
AIを活用した開発をリリース前にセキュアに
開発者のリスクを可視化し、ポリシーを適用することで、ソフトウェア開発ライフサイクル全体における脆弱性を未然に防ぎます。



.avif)