パスワードを忘れた? アカウント作成

henoさんのトモダチの日記。 アナウンス:スラドとOSDNは受け入れ先を募集中です。

13004663 journal
日記

ttの日記: オレオレビットフィールドを作る 4

日記 by tt

人生初のAdvent Calendarをしてみんとしてなんとなく久々に日記など。
C言語 Advent Calendar 2016 の6日目、らしい。

Cの世界にはビットフィールドというのがある。もともとハードウェアレジスタを操作するために作られたと思われるが、今やメモリ削減のために使われている感がある(ex. webkit)。
どうしてこうなったか…というとまあ規格上いろいろと自由度と不自由度がありすぎて、エンディアンとかintの大きさとかによって「実際の」ビットの位置がずれてしまい、移植性のあるコードを書くのがめんどくさいからである。
ハードウェアを触るなんてマシン固有だからどーでもいいじゃん、というのはあるんだが、x86でもx86-64でも動いてほしいとか、ARM BEとARM LEで~とか、いろいろあるのである。

前振りが長くなった。さて本題。

ビットフィールド使えないとなるとレジスタ操作系のコードはこういうのになる
  int reg = MMIO_REG_READ(COMMON_REG_ADDR);
  int busy = (((reg >> STATUS_BIT_POS) & STATUS_BIT_LEN) == STATUS_BUSY);
わかりやすい。というか超べたべただ。

マクロなりなんなりで
  int busy = (extract(reg, STATUS_BIT_POS, STATUS_BIT_LEN) == STATUS_BUSY);
なんて書くのも可能だし、マクロの定義を適度にいじってintのサイズ違いに対処とかもできそうだ。

と、ここまではよく見るんだけど、最近
  extract(reg, STATUS_BIT_POS : STATUS_BIT_LEN)
みたいな書き方があるのを知った。

どーやってるんだろうとおもったら、こういう感じらしい
  # define GETPOS(field) (0 ? field)
  # define GETLEN(field) (1 ? field)
  # extract(reg, field) (((reg)>>GETPOS(field))&((1uGETLEN(field)-1))
そう、三項演算子を使うらしい。

で、これの利点だけど…ハードウェアの仕様書とかではビットフィールドの記述に「:」を使うのは多いため、見た目がわかりやすい、ということ以外にあんまり思い浮かばなかった(笑)。C++はともかく、Cでは三項演算子やラベル名以外で:を使うというのはあんまりないので、他より目立たせることができる、というのもあるだろうか。

あんまり意味がないけど、まあ、面白いのでご紹介、ということで。

12060042 journal
日記

ozumaの日記: ドラス 1

日記 by ozuma

こういう古臭い書体だと、やはり右から左に読みたくなる

12001642 journal
日記

ozumaの日記: AWSのELB(Elastic Load Balancing)は、セキュリティ的に問題ないのか 2

日記 by ozuma

AWS(Amazon Web Service)を個人的にボチボチいじっているのだけど、ELB(Elastic Load Balancing)が結構気持ち悪い。ので今日はその辺のお話。

ELBとはAWSが提供するロードバランサで、オートスケールと組み合わせることにより、トラヒック増大時にも自動的にスケールアップしてくれるというのが売りとなっている。内部的な話をすると、ひとつのELBにはひとつのFQDNが割り当てられ、スケールする際にはこのFQDNのIPアドレス(Aレコード)が変わるという若干トリッキーな動きをする。そのため、ユーザはIPアドレスではなく、常にFQDNでアクセスするようにしないといけない。(この他、配下のサーバのヘルスチェックもきめ細かくできるとか、Route 53の合わせ技が強力……とか色々あるけど本稿では関係ないので省略)。

