Skip to content

LD Signaturesで署名された投稿の検索範囲が改竄できてしまう

Moderate
kmycode published GHSA-mcfx-232h-427c Sep 10, 2024

Package

kmyblue

Affected versions

<14.0, <=5.23-lts

Patched versions

>=14.0, >=5.24-lts

Description

Summary

Fedibird/kmyblueによるsearchableByタームの解釈とJSON-LDの意味論の間の不整合から、特定条件において署名済オブジェクトの検索範囲を悪意のある中間者が改竄できてしまう。

Details

現行のFedibird/kmyblueはActivity StreamsオブジェクトのsearchableByに空の配列が指定されている場合("searchableBy": [])に当該オブジェクトの検索範囲を「リアクション限定」(Fedibirdにおける呼称)として解釈しますが、一方でJSON-LDにおいて"@container": "@list"でないタームに対して空の配列[]を指定した場合は何の値も指定していない場合と同じ意味であり、特にLD Signaturesの署名・検証処理においてこれらの値の存在は無視されてしまいます。つまり、LD Signaturesで署名されたオブジェクトから攻撃者が"searchableBy": []を削除したり、逆にsearchableByが指定されていないオブジェクトに"searchableBy": []を加えても署名の検証が通ってしまい、結果としてオブジェクトの改竄が成立します。

なお、類似の脆弱性であるCVE-2022-24307の対策として、Mastodonはリモートから配送されたオブジェクトのLD Signatureを検証する際に当該のオブジェクトに対してJSON-LD compactionを適用しています:

https://github.com/mastodon/mastodon/blob/664b0ca8cb10383c4c64964f830c41ddef4acb27/app/services/activitypub/process_collection_service.rb#L14

しかし、compactionは空の配列に対しては特に処理を加えない(実行例)ため、これは本事案のmitigationとしては機能していないと考えられます。

PoC

(N/A)

Severity

Moderate

CVSS overall score

This score calculates overall vulnerability severity from 0 to 10 and is based on the Common Vulnerability Scoring System (CVSS).
/ 10

CVSS v3 base metrics

Attack vector
Network
Attack complexity
Low
Privileges required
None
User interaction
None
Scope
Unchanged
Confidentiality
None
Integrity
Low
Availability
None

CVSS v3 base metrics

Attack vector: More severe the more the remote (logically and physically) an attacker can be in order to exploit the vulnerability.
Attack complexity: More severe for the least complex attacks.
Privileges required: More severe if no privileges are required.
User interaction: More severe when no user interaction is required.
Scope: More severe when a scope change occurs, e.g. one vulnerable component impacts resources in components beyond its security scope.
Confidentiality: More severe when loss of data confidentiality is highest, measuring the level of data access available to an unauthorized user.
Integrity: More severe when loss of data integrity is the highest, measuring the consequence of data modification possible by an unauthorized user.
Availability: More severe when the loss of impacted component availability is highest.
CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:N/I:L/A:N

CVE ID

No known CVE

Weaknesses

No CWEs

Credits