mirror of
https://github.com/basecamp/once-campfire.git
synced 2026-08-22 15:03:47 +09:00
c860b51109
* Take the SSRF address policy from surfguard instead of keeping our own copy Four other apps carried this same classification and the five had drifted into four different ideas of what "internal" means. It now comes from the surfguard gem, which is their union. resolve and Violation keep their shapes, so the opengraph callers are unchanged. Two verdicts change. SIIT (::ffff:0:0:0/96) is now recognised. It is the third way an IPv4 address rides inside an IPv6 one and the only one Ruby has no predicate for -- ipv4_mapped?, ipv4_compat?, private?, loopback? and link_local? are all false for ::ffff:0:a9fe:a9fe, so it fell through to the IPv6 branch unrecognised and reached the metadata endpoint. Note the extra group: ::ffff:0:0:0/96 is not the IPv4-mapped ::ffff:0:0/96 the guard already refused, and the two do not overlap. The RFC 8215 local-use NAT64 block is now refused whole rather than decoded. Reading its low 32 bits as an embedded IPv4 is only correct for a /96 Pref64; the block can host any length from /32 to /96 and the position is not recoverable from the address alone (RFC 6052 2.2), so the decode reads the wrong octets. It is never globally routed, so refusing it costs nothing. The well-known /96 is still decoded and re-checked, so DNS64 for public sites on IPv6-only hosts keeps working. Resolution moves from Resolv.getaddress to Resolv.getaddresses, so the guard sees every address a host answers with rather than only the first. * Distinguish a DNS lookup failure from a private-IP block in the guard Advance the surfguard pin so resolve_public_ips raises Unresolvable when a host resolves to nothing and returns an empty list only when it resolves to a blocked address. The shim lets Unresolvable propagate as a lookup failure -- matching the old Resolv.getaddress behavior -- and reserves Violation for a resolved-but-blocked address, so a transient DNS miss is no longer reported as an SSRF attempt.
459 lines
11 KiB
Plaintext
459 lines
11 KiB
Plaintext
GIT
|
|
remote: https://github.com/basecamp/surfguard.git
|
|
revision: 910be917fd0ab782c5ea939698d44f26694a501d
|
|
specs:
|
|
surfguard (0.1.0)
|
|
|
|
GIT
|
|
remote: https://github.com/hotwired/turbo-rails.git
|
|
revision: 30cd8fcc6f82c1ad4edd1ed6069ba878f21f02b3
|
|
specs:
|
|
turbo-rails (2.0.16)
|
|
actionpack (>= 7.1.0)
|
|
railties (>= 7.1.0)
|
|
|
|
GIT
|
|
remote: https://github.com/rails/importmap-rails.git
|
|
revision: 51c1a531327fc04ed4552bb0fd523eb43561b817
|
|
specs:
|
|
importmap-rails (2.2.2)
|
|
actionpack (>= 6.0.0)
|
|
activesupport (>= 6.0.0)
|
|
railties (>= 6.0.0)
|
|
|
|
GIT
|
|
remote: https://github.com/rails/propshaft.git
|
|
revision: e49a9de659ff27462015e54dd832e86e762a6ddc
|
|
specs:
|
|
propshaft (1.2.1)
|
|
actionpack (>= 7.0.0)
|
|
activesupport (>= 7.0.0)
|
|
rack
|
|
|
|
GIT
|
|
remote: https://github.com/rails/rails.git
|
|
revision: 1a02651ac37fb64b4de2a2b73461d86acf9c98fb
|
|
branch: main
|
|
specs:
|
|
actioncable (8.2.0.alpha)
|
|
actionpack (= 8.2.0.alpha)
|
|
activesupport (= 8.2.0.alpha)
|
|
nio4r (~> 2.0)
|
|
websocket-driver (>= 0.6.1)
|
|
zeitwerk (~> 2.6)
|
|
actionmailbox (8.2.0.alpha)
|
|
actionpack (= 8.2.0.alpha)
|
|
activejob (= 8.2.0.alpha)
|
|
activerecord (= 8.2.0.alpha)
|
|
activestorage (= 8.2.0.alpha)
|
|
activesupport (= 8.2.0.alpha)
|
|
mail (>= 2.8.0)
|
|
actionmailer (8.2.0.alpha)
|
|
actionpack (= 8.2.0.alpha)
|
|
actionview (= 8.2.0.alpha)
|
|
activejob (= 8.2.0.alpha)
|
|
activesupport (= 8.2.0.alpha)
|
|
mail (>= 2.8.0)
|
|
rails-dom-testing (~> 2.2)
|
|
actionpack (8.2.0.alpha)
|
|
actionview (= 8.2.0.alpha)
|
|
activesupport (= 8.2.0.alpha)
|
|
nokogiri (>= 1.8.5)
|
|
rack (>= 2.2.4)
|
|
rack-session (>= 1.0.1)
|
|
rack-test (>= 0.6.3)
|
|
rails-dom-testing (~> 2.2)
|
|
rails-html-sanitizer (~> 1.6)
|
|
useragent (~> 0.16)
|
|
actiontext (8.2.0.alpha)
|
|
action_text-trix (~> 2.1.15)
|
|
actionpack (= 8.2.0.alpha)
|
|
activerecord (= 8.2.0.alpha)
|
|
activestorage (= 8.2.0.alpha)
|
|
activesupport (= 8.2.0.alpha)
|
|
globalid (>= 0.6.0)
|
|
nokogiri (>= 1.8.5)
|
|
actionview (8.2.0.alpha)
|
|
activesupport (= 8.2.0.alpha)
|
|
builder (~> 3.1)
|
|
erubi (~> 1.11)
|
|
rails-dom-testing (~> 2.2)
|
|
rails-html-sanitizer (~> 1.6)
|
|
activejob (8.2.0.alpha)
|
|
activesupport (= 8.2.0.alpha)
|
|
globalid (>= 0.3.6)
|
|
activemodel (8.2.0.alpha)
|
|
activesupport (= 8.2.0.alpha)
|
|
activerecord (8.2.0.alpha)
|
|
activemodel (= 8.2.0.alpha)
|
|
activesupport (= 8.2.0.alpha)
|
|
timeout (>= 0.4.0)
|
|
activestorage (8.2.0.alpha)
|
|
actionpack (= 8.2.0.alpha)
|
|
activejob (= 8.2.0.alpha)
|
|
activerecord (= 8.2.0.alpha)
|
|
activesupport (= 8.2.0.alpha)
|
|
marcel (~> 1.0)
|
|
activesupport (8.2.0.alpha)
|
|
base64
|
|
bigdecimal
|
|
concurrent-ruby (~> 1.0, >= 1.3.1)
|
|
connection_pool (>= 2.2.5)
|
|
drb
|
|
i18n (>= 1.6, < 2)
|
|
json
|
|
logger (>= 1.4.2)
|
|
minitest (>= 5.1)
|
|
securerandom (>= 0.3)
|
|
tzinfo (~> 2.0, >= 2.0.5)
|
|
uri (>= 0.13.1)
|
|
rails (8.2.0.alpha)
|
|
actioncable (= 8.2.0.alpha)
|
|
actionmailbox (= 8.2.0.alpha)
|
|
actionmailer (= 8.2.0.alpha)
|
|
actionpack (= 8.2.0.alpha)
|
|
actiontext (= 8.2.0.alpha)
|
|
actionview (= 8.2.0.alpha)
|
|
activejob (= 8.2.0.alpha)
|
|
activemodel (= 8.2.0.alpha)
|
|
activerecord (= 8.2.0.alpha)
|
|
activestorage (= 8.2.0.alpha)
|
|
activesupport (= 8.2.0.alpha)
|
|
bundler (>= 1.15.0)
|
|
railties (= 8.2.0.alpha)
|
|
railties (8.2.0.alpha)
|
|
actionpack (= 8.2.0.alpha)
|
|
activesupport (= 8.2.0.alpha)
|
|
irb (~> 1.13)
|
|
rackup (>= 1.0.0)
|
|
rake (>= 12.2)
|
|
thor (~> 1.0, >= 1.2.2)
|
|
tsort (>= 0.2)
|
|
zeitwerk (~> 2.6)
|
|
|
|
GEM
|
|
remote: https://rubygems.org/
|
|
specs:
|
|
action_text-trix (2.1.19)
|
|
railties
|
|
addressable (2.9.0)
|
|
public_suffix (>= 2.0.2, < 8.0)
|
|
ast (2.4.3)
|
|
base64 (0.3.0)
|
|
bcrypt (3.1.22)
|
|
benchmark (0.5.0)
|
|
bigdecimal (3.3.1)
|
|
brakeman (8.0.6)
|
|
racc
|
|
builder (3.3.0)
|
|
bundler-audit (0.9.3)
|
|
bundler (>= 1.2.0)
|
|
thor (~> 1.0)
|
|
capybara (3.40.0)
|
|
addressable
|
|
matrix
|
|
mini_mime (>= 0.1.3)
|
|
nokogiri (~> 1.11)
|
|
rack (>= 1.6.0)
|
|
rack-test (>= 0.6.3)
|
|
regexp_parser (>= 1.5, < 3.0)
|
|
xpath (~> 3.2)
|
|
chunky_png (1.4.0)
|
|
concurrent-ruby (1.3.7)
|
|
connection_pool (2.5.5)
|
|
crack (1.0.0)
|
|
bigdecimal
|
|
rexml
|
|
crass (1.0.7)
|
|
date (3.5.1)
|
|
debug (1.11.0)
|
|
irb (~> 1.10)
|
|
reline (>= 0.3.8)
|
|
drb (2.2.3)
|
|
erb (6.0.4)
|
|
erubi (1.13.1)
|
|
faker (3.5.2)
|
|
i18n (>= 1.8.11, < 2)
|
|
ffi (1.17.2-aarch64-linux-gnu)
|
|
ffi (1.17.2-arm64-darwin)
|
|
ffi (1.17.2-x86_64-darwin)
|
|
ffi (1.17.2-x86_64-linux-gnu)
|
|
geared_pagination (1.2.0)
|
|
activesupport (>= 5.0)
|
|
addressable (>= 2.5.0)
|
|
globalid (1.3.0)
|
|
activesupport (>= 6.1)
|
|
hashdiff (1.2.0)
|
|
i18n (1.14.7)
|
|
concurrent-ruby (~> 1.0)
|
|
image_processing (1.14.0)
|
|
mini_magick (>= 4.9.5, < 6)
|
|
ruby-vips (>= 2.0.17, < 3)
|
|
io-console (0.8.1)
|
|
irb (1.15.3)
|
|
pp (>= 0.6.0)
|
|
rdoc (>= 4.0.0)
|
|
reline (>= 0.4.2)
|
|
jbuilder (2.14.1)
|
|
actionview (>= 7.0.0)
|
|
activesupport (>= 7.0.0)
|
|
json (2.21.2)
|
|
jwt (3.2.0)
|
|
base64
|
|
kredis (1.8.0)
|
|
activemodel (>= 6.0.0)
|
|
activesupport (>= 6.0.0)
|
|
redis (>= 4.2, < 6)
|
|
language_server-protocol (3.17.0.5)
|
|
lint_roller (1.1.0)
|
|
logger (1.7.0)
|
|
loofah (2.25.2)
|
|
crass (~> 1.0.2)
|
|
nokogiri (>= 1.12.0)
|
|
mail (2.9.1)
|
|
logger
|
|
mini_mime (>= 0.1.1)
|
|
net-imap
|
|
net-pop
|
|
net-smtp
|
|
marcel (1.1.0)
|
|
matrix (0.4.3)
|
|
mini_magick (5.3.1)
|
|
logger
|
|
mini_mime (1.1.5)
|
|
minitest (5.26.2)
|
|
mocha (2.7.1)
|
|
ruby2_keywords (>= 0.0.5)
|
|
mono_logger (1.1.2)
|
|
multi_json (1.17.0)
|
|
mustermann (3.0.4)
|
|
ruby2_keywords (~> 0.0.1)
|
|
net-http-persistent (4.0.6)
|
|
connection_pool (~> 2.2, >= 2.2.4)
|
|
net-imap (0.6.4.1)
|
|
date
|
|
net-protocol
|
|
net-pop (0.1.2)
|
|
net-protocol
|
|
net-protocol (0.2.2)
|
|
timeout
|
|
net-smtp (0.5.1)
|
|
net-protocol
|
|
nio4r (2.7.5)
|
|
nokogiri (1.19.4-aarch64-linux-gnu)
|
|
racc (~> 1.4)
|
|
nokogiri (1.19.4-arm64-darwin)
|
|
racc (~> 1.4)
|
|
nokogiri (1.19.4-x86_64-darwin)
|
|
racc (~> 1.4)
|
|
nokogiri (1.19.4-x86_64-linux-gnu)
|
|
racc (~> 1.4)
|
|
openssl (3.3.0)
|
|
ostruct (0.6.3)
|
|
parallel (1.27.0)
|
|
parser (3.3.9.0)
|
|
ast (~> 2.4.1)
|
|
racc
|
|
platform_agent (1.0.1)
|
|
activesupport (>= 5.2.0)
|
|
useragent (~> 0.16.3)
|
|
pp (0.6.3)
|
|
prettyprint
|
|
prettyprint (0.2.0)
|
|
prism (1.4.0)
|
|
psych (5.2.6)
|
|
date
|
|
stringio
|
|
public_suffix (6.0.2)
|
|
puma (7.2.1)
|
|
nio4r (~> 2.0)
|
|
racc (1.8.1)
|
|
rack (3.2.6)
|
|
rack-protection (4.2.1)
|
|
base64 (>= 0.1.0)
|
|
logger (>= 1.6.0)
|
|
rack (>= 3.0.0, < 4)
|
|
rack-session (2.1.2)
|
|
base64 (>= 0.1.0)
|
|
rack (>= 3.0.0)
|
|
rack-test (2.2.0)
|
|
rack (>= 1.3)
|
|
rackup (2.2.1)
|
|
rack (>= 3)
|
|
rails-dom-testing (2.3.0)
|
|
activesupport (>= 5.0.0)
|
|
minitest
|
|
nokogiri (>= 1.6)
|
|
rails-html-sanitizer (1.7.1)
|
|
loofah (~> 2.25, >= 2.25.2)
|
|
nokogiri (>= 1.15.7, != 1.16.7, != 1.16.6, != 1.16.5, != 1.16.4, != 1.16.3, != 1.16.2, != 1.16.1, != 1.16.0.rc1, != 1.16.0)
|
|
rails_autolink (1.1.8)
|
|
actionview (> 3.1)
|
|
activesupport (> 3.1)
|
|
railties (> 3.1)
|
|
rainbow (3.1.1)
|
|
rake (13.3.1)
|
|
rdoc (6.16.1)
|
|
erb
|
|
psych (>= 4.0.0)
|
|
tsort
|
|
redis (5.4.1)
|
|
redis-client (>= 0.22.0)
|
|
redis-client (0.25.2)
|
|
connection_pool
|
|
redis-namespace (1.11.0)
|
|
redis (>= 4)
|
|
regexp_parser (2.11.2)
|
|
reline (0.6.3)
|
|
io-console (~> 0.5)
|
|
resque (2.7.0)
|
|
mono_logger (~> 1)
|
|
multi_json (~> 1.0)
|
|
redis-namespace (~> 1.6)
|
|
sinatra (>= 0.9.2)
|
|
resque-pool (0.7.1)
|
|
rake (>= 10.0, < 14.0)
|
|
resque (>= 1.22, < 3)
|
|
rexml (3.4.4)
|
|
rqrcode (3.2.0)
|
|
chunky_png (~> 1.0)
|
|
rqrcode_core (~> 2.0)
|
|
rqrcode_core (2.1.0)
|
|
rubocop (1.80.2)
|
|
json (~> 2.3)
|
|
language_server-protocol (~> 3.17.0.2)
|
|
lint_roller (~> 1.1.0)
|
|
parallel (~> 1.10)
|
|
parser (>= 3.3.0.2)
|
|
rainbow (>= 2.2.2, < 4.0)
|
|
regexp_parser (>= 2.9.3, < 3.0)
|
|
rubocop-ast (>= 1.46.0, < 2.0)
|
|
ruby-progressbar (~> 1.7)
|
|
unicode-display_width (>= 2.4.0, < 4.0)
|
|
rubocop-ast (1.46.0)
|
|
parser (>= 3.3.7.2)
|
|
prism (~> 1.4)
|
|
rubocop-performance (1.25.0)
|
|
lint_roller (~> 1.1)
|
|
rubocop (>= 1.75.0, < 2.0)
|
|
rubocop-ast (>= 1.38.0, < 2.0)
|
|
rubocop-rails (2.33.3)
|
|
activesupport (>= 4.2.0)
|
|
lint_roller (~> 1.1)
|
|
rack (>= 1.1)
|
|
rubocop (>= 1.75.0, < 2.0)
|
|
rubocop-ast (>= 1.44.0, < 2.0)
|
|
rubocop-rails-omakase (1.1.0)
|
|
rubocop (>= 1.72)
|
|
rubocop-performance (>= 1.24)
|
|
rubocop-rails (>= 2.30)
|
|
ruby-progressbar (1.13.0)
|
|
ruby-vips (2.2.5)
|
|
ffi (~> 1.12)
|
|
logger
|
|
ruby2_keywords (0.0.5)
|
|
rubyzip (3.0.2)
|
|
securerandom (0.4.1)
|
|
selenium-webdriver (4.35.0)
|
|
base64 (~> 0.2)
|
|
logger (~> 1.4)
|
|
rexml (~> 3.2, >= 3.2.5)
|
|
rubyzip (>= 1.2.2, < 4.0)
|
|
websocket (~> 1.0)
|
|
sentry-rails (5.26.0)
|
|
railties (>= 5.0)
|
|
sentry-ruby (~> 5.26.0)
|
|
sentry-ruby (5.26.0)
|
|
bigdecimal
|
|
concurrent-ruby (~> 1.0, >= 1.0.2)
|
|
sinatra (4.2.1)
|
|
logger (>= 1.6.0)
|
|
mustermann (~> 3.0)
|
|
rack (>= 3.0.0, < 4)
|
|
rack-protection (= 4.2.1)
|
|
rack-session (>= 2.0.0, < 3)
|
|
tilt (~> 2.0)
|
|
sqlite3 (2.9.6-aarch64-linux-gnu)
|
|
sqlite3 (2.9.6-arm64-darwin)
|
|
sqlite3 (2.9.6-x86_64-darwin)
|
|
sqlite3 (2.9.6-x86_64-linux-gnu)
|
|
stimulus-rails (1.3.4)
|
|
railties (>= 6.0.0)
|
|
stringio (3.1.8)
|
|
thor (1.4.0)
|
|
thruster (0.1.23-aarch64-linux)
|
|
thruster (0.1.23-arm64-darwin)
|
|
thruster (0.1.23-x86_64-darwin)
|
|
thruster (0.1.23-x86_64-linux)
|
|
tilt (2.6.1)
|
|
timeout (0.6.1)
|
|
tsort (0.2.0)
|
|
tzinfo (2.0.6)
|
|
concurrent-ruby (~> 1.0)
|
|
unicode-display_width (3.2.0)
|
|
unicode-emoji (~> 4.1)
|
|
unicode-emoji (4.2.0)
|
|
uri (1.1.1)
|
|
useragent (0.16.11)
|
|
web-push (3.0.2)
|
|
jwt (~> 3.0)
|
|
openssl (~> 3.0)
|
|
webmock (3.25.1)
|
|
addressable (>= 2.8.0)
|
|
crack (>= 0.3.2)
|
|
hashdiff (>= 0.4.0, < 2.0.0)
|
|
websocket (1.2.11)
|
|
websocket-driver (0.8.2)
|
|
base64
|
|
websocket-extensions (>= 0.1.0)
|
|
websocket-extensions (0.1.5)
|
|
xpath (3.2.0)
|
|
nokogiri (~> 1.8)
|
|
zeitwerk (2.7.3)
|
|
|
|
PLATFORMS
|
|
aarch64-linux
|
|
arm64-darwin
|
|
x86_64-darwin
|
|
x86_64-linux
|
|
|
|
DEPENDENCIES
|
|
bcrypt
|
|
benchmark
|
|
brakeman
|
|
bundler-audit
|
|
capybara
|
|
debug
|
|
faker
|
|
geared_pagination
|
|
image_processing (>= 1.2)
|
|
importmap-rails!
|
|
jbuilder
|
|
kredis
|
|
mocha
|
|
net-http-persistent
|
|
ostruct
|
|
platform_agent
|
|
propshaft!
|
|
puma (~> 7.2, >= 7.2.1)
|
|
rails!
|
|
rails_autolink
|
|
redis (~> 5.4)
|
|
resque (~> 2.7.0)
|
|
resque-pool (~> 0.7.1)
|
|
rqrcode
|
|
rubocop-rails-omakase
|
|
selenium-webdriver
|
|
sentry-rails
|
|
sentry-ruby
|
|
sqlite3
|
|
stimulus-rails
|
|
surfguard!
|
|
thruster
|
|
turbo-rails!
|
|
web-push
|
|
webmock
|
|
|
|
BUNDLED WITH
|
|
4.0.13
|