Skip to content
This repository has been archived by the owner on Apr 26, 2024. It is now read-only.

Reject events which have lots of prev_events #3118

Merged
merged 5 commits into from
Apr 23, 2018
Merged

Conversation

richvdh
Copy link
Member

@richvdh richvdh commented Apr 17, 2018

This PR adds some sanity-checking to events received over federation, via a pushed transaction, or pulled via backfill.

Events that have "too many" prev_events will essentially be ignored, in the same way as events that fail their signature test. This is less than elegant, as it means we keep trying to refetch the invalid event. It might be better to record the fact that we have seen the event and rejected it, in the same way that we do for events which fail their auth checks. However, that sounds non-trivial, and it's a problem that already exists for events with an invalid signature, so I'm declaring the problem orthogonal for now.

As per #3118 (comment), now accepts the event when it gets backfilled. #3124 tracks the second half.

richvdh added 3 commits April 18, 2018 00:06
... this should protect us from being dossed by people making silly events
(deliberately or otherwise)
@erikjohnston
Copy link
Member

Does this mean we won't be able to back paginate through Matrix HQ, now that that has a silly event?

@richvdh
Copy link
Member Author

richvdh commented Apr 18, 2018

yes.

@richvdh
Copy link
Member Author

richvdh commented Apr 18, 2018

well, wait. There are certainly events in HQ which fail a signature test, so there must be more to it than this.

/me goes back to testing

@erikjohnston erikjohnston assigned richvdh and unassigned erikjohnston Apr 19, 2018
@richvdh
Copy link
Member Author

richvdh commented Apr 20, 2018

Ok so as per #3121, yes broken signatures do break backfill fairly comprehensively. Rather than make this too much worse, we're going to tolerate the big events for backfill, but not for pushed transactions and fix this properly another day.

@richvdh richvdh assigned erikjohnston and unassigned richvdh Apr 20, 2018
logger.warn("Rejecting event %s which has %i auth_events",
ev.event_id, len(ev.auth_events))
raise SynapseError(
"ERROR",
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Spurious "ERROR"?

Copy link
Member Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

apparently. Now fixed.

@richvdh richvdh merged commit 77ebef9 into develop Apr 23, 2018
neilisfragile added a commit that referenced this pull request Apr 27, 2018
Changes in synapse v0.28.0-rc1 (2018-04-26)
===========================================

Bug Fixes:

* Fix quarantine media admin API and search reindex (PR #3130)
* Fix media admin APIs (PR #3134)

Changes in synapse v0.28.0-rc1 (2018-04-24)
===========================================

Minor performance improvement to federation sending and bug fixes.

(Note: This release does not include state resolutions discussed in matrix live)

Features:

* Add metrics for event processing lag (PR #3090)
* Add metrics for ResponseCache (PR #3092)

Changes:

* Synapse on PyPy (PR #2760) Thanks to @Valodim!
* move handling of auto_join_rooms to RegisterHandler (PR #2996) Thanks to @krombel!
* Improve handling of SRV records for federation connections (PR #3016) Thanks to @silkeh!
* Document the behaviour of ResponseCache (PR #3059)
* Preparation for py3 (PR #3061, #3073, #3074, #3075, #3103, #3104, #3106, #3107, #3109, #3110) Thanks to @NotAFile!
* update prometheus dashboard to use new metric names (PR #3069) Thanks to @krombel!
* use python3-compatible prints (PR #3074) Thanks to @NotAFile!
* Send federation events concurrently (PR #3078)
* Limit concurrent event sends for a room (PR #3079)
* Improve R30 stat definition (PR #3086)
* Send events to ASes concurrently (PR #3088)
* Refactor ResponseCache usage (PR #3093)
* Clarify that SRV may not point to a CNAME (PR #3100) Thanks to @silkeh!
* Use str(e) instead of e.message (PR #3103) Thanks to @NotAFile!
* Use six.itervalues in some places (PR #3106) Thanks to @NotAFile!
* Refactor store.have_events (PR #3117)

Bug Fixes:

* Return 401 for invalid access_token on logout (PR #2938) Thanks to @dklug!
* Return a 404 rather than a 500 on rejoining empty rooms (PR #3080)
* fix federation_domain_whitelist (PR #3099)
* Avoid creating events with huge numbers of prev_events (PR #3113)
* Reject events which have lots of prev_events (PR #3118)
@richvdh richvdh deleted the rav/reject_prev_events branch May 2, 2018 15:15
Sign up for free to subscribe to this conversation on GitHub. Already have an account? Sign in.
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

2 participants