#420 【警告】npmのサプライチェーン攻撃をキャッチアップして、安全にアプリ開発しようぜ
2025/12/28 ·
-
この番組はエンジニアの成長は楽しい学びからをもっとに日々学んだことをアウトプットしていくラジオでございます我々がはい我々が楽しくワイワイお届けする番組となっておりますはいよろしくお願いいたしますよろしくお願いしますどんな話をするんですか今日はですねニュースのお時間ですお何ニュースですか今日はですねエンジニアセキュリティやばいよねニュースですえへへへ
-
まあセキュリティニュースはよくありますけどその中でもなんかねやっぱ感情が来てますねやばいよねってやばいよねっていうやつを取り上げて解説するコーナーですねまああの我々日々エンジニアリングをやってるとなんか世の中で騒がれてるけどあんまり詳細知らないなぁみたいなことっていっぱいあると思うんですよまあそれはもうそれは別にあの日々のニュースもそうですしエンジニア界隈のこともそうですし
-
日々の日々のニュースとか結構くだらないこと多いですよ例えば?例えば?とかYouTuberの誰々が結婚したとかそういうレベルではなくそういうレベルじゃないですいいですねそういうレベルじゃないです大事なやつですねちゃんと大事なやつ今回はですね今世の中を
-
今年世の中を騒がせたNPMの騒ぎについて解説していこうかなと思ってますなるほど聞いたは聞いたんですがあんまり僕はあんまりちょっとあれですねちょっとウォーミングアップがあったらNPMは何の略でしょうクイズまあでもこれはいけるなノードパッケージマネージャーちょっと待ってください不安になってきた待つよファイナルアンサーで正解ですおー
-
ちゃんとドキドキしたこの空白カットしよう一瞬で言おうJavaScriptのパッケージマネージャーですねNPM今年今回この人たち大騒ぎしてましたチラッとは見たんですけどねあなたんだろうなってちょっとなっちゃいました僕ちょっとまず何が起きてたのかっていうところからなんですけどざっくり言うとですねサプライチェーン攻撃というのを食らってましたねサプライチェーンサプライチェーンサプライチェーン
-
これは供給の鎖ことサプライチェーンさんなんですけどなかなかしない直訳ですねおにぎりでちょっと例えてみましょうか何を?例えばおにぎり我々コンビニでおにぎり買いますよねはい乗りうまいやつねこれのサプライチェーン見てみましょうまず一番遡ってみよう
-
米農家いやもう海ですね海地球のなんか仕組みみたいな話海で海藻が育ちます海藻が育ちますまさかの海苔だったそしてさらに塩もそこにね生成されています確かにねおにぎりだと具はちょっと梅でいきましょうか
-
それは鮭とかじゃないんですね梅でいきましょう鮭にしてはもう海すぎてやばいから確かに梅にしましょうはい梅でねでおにぎりってシンプルじゃないですかパーツが梅あって米あって海苔あって塩で味付けされてて塩があってねはいってことでこいつらを分解していくとまず海から海苔と塩が発生しますと
-
人々がそれをかき集めて食べれる海苔と食べれる塩を生成しますとさらにそれを裏側ではお米農家さんが米の種をまいて収穫して米を作ってるわけですねそうですねさらにその背後に梅農家さんが同じことをしてるとそれぞれ生成されたパーツは
-
一旦どこ行くんだろうな農協とかに行くんだろうけどJAですね多分ねJA行って卸行ってスーパーに行くかもしくは工場直で行くんでしょうね工場に行って工場でおにぎりが組み立てられてでそのトラックで配送されてコンビニに並ぶわけですとこの供給のチェーンをサプライチェーンと言いますとはいはいはいなんか社会の勉強ですね社会の勉強これはNPMノード間違えたJavaScriptのパッケージも同じで
-
例えば我々このNPMを使っていろんなライブラリー使えますよねとなるほど根源が海にあるんですねそうじゃあ例えばアキシオスアキシオスありますとHTTPリクエストを送るライブラリーですよとこれまず遡ると海に行きますとまさかそんな馬鹿なで海でいろんな鉱物が生成されてそれがこう巡り巡ってCPUのパーツになり
-
さらにそのCPUを活用したプログラマーという海から来た人間たちがそうですねアキシオスというものを作ってHTTPリクエストを送れるようにしてるわけじゃないですか生命の進化までサプライチェーンに入ってるんですねちょっと待ってこれは絶対例えない方が良かったなそうですね絶対例えない方が良かったまあでもいきましょうアキシオスも単体で動いてるわけじゃないんですよいろんなパーツ組み合わせた結果HTTPリクエストを送れてると
-
本当に1から10まで手で作ってるわけじゃないってことですよね既存のライブラリを使って実装しているとなんだっけNPMでインストールするとパッケージ.ロックみたいなパッケージ.ロック.JSONみたいなJSON出てくると思うんですけどあそことか見ると実は依存関係がめっちゃ書かれてて本当に人間の仕事じゃない量が書かれてますよねそうそうそうそうしかもノードモジュールスにも死ぬほどいろんなパッケージ入ってますよねとで
-
こういう依存関係あるよっていうところをサプライチェーンと例えてるわけなんですけどここに攻撃を仕掛けるという悪辣極まりない事件が今年起きましたサプライチェーンに攻撃をするって言うと悪いこといろいろできそうですけどねどんな悪いことがあったんでしょうまずそれで言うとねまず起きた事件2個ざっくり言うとあるんですけど1個は有名パッケージの一斉乗っ取り事件
-
有名パッケージの一世のっとりパッケージの中でもすごい基礎のよく使われるパッケージがあってそいつらがですね攻撃されましたフィッシング攻撃で何かを釣られたと管理者がそのパッケージも管理者いるわけじゃないですかそのパッケージ管理者に対してフィッシング攻撃を仕掛けアカウントを奪うという
-
アカウント奪っちゃえば中に罠を仕掛けれるとそんなOSSのコントリビューターでも引っかかるんだ何したんだよそういうもんすよセキュリティはフィッシングなんてよくあるのはメールとかですけどね本当に狙われたんだろうね狙ってるでしょうねそれこそうちの大学のうちの大学って言ったら僕の10年以上前ですけど我々の大学の情報研の教授とかも
-
僕の同期でリクルーターやってる人がいて教授にメール送ったら会社のメールでよくわからないところに送れないフリーなところに送れないらしくて個人でGメール作って送ったらフィッシングの疑いがあるので対応しませんって言われてブチギレてたんですよ僕の同期が
-
同期っていうかサークルの同期のやつがそのぐらいやっぱ名のある人ってめちゃくちゃ警戒してるんですよねフィッシングってよくあるみたいなのでへーっていうフィッシング小話多分こういうパッケージ管理者も気をつけてると思うんだけど最近僕セキュリティ関係のポッドキャストも聞いてるんですけどそういうセキュリティのプロでも疲れてるときはまるらしいですいやーねそうだよねそう
-
というのでパッケージ自体が乗っ取られてしまいそこに丸屋が仕込まれたとっていうのがまず1個ありましたとなるほどねお疲れなんですねだからこれねおにぎりで言うと梅農家さんが自分の梅農園の所有権を奪い取られポイズン梅を栽培させられたみたいなことですねえーまあなんか
-
農園の鍵取られて勝手に入られて好き勝手やられちゃったみたいなフィッシングで結構堂々と乗っ取られてる気がするけどある日急にさ怖い人がやってきてここの所有権はこっちに移転しましたみたいなおじさんが来たみたいなことじゃないそうですかねどっちかっていうとお手伝いさんみたいな人がやりますよお手伝いって言っていいねじゃあちょっとこの鍵よろしくって渡して
-
でその鍵使って好きこだやらされたやられたみたいなニュアンスじゃないですかフィッシングってそうなのかなフィッシングってあれですよねなんかあたかもあなたのためのメールですみたいなところに不正なURLが貼ってあってそこ踏んだらIDとかパスワード抜かれてあーそっかその流度で言えばそうだわはいはいその結果梅農園の経営権をその人に奪われてしまったっていうあーそうそうそうそうだからそうだね印鑑取られたってことですねそう
-
それによって良くない梅を生産させられてしまったという事件ですともう一個はシャイフルードワームっていうなんてシャイフルードワームというねシャイが溢れてしまうワームですかそうです怖すぎますねシャイの洪水
-
ワームなんてねうにょうにょしてるやつですよワームなんて多分目もない口はまんまるで歯がギザギザ生えてるサバクにしかいないやつねそうそうそうそうサバクの星にいるでかいやつね地面をね歯から目が退化して目ないんですよサンドワーム的なちなみにこのシャイフルドワームの語源なんですけどマジでそれだと思うどういうことえっとね
-
デューンっていうデューンっていうSF小説に出てくるサンドワームから来てるんですよこれサンドワームの名前はいはいはいから来てるんですよでこのシャイフルードあのデューンの方のシャイフルードうんは成長すると全長数百メートルで最大級のものは数キロメートルにも達しますとやっばでミミズに似ていて厚い装甲皮に装甲みたいなので覆われてて
-
口の中にはクリスナイフの材料となる結晶状の歯が何千本も並んでいます感覚、視覚はありませんが砂の振動に極めて敏感ですいやーモンスターハンターみたいな水に弱いらしいですあ、そうだんだ水に弱いんだっていうこのシャイフルードっていうデューンの
-
SF小説に出てくるワームが元になってるんですけどこいつはですね感染した場合感染者のPCからですねNPMのトークンを盗み取ってもしその人が他のパッケージを管理してた時に自動で毒を持っていくというかうんうんうん自己増殖してマルウェアを仕込んでいくっていう連鎖的にえーと
-
そのシャイフルドワーム自身は感染したらまずそいつにマルウェアを仕込むのとあとは攻撃を受けた被害者が持っているパッケージに勝手に入っていってそれで自分を入れた状態で多分プライベートリポジトリだろうがパブリックだろうがとりあえず公開するとそれで他の人にまた利用されてたらそっちに入っていって同じことをして
-
恐ろしいですねそういうことですこれもうおにぎりで行くのやめるわえ?おにぎりで行くのやめるんですかシャイフルードに関しては行けないかな梅農家さんがどんどん増えていくみたいなことでしょ梅農家が増えるのかポイズン梅農家になりますとそのポイズン梅農家がどんどん増殖していくわけだよね他の梅農園に対しても梅農園なのかなどっちかって言ったらじゃないですかその
-
そのおにぎりを仕入れたセブンイレブンが感染してセブンイレブンの他の商品にどんどん広がっていってその人の家にその商品が買われていった時に買った家が麦農家だったらその麦にも感染するみたいななるほどねじゃあ絶対米の方で言うべきだったかもしれない米?梅が他の商品で使われてなさすぎる気がするまあまあまあそうですね
-
まあまあゼロじゃないですよね梅よろしとか梅寅三兄弟とか大道ドリンクの自販機しか見たことないけどこのシャイフルードはそういう風に自己増殖を重ねていきますよとはいはいやめてほしいなそういうNPM上のサプライチェーンの中にこういうものが仕込まれたことによって今回ね話題になったわけなんですようんでぶっちゃけこういうサプライチェーン攻撃ってNPMだけじゃなくて普通に他の言語
-
のパッケージマネージャーとかでも発生しおりますっていうか全然あります防ぎようないっすもんね多分大元気をつける以外ないまあそうだね防ぐのは結構難しいと思う難しいと思うだんだけどやっぱNPMで発生する件数が爆発的に多いんですよ使ってる人多そうだからな
-
そうまず普通に使ってる人が多いあとこれ何でかは知らないけどNPMとにかく依存関係がめっちゃ多いやっぱ多いんだ多そうだなっていうイメージはあるんですよパッケージロックJSONとかあとノードモジュールズが一番重い気がするノードモジュールズとか見ると分かりやすいけど他の言語でできたPHPとかだったらベンダーっていう配下に作られるんですけど明らかにパッケージの数が全然違う気がする
-
まあいつも依存関係でよくエラーになる記憶はありますよくありますこれねえじゃんってなんでないのってなってることがよくあるそういうこともある何も言えなかったそういうこともあるとにかくNPMは攻撃食らう頻度が高いとはい
-
で続いてですねまずこのじゃあサプライチェーン攻撃ってどうやって仕掛けてくるのっていうさっきの話とちょっと違う切り口であのやっぱね攻撃の手段を知るっていうのはね大事だと思うんですよでそれを知ったからといって防げるわけじゃないんですけどいやでもその悪い人の気持ちになれるのは大事ですよ大事
-
多少気をつけれる部分あるかもっていうので6大攻撃パターンがありますそんなのあるんですねありますその1タイポスクワッティングこれ打ち間違い狙いなんですけどタイプスカッティングやっぱそういうことですかタイポタイポスクワッティングタイポスクワッティングスカッティング
-
つづりなんだ?スクワッティングのつづりSQATTINGスカット?うわ知らねえなんて意味の単語なんだろうね狙い撃ちとかじゃない?分かんないけどタイポーしゃがむしゃがむ?スクワットスクワットじゃんスクワットなんだろうねこれちょっとジェミニ命名なんでよく分かんないですけどジェミニ命名なんだはい撃ち間違い狙いですとこれありますよねだからNPMインストールリアクトとかじゃなくてNPMインストール
-
TACTとかいやえっとねこれやっぱね人間って始まりと終わりの文字はしっかり認識してるんで真ん中差し替えた方がいいと思いますなるほどRAECTとかの方がいいんじゃないAとE逆にするみたいななるほどねタイポするかそういうやつあるんですね入れ替えはでも確かにタイポするかもだから文字を入れ替えておいて打ち間違いを狙うタイプえー
-
これはサプライチェーンの一番大元狙ってるよね依存関係の先でとかじゃなくて直で悪いの入れようとしてるパターンうかつなやつが直でいるのを期待してるパターンこれは自分たちが気をつけれるやつですちゃんと保管機能を使います続いてディペンデンシーコンフュージョン依存性をコンフューズさせるのこれはどういう風にやるかっていうと
-
パッケージってパブリックのパッケージとプライベートで社内だけで使うみたいなパッケージがあるんですよ社内で自分たちで使うようなパッケージを作って公開できるというかこのディペンデンシーコンフュージョンはですね社内のパッケージと同じ名前のバージョンを公式に登録してさらにバージョンをめっちゃ高くする
-
ってのをやるとNPMの仕組み上同じ名前だった時にパブリックが優先されることがあるNPMの設定にもよるんだけどデフォルトでやりますよねデフォルトも設定にしますよねデフォルトだと確かダメなんじゃなかったかなこれで例えば社内のやつがバージョン1だった時に公式の方に公開されたのがもっと上のバージョンだったらそっちが優先されてインストールされてしまうっていうそういう風にして乗っ取ることもできますと
-
これどうやって同じ名前見つけるのっていうので結構気をつけなきゃいけないことあるんですけど例えばビルドする系リアクトとかビューとかってソースマップっての作れるのわかります?どんなんでしたっけ?JSとしてビルドした時にめっちゃ読みにくくなるじゃないですかでもそれってデバッグしづらいじゃんだからデブ環境とかだけでソースマップってのも生成しておいてブラウザでその
-
読みやすい形に逆変換できるみたいなやつソースマップって言うんですけどそっから例えばパッケージの名前が入ってたりとかするとそっから読み取れちゃったりとかなるほどそれで読み取ったやつに似たやつをパッケージとして悪意のあるやつで公開するとそうってこともできてしまいますよとあとはさっきの二大事件のうちの一個のフィッシングとかパスワード流出みたいな感じで普通に正規の作者になりすますパターン
-
あとはスタージャッキングこれもちょっと危険なんですけどスタージャッキング星をギター部のスターかスターをジャックして
-
じゃあスターめっちゃつけてうわこれなんか良さげじゃねって雰囲気出して入れさせようっていうコントなんですかそうでしかもこれの厄介なところはですねあのネオ4Jっていうグラフデータベースあるんですけどそいつが一回あの罠にかかったことがあってネオ4J自体に何かされたわけじゃないんですよただネオ4Jなんちゃらかんちゃらドライバーみたいな感じのパッケージがNPM上で公開されてでさらにえーとねなんだっけなあの
-
NPMを公開しているサイトとかでスター数見れるページあるじゃないですかあれURL違うやつにしたときにスター数だけそっちの違うURLにしたやつに読み込まれるというか例えばAっていうパッケージを公開するじゃないですか梅おにぎりでもリンクを鮭おにぎりにしておくんですよそしたら鮭おにぎりのスター数が表示されるっていう
-
のがあってそれを使って星を高く見せたとそんなことできちゃうんですねそうで名前もそのパッケージ名にNeo4jって入ってるからこれ公式が作ってるのかななんかスター数も多いしみたいなっていうので信頼しちゃって普通にインストールしちゃうっていうパターンこれスタージャッキングって呼ばれてますねいやー油断してると踏みそうですねこれは怖いよねリンクまで見ないといけないんだっていう怖さうん
-
あとはまあ作者ちゃんと見る感じですかね作者って作者ねまあそうだね作者で見分けるのむずいたまになんか分かんないやつあるもんなある企業っぽくないというか次がねソーシャルエンジニアリングこれは普通にメンテ手伝いますよって近づいてくる罠普通に仲間を装うパターンこれはもうただの詐欺師笑
-
なんか最近もありましたよねそれでなんかOSSに何年間かコントリビュート真面目にやってたけど急にバックドア仕込むっていうマジで?なんか見ましたよここ1年くらいでマジかエピソードでも取り上げなかったでしたっけあったかなアフタートークかなまさにそれがソーシャルエンジニアリングですねもう一個がですねインフラ汚染インフラ汚染パッケージ同行するじゃなくてドメイン自体を買収して
-
乗っ取りかこれも多分例えばさあのライブラリからさあの普通に外部の api 叩いてるケースあるじゃないですかはいそっちの api の方に不正を仕込むっていうそっちの乗っ取りどうやってやるのっていうのはちょっとまあまあどうにでもなるんじゃないですかどうにでもならはいきっといろんな攻撃方法があるんだけどえっとね
-
ドメインだったりとかCDNとか配信サーバーとかそっち側を乗っ取って毒を仕込むっていうパターンもありますね効率よくなさそうだけどできたらもうこれ安心感安心感というかバレない感やばいよねそうですねあとは直接的じゃないかもしれないんですけど去年かな今年で話題になってたのはめっちゃ有名なサービスクローズしてそのドメイン手放して悪いやつに
-
買われてみたいなのは結構話題になりましたねその話はなんか一回エピソードやったかドメインの就活みたいなやつよねそうそうそうそうでも結構それ系に近いかもしれないうんうん正々堂々と奪うのなんかむずそうですよねそうだねドメインって結構管理ガチガチだしちゃんと認証局があってめっちゃ申請めんどくさいしちゃんとしたやつそうだねまさにあのドメインの期限切れとかを狙ってくるらしい
-
そうですよね危険切りとかですよねっていうような方法を駆使してサプライチェーンっていうのは攻撃されていきますよと今後もいっぱいあるでしょうからなんかあれかもしれないですねやっぱアップデート気をつけましょうかもしれないですね今大丈夫のバージョンは絶対大丈夫なんでそうだね多分上げるときに気をつけなきゃいけないのとあとは新規でインストールするときに気をつけなきゃいけないうんうんうん
-
ただゼロデイみたいなニュースになる前に食らうのはしょうがないですねどうしようもないと思うそれはねその通り過ぎるかもしれないだから最悪攻撃食らっても大丈夫なデバイスを使いましょうかもしれないですねウォレットとか置かないとかSSHキーとかも平文で置くんじゃなくてなんかあるんかな応募する仕組みがワンパスワードみたいな何かなんか
-
そういうのを使っていざ何か食らっても大丈夫な作りというか環境にしておくのが大事そうですねそれはそうかもな一旦その防御の鉄則なんですけど一つはそのスキャンツール使いましょうとNPMだったらNPMオーディットとかあとは別で普通にスキャン用のライブラリとかも世の中にあったりするんでそれを使ってみるとかうんうん
-
でもこれはさっき言ったように発見されている危険にしか対応できないなのでもう1個あるんですけどPNPMを使うとNPMよりは実は攻撃されにくいという背景がありますこれはなぜなのかということなんですがまずですねこれは完璧に防げるというわけではありません
-
が構造上npmよりはnpmとかヤーンとかよりは実は安全な部分があってこのnpmとかヤーンとかって依存関係をですね全部ノードモジュールスの配下に並べちゃうんですねでそれができると何が問題かっていうと例えばちょっと待っておにぎりプリミティムすぎるな
-
なかなか聞かない日本語ですねおにぎりプリミティブすぎるなっていうちょっとねあのどういうことやねんっていうまあライブラリーのさらにそのなんだ孫の依存関係というかうんがないなおにぎりえないですかないかあるかえっとおにぎりのできあが米うんおにぎりうんで例えばそのおにぎりが入った弁当とかうんうんそういうことうん
-
ちょっとそのおにぎりを使った商品を考えればおにぎり商品考えればいいのかあとはなんかその出店にそのまま回すとか学祭とかおにぎり茶漬け握り茶漬けあったような気がするぞそれ焼きおにぎり茶漬け焼きおにぎり茶漬けちょっと例えのことは忘れようかなもういやまあいいですよ一旦あの
-
安全なライブラリーだとしてもそのライブラリーが依存関係危険なものを使っている可能性がありますよとで例えばリアクト入れますとリアクト入れたんだけど実はもうそれが汚染されててリアクトが内側で危険なライブラリー使ってましたとDangerHTTP使ってましたとNPMでインストールとかすると全部フラットなのでノードモジュール配下に作られますと
-
そこに作られると我々が作ったコードからリクワイヤーできてしまうんですね一方PNPMってパッケージJSONに書いたものしかノードモジュールスの直下に置かないんですよで孫のやつはシンボリックリンクを巧みに使ってアプリケーションからは直接利用できないようになってるんですねうん
-
なのでコードから誤ってそれを直接読み込むみたいな事故は防げますとでもシンボリック経由で読み込むんじゃないですかシンボリック経由で読み込むのかな利用はしてるんですよねリアクト経由しないと無理なんじゃないさっきのパターンだとリアクト経由すると安全まずコードから直接読み出しはできなくなりますとはい
-
なのでそういう誤った読み込みだけは安全になりますとに対してはただライブラリ経由でマルウェアが実行された場合はそれは防げないですそうですよねなので完全に安全になるわけではないが例えばだけど名前に似てるパッケージとか作られてそれを誤って読み込んでしまうとかそういうのはなくなるんじゃないかなって感じかな
-
名前に似てるパッケージを使った攻撃って結局利用者のタイプですもんねそれもあるし今回はインポートとかだからさIDEとかでそれっぽい名前のやつ出てきたら使っちゃいそうじゃないっていうそれは使っちゃうかもそういうことか
-
ただそれはPNPMでも一緒ではでPNPMの場合はノードモジュール配下にそもそも置かれないから出てこないと思うごめんなさい最初のやつ僕が勘違いしてたかもしれないんですけどNPMインストールで正しいやつをインストールして
-
わけではなくてNPMインストール時点で間違えたやつを入れちゃいますその入れた時点で多分ノードモジュールズの配下に悪意のやつがあるやつが入っちゃいます次にAIエージェントのコーディングでノードモジュールズの配下にあるそれっぽい名前の違いやつを引っ張ってきちゃうせいで
-
実際のコードに実装してしまうっていう二重で何かが起きてたの今多分二重で何かが起きてるっていうことなのかなって思ってたんですけど最初のインストールは正しく言ってます要は安全なライブラリと思われるものをインストールしているがその安全なライブラリが実は裏側で危険なライブラリをさらに使ってたケースですね
-
あーやっとわかったで危険なライブラリがノードモジュールズに入っちゃうからそのAIのサジェストの中でそのサジェストされたらダメだよねってことですかそうそうそうそうだけどPNPMならその孫のライブラリは読み込まれないようになってますよっていうまあでもとはいえ
-
PNPMインストールで入れたやつがもうすでに悪いやつ使ってるんだったらどっちみちですかねどっちみちなところはあると思う奇跡的にそれ動かない部分使ってるとかはあるのかなそれはあり得ますねどうなんですか孫の方とかにそういう丸やとか仕込まれやすいんですかね全然そこのあれわかんないですけど攻撃者なら孫に仕掛けたくなるかもしれない
-
そっちのがバレづらいバレにくくない?だって多分そんなとこまでなかなか見に行かないですからねあとはPNPMはですねインストールスクリプトの制御がしやすいっていうのがあってNPMとかってライフサイクルフックみたいなのに近いんだけど特定のタイミングでスクリプトを実行したりするんですよでこの例えばインストール時に走るスクリプト
-
の中に悪いものをねじ込まれるケースが多いといやー困っちゃいますねそんなんねそうでパッケージのスクリプトを止めるためにはオプションが必要だったりするんだけどそれだとちょっと運用がやりづらいですよと一方PNPMはホワイトリスト形式でスクリプトを実行するみたいなことが結構簡単にできるようになってるんで未知のライブラリのスクリプトとかを実行するのを防げますと簡単にうーん
-
っていうところもまた安全ポイントの一つうんうん安全だであとねなんかPNPMはですねダウンロードしたパッケージをプロジェクト横断で管理してるんですよ自分のPC内で一元管理してるというかはいはいだから特定のプロジェクトのノードモジュール内だけファイルを書き換えるみたいな攻撃がやりにくくなっているっていううんうんうんうんうん
-
他のとこで使って大丈夫なやつを使えるよってことですよねそうねあとなんかハッシュ値で管理してるから多分改ざんしたら分かっちゃうんじゃないかなこれっていうので改ざんが検知できるから安全ですよっていうところですねなのでPNPMを使うとそういう勝手なスクリプト実行とか知らないパッケージの間違えた誤ったアクセスとかそういうものは防げますよと
-
一方インストールしたパッケージがすでに孫とかが乗っ取られてたケースアキシオス自体がサプライチェーン攻撃食らってた場合とかそういうのを防ぐことはできないよとだがNPMよりは安全に管理しやすいようになってるからこっち使った方がいいんじゃないのっていうので話題になってたっぽいですねなるほど個人的にはさっき
-
ミニマムリリースなんとかっていう機能がすごいいいなと思っててリリースされてから何日以上経ったやつじゃないと使わないよっていう設定がPNPMでできるらしいんですけどこれがめちゃくちゃいいと思っててこれだけやっときゃいいんじゃないかまであると思ってて言い過ぎかな結局なんか起きるときって新しいバージョンが出ますそこに脆弱性が入ってますこれマジやべえじゃんって多分数日後にめっちゃニュースになるみたいな確かに
-
流れだと思うんでじゃあなんか出てからちょっと経ったやつじゃないと使えないようにするっていうだけで割と言い過ぎかな怖いんですけど割と防げるんじゃないかなって思いますねでもそんな気がしますね何日ぐらい待つのがいいんだろうね別に1ヶ月とか2週間とか3週間とか待ちはいいんじゃないですかね確かになんか
-
アップデートのタイミングでたまたま新しくなってたやつが紛れ込んでしまうとかよりは全然安全そうな気がしていいですねはい別にそんなねアップデートなんて年一とかだと思うんでいいじゃないですかというのでPNPM安全ですよとしかもこれ嬉しいことにNPMからの移行結構簡単らしいんですよねなんか簡単そう同じファイル使ってるしAIがあれば余裕でやってくれそう
-
インポートする機能があってNPMからじゃあそれでいいじゃないですかNPMコマンド忘れたノリさんは乗り換えたんですかもちろんまだですこれからですねそうなんですPNPMインポートってやるだけでロックファイルの情報をねうまく読み取ってPNPM用に合わせてくれるっぽいですねロックファイル作ってくれるのか
-
作り直してくれるんですかね多分ファイル名一緒でしょうからファイル名違うっぽいあ、違うんだPNPM-ROCK.yamlで、じゃあなんかノードモジュールスは一回吹っ飛ばすのか上書きしてくれるのかやってくれるって感じなんですねえっとねノードモジュールスはその後吹き飛ばさないといけないっぽいうんうんうんまあまあ吹き飛ばすだけならね手順としては本当にPNPMをインストールしてPNPMインポートでロックファイルを作って
-
ノードモジュールとパッケージロックJSONをぶち消してPNPMインストールで依存関係インストールするとやります年内にこれは確かにいいかもなやったほうがいいあとあれだね多分CICDとかにNPMCIとかコマンド入れてる場合は多分そこのコマンド変わると思うんでそこの書き換えは必要かもねまあまあまあ
-
まだと思いますよそんな労力じゃない気がする本当に文字列一括誓んでいけんじゃないかなっていう感じだと思うんでぜひちょっと少しでも安全に使いたいぜって方はPNPM使うのがいいんじゃないかなってとこですね全員やりましょうっていうのが今回ご紹介したニュースNPMで起きていた事件の概要ですありがとうございますサプライチェーン攻撃というサプライチェーンに攻撃する攻撃を食らっていたと
-
いろんな手法があるんですけど防ぐためにはスキャンとかあと構造的にちょっと安全なPNPMを使うと少し安全になるっていう感じですねPNPMで30日リリースリリースされてから30日公開されてから30日設定でやると良さげっていうのがヒマプロの回そこ何日にするか震えるんですけどそうだねどんなもんなんでしょうねもうちょい撮ってもいいかもしれないねどうなんでしょうね
-
ありがとうございますこの番組ではSNSのXで皆様からのポストをお待ちしておりますハッシュタグはイマジンプログラマーイマジンがひらがなでプログラマーがカタカナで投稿をよろしくお願いします今回のエピソードの感想や他にも何か解説してほしいニュースがあったら僕が気合で調べてエピソードにするかもしれませんのでぜひともポストをよろしくお願いしますお願いします
-
また番組では皆様からのお便りをお待ちしております番組の説明欄にもあるかもしれないんですがエピソードの説明欄にGoogleのお便りフォームが設置されてますのでそちらから我々に話してほしいことや感想などを送っていただけると日々のアウトプットの活動のための糧になるのでぜひともよろしくお願いいたします
-
お願いしますRSSでスラックにエピソードが配信されるようになったので通知が送られるようになったのでそこで感想を書いてワイワイしたいなって思ってますそういうことをしたいなという人は番組の説明欄にあるスラックコミュニティひまぷろ談話室のお申し込みフォームよりぜひともお申し込みいただければそれぞれにも参加できますのでお願いします待ってます
-
またこの番組は各種ポッドキャストプラットフォームで配信をしておりますのでもし気に入ったという方は保証つけて評価していただけると我々のアウトプットの励みにもなるのでよろしくお願いします何どうぞ待ってますそれではまた次回バイバイやめてラーの爆心流の特殊能力でマスターズブランチが焼き現れたら闇のスパゲティコードと密結合している純平地の心までクラッシュしちゃう
-
死なないでしょプーチンあんたがここでクラッシュしたら戦法取る契約はどうなっちゃうのソースコーダーまだ修正のうちがあるここを耐えれば今日納品できるんだから次回納期おにおずデバッグスタンバイ
#420 【警告】npmのサプライチェーン攻撃をキャッチアップして、安全にアプリ開発しようぜ