ときどきの雑記帖 RE* (新南口)
How to build Gundam
電車
いつもなら楽に座れる時間帯なのに 結構な密度で人が乗っている電車が来てびっくりしたのだけど、 どうも二つ手前の駅が最寄りの大学の学生さんが(大量に)乗ってきていたっぽい。
翻訳
前回触れた Manual for GNU C に関して翻訳があった。
C
50周年だそうで。 C is 50 years old : programming で見かけたやり取りでちょっと笑った😄
I’ve always thought the naming scheme of C is weird. C99 -> C11 -> C17. What happens when we get back to the 90s? Are they just hoping that C won’t be around by then?
It’s renamed to C+.
then they will be switching to windows style: C98 -> CME -> CXP -> CVista -> C7 -> C8 -> C10
C10のあとどうなる(どうする)の? と思わんでもないけど。
GCC
GCC にrustがという話を聞いて、今サポートされている言語って何があるのだろうと調べたら GCC Front Ends - GNU Project に
Currently the main GCC distribution contains front ends for C (gcc), C++ (g++), Objective C, Fortran, Ada (GNAT), Go, and D.
とあった。 Javaなかったっけ? とこれも調べると
GNU Compiler for Java - Wikipedia
2015年より、新しい開発のアナウンスはなく、製品はメンテナンスモードとなった[1]。 2016年9月30日、GCJはGCCのtrunkから削除された[2][3]。 削除のアナウンスは、GCJを含まないGCC 7.1のリリースとともに行われた[4]。 GCJはGCC 6の一部として残されている。
As of GCC 7, the GCC Java frontend and associated libjava runtime library have been removed from GCC. The information on this page is kept here for reference but only applies to GCC 6 and earlier.
結構前に外されてたんですな(知らなかった)。
CVE-2022-1271
zgrepコマンドで、入力ファイル名を細工することにより任意のファイルを上書きできてしまう脆弱性。実際に悪用するのは難しいが、これはzgrepがシェルスクリプトで書かれており、ファイル名のチェックにsedを使っているため、ファイル名に改行コードを入れるとバグるらしい。https://t.co/DSYc7rGHNu
— 新山祐介 (Yusuke Shinyama) (@mootastic) April 19, 2022
という話、新山さんのこのツイートより前に別方面から知っていて
GNU gzip zgrep ユーティリティの脆弱性(Important: CVE-2022-1271) - security.sios.com
GNU gzip zgrep ユーティリティに任意のファイル書き込みの脆弱性が見つかりました。 攻撃者が選択したファイル名(例えば細工されたファイル名)でzgrepが行われたとき、 攻撃者が選択した任意のファイルに対して攻撃者のコンテンツを上書きすることが出来ます。 この問題はファイル名が2つ以上の改行を含んでいる場合の確認が不十分だったことに由来します。 この攻撃はシステムの任意のファイルに対してリモートから権限の低い攻撃者がzgrepを使えれば行うことが可能です。
改行を含んだファイル名が云々というのが よくわからんなあ(そういうファイルが作れるかどうかという話ではなく) と思っていたのだけど、Hacker Newsのこれを見てようやく納得。
CVE-2022-1271: arbitrary file write vulnerability in GNU gzip’s zgrep utility | Hacker News
This one’s pretty cool, example below per gzip-1.12/tests/zgrep-abuse:
timdoug@box:~/gzip$ ls timdoug@box:~/gzip$ touch z timdoug@box:~/gzip$ echo test | gzip > 'z| p 1s|.*|chosen-content| 1w hacked etouch .\x2fhacked2 d # #' timdoug@box:~/gzip$ zgrep test z* ztest timdoug@box:~/gzip$ ls hack* hacked hacked2 timdoug@box:~/gzip$ cat hacked chosen-content timdoug@box:~/gzip$
「2つ以上の改行」については修正差分見て納得 (「もやもやしたもの」はあるけど)。
diff --git a/zgrep.in b/zgrep.in
index 345dae3..bdf7da2 100644
--- a/zgrep.in
+++ b/zgrep.in
@@ -222,9 +222,13 @@ do
'* | *'&'* | *'\'* | *'|'*)
i=$(printf '%s\n' "$i" |
sed '
- $!N
- $s/[&\|]/\\&/g
- $s/\n/\\n/g
+ :start
+ $!{
+ N
+ b start
+ }
+ s/[&\|]/\\&/g
+ s/\n/\\n/g
');;
esac
sed_script="s|^|$i:|"
とかくこの世は計算さ♪
計算中に表示が出る電卓って味わいがありますよね。私は計算が遅いほど好きです。
— Ryo Mukai (@uCOM80) March 29, 2021
今まで見た中で一番好きなのは、ポータブル機だとPanac S-1、デスクトップ機だとCASIO fx-1です。
この動画はPanac S-1で9x9x9の後に3乗根を計算した様子です。 pic.twitter.com/zByeSnJdPt