Dockerイメージのビルド時にパッケージのインストールに失敗する

微修正を行いながら何度も繰り返しDockerコンテナを作成していると、 aptyumなどでパッケージをインストールする部分で、404エラーが発生し、Dockerイメージのビルドに失敗する場合があります。 これは、Dockerがキャッシュを使用しているためです。 Dockerイメージのビルド時には、Dockerfileの各行の実行結果を保存しており、再度ビルドする際にはキャッシュとしてその結果を再利用します。 次のようにCACHEDという文字列が出力されている箇所では、キャッシュを利用しています。

$ docker compose up -d
...
=> CACHED [3/14] RUN apt update && apt upgrade -y              0.0s
...

そのため、apt updateなどのパッケージ情報を更新するコマンドの実行結果がキャッシュされていると、パッケージ情報が更新されません。 インストールされるパッケージを変更したとき、古いバージョンのパッケージをインストールしようとしてビルドに失敗します。 このような場合は、docker builddocker compose build--no-cacheオプションを付けることで、キャッシュを使用せずにビルドできます。 ビルドが終わったら、改めてコンテナを起動してください。

$ docker compose build --no-cache
$ docker compose up -d

年末のご挨拶

年末ということで、皆さんお正月の準備をされているところでしょうか。*1*2

私たちの会社も年末を迎え、皆さんと同じようにお休みを取ります。そして、来年も新しい年が始まります。

今年は、私たちの会社が創業して間もないこともあり、多くのことに挑戦しなければいけなかった一年でした。 しかし、そんな中でも、私たちは、ビジネスモデルの確立や、サービスの開発、そして、多くのお客様にサービスを提供することができるよう、努力を重ねました。

その結果、新年を迎えることができます。本当にありがとうございます。

今年は、私たちが取り組んださまざまな取り組みが実り、多くのお客様にサービスを提供することができました。そして、私たちは、新しい技術や、新しいアイデアを取り入れながら、サービスをより質の高いものにしていけるよう心がけました。

さらに、今年は、リモートワークを実施しながらも、サービスの開発や、ビジネスの成長に努めました。そして、社員のワークライフバランスを重視しながら、ビジネスを展開していけるよう心がけました。

最後に、皆さんにお願いがあります。来年も、私たちと一緒に、新しいサービスを開発していけるよう、お力を貸していただけると嬉しいです。また、私たちのサービスをご利用いただいたお客様には、心よりお礼申し上げます。 そして、私たちのサービスをより良いものにするために、ご意見やご要望をお寄せいただけると幸いです。

来年も、皆さんと一緒に、私たちの会社を成長させていけるよう、心がけていきます。 また、皆さんとともに、新しいチャレンジをしていけるよう、前向きに取り組んでいきます。

今年も本当にありがとうございました。来年もよろしくお願いいたします。

ChatGPTすげー
ChatGPTすげー2

*1:この記事はChatGPTによって書かれています。

*2:この記事の半分くらいはジョークですが、本当に皆様への感謝の気持ちは持っております。来年もよろしくおねがいします。

マスタリングGHIDRAを執筆しました

オライリー・ジャパンからマスタリングGHIDRAが出版されました。翻訳者の一人として関わっています。 原著はChris Eagleさん、Kara NanceさんによるThe Ghidra Book | No Starch Pressです。 Chris EagleさんはThe IDA Pro Bookを執筆したことで知られています。

Amazonでは円安の影響(?)なのか原著(Kindle版、物理本ともに)よりも1000円安く売られています。 https://www.amazon.co.jp/%E3%83%9E%E3%82%B9%E3%82%BF%E3%83%AA%E3%83%B3%E3%82%B0Ghidra-%E2%80%95%E5%9F%BA%E7%A4%8E%E3%81%8B%E3%82%89%E5%AD%A6%E3%81%B6%E3%83%AA%E3%83%90%E3%83%BC%E3%82%B9%E3%82%A8%E3%83%B3%E3%82%B8%E3%83%8B%E3%82%A2%E3%83%AA%E3%83%B3%E3%82%B0%E5%AE%8C%E5%85%A8%E3%83%9E%E3%83%8B%E3%83%A5%E3%82%A2%E3%83%AB-Chris-Eagle/dp/4873119928/www.amazon.co.jp

監訳をしていただいた方による紹介記事です。

www.scientia-security.org

以前マイナビ出版から刊行されたリバースエンジニアリングツールGhidra実践ガイドに引き続き、2冊目のGhidraをテーマにした著書になりました。「GHIDRA」と書名についているものの、ディスアセンブルの仕組みの解説から始まる本なので、リバースエンジニアリングに興味がある人なら誰でも楽しめる本になっていると思います。Ghidraなどのリバースエンジニアリングツールのディスアセンブル機能は完璧ではなく、しばしば失敗します。その結果を修正するためにディスアセンブルの仕組みは知っておくべき知識ですが、これまでこの部分を解説した和書はなかったと思います。また、日本語版の独自の特典として付録Bでは、Ghidraに最近搭載されたデバッガについても解説しています。

リバースエンジニアリングツールGhidra実践ガイドは3月に韓国語版が出版されました。見本誌をもらいましたが何を書いてあるかは何も分かりませんw 表紙は凹凸加工されていて原著より凝ってるなと思いました。翻訳してくれた人には感謝です。

30th L'Anniversary LIVEにリクエストした曲

