TypeScript最大のハマりポイント:this

TypeScriptは、全体としては整然として、素直に動作します。しかし、たまに意外な落とし穴があります(自分もはまったのですが、その時のコードが残ってませんでした。すみません)。

「なぜか型がundefinedになっている」などの問題が起きるようなら、次のTypeScript公式の文書を参考にするといいでしょう。

github.com

重要なのは「メソッドを参照だけして呼び出しが後、という形式はヤバい」ということです。それをアロー関数などで回避すれば、意味不明のトラブルに見舞われる頻度は下がると思います。

なお、参考として、以下に2016年12月1日版の原文の簡易版の和訳を示します。

(※注意)訳質が怪しい部分があります。誤りに気付いた場合、コメントなどいただければ幸いです。

続きを読む

TypeScriptを使ってみて「使うべき」と思った話

最近、ずっとブログを休んでいましたが、そろそろ再開。ただ、以前のような話は少なくなる見込みです。

個人的にTypeScriptとElectronでアプリケーションを書いています(Eto.Formsもいいのですが、プラットフォームごとの挙動の違いの扱いがつらいところです。GUIがシンプル、かつ、マルチプラットフォームでも主な対象がWindows、というケースなら向いていると思います)。

とりあえず、今回はポエム的に印象だけさらっと書いておきます。

続きを読む

RSAカンファレンス公式アプリ、再びデータ漏洩の指摘

セキュリティ・カンファレンスに参加すると、スマホアプリがあなたのデータを漏洩する

arstechnica.com

RSAセキュリティ・カンファレンスの公式アプリが、登録者の情報を漏洩しているという指摘がありました(ちなみに2014年にも、アプリのメーカーは違うものの、情報漏洩の脆弱性があったようです)。

これはアプリが受け取るキーを取得してしまえば、APIにリクエストを投げることで他人の情報まで受信出来てしまうというもの。

twitter.com

twitter.com

これを見ると、SQLiteのデータベースが直接ダウンロードできるように見えるので、登録情報は基本的に抜ける状態だったと考えるべきでしょう。主催側は次のように「名前だけしか流出してない」とツイートしているのですが、なぜか「本文が画像」です。

twitter.com

まあ、セキュリティの催しは、(特にBlack Hatあたりだと)ハニーポットもあったりするので、出席者はセキュリティについて考えつつ参加するのは当然……なのかもしれません。

Telegram規制とDomain Frontingの終焉

もう1か月ほど前の話ですが、プライバシーをウリにするチャットアプリの1つTelegramがロシア(とイラン)で禁止された件は、それなりに(一部では)国内でも話題になったように思います。

「プライバシーを売り物にはしない」―Telegram創設者、ロシアでの禁止を受けてコメント

arstechnica.com

一方、その後で出た、Domain Fronting停止の話は、それほど話題になっていないのでは……という気がします。

Googleのアップデートにより、検閲対抗ツールに問題が発生

www.theverge.com

Amazon、Domain Frontingをブロック。さらにSignalのアカウントにサービス停止の警告

arstechnica.com

この2つは、要するに「GoogleAmazonが"Domain Fronting"をやめた」ということです。

Domain Frontingは、何らかのサービス(TelegramやSignalなど)が自らの独自のドメインの代わりにGoogleAmazonドメインを表(Front)に立たせる、というものです。これを使うと、表向きはGoogleAmazonのような、多数の重要なネットサービスにつながっているように見えて、内実はTelegramやSignalの通信、ということが可能になります(いうまでもなくHTTPSなので内容の検出も困難です)。

GoogleAmazonとしては、Telegramなどの隠れ蓑になることでサービス全体が一部の国(ロシアや中東諸国)でアクセス禁止になるのは不利益が大きいと判断したのでしょう。

米陸軍、サイバー防衛競技会を分析。対面コミュニケーションが成績と強い逆相関と確認される。

