ばぐとらぶごる

開発者もすなるぶろぐといふものを、エンバグ野郎もしてみむとてするなり。

伺か Advent Calender 2021/12/19 : SSPが提唱するゼロトラストセキュリティの構成要素について

表題は大風呂敷です

なんかこういきなりビジネスパーソンへのアピールがクリティカルヒットするビッグなタイトルをスローアウェイしてみたかった。反省はしていない。

一応言っておきますが、伺かはゼロトラストセキュリティの真逆を爆走するやつです。そのへんに転がってるDLL(SHIORIとかSAORIとか)を読める時点でセキュリティ何それ食えるのってやつですけど、そういう指摘はしてはだめです。

ゼロトラストセキュリティの基礎知識

ググれば本来の意味をちゃんと調べられると思いますが、ざっくり言うとファイアウォールとかだと限界があるので、そもそも会社のLANに特定条件の端末以外は接続できなくしようとか、いやもっと常時端末状態を監視すべきだとか、そういうハードなやり方でネットワークへ接続してくる端末を一切信用しない性悪説ベースの考え方のことですが…

いきなりユーザーを一切信用するなと言っている時点でデスクトップマスコットとしては駄目です。はい次。

ゼロトラストの構成要素について

ゼロトラストを実現するための構成要素ってなんでしょう。まあぶっちゃけ敵を知り己を知れば百戦殆うからずというやつで、ちゃんと端末の状態を常時監視し、外からヘンなものを拾ってこないようにしましょうというやつです。そんな身も蓋もない言い方で片付けられてしまうと世のIT屋さんが確実にキレるとは思いますけど。

そんな雑説明はさておき、構成要素を提供できるかもしれないな~というSSPの機能について紹介します。

1.脅威検出機能

SSPはゴーストのネットワーク更新の際に、更新対象をファイルとして保存する前のネットワークからデータが流れてくる段階で、マルウェア対策ソフトにデータを渡して確認してもらう仕組みを整えています。

先に説明した通りそもそも任意のDLLを読める時点で駄目だろうという話ではありますが、その懸念をだいぶ軽減してくれます。

…ぶっちゃけ誤検出だらけなのでウンザリするんですけど。

2.デバイス状態検知機能

SSPは相当偏執狂めいたレベルでOSの状態を確認し通知する機能が充実しています。省電力モードでディスプレイが消えたとか、バッテリーが足りないかもしれないとか、ロック画面のまま放置プレイされてるっぽいとか、WiFiに接続したっぽいとか、そういうのSAORIでやれよって思うレベルですが反省していません。

その中でもなんかこうゼロトラストっぽいのはなんかないかなーということで、USBメモリをPCに挿したら検知するのを紹介します。イベントサンプルは下記の通りです。

GET SHIORI/3.0
Charset: UTF-8
Sender: SSP
SenderType: internal
SecurityLevel: local
ID: OnDeviceArrival
BaseID: OnDeviceChange
Reference0: USBUSB 大容量記憶装置互換性のある USB 記憶装置/Device/USBPDO-636fc9e60-c465-11cf-8056-444553540000
Reference1: VolumeボリュームMicrosoft/Device/HarddiskVolume371a27cdd-812a-11d0-bec7-08002be2092f
Reference2: LogicalVolumeG:G:00000000-0000-0000-0000-000000000000

挿し込んだ瞬間、OnDeviceArrivalというイベント通知が来ます。Reference0以降は挿し込まれたデバイスの詳細情報がバイト値1区切りで格納されています。

SSP内部では、挿し込んだ瞬間から少し待って、内部で情報を溜め込んでからイベント通知するので、USBメモリの場合はだいたいが上のように3行セットで来る感じになると思います。

USBメモリ特有のものだと、USBPDO-ではじまるデバイスファイルが検出されているとか、直後にVolume、LogicalVolumeが来てドライブ名が割り当てられてるとか、そのへんを拾えば判定できると思います。今回はGドライブが割り当てられたようですね。

…まあ検知できるだけで、使えなくできるとかそんな高度な機能はないんですけど。そういうのはグループポリシーかなんかで設定できたはずなのでぐぐってね。

3.OS更新検知機能

そろそろ正気を疑うレベルになってきましたが、SSPではOSの更新状態の検知もできます。だいたいの人はWindows上で実行していると思うので、Windows Updateの更新状況がゴースト側で把握できるということです。

