title: security.txtに連絡がきたこと
author: Amane Katagiri
summary: 畜産物缶詰又は畜産物瓶詰のうち、牛肉を塩漬けにし、煮熟した後、ほぐし又はほぐさないで、食用油脂、調味料、香辛料等を加え又は加えないで詰めたもの
date: 2024-05-15T11:11:00+09:00
category: tech
license: CC BY 4.0
rating: sfw
ai_summary: 筆者が運用するWebサービスに設置した「security.txt」経由で脆弱性の指摘を受けた経緯とその対応をまとめた記事です。RFC 9116で定義された脆弱性報告用ファイルの概要を解説するとともに、実際に報告されたjQueryの古いバージョンやクリックジャッキングなどの指摘内容、低リスクと判断した評価、新規登録停止といった対策を詳述。報告者への謝辞を掲載する「Acknowledgments」ページの設置についても報告しています。
ai_keywords: security.txt, 脆弱性報告, RFC 9116, Acknowledgments, MediaGoblin, CVE-2015-9251, 情報セキュリティ, PGP署名, クリックジャッキング, Webサービス運用

[TOC]

# はじめに

先日、[あまねけ！](/)に設置している[security.txt](https://ama.ne.jp/.well-known/security.txt)を経由して、私が運用しているいくつかのサービスについて脆弱性の指摘をもらいました。これらの対応を行うとともに、[Acknowledgments](/security/hall-of-fame/)ページを設置したのでそのまとめです。

# security.txtのこと

[RFC 9116](https://www.rfc-editor.org/rfc/rfc9116.html)で定義されたsecurity.txtは、当該Webサービスで脆弱性を発見した際の報告先やポリシーを提示するための規格です。具体的には、Webサービスの `/.well-known/security.txt` に改行区切りで `Key-Name: value` 形式の設定項目を記載するもので、フォーマット自体はそんなに難しいものではありません。あまりイメージが湧かなければ、robots.txtのようなものだと思えばよいでしょう。

security.txtでは2つの必須項目（ `Contact` と `Expires` ）および7つの任意項目（ `Acknowledgments` `Canonical` `Encryption` `Hiring` `Policy` `Preferred-Languages` `CSAF` ）を利用できます。私は現時点で以下の項目を記載し、PGP鍵でクリア署名を施した上で各サービスに配置しています。

- Contact: [mailto:amane@ama.ne.jp](mailto:amane@ama.ne.jp)
- Expires: 2032-05-31T15:00:00.000Z
- Acknowledgments: [https://ama.ne.jp/security/hall-of-fame/](/security/hall-of-fame/)
- Canonical: [https://ama.ne.jp/.well-known/security.txt](https://ama.ne.jp/.well-known/security.txt)
- Encryption: [https://keybase.io/amane/pgp_keys.asc](https://keybase.io/amane/pgp_keys.asc)
- Preferred-Languages: ja, en

非常に簡単ですね。みなさんも[security.txtジェネレータ](https://securitytxt.org/)を使って又は使わずに、 `gpg --clear-sign security.txt` でクリア署名を施して又は施さずにsecurity.txtを配置してみてください。

# 脆弱性まとめ

さて、今回もらった指摘とその対応について記載していきます。これらの内容の一部は[Security Acknowledgments](/security/hall-of-fame/)としてまとめられています。

| key                | value                                                             |
| ------------------ | ----------------------------------------------------------------- |
| 報告者             | [Parth Narula](https://in.linkedin.com/in/parth-narula-86283821a) |
| 報告日             | 2024/04/16                                                        |
| 報告件数           | 4                                                                 |
| 全体的なリスク評価 | いずれも緊急性が低く、リスクにならない                            |

## [アマネイメージズ](https://amaneimages.com/)

### 報告内容

- jQueryのバージョンが古いことに起因するCVE-2015-9251（リスク評価: ★☆☆）
    - [MediaGoblin](https://mediagoblin.org/)がまともに更新されていないのは知っていましたが、10年前の脆弱性があるとうーん……となりますね。
    - [関連するIssue](https://github.com/jquery/jquery/issues/2432)を見る限り、攻撃者の支配下にあるURLからスクリプトを取得して実行させるというXSSの脆弱性のようです。
    - MediaGoblinのフロントエンドには3箇所のHTTPリクエスト呼び出し箇所がありますが、いずれも攻撃者がURLを操作できる部分はありませんでした。
- 確認用メールが大量に送信できてしまう挙動（リスク評価: ☆☆☆）
    - アカウント作成時のメールアドレスの有効性確認メールが何度も再送できる旨をお知らせいただきました。テストとしてNarula氏が50通程度試した形跡が残っています。
    - バックエンドで1日あたりの送信数を絞っているので、無限に送信されることはないです。
- パスワード変更によって既存のセッションが無効化されない挙動（リスク評価: ★☆☆）
    - ユーザーが不正なアクセスを検知した場合に応急的にパスワードを変更しても、不正なセッションを停止できない、などのシナリオが考えられますね。
    - ただこの挙動はセッションを破棄する **べき** という程度のもので、必ずしも危険な脆弱性とはいえないと思います。

### 対応

新規アカウントの登録機能を無効化しました。

アマネイメージズはMediaGoblinで動作しており、アカウントを作成しなければコメントや通報機能を使えないという制限があります。そのため、アカウントの新規登録機能を解放していたのですが、現状ほとんどはCloudflareで弾けるレベルのスパムしか集まっておらず、特にコメント機能も活用されていません。

写真を上げるのは私だけなので通報機能も重要ではなく、もう登録の口を閉じちゃえば変なことは起こらないかな？という判断です。

## [無料フィード作成 - FGHI PQRS](https://fghipqrs.ama.ne.jp/)

### 報告内容

- クリックジャッキングを引き起こす設定不備（リスク評価: ☆☆☆）
    - OWASP ZAPとかで最初に出てくるやつですね。
    - ただ、このサイトはログインもデータ操作も行わないので、全く損害を引き起こしません。

### 対応

今回は特に対応しません。気が向いたら各サイトでまとめて `X-Frame-Options: DENY` を設定しようと思います。

# おわりに

1ヶ月くらい放置していたら毎週メールでめちゃ催促されました。LinkedInを見た感じ、セキュリティエンジニアのキャリア七並べ用の取り組みなんでしょうか。一見して大したリスクではなさそうなのが分かったのと、[PARK10周年記念イベントのファンアート](/post/10th-park/)を作ったりして忙しかったので後回しにしてました。ごめんね。
