knqyf263's blog

自分のためのメモとして残しておくためのブログ。

SAD DNSのICMP rate limitを用いたサイドチャネル攻撃について

脆弱性ネタは人気がないことが過去の傾向から明らかですが、自分が震えるほど感動したので忘れないためにも気合い入れて大作を書きました。 要約 背景 SAD DNSの解説 全体像 UDPのソースポートについて ICMP rate limit per-IP rate limit global rate limit…

Semantic Versioningの闇

今回も誰も興味ないシリーズなので今まで書いてこなかったのですが、Semantic Versioningに関して幻想を抱いている人がいる可能性があり、そういう方にどうしても現実を知っておいて欲しかったので書きました。3行要約(と可能なら余談)だけでも読んでいた…

CVE-2020-15157 (ContainerDrip) を試す

Write-up公開直後に試してたんですが、諸事情で公開を待っていたやつです(後述)。 概要 9, 10月と専業主婦をやっていてしばらく今日の献立しか頭になかったのでリハビリがてら簡単そうな脆弱性を触ってみました。 ContainerDripという名前から想像されるよ…

Berkeley DB (Hash) の実装

普段あまりこういう誰の役に立つのか分からない記事は書かないのですが、解析をするまでの背景がOSSに関するとても良い話なので重い腰を上げて書きました。 概要 古のアプリケーション組み込み型のデータベースとしてBerkeley DBがあります。元々はカリフォ…

OSSエンジニアを1年やってみた所感

最近脆弱性の話とか本業と一切関係ないことを書いていたので、今回は本業に関する話です。 2019/08/01にOpen Source Engineerという肩書になってから既に1年が経過しました。そういうポジションの人はまだ日本では少ないんじゃないのかなと思ったので何か参…

Node.jsでプロトタイプ汚染後に任意コード実行まで繋げた事例

概要 前回Node.jsのプロトタイプ汚染を起こすためのバイパス方法について記事にしました。 knqyf263.hatenablog.com プロトタイプ汚染後に何が出来るのか、ということについては基本的にアプリケーション依存なのであまり話題になることは少ないです。 自分…

__proto__の除去でNode.jsのプロトタイプ汚染を防げないケース

前提 Node.jsのプロトタイプ汚染について書いているのですが、プロトタイプの説明(prototype と __proto__ の関係とか)を定期的に見直さないと綺麗サッパリ忘れる程度にはNode.js触っていないので、何かおかしいところあればご指摘お願いします。 概要 Nod…

CVE-2020-10749(Kubernetesの脆弱性)のPoCについての解説

少し前ですが、Kubernetesの方から以下の脆弱性が公開されました。 github.com タイトルにはCVE-2020-10749と書きましたが、複数のCNI実装が影響を受ける脆弱性でCVE-2020-10749はcontainernetworking/pluginsにアサインされたものです。他にもCalicoはCVE-2…

CVE-2020-8617のPoCについての解説

概要 BINDの脆弱性であるCVE-2020-8617が公開されました。そのPoCコードを自分で書いてみたので解説しておきます。 GitHub上で公開されているPoCは見つからなかったので世界初か?!と思っていたのですが @shutingrz さんから既にISCのGitLabで公開されてい…

Trivyのアップデート(2019/10 - 2020/04)

