TIM Labs

今回のあらすじ

SICP3.4.2 Mechanisms for Controlling ConcurrencyImplementing serializers をバリバリ読んで Exercise 3.47 まで解きます。

正常に動かないサンプル実装を眺める図

今回のあらすじ

SICP3.4.2 Mechanisms for Controlling ConcurrencyComplexity of using multiple shared resources をバリバリ読んで Exercise 3.45 まで解きます。

並列処理のバグを埋め込んでいる図

今回のあらすじ

SICP3.4 Concurrency: Time Is of the Essence から Exercise 3.42 までバリバリ読み解きます。

あーでもなくこーでもないと悩んでる図

先日 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 を解きます。

悩んでる図

最近のコメント