NOTIFY SHIORI/3.0
Charset: UTF-8
Sender: SSP
SenderType: internal
SecurityLevel: local
ID: OnOSUpdateInfo
Reference0: 2021,12,25,15,36,12
Reference1: 2021,12,25,13,44,42
Reference2: success000000002021,12,25,13,44,42Microsoft Defender Antivirus のセキュリティ インテリジェンス更新プログラム - KB2267602 (バージョン 1.355.820.0)
Reference3: fail802400342021,12,18,16,17,13Advanced Micro Devices, Inc. - Display - 30.0.13023.1012
Reference4: success000000002021,12,18,16,4,11Advanced Micro Devices, Inc. - Display - 30.0.13023.1012
Reference5: success000000002021,12,15,7,57,262021-12 x64 ベース システム用 Windows 11 の累積更新プログラム (KB5008215)
Reference6: success000000002021,12,15,7,52,42悪意のあるソフトウェアの削除ツール x64 - v5.96 (KB890830)
Reference7: success000000002021,12,15,7,46,112021-12 .NET 5.0.13 Security Update for x64 Client (KB5009194)
Reference8: success000000002021,12,15,7,44,472021-12 .NET Core 3.1.22 Security Update for x64 Client (KB5009193)

上記は12/25時点での私のPCで通知された情報です。

イベント名はOnOSUpdateInfoで、ゴースト起動直後にNOTIFY、その後OSの更新処理が入るとGETで来ます。イベント通知が来た時点でいったん情報を取っておいて、喋れる時に別途しゃべるという感じの処理になると思います。

いろいろ解析するのがめんどくさいという場合でも、最新チェック日時がReference0、最終更新処理日時がReference1に入っています。この日付がやたらと古いかどうかをチェックするだけでも、OSの更新をちゃんと行っているかが確認できると思います。

Reference2以降は詳細情報で、こちらはバイト値1区切りです。最初の要素がsuccessかどうかだけ確認して、それ以外があったら何か更新でトラブルが起きてるよと通知してもいいかもしれません。

…あ、このサンプルでもReference3にfailがありますね。AMDのディスプレイドライバの自動更新に失敗した、失敗理由はダウンロード失敗だそうです。でもReference4で同じものが成功判定なのは解せぬ…

とまあこんな感じで、割と失敗ログは頻繁に残るっぽい感じなので、これを検知してあまりうるさく言うのはアレかもしれません。

まとめ

本記事では、SSPが提供するゼロトラスト構成要素と言い張るマニアックな状態検出機能をまとめました。これらを活用すると、なんかこうめっちゃお高いアレとかソレとかのクライアントPC管理用ソフトと似たようなことが、ただのデスクトップマスコットソフトでできてしまいます。マジかよ!今すぐ全社に導入だ!

今後もDX化の流れ、働き方改革の流れは継続すると考えられ、このような管理機能は重宝するとは思いますが、正直デスクトップマスコットとしてはDX?デラックス?なにそれ食えるの?とか、働き方改革するなら年中デスクトップに立たなきゃならない我々のブラック環境を改善しろとか、そういう指摘のほうが先にくるんじゃないかと思います。だいたい会社でゴースト立たせんやろ。*1

2021年の歴史は、あと数ページ

今回で2021年のアドベントカレンダー記事は最終回になります。特に私は頻繁に駄文をばらまきまくってましたがよく耐えてくれました。はなまるをあげましょう。

みんなアドベントしたかい?

adventar.org

初出:2021/12/25に12/19用として後付しました

*1:私は立たせてますよ?

SSP 2.5.51

  • + \p[2]以降用バルーンを定義できるようになった。
  • + arrow・marker・online・sstp_newを個別に定義できるようになった。
  • + バルーンの「無効テキスト表示」を別途指定できるようになった。
  • サーフェステストパレットの名前順ソート等
  • ✕ 大きい文字をバルーンに追加した時の挙動が怪しい問題を修正
  • ✕ バルーンの負座標指定 (--) の挙動が怪しい問題を修正
  • ✕ フォルダ設定の個別チェックマークが保存されないエンバグを修正
  • ✕ 見切れ判定が想定よりでかい場合がある問題を修正
  • # バルーンまわりをごっそり書き換えたのでたぶん地雷が埋まってます。あらかじめエンバグしてごめんなさい。

伺か Advent Calender 2021/12/16 : 3人以上のキャラ向けバルーン

TL;DR

  • 3人以上(\p[2]以降)キャラ向けのバルーン仕様を作りました。
  • ファイル名は \0がballoons \1がballoonk \p[2]がballoonp2def です。
  • arrow・online・marker・sstp_new (or sstp) も後ろにp2defとかつけると認識します。
  • 定義ファイル書かなくても勝手に読み込みます。
  • これ見て雰囲気感じてください。 /balloon/for/watersurface

