2016年4月6日水曜日

Adobe AIR で作った Android アプリの OpenSSL 脆弱性アラート解決法

先日 Google Play から 「Google Play warning: You are using a vulnerable version of OpenSSL」 ってメールが来て、デベロッパーコンソールへ見に行ったら「セキュリティ アラート アプリで使用中の OpenSSL のバージョンにセキュリティの脆弱性があります。」的なアラートが出ていてオイオイどないしたらえーねん状態だったのですが、解決できたのでメモります。

まず対象のアプリは Adobe AIR for Android で作ったものだったので、そのあたりでググったら、どうやら Adobe AIR SDK を 最新(この時は AIR21.0 以上)にアップすれば解決するってことらしいので、以下 Animate CC にそいつをぶっこむ手順です。

1.最新の Adobe AIR SDK をダウンロードする

↓から入手する。
Download Adobe AIR SDK

2.解凍した Adobe AIR SDK の内容一式をどっかにコピーする

Animate CC のメニュー「ヘルプ(H)」に「Adobe AIR SDK を管理(R)」ってのがあって、AIR20.0 が入ってる場所が確認できたので、そのとなりに AIR21.0 ってフォルダ作ってコピーしました。
具体的には
C:\Program Files\Adobe\Adobe Animate CC 2015\AIR21.0\
です。え?Mac?知るかっ!

3.コピーした SDK を選択できるようにする

Animate CC のメニュー「ヘルプ(H)」に「Adobe AIR SDK を管理(R)」を選択すると出てくるウィンドウで、さっきのフォルダを追加する。

4.ターゲットでコピーした SDK のバージョンを選択してパブリッシュ!

これで無事 OpenSSL 1.0.2f になりました!ヽ(=´▽`=)ノ
放置されてる ANEs に原因があったら終わるので、SDK の問題でほんと良かったと思いました。ε-(´∀`*)

おまけ

Google 先生のヘルプ「How to address OpenSSL vulnerabilities in your apps」では、「$ unzip -p YourApp.apk | strings | grep “OpenSSL”」ってやれば調べられるよイエイ!とか書いてありますがオイオイこちとら安定の Windows なんですけど!ってことで、私は以下のようにしてアプリ内で使われている OpenSSL のバージョンを調べました。

まず対象の apk ファイルを解凍します。
そのままだと解凍できないなら拡張子を .zip にしちゃってください。
んでコマンド プロンプト立ち上げて解凍したフォルダまで移動する。(dir とか cd コマンドだ!)
一番簡単なのは「cd[半角スペース]」って入力した後、コマンド プロンプトウィンドウに解凍したフォルダをドロップしちゃう方法です。
それで「cd C:\なんたらかんたら」と勝手に記述されるはずなので enter キーをッターーンて押せば移動できます。

そしたら「findstr」コマンドでファイル内検索します。
具体的には「findstr /s /m “OpenSSL” *.*」としました。
オプションの意味とかこのコマンドの使い方を知りたい時は「findstr /?」で、ッターーンだ!
UTF-8 には対応してないらしいけど、まぁ英字だしヒットはします。

今回の場合は「\lib\armeabi-v7a\libCore.so」がヒットしました。
それをエディターで開いて「OpenSSL」って検索したらたくさんヒットして、そのなかに「OpenSSL 1.0.0」とか書かれていたりしたので、こいつが悪いんだと思います。
上記の SDK アップ後はこれが「OpenSSL 1.0.2f」になりました。

これでめでたしめでたしです。