はじめに
おはようございます、会えない時のために、こんにちは。こんばんは。おやすみ。どうもSky・Secureのキティちゃんです。最近トゥルーマンショーという映画をU-NEXTで観たので、劇中での主人公のセリフを真似てみました。分かりますかね。それはさて置き、今回は「OpenJDKを選定するにあたっての話」を書きたいと思います。
きっかけ
そもそも、なぜこの内容を書こうかと思ったかというと、仕事でOpenJDKを利用しているのですが、「そういえば、結構古いバージョンを利用していないか?脆弱性とか大丈夫?」という話が持ち上がったのがきっかけです。
OpenJDKって?
プログラミング言語Javaのプログラムを作るときに必要なもの(JDK)であり、JDKのオープンソース(ソースが手に入り、独自に修正等しても良いもの)版となります。一時期、Oracle社がJDKを有償化したことにより、OpenJDKを利用しようとする流れがあったのですが懐かしいですね(遠い目)。
脆弱性って?
脆弱性とは何か?簡単に言えば、セキュリティ上の欠陥のことを言います。
例えばですが、AmazonのようなショッピングサイトにはIDやパスワードを入力するようなログイン画面がありますよね。もし、ログイン機能をプログラミング言語で開発した際に、セキュリティ対策に不備があったとしましょう。すると、攻撃者たちは、SQLインジェクションといった攻撃を仕掛け、ユーザの個人情報を盗もうとしたりします。これが、セキュリティの脆弱性となりえます。
上記を踏まえた上で、OpenJDKに脆弱性はあるのかといいますと、結論としてはあります。OpenJDKもプログラミング言語にて開発されているため、脆弱性は存在します。
OpenJDKもただ選べばいいわけではない?
「脆弱性って?」でも書いたように、OpenJDKにも脆弱性は存在するため、闇雲に選べば良いわけではありません。かと言って、最新バージョンを利用すればいいかというとそういうわけにもいきません。現存のソースが古いバージョンのOpenJDKをもとに書かれている場合、新しいバージョンのOpenJDKを利用しようとするとプログラムが想定通りの動作をしない場合があります。これは、元々利用していたメソッドの変更や削除等がされているためです。そのため、プログラムの改修が必要となります。また、前提としてセキュリティの脆弱性がないかというのも重要です。
そもそも脆弱性のないものなんてあるのか?
正直ないと思います。脆弱性というのはいつ新しいものが発見されてもおかしくはありません。常に鼬ごっこのようなものなのです。そのため、どこかで妥協する必要もでてきます。よって、OpenJDKを選定をする場合は、バージョンを上げることを検討しつつ、現時点で危険度が高めの脆弱性が検出されていないか、現存のプログラムが稼働できるバージョンであるかを考慮する必要があるのではないかと考えます。
脆弱性を確認するサイト(参考程度に)
下記URLの他に脆弱性についてまとめてくれているサイト等もありますので、「OpenJDK 脆弱性」などで検索してみると良いです。
・https://openjdk.org/groups/vulnerability/advisories/
・https://www.oracle.com/security-alerts/
・https://nvd.nist.gov/vuln#
最後に
今回は、『OpenJDKを選定にするにあたっての話』という題で脆弱性についても触れながら書いてみましたが、改めてソフトウェアというのは慎重に扱わないといけないなと思いました。決して濃い内容ではありませんが、少しでも誰かにお役に立てればと存じます。
参考文献
『JDK、Oracle JDK、OpenJDK、Java SEってなに?』@nowokay様
https://qiita.com/nowokay/items/c1de127354cd1b0ddc5e
『OpenJDK』Wikipedia
https://ja.wikipedia.org/wiki/OpenJDK
『OpenJDK Vulnerability Advisories』Oracle社OpenJDK公式サイト
https://openjdk.org/groups/vulnerability/advisories/
『NATIONAL VULNERABILITY DATABASE』NIST NVD
https://nvd.nist.gov/vuln#