django-sns-view icon indicating copy to clipboard operation
django-sns-view copied to clipboard

Verify that subscription request comes from known AWS account

Open kwood opened this issue 1 year ago • 0 comments

Currently, this package validates that subscription requests are signed by AWS, but this allows any account on AWS to create a topic and start sending messages to an endpoint.

This is a potential security problem — if an attacker can discover the URL for an endpoint, they can create their own topics that write to them, and the subscription and subsequent messages will be accepted.

This PR creates a way to deny subscription requests that aren't coming from a known AWS account, configurable in the Django settings. It also introduces an easy way to customize this behavior, by overriding the should_confirm_subscription method.

If there's interest in merging this PR, I'd be happy to write some documentation for it.

Note that I had to remove the nose-tests dependency — that library is no longer maintained, and ./manage.py test works out of the box now.

kwood avatar Sep 07 '23 01:09 kwood