GAIO CLUB

2024年01月30日

【第18回】脆弱性とガイドラインの関係

静的解析/コンパイラ技術
いまさら聞けない静的解析/コンパイラ技術
前回、CWEが提供するCERT CガイドラインのVIEWのお話をしましたが、Top 25に現れる脆弱性とCERT C他のコーディングガイドラインの対応付けをしてみます。

CERT C

CERT Cについては、CWEに関連情報の記載がありますのでそれに従ってルール番号を埋めました。さらに、2008年版CERT Cが参照している情報もありましたので、その情報を赤色で追加しています(最新のCERT Cでは削除されているルールも含まれます)。
CERT C
脆弱性とルールは1対1になりません。空欄もあります。そもそもC言語プログラムの世界ではない脆弱性も含まれるので仕方ありません。詳しく見ると分かりますが、ちょっと無理そうな対応付けもあります。

逆にもっと当てはまりそうなものもあり、例えば、CWE-400にはMEM11-C(ヒープ領域が無限にあると想定しない)あたりが該当しそうです。でも、そこはCWEサイトの情報を尊重し外してあります。

MISRAとIPA/ESCR

CWEサイトにはCERT C以外のC言語ガイドライン情報は無いのですが、IPAのサイトに他のガイドライン等との対応情報があります。それをもとに、MISRAとESCRのルール対応も行いました。
CWE、CERT C、IPA、それぞれが示すガイドラインとの関連付けには違いがありますが、どちらが正しいとか誤りとかという事にはならないと思います。

CWEの情報はセキュリティインシデントやインシデントにつながる弱点を集めており、具体的なソース記述は多くありません。これらの情報から攻撃の可能性等を考えて危険なコーディングを想定した場合に、必ずしも同じコーディングガイドラインにはたどり着きません。

例は良くないですが、私が個人的に作っている各コーディングガイドラインの対応表があるのですが、本コラムで挙げたTop25の脆弱性をあてはめてみたところ、ルールを書き込めたCWE-IDは3つだけでした。想像力が足りないようです。
コーディングガイドラインと繋がりにくい脆弱性ですが、各情報サイトでは具体的なソースプログラムを公開しているルールもあるので、次回からそれらを参考に脆弱性のあるプログラムについて考えてみようと思います。

筆者紹介

浅野 昌尚(あさの まさなお)

ガイオ・テクノロジー株式会社

開発1部 QTXグループ

1980年代から30年以上にわたり汎用構造のCコンパイラ開発に従事し、その間に8ビットマイコンからRISC・VLIW・画像処理プロセッサまで、さまざまなCPU向けのクロスCコンパイラを開発。

人気のコラム

最新のコラム