噂によると日本でもGWが終わったらしいです。自分は去年のGWにTrivyを開発したので気づけばもう一年経ちました。いい機会なので直近のアップデートをまとめようと思います。 あと会社の評価の時期の前に自分の成果まとめておくかーと思ったのですが(多分も…

Goの1.14以前かつChrome 80以上を使っているとgo tool traceが動かない問題

問題 Goにはtrace機能がありgoroutineの実行状況などを可視化出来ます。具体的にはCPUやメモリを計測するときと同じようにpprofを差し込めば使えます。 defer profile.Start(profile.TraceProfile, profile.ProfilePath(".")).Stop() あとは実行したらtrace.…

Goのpprofがruntime関連の情報しか表示してくれない時の解決方法

問題 Goでpprofを使っていたら以下のようにruntimeの情報しか表示してくれなくなりました。これだとどこがボトルネックなのか分かりません。runtimeのpthread_cond_signalが大きいけどどこから呼ばれているのか分からないし何も分からんという感じです。 解…

イスラエルの良いところ・大変なところ

対象読者 イスラエルに引っ越す可能性があるような人やイスラエル生活に興味がある人向けに少しでも情報提供できればという思いで詳しく書いた記事になります。あくまで住む人対象で観光地とかはあまり触れてないです。それ以外の人はやたら長いだけで読んで…

KubeCon + CloudNativeConにプロポーザル出すときに気をつけたこと

サイボウズさんの記事を読んで、自分も今回プロポーザル出したときに会社の人から貰ったアドバイスをまとめておこうと思いました。というのも、自分の席の隣の人が実際に今回のKubeCon Europe 2020でレビュワーだった人ですし、チームのボスはKubeConのChair…

コミット前後でベンチマークが悪化していたらテストを落とすGoのCI用ツール

本当にただこれがやりたかっただけです。今でも既存のものがあるだろうと思っているのですが、誰も教えてくれなかったのでシュッと作りました。落ち込まないので今からでも教えてくれて良いです! pushしたらコミットの前後でgo test -bench的なことして有意…

stretchr/testify/mockでTable Driven Testしやすいようにmockeryを拡張した

アドベントカレンダー用に書こうと思っていたのですが乗り遅れました。あとあんまり大衆向けの話でもないのでひっそりと公開しておきます。 良いやり方を調べても見つからない時は自分の思いつく最良の方法を公開すると誰か凄い人がやってきてより良いやり方…

GitHub Actionsで支払いのエラーが出る場合

個人のリポジトリでGitHub Actionsを使おうとしたら「Workflows can't be executed on this repository. Please check your payment method or billing status.」と出て使えませんでした。GitHub ActionsはFreeで使えるはずなのに何だろうとは思いつつ、未だ…

curlでdocker pullをする

コンテナレジストリからイメージをpullする時にcurlで行えたら便利なのになと思うことが誰しもあると思います。自分は2ヶ月に1回ぐらいそういう時がやってくるのですが、大体やり方を忘れていて非常に時間を無駄にしていることに気づいてしまったのでメモを…

趣味で作ったソフトウェアが海外企業に買われるまでの話

今回はソフトウェアエンジニアじゃない人や学生にも、ソフトウェアエンジニアという職業には夢があるかもしれないと思ってもらうために書いています。そのため既に詳しい方からすると回りくどい説明も多いと思いますがご容赦下さい。 基本的に記事とかには技…

RedisからOSコマンドを実行する攻撃方法(SLAVEOF編)

はじめに 前回の記事で、誤ってインターネットに開放されたRedisを操作してOSコマンド実行するまでの攻撃方法を説明しました。 knqyf263.hatenablog.com こちらの方法ではCONFIG SETを使っていたのですが、最近コンテナが利用されることが増えたために刺さり…

RedisからOSコマンドを実行する攻撃方法(CONFIG SET編)

概要 Redisを間違ってインターネットに開放してしまっていた場合に、認証がなければ好きなRedisコマンドを実行されてしまいます。この場合に最大どの程度の被害になるのか、というのがセキュリティ界隈の人にも意外と知られていなかったので書いておきます。…

LinuxカーネルをCLionでデバッグする

概要 Linuxカーネルの脆弱性はよく見つかるので、たまにLinuxカーネルのデバッグしたいときがあると思います。printkデバッグでも良いんですが、いちいちビルドするの面倒だし良い感じにステップ実行できれば良いのにと思っていました。 思うだけで何一つ行…

CVE-2019-6467 (BINDのnxdomain-redirectに関する脆弱性)について

概要 今日の朝ぐらいにBINDでCVE-2019-6467の脆弱性が公開されました。最近BINDの脆弱性が出ても時間が取れず調査できていなかったので今回は超速で調査しました。世界で一番早く解析したんじゃないかなと思ってます(未確認)。 CVE-2019-6467はnxdomain-re…

CVE-2018-4407 (OS X Remote Kernel Heap Overflow)を試してみた

MacやiPhone/iPadを簡単にクラッシュさせることが出来るという動画が少し前に話題になっていました。 Video of my PoC for CVE-2018-4407. It crashes any macOS High Sierra or iOS 11 device that is on the same WiFi network. No user interaction requi…

curlで始めるDockerコンテナからの脱出

リアル脱出ゲームやりたいなーと思ってたのでそれっぽいタイトルにしてみましたが、 /var/run/docker.sock をDockerコンテナにマウントするとroot権限相当のことが出来る、という詳しい人なら普通に知ってる話です。 ですが、ただ普通に試しても面白くないし…

goimportsのソースコードを読んでみた

概要 go generate用のツールを作る時にパッケージを自動でimportしたくなったので、goimportsのソースコードを読んでみました。 Goの標準ツールということで凄い技術でやっているんだろうな...と漠然と思っており、自分なんかに理解できるだろうかという不安…

PerlのArchive::Tarの脆弱性(CVE-2018-12015)について調べてみた

概要 少し前ですが、PerlのArchive::Tarモジュールにディレクトリトラバーサルの脆弱性が見つかりました(CVE-2018-12015)。 oss-sec: Perl: CVE-2018-12015: Archive::Tar: directory traversal vulnerability この脆弱性はRedHatのページでCVSSスコア5.4…

DynoRoot (CVE-2018-1111) について調べてみた

DynoRoot (CVE-2018-1111) という脆弱性が公開されていたので調べてみました。 公開された日は時間取れませんでしたが、昨日は少し時間あったので試したりしました。 業務としてやってるわけじゃないので隙間時間にちょっとずつ進めた感じです。 概要 Red Ha…

Drupalの脆弱性調査をするための最高の環境を整えた

Dockerで動かしたDrupalをPhpStormからリモートデバッグ出来るようにした話です。 Drupalって書いてますがPHPのソフトウェア全般に使える話です。 勢いで最高とか言いましたが、さっきドキュメントを読んでいたら以下の方法よりもっと簡単にやれる方法があり…

Drupalgeddon 2(CVE-2018-7600)について調べてみた

少し前に出たDrupalの脆弱性(CVE-2018-7600)ですが、攻撃コードも出たので調査し直しました。 まだ分かっていないところもあるのですが、一旦まとめておきます。 ツッコミ歓迎です。 概要 Drupal は 2018年3月28日 (現地時間) にセキュリティアドバイザリ…