来週、L'Arc~en~Cielの30周年ライブが開催される。それに伴い、1〜2月に楽曲リクエスト企画が行われた。 自分が票を入れた曲が演奏されるか楽しみなので、記憶にある曲をメモしておく。

le-ciel.com

シングル曲は去年のツアーでだいぶ聴かせてもらったので、Vivid Colors以外は全部アルバム曲で攻めた選曲でリクエストした。MMXXツアーではチケットを取っていた公演がコロナで中止になり、悔しい思いをしたので、その時の曲は入れている。

  • DUNE

    • As if in a dream
  • Tierra

    • 風の行方
    • 瞳に映るもの
  • heavenly

  • True

    • Fare Well
    • Round and Round
  • HEART

    • birth!
  • ark

    • Cradle
    • What is love
  • REAL

    • TIME SLIP
    • a silent letter
    • ALL YEAR AROUND FALLING IN LOVE

リクエストしてないけど演奏してほしい曲は以下。 シングルもあるけど、シングルのカップリングとかベストアルバムのストアルバムで初音源化した曲などもあり、よりマイナーなかんじ。

AppleがCVEを割り当てずに修正した(?)けどバイパス可能なFinderのRCEの脆弱性を試してみた

概要

AppleがCVEを割り当てずに修正したけど、修正が雑でバイパス可能な状態の脆弱性がインターネットで話題だったのでやっていく。 拡張子 .inetloc のinetlocファイルという、RSSフィードなどのインターネット上のコンテンツを指すためのショートカットがmacOSでは使われている。 このファイルの中でfile://を使ってローカルの実行ファイルを指定することで、任意コード実行が可能とのこと。 この脆弱性SSD Secure DisclosureというOSやブラウザなどの著名なソフトウェアを扱うバグバウンティサイトで公開された。

ssd-disclosure.com

やってみる

脆弱性の修正が行われた現在は、file:// を弾く対策が実装されている。 そのため、大文字と小文字を混ぜて、同じ動作をする他の文字列を指定してあげると、対策をバイパスできる。 上記記事中には次のPoCが貼られていて、拡張子.inetlocを持つファイルとして保存し、Finderからダブルクリックで実行すると電卓が起動した。

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
  <dict>
    <key>URL</key>
    <string>FiLe:////////////////////////System/Applications/Calculator.app</string>
  </dict>
</plist>

また、macOSではダウンロードしてきたファイルを実行する際に警告が出るが、 ブラウザを使って、ダウンロードしてきたinetlocファイルは警告なしで実行されることを確認した。 攻撃者がメールなどでマルウェアを送りつける際の有用な手段が増えたのかなーと思った。

まとめ

ちゃんと対策してほしいし、報告者のためにも、脆弱性管理/周知のためにもCVEつけてあげてほしい。

「趣味と実益のための著名なOSSライブラリ起因の脆弱性の探求」という題でセキュキャンで講義してきた

セキュリティ・キャンプ全国大会 2021 オンラインで講義をしました!!

www.ipa.go.jp

去年も講義してたけど、去年は翌日の坂本真綾のライブで打ち上がって頭が書き換えられてブログ書いてなかったっぽい。 また名古屋旅行したい。次の動画は去年の打ち上げの参考動画です。

www.youtube.com

講義内容

前座として脆弱性を取り巻くライフサイクルの話をした後、安全でないデシリアライゼーションの演習をやり、その後、XMLパーサのしばき方を学び、実際にGitHubで公開されているOSS脆弱性を探す演習をやりました。 OSSライブラリ起因の脆弱性といっても幅広いので、各プログラミング言語にデフォルトで存在するライブラリ起因の脆弱性に焦点を当てて、安全でないデシリアライゼーションとXMLパーサ関連の脆弱性の話をしました。ちょっと講義タイトルは詐欺気味なところは否めない....

日本語でProperty-Oriented Programmingに言及している資料やXMLパーサに対する攻撃手法を細かに分類した資料は無かったので公開する意義のある良い資料ができた気がしています。 詳しい内容は講義資料を既に公開しているのでそちらの方を見てもらえると🙏

speakerdeck.com github.com

こだわりポイントはBillion Laugh、Quadratic BlowupといったDoS脆弱性をDocker上で安全に試せるようにしたところです。 次のコマンドで気軽にDoSを楽しめるので、暇な人はやってみてください!!

$ git clone git@github.com:tkmru/seccamp2021-b5.git
$ cd seccamp2021-b5
$ cd handson/xml-parser/billion-laughs/etree/
$ docker build . -t billion-laughs-etree
$ docker run billion-laughs-etree
CPU: 0.0 %, Memory: 540 KB
CPU: 95.0 %, Memory: 308920 KB
CPU: 97.5 %, Memory: 601304 KB
CPU: 98.6 %, Memory: 896032 KB
CPU: 99.0 %, Memory: 1188776 KB
CPU: 101 %, Memory: 1572960 KB
CPU: 101 %, Memory: 1602120 KB
CPU: 101 %, Memory: 1595464 KB
CPU: 99.3 %, Memory: 0 KB
./run.sh: line 12:     7 Killed                  python vulnerable.py
CPU:  %, Memory:  KB

講義資料を作りながら8件ほどOSS脆弱性を見つけてIPAに報告できたのも良かったけど、さてCVE付くのはいつになるんだろう....