さてここで問題は、スケールしてELBのIPアドレスが変わった際、付け替え前の古いIPアドレスが、どのくらいのインターバルを置いて別の利用者へ使い回されるのかが公式にアナウンスされていないということだ。
この場合、クライアント側は「正しい」宛先に接続しているつもりなのに、その間にスケールしていてIPアドレスが変わっており、実際の接続先は全く赤の他人のサーバ、という事態が想定される。その赤の他人が、悪意を持った攻撃者であったなら……。httpならば、例えばリクエストヘッダからCookieが盗まれてしまったり、プロキシサーバを挟んでMan-in-the-Middleされることで不正なJavaScriptをHTMLのbodyに埋め込まれる……というような攻撃が十分考えられる。

で、そんなこと本当にあるの? という話になるが、これは実際に「なんか、Hostヘッダ見ると、明らかによそ宛てぽいのが来るんだけど……」的な問い合わせがAWSのサポートフォーラムに定期的に上がっていることから、「ある」と見て良いだろう。(実は、私自身はまだ確認できていないのだが……なのでこの日記もまだ、つぶやき&曖昧&妄想レベルと割り切って読んでください。)

http://www.greenhills.co.uk/2011/06/22/elb-traffic-for-the-wrong-host.html
↑よそ宛ての通信がELB配下のEC2で観測された、というお話。似た事例がフォーラムにも上がっていて、Amazonの担当者から「古いIPを掴みっぱなしの人からの、そういうアクセスはどうしてもありますね」という回答も出ている。

ELBは元々TTLが60秒となっているので、まともなクライアントならば古いIPアドレスをいつまでも掴みっぱなしということはまず無い。(まぁ、AWSが60秒待たずに別の利用者にIPアドレスを使い回すとダメなんだけど、さすがにそこまでは短くないだろう)。
が、いくつかの歴史的理由から、DNSキャッシュを持って古いIPアドレスをいつまでも使い回すクライアントの実装はそれなりにまだまだある。というのが現実である。

このような実装の代表例の一つは、Javaアプリによるアクセスだろう。昔のJavaVMでは(どのくらい昔かは忘れた)、sun.net.inetaddr.ttlという値が"-1"となっており、これは「一度名前解決をしてIPアドレスが掴めたら、二度と名前解決をしないでそのIPアドレスを使い続ける」という極悪モードで動作する。これは、ELB利用の際に明らかに問題となる。

もう一つ、DNSサーバへの攻撃を防ぐためにDNS Pinningという防御手法が流行ったことがあった。(参考:クラウド時代はDNS Pinningが落とし穴になる)。
これは、攻撃者が異様に小さいTTLでDNSに毒入れをすることで、Same Origin Policyを迂回してJavaScript等を送り込もうという攻撃への対策手法。この手法の根本的な前提は、「一般的に、頻繁にサーバのIPアドレスがコロコロ変わるなんてことは普通は無いはず」だから、名前解決をしていったん掴んだIPアドレスはしばらく使い回そう……という実装になっている。
が、この「コロコロIPアドレスが変わることは普通は無い」というのは、AWSのELB登場により前提が崩れてしまった。ので、この辺は再考の必要がある。

で、ここまで書いて思ったけど、他人宛ての通信が来ちゃうELBは、グローバル側ではなくむしろプライベート側の「Internal ELB」の方が多いかもしれないな。そっちの方が、レガシーな連携アプリとか動いていてそうだし。

まだ構想段階なので、とりあえず殴り書き程度のメモでした。何かこの件について言いたいことある方、ひっそりとコメント頂けると嬉しいです。

11978165 journal
日記

ozumaの日記: ウイルスバスター Corp. 11.0が、サポート切れのPHP 5.3系を入れてくる

日記 by ozuma

ウイルスバスター コーポレートエディションの最新版(11.0)を入れると、一緒にPHP 5.3.27を入れてくるのだが……
http://esupport.trendmicro.com/solution/ja-jp/1105384.aspx

インストールすると、以下のモジュールが同時にインストールされます。古いバージョンがインストール済みの場合、自動的にアップグレードされるため、他のシステムで利用中の場合はご注意ください。

PHP 5.3.27 (IIS、Apache共に同じバージョン)

