• Home
  • Features
  • Pricing
  • Docs
  • Announcements
  • Sign In

ukeeper / ukeeper-readability / 28681139181
78%
master: 78%

Build:
Build:
LAST BUILD BRANCH: fix/docker-gha-cache
DEFAULT BRANCH: master
Ran 03 Jul 2026 08:04PM UTC
Jobs 1
Files 10
Run time 1min
Badge
Embed ▾
README BADGES
x

If you need to use a raster PNG badge, change the '.svg' to '.png' in the link

Markdown

Textile

RDoc

HTML

Rst

03 Jul 2026 08:00PM UTC coverage: 77.767% (-0.2%) from 77.947%
28681139181

Pull #83

github

paskal
Block SSRF to non-public addresses via connect-time IP guard

POST /api/extract is unauthenticated and the extractor fetched any URL it
was given with no host validation, so a caller could reach
http://169.254.169.254/... (cloud metadata), localhost and other internal
hosts; image extraction amplified it by following <img src> into more
internal fetches.

The page retriever and image fetcher reject targets that resolve to
loopback, private, link-local, unspecified, multicast and other IANA
special-purpose ranges (0.0.0.0/8, CGNAT, benchmarking, documentation,
reserved, broadcast) via a net.Dialer Control hook that checks the actual
IP at connect time, so it also covers redirect-to-internal and DNS
rebinding; the guarded transport disables env proxies so validation can't
be bypassed through a proxy. extractWithRules additionally validates the
resolved host up front, so the Cloudflare path (which fetches remotely and
isn't covered by the dialer) enforces the same policy.

Enabled by default; operators opt out with --allow-private-networks for
trusted intranet extraction. The default HTTPRetriever inherits the flag
from UReadability so package-level callers are guarded too.
Pull Request #83: Block SSRF to non-public addresses via connect-time IP guard

74 of 94 new or added lines in 5 files covered. (78.72%)

12 existing lines in 2 files now uncovered.

829 of 1066 relevant lines covered (77.77%)

9.24 hits per line

Uncovered Changes

Lines Coverage ∆ File
14
78.79
extractor/safedial.go
4
86.67
-2.48% extractor/readability.go
2
69.57
-1.2% main.go

Coverage Regressions

Lines Coverage ∆ File
11
86.67
-2.48% extractor/readability.go
1
96.83
0.16% extractor/pics.go
Jobs
ID Job ID Ran Files Coverage
1 28681139181.1 03 Jul 2026 08:04PM UTC 10
77.77
GitHub Action Run
Source Files on build 28681139181
  • Tree
  • List 10
  • Changed 4
  • Source Changed 0
  • Coverage Changed 4
Coverage ∆ File Lines Relevant Covered Missed Hits/Line
  • Back to Repo
  • Pull Request #83
  • PR Base - master (#28463114096)
  • Delete
STATUS · Troubleshooting · Open an Issue · Sales · Support · CAREERS · ENTERPRISE · START FREE · SCHEDULE DEMO
ANNOUNCEMENTS · TWITTER · TOS & SLA · Supported CI Services · What's a CI service? · Automated Testing

© 2026 Coveralls, Inc