米陸軍の研究者達「最強のサイバーチームは非社交的なチーム」

arstechnica.com

米のサイバー防衛の学生競技 MACCDCでの、メンバー間のコミュニケーションと結果を、陸軍研究所が調べた結果、強い相関は次の2つの項目にみられたそうです。

  • リーダーシップ
  • 対面コミュニケーション

ただし、リーダーシップは正の相関(強いリーダーシップがあるチームほど成績が良い)だったのに対して、対面コミュニケーションは負の相関(頻繁なほど成績が悪い)でした。

記事終盤にもあるように、これは他の分野でもみられるものです。実時間でチームによる活動をするもの(スポーツや音楽あたりがメジャーでしょうか)であれば、多くは共通すると思います。

しかし、それが改めて数値的に確認されたのは、一応の意義はあるかな、と思います。ちなみに、対面コミュニケーションは、参加者が身に付けたバッジで競技中の顔の様子を撮影、分析したそうです。

マイニング・マルウェアの標的は2018年からコンテナにも拡大

CoinMiner攻撃キャンペーン、DockerやKubernetes経由でクラウド

www.bleepingcomputer.com

今やマルウェアの新たなスタンダードになった感のある暗号通貨マイニングですが、その標的はPCやサーバ、スマートフォンに加えて、仮想コンテナに向かっています。

その中には、定番のパスワード攻撃(総当たりや辞書攻撃など)もありますが、中にはKubernetesに対して認証なしにコマンドを送信するというタイプの攻撃も見られるそうです。

もちろん、本来は認証なしにコマンドが通ることはないはずです。しかし、Kubeletがインターネットに露出している場合(Kubeletに含まれるノードへのアクセスが許可されている場合)、そのAPIが認証なしで動くバックドアになってしまうようです。

セキュリティ研究者たちも、とりあえず数十の危険なノードを発見していますが、おそらくは氷山の一角であり、他にも危険なノードが存在すると考えられます。悪意ある者は密かに攻撃を行っているはずですので、Kubernetesで管理をしている人は、ぜひともKubeletがネットに露出していないか、もししていれば、マイニングを含めたマルウェアの侵入がないか、確認した方がよさそうです。

Chrome向けのゼロ幅文字チェッカー拡張が登場

「ゼロ幅文字」による追跡攻撃を検出する、Google Chrome拡張が登場

www.bleepingcomputer.com

Marco Chiappetta氏は、Chrome向けに「Replace zero-width characters with emojis」という拡張を公開しました。ゼロ幅文字を絵文字に置き換える機能をもので、セキュリティ研究者Tom Ross氏の記事を読んで思いついたそうです。

chrome.google.com

ゼロ幅文字(ゼロ幅スペース0x200bなど)は人の目には見えませんが、データとしてはそこに存在します。例えば2種類のゼロ幅文字を0と1とみなして、ユーザ名文字列のビット表現にするとか、もっと単純にIDとすれば、適当な数(IDなら32個(32bit符号なし整数)か、せいぜい64個もあれば通常は十分でしょう)のゼロ幅文字で「見えないユーザ識別子」を表現できます。

たとえば、文章中にこれを入れておけば、「本来秘匿すべき情報を漏らしたのは誰か」が、(コピペした場合は)特定できることになります。簡易型の電子透かしですね。アイデア元の記事では、ゲームに関する隠しておきたい情報が洩れていた時に漏洩元の特定に使われたようです。

なお、ゼロ幅文字は本来はちゃんとした意味(例えばゼロ幅空白なら改行位置の制御)がある文字であり、それを置き換えることで本来の文章が適切に表示されなくなる可能性もありますので、この拡張を使う場合は、そこを意識する必要があります。

チートなど、一部の人が飛びつきそうな情報の肝心な部分(パスコードなど)にゼロ幅文字を入れて公開したら、誰がそれを使ったか一発で分かるかもしれませんね。