えええっ、PHP 5.3系って、もうEOLなんだけど……!?
http://php.net/supported-versions.php
セキュリティの専門会社がそんなことしててだいじょうぶ? ってちょっとビックリしてる。

……いやいやいや、トレンドマイクロ様のことだから、きっとこれは独自に魔改造されたPHP 5.3.27なのだろう。
今後、PHP 5.3系に何か致命的な脆弱性が見つかっても、独自パッチを作ってリリースしてやる! という宣言に違いない。つるかめつるかめ

11927540 journal
日記

ozumaの日記: wu-ftpdってもう公式サイトが無い? 2

日記 by ozuma

ちょっと昔の調べ物をしていて、wu-ftpdの公式サイトを訪れたら……接続できず。
http://www.wu-ftpd.org/

む、もはや公式サイト自体が終了して完全EOLなのか?
その辺をきちんと言及しているところが無いので、なんとなくモヤっとしています。どっかで終了宣言出てたかしら

11839156 journal
apache

ozumaの日記: IPアドレスでのアクセスブロックはDocumentRootを/tmp? 8

日記 by ozuma

またもや久々の日記更新だ。

Apache HTTP Serverで、「FQDNではなくIPアドレスでアクセスされた際(つまりHostヘッダがIPアドレスの場合)には、403 Forbiddenを返したいなぁ」というのは時折ある。まぁIPアドレス直で来るようなやつは、だいたい悪いやつらのスキャンだからね……。
で、普通はVirtualHostのanyの方でDenyしておけば良いよね。

<VirtualHost *:80>
    ServerName any
    <Location />
        Order Allow,Deny
        Deny from all
    </Location>
</VirtualHost>

<VirtualHost *:80>
    ServerName hogehoge.example.com
    ...
    ...
</VirtualHost>

しかしちょっとググってみると、次のようなびっくり仰天の設定例があちこちで紹介されていることに気がついた。

<VirtualHost *:80>
    ServerName any
    DocumentRoot /tmp
</VirtualHost>

「IPアドレス直でのアクセスをブロックするには、このようにDocumentRootを/tmpにしましょう」というのがあっちこちのブログで拡散されているのだ。マジです。
https://www.google.co.jp/search?q=%22DocumentRoot+%2Ftmp%22&hl=ja

いったいどこの誰がこんな設定を広めたんだろ? まさに、悪貨は良貨を駆逐するなぁ。

確かに/tmpはフツーのApacheの設定ならば403 Forbiddenになるけど、そういう問題じゃないだろと。
ちょっとびっくりした年の瀬でした。おしまい

10836488 journal
日記

ozumaの日記: 読み取り専用のExplorerが欲しい 4

日記 by ozuma

4月からバッサリと環境が変わりまして、新しいところで働いております。

今は部内のファイルサーバ内の様々なドキュメントをひたすら読んでシゴト内容を把握中なのですが、これが結構気を使う。
というのも、ExcelやWordの書類が多いのでそれをPCで開いて見るのですが、Ctrl+Sが手癖になっているためうっかり上書きしてしまうのが怖い。そのため読み取り専用で開きたいのですが、これが一筋縄では行かないのですな。

実はMicrosoft Officeはエクスプローラ上から「Shiftキーを押しながら右クリック」すると、「読み取り専用で開く」というメニューが出るというテクがあります。
が、このテクには続きがあって、「しかしOfficeのバグにより、これが実は読み取り専用ではなく普通に開いてしまう」というオチが付いています。んなアホな、と思うでしょうがこれは本当です。というかマイクロソフト、こんな明確なバグさっさと直せよって感じなんですが。。。
*参考リンク:右クリックメニュー「読み取り専用で開く」を表示する(Excel & Word) - 無題

レジストリの設定値がおかしいだけなので自分で直そうと思えば直せるのですが、んー、しかし新しい環境でいきなりレジストリいじって、PC起動しなくなったら怖いですよね。まぁそんなに害がある場所じゃないから大丈夫だろうけど。。。

