プログラミング言語がセキュリティに関してやるべきこと#1

(0) はじめに

(1) 言語で対処可能なセキュリティ問題の一覧

番号ES-BASIC 2020年1月末時点ES-C 2020年1月末時点
01-01配列やポインタアクセスのレンジチェック
01-02不適切なポインタの減算
01-03ポインタアクセス時のアライメントチェック
01-04free後の不適切なアクセスをエラーにできる(use-after-free 脆弱性)
01-05二重freeをエラーにできる(double-free 脆弱性)
01-06メモリリークを発見できる(もしくはGCがあってリークがおきない)
01-07整数からポインタへの変換の禁止(特別な構文でのみ許可するなど)
02-01数値演算のオーバーフローがあった時にエラーにできる(かつ必要に応じてこれを部分的に抑制もできる)
02-02変数値に制約を持たせて、違反した時にエラーにできる○*1△*1
03-01エラー時に、どこでエラーが起きたのか、(最低でも)行単位で指摘できる
03-02どの行を何回実行したのかを報告できる
03-03エラー時にスタックトレースを表示できる
04-01通常実行モードと高速実行モードがあり、それは実行時にユーザが選べる
04-02実行を一時的に中断し、変数などを自由に確認したのちに、再開できる(そういう命令がある or 複数のブレークポイントが設定できる)
04-03キー入力などのアクションによっても、一時的に中断し、変数などを自由に確認したのちに、再開できる
04-04エラー時に、変数値などを自由に確認できる
04-05中断した状態をファイルに保存したり、そこから再開したりできる×
05-01メモリを確保した時に、前のプログラムの実行結果などを不用意に渡さない×
06-01ファジングやテストを支援する機能がある×

(2) 詳細説明


トップ   新規 一覧 単語検索 最終更新   ヘルプ   最終更新のRSS