okhsaとklowとklown

これらの名前は何の名前でしょうか。
2021年10月15日に発見されてすぐに削除された、npmパッケージの名称です。

npmはNode.jsのためのパッケージ管理システムです。
Node.jsはサーバで利用できるJavaScript実行環境です。
Node.jsには非常に多くの公開されたパッケージ資産がありますので、それらを使うことで少しのコーディングを行うだけで簡単に期待する機能を実現できます。
従来のプログラミング言語では機能の実現に際してはそのほとんどを自身でコーディングする必要がありましたが、これらの現代的なプログラミング言語では多くの公開されたライブラリとして利用できるコードが多くあるため、自身でコーディングする量を抑えて開発することができます。
通常はこれが大きなメリットになります。
ですが、それが厳しいことにつながっている場合があります。

okhsaパッケージは、Windowsマシンのプレインストールされている電卓アプリを起動するスケルトンコードが含まれています。
スケルトンコードは、プログラムを書くときに使える雛形です。
利用者はこれを入手し、電卓アプリの部分を希望するものに書き換えることで期待する動きを実現することができます。
こういったものは普通便利です。
しかし、このokhsaパッケージは、その期待される機能の実現には関係のない別のパッケージを依存関係に含めていました。
それがklowやklownです。

klownはその公開情報としてはブラウザのUserAgent情報を処理できるライブラリであると説明されています。
しかし、実際の内容は、暗号資産マイナーです。
このklownは、その動作環境がWindowsなのかLinuxなのかを判定し、その環境に適したマイニングツールをダウンロードして実行します。
もってくるマイニングツールは、既知のもので、jsextensionというものです。

自分でプログラムを作成するとき、そのコードが脆弱性を持った状態とならないように注意して実装します。
セキュアコーディングです。
しかし、いったいどのくらいの人が、自分が取り込むライブラリそのものが安全なものなのかを確認しているでしょうか。

しかも、このライブラリも、最初から問題がある状態とは限らないのです。
開発中に利用していた段階では問題ない状態だったものが、ライブラリのバージョン更新によって問題のある状態に変化したりするのです。
開発の段階で注意することすら簡単ではないわけですが、開発後の利用段階まで気を配ることは果たして可能なのでしょうか。
これはいわゆるソフトウェアサプライチェーン問題です。

ソフトウェアサプライチェーン問題、さて、どのように対応していくことが良いのでしょうか。

参考記事(外部リンク):Newly Found npm Malware Mines Cryptocurrency on Windows,
Linux, macOS Devices

blog.sonatype.com/newly-found-npm-malware-mines-cryptocurrency-on-windows-linux-macos-devices