こんばんは、Replay.fm第103回です。
こんばんは。
こんばんは。
いや、早いですね。もう103回ですか。
どっからの相対的な評価の早いですね。
100回と103回ってなんか結構な差がね。
あー、それは、理解しました、その感覚を。 確かにね。
なんかこの1週間長かったな、なぜか。
マジで?
俺。
あー、俺もなんかそんな気がする。
でも別に前回収録日、いつも通りだったよね。
いつも通りでしたね。
うん。
なんでこんななんか長く感じるんだろう。
なんすかね。
うん。
リモートP2Bのみ会に参加したからじゃないですか。
そうですね。その説抑えました。
うん。
元同僚の人たちからね。
なんか半年に1回ぐらい。
いやー。
LINE電話がかかってくると。
ひどい、ひどい会だよな。
唐突に電話かけてきて、なんか謎だよな。
ありがたいですけどね。
うーん。
いやー、毎回タイミングが噛みかかってんのがウケるんだよね。
あ、そうなんだ。
普通にあの時間帯、いやーなんかその。
いやー。
うん。
リスナー向けに補足するとその。
だから僕とやけやしの元同じ職場の人たちで、
定期的にそのP2Bっていう吉祥寺の素晴らしいビール屋で飲んでて。
で、僕は滋賀県在住なんで当然なかなか行けずなんですけど。
その未開がたぶん盛り上がってみんな酔っぱらってきた頃に、
僕にLINE電話をかけて、
やけーってなんか行ってくるっていうイベントがたぶん半年に1回ぐらいあるんだけど。
そうそう。
だからで、だからみんなさん集合してたら9時、8時9時ぐらいですか?
盛り上がってくる。
うん。
酔っぱらってくるぐらいにかかってきて、
で、僕はその時間はだいたいたぶん寝かしつけを頑張ってることが多いはずなんで。
出れない確率の方が圧倒的に高いんだけど、
なんか毎回噛み合ってなぜか出れるっていう。
今回も下の子寝かしつけて、
あ、やっと寝室脱出できそう。
脱出しようかなーって考えてたら、
携帯がブーってなって、
おーおーおーってなって。
むしろそれで起こさなくてよかった。
そうそうそうそう。
ギリギリでした。
ギリギリでした。
まあでもそれで起きないぐらい眠りがね深くなってたんで。
寝室出て出たら夜消しから着信になって、
あーOKみたいな感じ。
察しって。
そうそうそう。
いやー楽しかったですよ。
毎回。
ありがとうございます。
いやー謎なんだよなー。
今回誰が言い出したんだっけなー。
ちょっと忘れちゃったけど。
毎回違う人が言い出してるの?
前回は、いや覚えてない。
なんか前回がどうだったか覚えてないけど、
今回が。
今回はね、俺じゃないんだよ。
なんか。
あーそうなんだ。
あーそう。
えー。
ありがたいね。
なんか忘れられずに生きていきたいっすね。
来ればよかったな。
4ヶ月。
まあ次回は顔出しますよ。
いや生きたくても今回は無理だったなーちょっと。
まだね。
もうちょっと下の子大きくなってから。
普通に無理だよね。
普通に。
いや無理か無理じゃないかって言うと無理じゃないんだけど、その。
そうね。
なんか難しいところだね。
その。
家庭へのダメージとリターンの。
天秤というか。
そりゃそうよ。
うん。
まあでも押し合わせるうちに押さないといけないという話はあるかもしんないから。
まあまあまあ。
そんなにいいんですけど。
今回お便り1通いただいてまして。
特命希望さんで100回おめでとうございます。
とのことです。
ありがとうございます。
103回ですけど。
そうですね。
200回目指してやっていきたいなという所存ですね。
まああとちょっとネタバレ予告なんですけど。
編集の都合で次回かその次になるか分からないですけど。
アザラさんというまあ強いセキュリティエンジニアの方を。
セキュリティエンジニアって言っていいのかな。
まあまあ方をお呼びする予定でして。
まあもしなんかアザラさんに聞きたいことがあるとか。
僕手挙げ足じゃないけど。
まあ3人で多分いろいろ記事を読むというよりかはいろんなことを話すんで。
その場で聞きたいこととかこれどうなんですかみたいな。
気になることがあったらお手紙ぜひいただけると嬉しいなという感じでございます。
お便りはグルフォームXのハッシュタグで見ております。
ブルースキーとかも見ようかな。
なんか別のポッドキャスト聞いてたらブルースキーのやつ。
あれブルースキーなの?ブルースカイなんじゃないの?
ブルースカイか。やらなすぎて読み方さえ。
すげえ久々にログインした。
でもなんか俺らがさあそこに生息してないのにさあ、
なんかそこで言及されることあんの?なんか。
うーんわかんないけど、
まあなくはないんじゃない?なんか久々にログインしたら誕生日入れろって言われた。
なんで?
大丈夫?誕生日覚えてる?
ギリ覚えてるわ。
偉いね。
なんかフォローされてた。
こっちだったらハッシュタグ載ってるんじゃん。
まあXも実質載ってますから。
まあまあまあちょっとごちゃごちゃ言いましたけど。
お便り募集してます。
その感じで今日はぼちぼちな検出があるんでぼちぼちやっていきますか。
なんか久々に結構な検出があるよね。
うん。
まあ明るめも多いですけど。
じゃあ一番目はヤギハッシュにお願いしようかしら。
自作NPMパッケージにマルウェアを公開された時にやったこと。
はい。
という誰だ?
大輝浦田さんの禅の記事ですね。
なんか
まあ読んでくれっていう感じなんですけど。
オープンAPIリアクトクエリコードジェンというのが
ステップセキュリティのブログとかでも紹介されてたんだけど
なんか普通に侵害されて
いろいろ仕込まれちゃったよっていうのがありまして
その作者の方が対応で何したかっていうのを
ブログ記事にして書いてくれたという感じですね。
結構影響されてるパージョンが多くて
割と対応が出れそうだなっていうのは見てて思ってたんだけど
はい、なんか侵入経路を塞いで
公開権限を剥がして
公開権限を剥がしてって何?これか
普通の長期のアクセストークンが別でいたので
トラステッドパブリッシングの経路以外のやつでそっちを
トラステッドパブリッシングを消したのか。
そうそう。
で、トークンも念のため消したって感じだったかな。
トラステッドパブリッシャーを消すのってこれ意味があったのかな。
これ消すとギタワークションズから公開できなくなるから
今回はワークロード乗っ取られてやられてるから
ワークロード乗っ取ったとて、乗っ取ったというか
ワークロードを塞ぎ切れてなくても設定さえなきゃ
NPMJSとかね。
予防措置として一旦原油を直した上で
改めて設定し直す予定ですって書いてあるから一旦だから落としたっていう話かな。
そうだね。
なんやかんややってっていう感じですかね。
NPMに報告したよみたいな話とかもあるし
あと利用者に知らせるとかも
GHSAで発行できる感じなんだね。
なんかその
一通りの手順自体は別にサプライズは特にないんだけど
でも意外と侵害された側でこうしましたみたいな
原因をポストモーティング的な記事は結構見たけど
こう対応しましたみたいなのは見かけたことなかったから
かつ日本語というか日本人の方でなるほどねみたいなところとか
あと細かいつまずきところというか
アンパブリッシュコマンドあるけど現実的じゃないみたいなシェアが多いと
参照されたらできなくなるからとか
また細かいGitHubに侵害というか攻撃してきたアカウントを通報するときに
こういう風なフォーマットで書くといいみたいな話とか
またアカバンされちゃうと攻撃コミットを辿る方法がなくなっちゃうから
コミットの発射手元に残しておかないとみたいな話とか
結構なるほどねみたいなのと
あと割とそれなりに気づいてから2時間ぐらいで対応しきってるけど
多分エアーエージェントにかなり手伝ってもらってスムーズにできたみたいな言及もあって
そこはすごいいい時代だなというか
こんなん多分避難訓練してたとしてもそんなスムーズにできないと思うんだけど
それはすごいいい話だなっていう気はしましたねっていう
お疲れ様でしたっていう感じ
お疲れ様でしたですね
一方でちょっとあんまなんかちょっとまさかりと思われたらあれですけど
何だろうな
ポストモーテムの中身をゲインの方もちょっと見たんですけど
ゲインの方も見たんだけど
割と一発で侵害される経路を仕込んだっていうよりかは
4回ぐらいに分けてアップデートしていったら
侵害される経路が組み合わさってきちゃいましたみたいな感じで
経緯を説明されてるんだけど
知ってる目線から見るとそれやられるよねっていう仕込み方をしてて
でもなんかその何だろうな
仕込み方としては利便性とか解決したかったこととセットで見ると
確かに相当警戒してないとやっちゃうかもなみたいな部分は結構
今までってオンプレックスターゲット使っててもやめろよみたいなことを
多分僕はこれまで何回も言った気がするんだけど
その裏側を見たというか
結果として脆弱だったんだけど
別にこういうことをやりたくてこういうふうにしたっていう話であって
それが穴かどうかっていうのを気づけなかったっていう話は
普通のアプリケーションで脆弱性を作り込む
ロジックと当たり前と当たり前だけで同じだよねみたいな気持ちと
あとは再発防止みたいな部分で言うと結構
例えばだけど最近だとステージドパブリッシュとかがNPMで出てきてて
個人的には最後のガードレールとして
入れた方がいいんじゃないかなっていう
トレッドオフあるけどみたいな気持ちもあったりするけど
言及がなかったりとかするので
ある種の何だろうな
そこはセキュリティーが取り上げるぐらいの
トラフィックのあるNPMJSのメンテナーのリアルを
買いまみたっていう部分で言うと
いろんなパッケージ足したようないろんなモチベーションで
いろんなパッケージを管理してるメンテナーが山ほどいる中で
全員がいろんな最新のエコシステム化が用意した防御機構を
全部きちんと使いこなすとか
また穴を作り込まないみたいな部分に期待するのは
まあまあ非現実的だよなみたいな部分をちょっと感じ
ほんのり感じたりしたなっていう部分が
正直あるなっていう感じでしたね
難しいよな
でもなんかまあやっぱ意外
でもこんだけ騒がれてさ
なんかあれをやれこれをやれっていうのが
なんか言われてる中で
それでもやっぱ残ってんだなっていうのは
なんか難しいなって思いますね
結構ね
なんかわかりやすいやつは
いやなんかちょっとアプリの脆弱性と似たものを感じるかもしんないんだよな
例えばSQL Injection対策で
Prepared Statementを使いましょうぐらいは
普通のウェブエンジニアだったら
知っててよってなんか思うラインというか
セキュリティ別に詳しくなくても
だけどもうちょっと高度なSQL Injectionが条件で刺さっちゃいましたとか
またウェブの脆弱性という括りで言うんだったら
CSRF, SSRF, XSS
いろいろもっとたくさんあって
じゃあそれ全部ちゃんと把握して
穴作んないでねみたいなことを言い出すと
結構現実にはなかなか難しいよねみたいな話があって
でActionsにおいても
今回のケースとかは一周コメント経由で
任意行動実行までいけるっていうものだったっぽいんだけど
onplexターゲットはこんだけ騒がれてるから
多分みんな原理もそろそろ理解してくれてるし
分かると思うんだけど
じゃあなんだろうな
一周コメントも危ないぞってみんな騒いでるかっていうと
そうじゃないじゃないですか
僕ら目線は分かるというか
任意の値が入ってきて
それが参照サインだったらダメだよねっていう
点と点をつなげるっていうのがすぐにパッとできるけど
プリリックのコメントで
こういうオペレーションできたら便利だよねっていうことを考えてるときに
それと昨今のサプライチェーン攻撃みたいなの
つなげられるかと言われると
100人いて100人にそれ求めるのは難しいかなみたいな
これ何をどうして
あれかな
メインのバージョンのほうまで到達したんだろう
違うだからこの中に
ちょっと待って
元々やりたかったのは
一周コメント
プレリリースをプリリック立てた人が
自分でできるようにしてあげたかったのがあって
ってなったときに
じゃあプリリックに
NPMパブリッシュみたいな
コメントをしたらプリリリースが出るように
仕組みを作ろうってして一番最初作ってみたんだけど
そしたらそこで動くワークフローは
メインブランチというかデフォルトブランチの
シークレットにアクセスできないっていう
超ザクというとそういう制約があって
ダメじゃんってなって
じゃあそれアクセスできるようにしてって言って
そこで穴が開いたっていう感じなんだよね
そこで穴が開いちゃったら
じゃああとはもう
そのコメント経由で
自由に料理できます
しちゃいましょうっていう
超ザクというとそういうことが起きてたって感じかな
PostMortemの記事を
見ると分かるんですけど
修正コミットかな
修正コミット見たんだっけな
一周コメント
そうだね一周コメントの場合は
PRの
そうだそうだ
一周コメントでパブリッシュを発火したときは
そのプルリクエストの
コミットでチェックアウトするようになっちゃってたから
そうだね
だから
プルリクエに好きなものを混ぜて
何が実行されるんだ
PNPM
これでも2コード実行は
どこで挟んだ
ちょっと思い出さなきゃ
いやでも
シンプルな話じゃないかな
その一周コメントで誰でもリリースできる状態になってました
でしかないんじゃないかな
でもそれと言ってまず
PNPMインストールか
PNPMインストールは呼ばれてたから
あれだよね
パッケージジェイソンから何か悪意のある
依存を突っ込んでおけば勝手に
ポストインストールとかで
ポストインストールだけだったらダメなのか
PNPMのバージョンインストールあるけど
そうじゃなくてそもそもこのリリースワークフローを
誰でも好きなコードで
動かせるようになってたっていうだけかな
シンプルに
でもベータなしを
プレリリースじゃないものをこれで出すのって
そうかプレリリース
シークレットが抜けました
そうだろうなって思うんだけど
そうか
プレリリースはどうやった
プレリリース2件が多分まずやられる
順調にやられる
確かにそうだね
プレインストールに入れて
抜かれただけか
でも抜くだけじゃ
OIDCだから
この記事どこにあるの
この記事は
農書に貼りますね
ありがとうございます
これかな
そうだね
普通にその環境でOIDCトークン作って
パブリッシュするっていう
だけのものを書いてるね
なるほどね
理解しました
プレリリースは変えられないんだけど
普通に
プレインストール仕込めば何でも動く状態になってるから
そのワークフロー内で
OIDCトークン作って
何でもパブリッシュできるって状態だった
って感じかな
ベタじゃないものを
何でも作るって感じだね
これさなんだっけ
OIDCのクレームを見て
プレリリースはできるけど
それ以外はできないみたいな
あれって
NPM側にあったりしない?
ないねそういう設定は
ワークフローの名前までだね
設定できるのは
もしくはもうそれ以上の制限をかけるとしたら
ステージとパブリッシュしかできないしかない
プレリリース用のワークフローを
別に作ってて
ワークフローの名前
あでも別に
プレリリースができるワークフロー
みたいなのは別にできないわけか
プレリリース用の
なんだろうな
アクセス
とか認証っていう概念が
そもそも傍下してないのと
NPMがないから
やっぱ
どうしようもないね
そもそも
一つのパッケージに一つの
トラステッドパブリッシュしか設定できないから
そこが
もうちょい
柔軟になると
いやでもな
なおよしというか
今回みたいなケースでいえば
とは思わん
でもないけど
プレリリースだったら
侵害されていいかというと別にそうじゃないから
まあねそれはそう
そこは
なんか普通に
プレリリース
プレリリースを
固定してない状態で
引っ張ってくることって
ほぼないよね
固定してない状態で
まあ基本的には
ないかな
プレリリースだったら
いいとは思わないけど
影響範囲の最小化っていう意味だと
なんか
そういうのがあればなおよしかなとは
思ったな
実際にそのプルリクエストの
その行動に対してプレリリースを発行したい
っていうニーズが実際にあるんだったら
なんかまあそういうのがあっても
ええんちゃうとは
思わんでもないけどね
プレリリースってみんなどうやって運用してるんだろうな
なんかでかいOSSとかと
でもやっぱフィードバックを
早期に集めたいとかなんだろうな
いやでもこんだけ使われてるってことは
やっぱインストールする人はいるんじゃないかな
なんか俺らが別にやってないだけで
そう思うと
そもそも論みたいな部分を
やっぱ手当てするほうが
いい気はするけどね
まあまあそうか
ちゃんと深掘りできてる
これでもPNPMインストールでさ
ブレインストールが普通に動いちゃった
っていうのはさ
そもそも多分PNPM古いよね
うーん
PNPMのバージョンは
指定されてないから
まあフルやられたタイミングで
古かった可能性はあるかな
ああそっか
アクション
PNPMアクションセットアップの
V3で
バージョン9で指定されてるやん
バージョン9?
ああなるほど
だからそもそもこれが古いよね
バージョン10だったら防げた案件か
10だっけ11だっけ
10だね
ライフサイクルスクリプト確か
V10
そうだねV10だね
いやでもこれもさ
めんどくさがってやってない人いると思うんだよな
動かなくなるから
アップロードビルドすればいいんだけど
って思いましたけど
でもそもそもさ別にニロベートも
ディペンダーボットも動いてないからさ
ああ
なるほどね
すべてが古いじゃん
そのアクションズチェックアウトも
V4だしさ
ああそっか
まあまあまあ
いやでもこれがリアルだよな
なんか
なんていうか
うーん
確かに確かに
いやー
大変だよOSS開発者
今のしんどすぎるね
ライフサイクルスクリプト
ライフサイクルスクリプト
そうだね
確かに
PnPnV10だったら防げた案件ではあるね
まあそもそも
時間がいろいろ解決するって話もあるっちゃあるかもな
何せなんか
ちゃんといろいろ開示してくれるのは
ありがたいことっすね
お疲れ様って感じですわ
なんか
うーん
まあ本人聞いてないと思うけど
なんか
まだまだやれることあると思うので
クロードコードに相談してみてください
っていう感じかな
クロードコードね
サインエコシステムアップってところ
仕事で
こういうの手当てしてて
思ったけど普通に
あいつら手抜くので
なんていうか
手抜くっていうかね
知らないんだよね
うーん
最初のやつ
ぬんは抜きにして普通に手抜く
なんかその
末端まで全部固定しろって言ってるけど
バージョンを頭でして終わりみたいな
手の抜き方したりすることもあるし
だからやっぱその
静的
その静的というか
決定論的にやれる部分はツール組み合わせないとダメだね
そうだね
黒だったらLinter使えばいいだろうし
PnPのバージョンも別に
シェル1行でチェックできると思うから
それを手足として渡して
だからそういうスキルを作ればいいんだね
関わりは
パブリッシュみたいな
ありそう
そこにまた
スッとね
ダメなスクリプト押し込んで
でも結構ね
まあね
作れんことはないけど
なんか
いやでも結構めんどくさいよ
あのね
ちょっと頭の中で今思い浮かべてるけど
なんかちょっとだるいなって思って
その
うーん
だるいものことも再現しない
静的解析でやろうとしたときに
その
なんていうか
まあいいや
はい
いやちょっとチャレンジしよう
はい