Security Issues ¶
This document explains how Symfony security issues are handled by the
Symfony core team (Symfony being the code hosted on the main symfony/symfony
Git repository).
Reporting a Security Issue ¶
If you think that you have found a security issue in Symfony, don't use the bug tracker and don't publish it publicly. Instead, all security issues must be sent to security [at] symfony.com. Emails sent to this address are forwarded to the Symfony core team private mailing-list.
The following issues are not considered security issues and should be handled as regular bug fixes (if you have any doubts, don't hesitate to send us an email for confirmation):
- Any security issues found in debug tools that must never be enabled in
production (including the web profiler or anything enabled when
APP_DEBUG
is set totrue
orAPP_ENV
set to anything butprod
);本番環境で有効にしてはならないデバッグ ツールで見つかったセキュリティの問題 (Web プロファイラーや、APP_DEBUG が true に設定されているか、APP_ENV が prod 以外に設定されている場合に有効になるものを含む)。 - Any fix that can be classified as security hardening like route
enumeration, login throttling bypasses, denial of service attacks, timing
attacks, or lack of
SensitiveParameter
attributes.ルート列挙、ログイン スロットリング バイパス、サービス拒否攻撃、タイミング攻撃、または SensitiveParameter 属性の欠如などのセキュリティ強化として分類できるすべての修正。
In any case, the core team has the final decision on which issues are considered security vulnerabilities.
Security Bug Bounties ¶
Symfony is an Open-Source project where most of the work is done by volunteers. We appreciate that developers are trying to find security issues in Symfony and report them responsibly, but we are currently unable to pay bug bounties.
Resolving Process ¶
For each report, we first try to confirm the vulnerability. When it is confirmed, the core team works on a solution following these steps:
- Send an acknowledgment to the reporter;レポーターに確認を送信します。
- Work on a patch;パッチに取り組みます。
- Get a CVE identifier from mitre.org;mitre.org から CVE 識別子を取得します。
Write a security announcement for the official Symfony blog about the vulnerability. This post should contain the following information:
公式の Symfony ブログに、脆弱性に関するセキュリティ アナウンスを書きます。この投稿には、次の情報が含まれている必要があります。- a title that always include the "Security release" string;常に「セキュリティ リリース」文字列を含むタイトル。
- a description of the vulnerability;脆弱性の説明;
- the affected versions;影響を受けるバージョン。
- the possible exploits;エクスプロイトの可能性;
- how to patch/upgrade/workaround affected applications;影響を受けるアプリケーションにパッチを適用/アップグレード/回避する方法。
- the CVE identifier;CVE 識別子;
- credits.クレジット。
- a title that always include the "Security release" string;
- Send the patch and the announcement to the reporter for review;パッチとアナウンスをレビューのためにレポーターに送信します。
- Apply the patch to all maintained versions of Symfony;Symfony のすべての保守バージョンにパッチを適用します。
- Package new versions for all affected versions;影響を受けるすべてのバージョンの新しいバージョンをパッケージ化します。
- Publish the post on the official Symfony blog (it must also be added to
the "`Security Advisories`_" category);Symfony の公式ブログに投稿を公開します (「セキュリティ アドバイザリ」カテゴリにも追加する必要があります)。
- Update the public security advisories database maintained by the
FriendsOfPHP organization and which is used by
the check:security command.FriendsOfPHP 組織によって維持され、check:security コマンドによって使用される公安勧告データベースを更新します。
Note
Releases that include security issues should not be done on Saturday or Sunday, except if the vulnerability has been publicly posted.
Note
While we are working on a patch, please do not reveal the issue publicly.
Note
The resolution takes anywhere between a couple of days to a month depending on its complexity and the coordination with the downstream projects (see next paragraph).
Collaborating with Downstream Open-Source Projects ¶
As Symfony is used by many large Open-Source projects, we standardized the way the Symfony security team collaborates on security issues with downstream projects. The process works as follows:
- After the Symfony security team has acknowledged a security issue, it
immediately sends an email to the downstream project security teams to
inform them of the issue;Symfony のセキュリティ チームがセキュリティの問題を認識した後、すぐに電子メールを下流のプロジェクト セキュリティ チームに送信して問題を通知します。
- The Symfony security team creates a private Git repository to ease the
collaboration on the issue and access to this repository is given to the
Symfony security team, to the Symfony contributors that are impacted by
the issue, and to one representative of each downstream projects;Symfony セキュリティ チームは、問題に関するコラボレーションを容易にするためにプライベート Git リポジトリを作成します。このリポジトリへのアクセスは、Symfony セキュリティ チーム、問題の影響を受ける Symfony 貢献者、および各ダウンストリーム プロジェクトの 1 人の代表者に与えられます。
- All people with access to the private repository work on a solution to
solve the issue via pull requests, code reviews, and comments;プライベート リポジトリにアクセスできるすべての人が、プル リクエスト、コード レビュー、およびコメントを通じて問題を解決するためのソリューションに取り組みます。
- Once the fix is found, all involved projects collaborate to find the best
date for a joint release (there is no guarantee that all releases will
be at the same time but we will try hard to make them at about the same
time). When the issue is not known to be exploited in the wild, a period
of two weeks is considered a reasonable amount of time.修正が見つかると、関係するすべてのプロジェクトが協力して、共同リリースの最適な日付を見つけます (すべてのリリースが同時に行われるという保証はありませんが、ほぼ同時に行うように努めます)。問題が実際に悪用されていることが知られていない場合、2 週間の期間が妥当な期間と見なされます。
The list of downstream projects participating in this process is kept as small as possible in order to better manage the flow of confidential information prior to disclosure. As such, projects are included at the sole discretion of the Symfony security team.
As of today, the following projects have validated this process and are part of the downstream projects included in this process:
- Drupal (releases typically happen on Wednesdays)Drupal (リリースは通常水曜日に行われます)
- eZPublisheZパブリッシュ
Issue Severity ¶
In order to determine the severity of a security issue we take into account the complexity of any potential attack, the impact of the vulnerability and also how many projects it is likely to affect. This score out of 15 is then converted into a level of: Low, Medium, High, Critical, or Exceptional.
Attack Complexity ¶
Score of between 1 and 5 depending on how complex it is to exploit the vulnerability
- 4 - 5 Basic: attacker must follow a set of simple steps4 - 5 基本: 攻撃者は一連の簡単な手順に従う必要があります
- 2 - 3 Complex: attacker must follow non-intuitive steps with a high level
of dependencies2 - 3 複雑: 攻撃者は、高レベルの依存関係を持つ非直感的な手順に従う必要があります
- 1 - 2 High: A successful attack depends on conditions beyond the attacker's
control. That is, a successful attack cannot be accomplished at will, but
requires the attacker to invest in some measurable amount of effort in
preparation or execution against the vulnerable component before a successful
attack can be expected.1 - 2 高: 攻撃の成功は、攻撃者が制御できない状況に依存します。つまり、攻撃の成功を自由に達成することはできませんが、攻撃の成功を期待するには、攻撃者が脆弱なコンポーネントに対する準備または実行にかなりの労力を費やす必要があります。
Impact ¶
Scores from the following areas are added together to produce a score. The score for Impact is capped at 6. Each area is scored between 0 and 4.
- Integrity: Does this vulnerability cause non-public data to be accessible?
If so, does the attacker have control over the data disclosed? (0-4)完全性: この脆弱性により、非公開データにアクセスできるようになりますか?そうである場合、攻撃者は公開されたデータを制御できますか? (0-4)
- Disclosure: Can this exploit allow system data (or data handled by the
system) to be compromised? If so, does the attacker have control over
modification? (0-4)開示: この悪用により、システム データ (またはシステムによって処理されるデータ) が危険にさらされる可能性がありますか?もしそうなら、攻撃者は過度の変更を制御できますか? (0-4)
- Code Execution: Does the vulnerability allow arbitrary code to be executed
on an end-users system, or the server that it runs on? (0-4)コードの実行: この脆弱性により、エンド ユーザーのシステムまたはそれが実行されているサーバーで任意のコードが実行される可能性がありますか? (0-4)
- Availability: Is the availability of a service or application affected? Is
it reduced availability or total loss of availability of a service /
application? Availability includes networked services (e.g. databases) or
resources such as consumption of network bandwidth, processor cycles, or
disk space. (0-4)可用性: サービスまたはアプリケーションの可用性は影響を受けますか?サービス/アプリケーションの可用性が低下したり、可用性が完全に失われたりしますか?可用性には、ネットワーク サービス (データベースなど) またはリソース (ネットワーク帯域幅、プロセッサ サイクル、またはディスク領域の消費など) が含まれます。 (0-4)
Affected Projects ¶
Scores from the following areas are added together to produce a score. The score for Affected Projects is capped at 4.
- Will it affect some or all using a component? (1-2)コンポーネントを使用している一部またはすべてに影響しますか? (1-2)
- Is the usage of the component that would cause such a thing already
considered bad practice? (0-1)そのようなことを引き起こす可能性のあるコンポーネントの使用は、すでに悪い習慣と見なされていますか? (0-1)
- How common/popular is the component (e.g. Console vs HttpFoundation vs
Lock)? (0-2)コンポーネントはどの程度一般的/人気がありますか (例: Console vs HttpFoundation vsLock)? (0-2)
- Are a number of well-known open source projects using Symfony affected
that requires coordinated releases? (0-1)Symfony を使用する多くの有名なオープン ソース プロジェクトが影響を受けており、調整されたリリースが必要ですか? (0-1)
Score Totals ¶
- Attack Complexity: 1 - 5攻撃の複雑さ: 1 - 5
- Impact: 1 - 6インパクト: 1 - 6
- Affected Projects: 1 - 4影響を受けるプロジェクト: 1 - 4
Severity levels ¶
- Low: 1 - 5低: 1 - 5
- Medium: 6 - 10中: 6 - 10
- High: 11 - 12高: 11 - 12
- Critical: 13 - 14クリティカル: 13 - 14
- Exceptional: 15例外的: 15
Security Advisories ¶
Tip
You can check your Symfony application for known security vulnerabilities using the check:security command.
Check the Security Advisories blog category for a list of all security vulnerabilities that were fixed in Symfony releases, starting from Symfony 1.0.0.