で、じゃぁ手元のPCにファイルをコピーして閲覧すればいいじゃんって話になるのですが。
でもファイルサーバからディレクトリごとコピーするとサイズがでかすぎるし、それにヘタにファイルサーバ上でファイル操作して、ファイルサーバ上のディレクトリをどこかに「落っことし」ちゃったり削除しちゃったりの操作ミスすると怖いなぁ……と毎日思ってヒヤヒヤしている次第。

なんつーか、「完全に読み取り専用のエクスプローラと、その中のファイルをダブルクリックして起動したOfficeも読み取り専用」みたいなのできないもんですかねぇ。
\\IPアドレス\... とかのファイルサーバに繋ぐときは、そういうモードがあると便利だと思うんだけどな。UNIXで言う、mount -r したいですね。

10557691 journal
日記

ozumaの日記: 読書感想:笠原利香「ハッカーと呼ばれた青年たち」 3

日記 by ozuma

古本屋で手に入れてきたので読んでいる。
笠原利香「ハッカーと呼ばれた青年たち」

去年のアタマくらいまでは、ふ抜けてしまって、セキュリティやhack系の話題からすっかり離れてしまっていた。
しかし、一応本職(?)はセキュリティ系のおしごとをしている私。やっぱり、もうちっと知識を広げないとなァ……と心を入れ替えて、最近はまたセキュリティ絡みのお勉強から読み物までいろいろやっている。(ちなみに勉強会も細々とやっております、次回は2月22日の「Security Casual Talks 2014#1」。宣伝。)
これはそんな中、発掘した一冊。

この本の著者は、ギョーカイでは有名なハッカージャーナリスト(とでも呼ぶべきか?)の笠原氏。そして出版社はジャストシステム、という面白い組み合わせだ。1996年の本なので内容はかなり古いんだけど、レッドボックス(電話のタダガケ機)とか2600の怪文書とか、その辺の話が当事者への直接取材で書かれておりとっても面白い。文章も読みやすいし、アメリカのハッカー文化を語る上で、日本語でこれだけ読める本は他にはそうそう無いだろう。

ちなみに古本オヤジ的なネタとしては、最終ページに著者写真が載っているのだけど、帯付きを入手すると帯にはその高解像度版がプリントされている。そのため、帯付きを入手できるならそちらの方が良い。

10409565 journal
日記

ozumaの日記: Webで無料で読めるセキュリティ関連の文書 2

日記 by ozuma

最近は大変にITセキュリティ流行りのようなので、ちょっくらまとめてみた。
無料で読める情報セキュリティ文書をまとめてみた

もうちっとなんかあるかなぁ。バッファオーバーフローとかの、アセンブラ寄りのセキュアプログラミングの教材があれば加えてみたいところ。あとはマルウェア解析とかのバイナリアン話か。

10142762 journal
日記

ozumaの日記: Apache Magica攻撃もルーマニアっぽいですよ 2

日記 by ozuma

徳丸せんせーのところで紹介されていたCGI版PHPへのアタックが、うちのさくらのVPSのApacheにも来ていたのでちょっとまとめてみた。
CGI版PHPへのApache Magica攻撃の観察

自分で言うのもアレですが、まだこれ追っている人はほとんどいないようなのでそれなりに役立つ文書かなと。
しかしC&Cサーバの観察もやってみたいのですが、色々とブラックな部分が強すぎてなかなか近寄れませんね。とりあえず今回はFQDNが分かったので、takedownにそなえて定期的にIPアドレスが変わっているらしい? というのを調べておくか。

ちなみに最近はずっとセキュリティエンジニアっぽい活動していますが、なかなか道が開けません。行き詰まり感あるなー。
実はどうしても行きたい会社があってちょっと活動していましたが、残念ながら上手くいきませんでした。でもめげずに頑張ります。

typodupeerror

最初のバージョンは常に打ち捨てられる。

読み込み中...