TIM Labs

先日 GHOST と呼ばれる glibc の脆弱性が発表された。なんでも、「リモートから任意のコードを実行できる可能性がある」らしいではないか。しかも様々なプログラムで利用されているライブラリ部分の問題とあって、影響範囲がとても広い。なかなか厄介なことである。

はて、しかし一体全体どうやってリモートから任意のコードを実行しようというのだろう? 話を聞くに、たかが数バイトの情報を範囲外のメモリに書き込める可能性があるだけだという。実際それだけのことでサーバーの乗っ取りなどできるものなのだろうか。そんなわけで、その疑問に答えるべく、本記事以下の URL で解説されている実際の攻撃方法を若干端折って紹介してみようと思う。

http://www.openwall.com/lists/oss-security/2015/01/27/9

なお、本記事はこの脆弱性そのものに対する緊急度などについて言及するものではないし、実際に攻撃を行うことを推奨するものでもない。くれぐれも攻撃に用いたりしないようご注意願いたい。また、脆弱性そのものに対する適切な対応などについては、専門機関や専門家の指示や勧告に従って欲しい。

今回のあらすじ

SICP3.3.5 Propagation of ConstraintsExercise 3.34 から Exercise 3.37 までサクサク解いていきます。

唸ってる図

今回のあらすじ

SICP3.3.5 Propagation of Constraints をバリバリ読んで Exercise 3.33 まで演習問題を解きます。

テキストにその場でパッチを当てて考察している図

今回のあらすじ

SICP3.3.4 A Simulator for Digital CircuitsRepresenting wires を読んで Exercise 3.32 まで演習問題を解きます。

悩んでる図

皆様、Spec(コードベースの単体、機能、結合テスト)書いてますか? 私はあんまり書いていません。

「テスト書かないとかありえない!」と怒られそうなので一応弁解しておきますが、C0レベルのテストは、そこそこ書いているつもりです。 プロジェクトでカバレッジはXX%以上!(XXの部分は95だったり100!だったりします)という決まりがあるため、書いてます。消極的な理由ですね。

時としてカバレッジを満たすためのテストを書く、という意味の分からない事をしてしまったことは、反省しております。

しかし、C0は所詮C0であり、このレベルのテストをいくら一生懸命書こうが、バグがでるときはでるものなのです。 だからといってC1、C2、またはそれ以上を満たすようなテストを一生懸命かけばバグが無くなるか?という話でもありませんが、バグ発生率が少しは下がるかと思います。

さて、最近お固い業務システムで、そこそこ致命的なバグをやらかしてしまいました。 今後もC0レベルのSpecを書いてて良いのか? という話題がプロジェクト内から湧き上がったので、いろいろ考えてみることとしました。

今回のあらすじ

SICP3.3.4 A Simulator for Digital Circuits を読んで Exercise 3.30 まで演習問題を解きます。

悩んでる図

今回のあらすじ

SICP3.3.3 Representing TablesExercise 3.26Exercise 3.27 を解きます。

悩んでる図

今回のあらすじ

SICP3.3.3 Representing Tables を読んでExercise 3.25まで解きます。

二次元テーブルと戦う前準備の図

これまでのあらすじ

弊社では新入社員の技術的な基礎体力向上を目的として SICP の読書会を一年半程前から毎週行っています。

毎回のまとめは参加者用のMLに流していたのですが、 よくよく考えると後から一覧したり検索したりし辛いので、 今後はこちらにポストしようと思います。

かなりスローペースで進めているため、 一年半経ってようやく3章に突入したところです。

前回は 3.3.2 Representing Queues を読んでExercise 3.21を解き、Exercise 3.22とExercise 3.23は宿題ということにしました。 という訳で宿題の答え合わせをしましょう。

前回までのあらすじ

シェフィの実装を始めた俺達はゲームを快適にプレイする為の機能を作り込んでいる最中。しかしまだやるべき事は山積み......

(※ソースコードはGitHubで公開されておりすぐに遊ぶこともできます)

最近のコメント