セキュリティアラートだかと向き合うべく久方ぶりに触るgithub、なにもわからない
githubからアラート来てたのを恐る恐る触ります
こちらで作成したサイト。
もうサーバーも潰してしまったのでいまはアクセスもできませんが。
っていうか6年前ですか。やば。
というのはさておき、ちょいちょいgithubさんからセキュリティやばいよ!みたいなメールが届いてたんですよね。
ガン無視してましたが。
利用してるサイトそのものが存在しないですからね。
気が向いたので触ります。
とはいえ頭の片隅には残っており、技術系のエントリじみたものやらqiitaの更新も長らくサボっていることへの罪悪感みたいなものがあり。
GWを迎えて、外出する体力もないけど時間は割とあるけどスマホとにらめっこしてソシャゲをするにも眼精疲労が辛い。
ないないづくしの独身異常男性の現実逃避先としてやり玉に挙がったので対応してみます。
たすけてGPTえもーん!
とはいってもやることは簡単。
表示される英文をGPTに入れてエンター。
それだけです。
とりあえずgithubとにらめっこしてみる
Securityタブで個別のアラートを開いてみました。
一番古いやつを選んだところ2年以上前みたいな表示。
「Create Dependabot security update」という緑のボタンが表示されています。
たぶんこれで勝手にプルリクが作られるのかな?
というのがなんとなく察せられる色をしてます。
というわけで早速押してみたのですがエラーが出ました。
Dependabot cannot update node-forge to a non-vulnerable version
The latest possible version that can be installed is 0.7.5 because of the following conflicting dependency:
laravel-mix@2.1.11 requires node-forge@0.7.5 via a transitive dependency on selfsigned@1.10.3
The earliest fixed version is 1.3.0.
内容はよくわかりませんが、まあ環境が古いとかなんだろうなあ。。。
と思いながらGPTに食わせてみたところ、package.json内のlaravel-mixとやらのバージョンを上げろと言われました。
確かにメッセージにもlaravel-mixという文字が出てきてますね。
laravel-mixを書き換えてみる
そもそもなんなんだこいつ、という状況だったのでついでに聞いてみたところ、laravelのビルドツールみたいなやつらしいです。
GPTの例だと6.0が安定版として記載されてました。
現在は2.1.11でした。古すぎんか?
現在の最新版はキミ自身の目で確かみてくれ!とも書いてたんですが 調べようとしたら8がどうこうとか書いてある気がしたけど8だとエラーだったので そのまま6.0で行きます。
package.jsonを更新してnpm update
したところでpushしてみます。
最初152とかだったのでだいぶ減りました。
だいたいそんな感じ
というわけで、アラートを解決できるバージョンに環境を整えてPRを作成する、という感じで進められるようです。
あるいは環境を整えると勝手に脆弱性のあるバージョンが消え去るのでアラートがout of dateになる、みたいなこともあるっぽいですね。
というわけで、残りはプロジェクトごとの個別の環境の話になると思うので、大まかにこの記事の目的は達成できたかなという気になっておきます。
補足
最後にめちゃくちゃ手間取った部分をメモがてらに書き残しておきます。
flysystem1.1.4
もはやアラートの内容を確認すらしていないし、このflysystemというのが何のために存在しているのかもわからないです。
が、ここで詰まりかけました。
flysystemが1.0.8だとダメなので1.1.4に更新しろと言われます。
composer require league/flysystem:^1.1.4
zsh: command not found: composer
インストールされてませんでした。
composerのインストール
phpを利用してインストールするようでした。
早速叩いたところ、今度はphpが存在しないとのメッセージが。
phpのインストール
こちらはbrewで実現できるようです。 適当に調べると出てくるコマンドを叩きます。
次いでcomposerもインストールできたので、さらにflysystemの更新。
……をしようとしたところで、ごちゃごちゃとエラーが発生してしまいました。
composer require league/flysystem:^1.1.4
./composer.json has been updated
Running composer update league/flysystem
Loading composer repositories with package information
Updating dependencies
Your requirements could not be resolved to an installable set of packages.
Problem 1
- Root composer.json requires php ^7.1.3 but your php version (8.3.6) does not satisfy that requirement.
Problem 2
- fzaninotto/faker is locked to version v1.7.1 and an update of this package was not requested.
- fzaninotto/faker v1.7.1 requires php ^5.3.3 || ^7.0 -> your php version (8.3.6) does not satisfy that requirement.
Problem 3
- laravel/framework is locked to version v5.6.21 and an update of this package was not requested.
- laravel/framework v5.6.21 requires php ^7.1.3 -> your php version (8.3.6) does not satisfy that requirement.
Problem 4
- filp/whoops is locked to version 2.1.14 and an update of this package was not requested.
- filp/whoops 2.1.14 requires php ^5.5.9 || ^7.0 -> your php version (8.3.6) does not satisfy that requirement.
Problem 5
- nunomaduro/collision is locked to version v2.0.2 and an update of this package was not requested.
- nunomaduro/collision v2.0.2 requires php ^7.1 -> your php version (8.3.6) does not satisfy that requirement.
Problem 6
- phpunit/phpunit is locked to version 7.1.5 and an update of this package was not requested.
- phpunit/phpunit 7.1.5 requires php ^7.1 -> your php version (8.3.6) does not satisfy that requirement.
Problem 7
- laravel/framework v5.6.21 requires php ^7.1.3 -> your php version (8.3.6) does not satisfy that requirement.
- laravel/tinker v1.0.6 requires illuminate/console ~5.1 -> satisfiable by laravel/framework[v5.6.21].
- laravel/tinker is locked to version v1.0.6 and an update of this package was not requested.
どうやらプロジェクトで利用している技術が古いためインストールされたphp8.3.6だと対応してないようです。
エラーメッセージをよく見ると「php7.1.3以上にしか対応していませんがあなたのphpは8.3.6であり非対応です」とか書いてあります。
若干妙な気分になりますが、最新版が旧版に対応していないのはよくあることなので気にしてもしかたないですね。
バージョンとの格闘
というわけでphp7.1.3をインストールしようとしてみました。
ありがたい何らかの何らかが存在しているようです。
7.1.33がインストールされました。これは7.1.3以上の扱いになるのでしょう。たぶん。
これでphpを更新できたのですが、今度はcomposerが動かなくなりました。
composer install
Composer 2.3.0 dropped support for PHP <7.2.5 and you are running 7.1.33, please upgrade PHP or use Composer 2.2 LTS via "composer self-update --2.2". Aborting.
composerのバージョンを変える
メッセージに書いてあるとおり、composer self-update --2.2
というのでバージョンを変えられるらしい……のですが、
composer self-update --2.2
Composer 2.3.0 dropped support for PHP <7.2.5 and you are running 7.1.33, please upgrade PHP or use Composer 2.2 LTS via "composer self-update --2.2". Aborting.
当然ながらphpが7.1のままだとcomposerが動かないので、phpを一時的に戻してから……と思ったけどなんか8系に戻せなくなっててやばわよ。
仕方ないのでさっきのを利用してphp7.2をインストールして、composerを2.2に戻してからphp7.1に戻すという遠回りをしました。
php8系に戻せなくなってるのは正直草なのですが、phpをほかで利用することもいまのところはないのでヨシとしておきます。
あらためてインストール
というわけで、ここまでやってようやくflysystemが更新できるようになりました。
ちなみに、もともとのアラートはここまでの対応でなんかいい感じに解決してたらしく、気付いたら完了みたいなステータスになってました。