[初学者向け]Scalaは2.11.12以降か2.12.4以降を使おう[脆弱性対策]

全く異なる言語を触る場合、脆弱性等の問題も事前に調べることはマストなのかなと感じました。
2020.06.08

この記事は公開されてから1年以上経過しています。情報が古い可能性がありますので、ご注意ください。

はじめに

Scalaを使ったサンプルを試したり、及び関連ライブラリを入れていくと、特定以降のバージョンが頻繁に使われていることに気がつくかもしれません。主に2.11.12以降です。特定バージョン以降で何かあったのか気になり調べてみました。

Scala における認可・権限・アクセス制御に関する脆弱性

JVNDB-2017-010279 Scala における認可・権限・アクセス制御に関する脆弱性

影響を受けるバージョンは以下の通り。

  • Scala 2.10.7 未満
  • Scala 2.11.12 未満の 2.11.x
  • Scala 2.12.4 未満の 2.12.x

公表日が2017年11月13日で、最終更新日が2017年12月11日です。長く使っている人には対策済みで特に何の問題もないでしょう。問題はこの辺りについて認識がないケースです。

AWSのサンプルコードに潜伏するバージョン

AWS Glue ETL ライブラリを使用した ETL スクリプトのローカルでの開発とテスト

上記の脆弱性記事を見た後に、以下のサンプルコードを見ると潜む問題に気がつくと思います。Glueで初めてScalaを使う場合にはおそらく全く気が付かないでしょう。(私がそうでした)

  <project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">
    <modelVersion>4.0.0</modelVersion>
    <groupId>com.amazonaws</groupId>
    <artifactId>AWSGlueApp</artifactId>
    <version>1.0-SNAPSHOT</version>
    <name>${project.artifactId}</name>
    <description>AWS Glue ETL application</description>

        <properties>
        <scala.version>2.11.1</scala.version>
        </properties>

なお、バージョンを上げるようにフィードバック済みです。

あとがき

更新の活発なmetalsvim等のライブラリであれば、動作対象が2.11.12以降の対処済みバージョンに限定されているものが多く、基本は問題ありません。

できるだけ枯れたバージョンを使いたいものですが、最低でも問題のないバージョンを選びましょう。