本文

…いや上の箇条書きだけでわかるよね?

今回はここまでです。

adventar.org

初出:2021/12/18に12/16用に後付けしました。

伺か Advent Calender 2021/12/14 : 早速YAYAlintを使ってみた話

こんにちは。ご覧のチャンネルはSSP BUGTRAQ公式ブログで間t…もういいかこれは。

ナイトメア・オブ・エンバグことぽなです。

やや便利なYAYAlint

12/13の記事「YAYAのlintを作りたかった」を先にご覧ください。里々のlint作ったんだからYAYAもあるといいなーという電波が届いたのか否かは定かではありませんが、タタキノフ氏が5晩でやってくれました。これはもうジェバンニ認定待ったなしです。

というわけで、YAYAのスクリプト性的静的解析ツールになります。表示されるログは相当口うるさいですがlintとはこういうもんです。人類が書いたスクリプトのほうがアホだからね、仕方ないね。

歴戦の猛者、完全敗北

さて当方ものすごい長い間のAYA/YAYAユーザーです。実はきわめて初期には華和梨(のブランチの梨野)ユーザーだったのですが、普段C言語チックな言語ばかりを扱っている都合で、AYAに乗り換えて以来離れられなくなりました。

たぶん伺かの歴史の半分ぐらいはAYAのスクリプト書きまくってる気がしますし、今はAYA/YAYAがSHIORI/3.0プロトコルを扱うためのシステム辞書のメンテナンスまでやってますから、正直なところlintにかけたところでまあそんな致命的な問題はないだろうなーとたかをくくっておりました。

見事にたかをくくれませんでした。

うわーシステム辞書からやばげなエラーが出るよ!!

助けてバグえもん!!

ネタはわれてんだ、さっさとゲロっちまえよ

というわけでYAYAlintのおかげでシステム辞書のエラーを一部駆逐できました。バグっていた証拠は下記の通りです。

github.com

配列のカンマ入れ忘れてたり、変数の初期化を素で忘れてたり、果てはargv(ローカル変数を示すアンダースコア忘れ)とかrefereceとか。リファレスってなんだよ。

なお、システム辞書のデバッグ作業の際は、-u (--nounused) オプションを入れて未使用変数・関数のエラーを表示しないようにしていました。システム辞書だから妄想上?のゴーストから参照されているはずの関数や変数が存在しますからね。

なお、この修正は紺野ややめ / 紺野りりすにすでに投入済です。

ここではリントの言葉で話せ

というわけで、いきなりYAYA公式辞書たるシステム辞書のデバッグで、極めてlintらしい活躍をしてくれました。もうタタキノフ氏に足向けて寝られません。お礼に焼き芋コンテナに詰めて貨車に載せて1300トンぐらい送りつけたい気分です。

ところで、YAYAlintみたいに口うるさいものがSSPにもありましたよね。シェルのsurfaces.txtのエラーがたくさん出るアレです。実装方法はまるで違いますが、アレもsurfaces_lint的なものを目指しています。まあsurfaces.txtは最初から最後まで静的なので、今更「静的解析」とわざわざ言うほどのものではないんですけどね。

これらの口うるさい解析ツールを最大限活用することで、あなたの開発者ライフがゼロ…じゃない、極めて幸せになることでしょう。

ぜひ ぜひ ぜひ 活用しましょう。

今回はとりあえずここまでです。おあとがよろしいようで。

adventar.org

初出:2021/12/14用に突然思いつきました。

SSP 2.5.50

  • + OnSessionLock / OnSessionUnlock
    • ロック画面になった時/戻ってきた時 Referenceはなし
    • Windowsの場合は簡易ユーザー切り替えでも発生します
  • ✕ \xタグを進めるためにクリックした時にゴーストにフォーカスが行かない問題を修正
  • ✕ 拡張子のないファイルを更新できない問題を修正
  • ✕ \_bタグ(画像貼り)のURL指定ができない問題を修正
  • ✕ ゴーストエクスプローラのパス名ソートができない問題を修正
  • ✕ \s[-1]状態か、起動直後の状態において、アニメーション実行、moveタグ実行、拡大縮小などを行うと実行が止まる問題を修正

伺か Advent Calender 2021/12/1 : メタネタのすすめ

おはようございます。ご覧のチャンネルはSSP BUGTRAQ公式ブログで間違いありません。みなさんここSSPの更新履歴専用ブログだとか思ってませんかね。思ってますよね。

