アプリのセキュアなコーディング方法とは?


セキュリティインシデントの発生率が最も多いのがアプリケーション層ですが、その多くがコーディング段階の脆弱性が問題となっています。
脆弱性の診断のセキュリティサービスは多く存在し、模擬的な攻撃などの動的な解析によりセキュリティ脆弱性を検出することが可能ですが、セキュリティインシデントを未然に防ぐためには、アプリケーション作成時にソースコードレベルで、セキュアなプログラミングを心がけるべきです。しかしながら、どのような点を気を付けてコーディングしたらよいかがわからないと、安全なアプリケーションを作成することができません。

OWASP(Open Web Application Security Project)という、ソフトウェアのセキュリティ向上を目指す非営利団体のオープンソース・ソフトウェアコミュニティがあります。こちらのWebシステム/Webアプリケーションセキュリティ要件書なども、アプリケーション作成にはとても役立ちますが、特にOWASP Top Tenは、Webアプリケーションのセキュリティリスクの年間トップ10が掲載されており、それぞれどのように防ぐべきかの手法の解説まであります。たとえば、2021年ではBroken Access Controlに、34のCWE(Common Weakness Enumerations)がマップされ最も多く発生しました。これは、2017年では5位だったので、近年増えていることがわかります。

IPA セキュア・プログラミング講座も、とても参考になります。セキュア・プログラミング講座の資料をはじめ、各種のセミナー資料や、解説のWebページなどで、どのようにセキュアなアプリを作成していくべきかがとても分かり易いです。

そして、具体的にどのようなゴーディングをしたらよいのかは、JPCERT/CCの、セキュアコーディングが、とても参考になります。CERT C コーディングスタンダードでは、C言語でのプログラミング、 Java コーディングスタンダード CERT/Oracle 版では、Javaをどのように記述すればよいのかがWebページ上で解説されているので、オンラインマニュアルのように活用できます。他にも膨大な資料と情報が掲載されており、アプリケーション作成に携わる方は必見のWebサイトです。

一般的な脆弱性診断は、完成されたWebアプリ等を対象にして行いますが、ソースコードをインプットにしてソース脆弱性を検出するツールも存在します。こちらであれば、アプリケーション開発の初期段階から、脆弱性を排除するコーディングに活用できますので、こうしたツールを使用することもケースによっては大変有効です。


開発時にソースの脆弱性を排除することが重要


脆弱性, Webアプリ