19
18

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 5 years have passed since last update.

shellshockのテストスクリプトがUnix的でないので改善してみた。

Last updated at Posted at 2014-10-05

bashのshellshockの件で、脆弱性の有無をテストするスクリプトが出回っていましたが、これは非常にわかりにくいと思いました。

端的にいうとUnix的でないこと、ユーザビリティ的にわかりにくいことが問題だと思いました。

オリジナルコードの問題点

$ env x='() { :;}; echo vulnerable' bash -c "echo this is a test"

出力

vulnerable
this is a test
  • 出力の1行目と2行目の関係がよくわからない。
  • 脆弱性がない場合にも出力が行われる。
  • 出力結果を見たときに、「自分が今使っているbashが脆弱である」と一瞬ではわからない。
  • これを見たユーザが、次に何をすればよいのか(もしくは、何か行動しなければいけないこと)が伝わらない。
  • "this is a test"というメッセージが無意味かつ無駄である。

よりよいテストコード

$ env x='() { :;}; echo this bash is vulnerable' bash -c :

出力

this bash is vulnerable

ポイント

  • 脆弱性がある場合のみ出力が行われ、脆弱性がない場合は何も出力されない。(沈黙は金)
  • メッセージが"this bash is vulnerable" なので意味が明快である。
  • いま脆弱性があることと、bashが問題であることが伝わる。

たった1行のコードだとしても、広く使われるサンプルを提供する場合は、より良いユーザビリティを心がけたいものですね。

19
18
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
19
18

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?