hogashi.*

日記から何から

ASCIIコード表でZとaの間には記号がある

 ASCII コード表で、大文字 Z と小文字 a の間には [ \ ] ^ _ ` の 6つの記号が含まれている。正規表現[A-z] とか指定してしまうと、アルファベットだけではなくこれらの記号も含まれてしまうことになる。

www.cs.cmu.edu

 なんでこれを見てたかというと、それが原因となった脆弱性shell-quote - npm という npm パッケージで出ていたからなのだった (修正バージョンはすでに出ている) https://nvd.nist.gov/vuln/detail/CVE-2021-42740 。バッククオートが含まれているのでコマンドインジェクションということだった。

 ちなみに bash ではこれで確認できて便利、と思ったけどバックスラッシュが出てなかった。

$ echo {Z..a}
Z [  ] ^ _ ` a

 ASCII コードで大文字にすぐ続けて小文字にしなかったの、 16進数でキリよく 0x41 を A 、 0x61 を a にしたかったからなんだろうか……とか考えていた。
 (追記) 1ビットだけ変えれば大文字小文字を変換できて便利ということかもと教えてもらった、なるほど