タグ

ブックマーク / ya.maya.st (124)

  • bash の危険な算術式 - どさにっき

    ■ bash の危険な算術式 _ 使ってる人がいちばん多いだろうからタイトルでは bash としてるけど、ここで取り上げることは zsh および ksh 一族(家 ksh、pdksh、mksh)にも該当する。ash、dash などでは該当しない。 _ 以下のシェルスクリプトには脆弱性がある。わかるだろうか。 #!/bin/bash # "品目,単価,個数" の形式の CSV を読んで、"品目,合計金額" の形式で出力する csv="foo.csv" while IFS=, read item price num; do echo "$item,$((price*num))" done < "$csv" これ、細工された CSV ファイルをわせることで、任意コードの実行ができてしまう。数ある脆弱性の中でもとくにヤバいやつだ。どこが穴なのかというと、タイトルにもあるとおり算術式なのだが、し

  • どさにっき

    ■ KnotDNS _ 昨年の IW2018 の資料が公開されたようで。 _ 自分は Knot DNS の話をしたですよ。DNSSEC やりたいけどあんなの運用まわらん、とか、Let's Encrypt で DNS 認証させたいけど自動化できなくてめんどくさい、とか言ってる人いればぜひ Knot を使ってみてくださいませ。自動化できるよ。まあ、BIND でできないわけじゃないけど。いきない Knot に乗り換えるのが怖くても、資料にあるように、BIND やら NSD やら使い慣れたものを前段、後段に置いて三段構成にすれば、Knot をほとんど意識せず、これまでとほとんど変わらない感覚で自動化できるよ。 _ 資料に書こうか迷ったけど結局やめておいたネタ。 _ 資料では Let's Encrypt の dns-01 認証による証明書取得を自動化する方法について触れてるけど、そうはいってもうちの

    n2s
    n2s 2019/03/22
    Knot DNS / 「_acme-challenge.example.com. IN NS hoge.exmaple.com.」なんと、これをNSレコードにして外部DNSとかに飛ばしてもいいのか / ああ、#付きURLへはぶくまできなくなったんだなぁ。
  • 1.1.1.1 どさにっき

    ■ 1.1.1.1 _ NANOG で話題になってるんだけど、どうやら cloudflare が 1.1.1.1 と 1.0.0.1 というおそろしいアドレスで public dns を始めようとしているっぽい。 % dig +noall +ans 1.1.1.1.in-addr.arpa ptr @1.1.1.1 1.1.1.1.in-addr.arpa. 1735 IN PTR one.cloudflare-dns.com. 今日の夕方ごろは応答に2秒とかかかってたけど、夜になってからは 10ms 以内で返ってくるようになった。anycast への組み込みが完了したのかな? _ で、なんで cloudflare なの? 1.1.1.0/24 は 常時かなりのトラフィックが流れていて汚れてるからどっかに割り振りはしないで研究やら何やらの用途のために予約するとか言ってなかったっけ? いちお

    n2s
    n2s 2018/04/01
  • どさにっき

    ■ root KSK ロールオーバー _ 新聞はそっち方面の専門家でない人にもニュースを届ける必要があるので、難しい内容も噛み砕いて説明する必要があって、その結果まわりくどい説明になっちゃうことがあるのは理解している。事情はわかってるので、ふだんはそういう記事を見つけても記者さん苦心したんだろうな、とあたたかい目で見るようにしている。が、いくらなんでも これはひどい。噛み砕いて説明するのに苦心したのはすごくよく伝わってくる。しかしその挑戦にもかかわらず素人さんが理解できる内容になっているとは到底思えないし、わかりやすい説明のために専門用語を使っていないため、そっち方面を理解している人に対してさえ意味不明。この記事の内容を事前に知っていた人(=記事を読む必要がない人)が何度か読み直して「ああ、あのことか」と気がつくのがやっと。誰に対しても存在する価値のない記事になっちゃってる。もうすこし何と

    n2s
    n2s 2017/07/25
  • SSH のホスト鍵検証 - どさにっき

    ■ SSH のホスト鍵検証 _ 子供のころ遊んだよね、忍者ごっこ。「アイコトバをいえ! やま!」「かわ!」 _ これ、セキュリティ的に重要な要素なんだけど、みんな忘れちゃったのか無視してるんだか。他人に知られてはならない重要な情報を伝達するにあたっては、まず相手が味方であることの確認からはじめなければならない。忍者の合言葉というのは、その味方の確認なわけだ。相手確認をサボって来情報を伝えるべきでない相手に伝えてしまったら暗号化する意味がない。オレオレ SSL がダメなのは、この確認ができないから。そして、SSL だけではなく、SSH でも当然接続先の確認は必須である。 _ この SSH の接続先検証に関するオプションが StrictHostKeyChecking。これを no にする(検証しない)というのは、 SSL でいえば接続先の証明書を検証しない(不正な証明書でも気にせず接続する)

    n2s
    n2s 2017/04/07
  • サブドメイン管理者が親ドメインの SSL 証明書を取得する:どさにっき

    ■ サブドメイン管理者が親ドメインの SSL 証明書を取得する _ 中国最大級の認証局「WoSign」がニセの証明書を発行していたことが判明。サブドメインの管理権限がある人が親ドメインの SSL 証明書が取得できちゃったんだって。この問題、他の CA でもあるんだよね、実は。 _ 具体的に言うと Let's Encrypt がそれ。 この記述。example.com ドメインの所有者かどうか判断する方法のひとつとして、_acme-challenge.example.com の TXT レコードに指定のトークンを記述せよ、というのが挙げられている。ということで、ユーザが自由にサブドメインを作れるサービス上で _acme-challenge というサブドメインを作成すれば親ドメインの証明書を発行してもらえる。今回の WoSign の件のように任意のサブドメインでいけるわけではなく、ラベルにアン

    n2s
    n2s 2016/09/10
    「ユーザが自由にサブドメインを作れるサービス上で _acme-challenge というサブドメインを作成すれば親ドメインの証明書を発行してもらえる」
  • nginx: どさにっき

    2007年6月3日(日) ■ 生きてます _ サボりすぎだ > わし ■ :se nohls _ Linux の一部のディストリビューションでは vi の名前で vim がインストールされている。カーネル以外はてきとーに寄せ集めただけの Linux ではそれはしかたないことだが、素の vi にはない vim で拡張された機能が標準で有効になった設定になっているというのはどうになならんのか。とくに、hlsearch が有効になってるのは、vi の正しい使い方を知らん人間の仕業としか思えない。 _ hlsearch ってのは、検索パターンにマッチした単語をハイライトして表示してくれるオプション。でも、探してる単語がすぐわかるから便利だよね、と思うのは vi を vi として使っていない人。検索のたびにいちいちめんどくさいダイアログが出てくるようなエディタのようにしか vi を使っていない。 _

    n2s
    n2s 2016/05/10
    2007年のこの評価を最後に、やまやさんは8年間一切nginxについて言及していない。ある意味一貫していてすごい。
  • CVE-2015-7547 - どさにっき

    CVE-2015-7547 _ glibc の getaddrinfo() にリモートから任意コード実行の穴とな。 _ JPRS からの重複に、 glibcの名前解決ライブラリでは、512バイトを超える応答をUDPで取り扱う ための拡張機能であるEDNS0がデフォルトで有効にされておらず、通常の場 合クライアントがフルリゾルバー(キャッシュDNSサーバー)から512バイ トを超えるDNS応答をUDPで受け取ることはありません(*1)。 (*1)対象となる機器の/etc/resolv.confでoptions edns0が設定されてい た場合、削除またはコメントアウトする必要があります とあるんだけど、うーん。以下、Linux で options edns0 を有効にした状態のクエリのパケットキャプチャ。 12:52:31.163096 IP 127.0.0.1.47948 > 127.

  • どさにっき サブシェルはイヤだ

    cat file | while IFS= read -r line; do r="$line $r" done echo -n "$r" _ これ、うまく動きそうだけど、動かない。なぜなら、| によって while ループがサブシェルで実行されるため、その中で定義した変数 $r をループの外で参照できないから。 _ この場合、こうすれば回避できる。

    n2s
    n2s 2015/08/21
  • ssh ポートフォワード - どさにっき

    ■ ssh ポートフォワード _ sh スクリプトの中から、ポート転送しないとたどりつけないホストにアクセスしたい。ただし、常時ポートフォワードしてるわけではないので、スクリプトの中でポート転送を開始し、終了もスクリプトの中で面倒見る必要がある。 _ 教科書的なやりかたはこう。 _ ssh をバックグラウンドで起動し(-f)、リモートホストでは何もコマンドを実行しない(-N)。が、バックグラウンドにいってしまったプロセスを止めるために ps | grep でいくつも動いてる(かもしれない) ssh のコマンドの中からスクリプトで起動したものを特定して kill するという処理が必要になる。めんどくさい。pid をどっかのファイルに吐き出してくれる、とかいうオプションがあればいいんだけど、そういうものはなさげ。 _ じゃあどうしよう。

    n2s
    n2s 2015/06/25
  • 大量のメールを別のメールボックスに移動する: どさにっき

    _ なんとなくノリで実装しちゃったけど、たぶん使う機会はないんじゃないかな…。 _ markdown の処理には ruby の redcarpet を使ってる。以下、こちらで勝手に機能を拡張したものの一覧。 見出しの id 生成 素の redcarpet でも :with_toc_data => true で呼べば生成してくれるけど、ぶっちゃけ使いものにならないので自前で実装 見出し行の末尾に {#hoge} があれば <h1 id="hoge"> として id 生成 (PHP Markdown extraの拡張機能) {#hoge} ではなく (&hoge) でも可(独自拡張) 指定されてなければ自動生成 URI 書き換え urn:ietf:... な URN を http://tools.ietf.org/... な URL に変換 urn:isbn:... な URN を http:

    n2s
    n2s 2015/06/09
    ちょっとオフトピだけど「万の単位のメールを移動すると5分ぐらい固まる」「たいていちゃんと処理されるけどたまにクラッシュする」ぬう、そういう問題が。
  • URL fragments: どさにっき

    2015年5月12日(火) ■ Dropbox on FreeBSD _ 動きません。 _ freebsd の linux エミュレーションを使っても、dropbox が利用している inotify のシステムコールがサポートされてないので、やっぱり動かない。リアルタイムに同期されなくてもいいのであれば、 公開されている API を使ったツールで操作できるけど、それだったら dropbox を使わずにふつーに rsync で同期すれば十分であまりうれしくない。 _ ムリヤリ動かす方法。 bhyve (じゃなくてもいいけど)で linux の guest vm を作る その上で dropbox を動かす Dropbox の同期対象ディレクトリを NFS で共有する うん、母艦が freebsd だから freebsd 上で動いてることにしよう。これだけのために Linux な環境を作るのであ

    n2s
    n2s 2015/05/19
  • ファイルアップローダーのセキュリティ: どさにっき

    2015年5月2日(土) ■ ファイルアップローダーのセキュリティ _ 徳丸さんとこ。 Apacheの多重拡張子にご用心。 ファイルのアップロードは、実は簡単ではないととらえるべきだと思います。 アップロード自体は難しくもなんともないよね。アップロードしたファイルをダウンロードさせるのであれば気をつけなきゃいけないことはたくさんあるけど。 _ ファイルをダウンロードさせるためのスクリプトなのであれば、アップロードだけじゃなくてダウンロードの部分まで面倒を見るべき、つまり推奨されてるとおり、対策の (3)(4) が正道だと思う。 _ が、たとえば、プログラムを1ビットも書かなくても、WebDAV という仕組みを使えばファイルのアップロードやら削除やらは好き放題できる。でも、DAV でもファイルのダウンロードは素の HTTP の GET を使うので、DAV が有効な場所でスクリプトが実行可能に

  • BHyVe のあるくらし : どさにっき

    2015年4月10日(金) ■ BHyVe のあるくらし _ うちの自宅サーバとして使っているマシン、いまだに FreeBSD8 でかなりヤバい。8 系の最新であればまだいちおうサポート期間内だけどもうすぐ切れる。うちはもっと古いので EoL はとっくに過ぎてる。いいかげんなんとかしないとなー、とはずっと思ってたんだけど、やっと重い腰を上げてリプレース作業に入ってみる。 _ これまで Celeron 900MHz、メモリ 1GB、ディスク 40GB という超貧弱な構成だったのが、新しいマシンでは Celeron 1.5GHz、メモリ 2GB、ディスク 300GB にパワーアップ。世間的にはこれでも貧弱だが。まあ、3万円で買ったノート PC だからね。とはいえ、ディスク容量が格段に増えたのがうれしい。ちうことで、あれだ、仮想マシンをいじれるようにしよう。Xen や KVM などではなく、Fr

  • apache 多重拡張子 - どさにっき

    2015年2月23日(月) ■ apache 多重拡張子 _ mod_mime の多重拡張子の扱いって常識じゃなかったのか。apache をインストールしたことある人ならば、manual/hoge.html.ja という二重拡張子を持つファイルが存在してることはドキュメントを読まなくても知ってるはずだと思うんだけどなぁ。AddHandler/AddType/AddCharset/AddLanguage/AddEncoding/AddOutputFilter はいずれも拡張子によって挙動を変えるわけで、単一の拡張子しか扱えないとすればこれらのディレクティブは排他にしか使えなくて困るじゃないか。 _ で、これはセキュリティの懸念があるから使うなというのがよくわからん。hoge.php.jpg というファイルをアップロードされて、それをそのままダウンロードしたらそいつが PHP スクリプトとして

    n2s
    n2s 2015/02/24
    <del>SetHandlerに何か嫌な思い出でもあるのかな</del>bakとかで終わるファイルはdenyする設定も必須だけど、らちがあかないのでいっそ*.*.*は全部denyしろと。
  • Postfix 3.0: どさにっき

    2015年2月10日(火) ■ Postfix 3.0 _ 出た。メジャーバージョンアップ。前とそんなに大きく変わってるような感じはしないんで、順調に 2.12 になるんかな、と思ったら、先月末に 次は 3.0 になるよと宣言され、そこから10日ほどでリリース。開発版スナップショットの方も 3.1-20150208 になってる。 _ 追加された機能で大きなものといえば UTF8 な国際化メールアドレスの対応ぐらいじゃないかなぁ。当面は誰も使わないと思うけど。 _ ほかに、LDAP やら PCRE やらの外部テーブルへの問い合わせライブラリをコンパイル時に指定するのではなく、後から動的にロードできるようになったとか(debian パッケージの独自拡張を家が取り込んだ)、設定ファイルの文法が拡張されて空白や複数の値を取るパラメータの指定がやりやすくなったとか、外部ファイルや DB に対する

    n2s
    n2s 2015/02/11
    非互換性についてはどうなんだろう
  • OCN がパスワードの定期変更を求めてる件 - どさにっき

    2014年12月5日(金) ■ 拡張メールアドレス _ これ。 Gmail でも使えるようですが自分は Gmail 使ってないので詳しくは知りません。元々の発祥は qmail だと思います。 いや、sendmail の plussed usersが最初のはず。いつからあった機能かは知らんけど、qmail より古いのはたしか。とくにいじらなくてもデフォルトで有効。sendmail 家の cf だけでなく、昔なつかしい WIDE CF でもサポートされていた由緒正しい機能。 _ plussed という単語が示すとおり、sendmail で拡張部分を示すデリミタは "+" で、postfix でのデフォルトのデリミタと同じ。このことからも、デリミタが "-" の qmail ではなく、sendmail との互換性のために用意された機能であることが推察される。sendmail も postfix

    OCN がパスワードの定期変更を求めてる件 - どさにっき
  • どさにっき

    2014年11月21日(金) ■ 逆引き shellschock _ きのうの dnsops BoF で発表してきました。 資料置いときます。 _ スライドに書いてないこと、当日話さなかったことについていくつか補足。 こういう危険な文字をリゾルバがどのように扱うべきかの規定は、探したかぎりでは見つからなかった(たぶんどこにも規定されてないと思うんだけど確証はない) BIND8 のコードは 4.9.7 にバックポートされ、BIND4 も最終的にはサニタイズ処理するようになった つまり、OpenBSD はバックポート以前のコードをずっと保守している OpenBSD については近所のコミッターさんに直接報告済み courier については開発者にメールで報告済み _ OSX や OpenBSD、Windows などのリゾルバが脆弱だとはいえないと思う。glibc など BIND8 由来のコードは

  • couriertcpd is potentially shellshocked - どさにっき

    2014年10月14日(火) ■ couriertcpd is potentially shellshocked _ qmail + bash 穴の続き。前回のあらすじ: qmail って、TCPREMOTEHOST や TCPREMOTEINFO からコード注入できるんじゃね? → できませんでした。 _ この前つついてたのは、ucspi-tcp に含まれる tcpserver だけだったけど、TCPREMOTEHOST/TCPREMOTEINFO を使うのは tcpserver だけじゃない。ということで、調査対象を広げてみた。結果、courier imapd などに含まれる couriertcpd が外部から任意の TCPREMOTEINFO を注入できることを確認した(TCPREMOTEHOST は注入不可)。tcpsvd や tcp-env はどちらも注入不可。 _ courie

  • qmail + Shellshock: どさにっき

    2014年9月24日(水) ■ SSDP _ IW2014 DNS DAYのプログラムが発表されてました。今年も喋ります。お題は IP53B。よろしく。 _ 内容は IP53B に関連するんだけど、持ち時間があまり長くないのと、あくまで "DNS" DAY ということでテーマがそぐわないかもということで、当日に喋らないかもしれないネタを今のうちに投下してみる(余裕があれば喋りたい)。 _ SSDPというプロトコルがあるですよ。UPnP で使われるもの。1900/udp。はい、UDP です。amp 攻撃の踏み台に利用可能。 増幅率はおよそ30倍ぐらい。踏み台になりうるオープンな SSDP サーバは、 全世界で1700万台、国内に65万台も存在している模様。 オープンリゾルバよりも多い。 _ さらに悪いことに、オープンソースの複数の SSDP 実装には、外部から任意コードを注入できる 脆弱性の

    n2s
    n2s 2014/09/30
    SENDERからは不正な記号渡されちゃうけどTCPREMOTEHOST/TCPREMOTEINFO経由はなぜか大丈夫 / postfix:記号や空白文字は "_" に置換される / sendmail:外部からの値を環境変数にセットしない