違います。

ここはめんどくさいから結局更新履歴書くのも統合しちゃっただけの普通のブログです。普通とは何だ。

さて、こちらはなんだかアドベントカレンダーは技術系の怖い人達がなんかよくわからない恐ろしい魔法を公開*1するための祭りだと勘違いしている方たちに、とてつもなくグッダグダで脳汁をそのままばらまいたような記事をおみまいして認識を改めていただくための記事になります。題して…

メタネタのすすめ

メタネタってなんでしたっけ。ああ確かFaceb●●kさんがMetaって名前に改名したので、そいつをイジるためのネタですよね。

違います。

meta- は接頭辞です。あとに、超越した、高次の、変化した、という意味を持つらしいです。メタボのメタもこのmetaです。体重が超越しちゃったからダイエットしなきゃ…

では、メタなネタとは何でしょうか。あるキャラクターよりも高次の存在しか知り得ない情報を匂わせるネタ、という説明になる感じです。

ぶっちゃけ作者が出てきたりもうすぐ最終回だからとかページがもうなくなるからとかいうアレです。なんか微妙にこのネタが嫌いな人もたくさんいるかと思います。

…ああっブラウザバックしないで。あなたのお気持ちはたいへんよくわかりますがここではそういう話とはちょっと違います。

デスクトップマスコットのメタネタとは

では、デスクトップマスコットのメタネタとは何でしょう。

デスクトップの前に居る人とやりとりができるのは当たり前で、その関係性は様々ですが、これだけではメタネタとは言えません。これがメタであるとしたら、突然巨大な矢印が出現して頭や胸をドツきまわす大変バイオレンスな世界ができてしまいます。そんなばかな。

そうではなくて、自身が立つデスクトップに対して言及したり、パソコン/タブレット/スマホの状況が重いだの軽いだの、ストレージが狭いからなんとかしろだの、そういった感じのネタを指します。

つまり、デスクトップマスコット自身が、デスクトップ上は自分が普通に暮らす世界ではなく、「自分がデスクトップマスコットである」「なにかしらの端末上に表示されている」と知っているという前提で話されるネタ、ということになります。

実例:

ワレワレはデスクトップマスコットだ

それで、こんなことの何がおすすめなのでしょう?SSPの開発者はついにあまりのバグに豆腐の角で頭を打ってイカれた性癖にでも目覚めたのでしょうか?

性癖がイカれている自覚はありますがそうではありません。

  • 実装済の各イベントに安直に応答しても許される
    (特にネットワーク更新とか!メールチェックとか!)
  • SSPの最新人柱機能に追従した結果バグっても許される
  • ユーザーへの反応をより気軽に追加できる

要するに手抜きかよ!と思いましたね?

そうです。

ネタの物量が正義なデスクトップマスコット製作において、もはや手段を選んではいられません。どんな些細なことであってもすくい取って、すべてトークとして昇華するぐらいの開き直りが必要です。

そしてデスクトップマスコット開発者にとってもっとも「些細なこと」が起きやすいのは、おそらくデスクトップ上でしょうから、少しの開き直りだけでトークが増えるのであれば…という考えは、決して「逃げ」ではないのです。たぶん。*2

メタネタを実装するヒント

SSPには端末の各種情報を通知するイベントが実装されており、中にはもう開き直ってメタネタを仕込むしかどうしようもないものさえあります。モニタの解像度が変わっただのスクリーンセーバーが走っただのというイベントなんて、どう使えばいいんだと相当悩んだこともあるでしょう。

しかし、メタであるないにかかわらず、そもそもデスクトップマスコットが自身の世界の情報を知らないなどはありえないはずで、たとえ自分がデスクトップマスコットであるとは知らなくても、何か肌感覚的なもので感じているんじゃないかと思います。

だいぶ以前にもうかべんでそれをテーマに何度かお話しています。

http://study.shillest.net/2008/0505/

このブログもほとんどがSSPの更新履歴と化していますが、それを裏返せばつまり、過去の履歴に何か宝があるかもしれないという意味でもあります。

ほとんどがバグ廃棄物ですけど。

ともかく、当方としてはそういった感じで日々謎イベント通知を実装しているので、なんかこううまいこと使ってやっていただけるととても嬉しいです。

今回はとりあえずここまでです。おあとがよろしいようで。

adventar.org

初出:2021/12/9に12/1用として後付しました

*1:十分に発達した科学技術は、魔法と見分けがつかない。 アーサー・C・クラーク

*2:うまくそれをキャラクター設定として昇華させる必要はあるでしょう。