The GraphQL endpoint built its gqlgen server with bare handler.New and no limits, so a single request with thousands of aliased resolver calls was parsed, validated, executed, and marshalled in full. Under load this let an unauthenticated client drive excessive CPU and memory use against POST /api/connect/v1/graphql and the console and trust endpoints, which share the same constructor (GHSA-prh2-g8pv-m7p9). Add configurable guards in the shared gqlutils.NewHandler: a parser token limit rejects oversized queries at lex time before any execution, a fixed complexity limit caps field-selection count, an LRU query cache avoids repeated parsing, and field suggestions are disabled. The limits flow from a new APIConfig.GraphQL section through server and api config into all three GraphQL handlers, with PROBOD_API_GRAPHQL_* env vars and Helm values exposed for per-environment tuning. Defaults are sized with generous headroom over real traffic: the parser token limit (15000) and complexity limit (2000) sit far above the largest legitimate frontend query yet well below the proof-of-concept flood, so normal usage is unaffected while floods are rejected cheaply. Signed-off-by: Bryan Frimin <bryan@probo.com>
272 lines
13 KiB
Modula-2
272 lines
13 KiB
Modula-2
module go.probo.inc/probo
|
|
|
|
go 1.26.4
|
|
|
|
require (
|
|
codeberg.org/miekg/dns v0.6.81
|
|
github.com/99designs/gqlgen v0.17.90
|
|
github.com/anthropics/anthropic-sdk-go v1.48.0
|
|
github.com/aws/aws-sdk-go-v2 v1.42.0
|
|
github.com/aws/aws-sdk-go-v2/config v1.32.23
|
|
github.com/aws/aws-sdk-go-v2/credentials v1.19.22
|
|
github.com/aws/aws-sdk-go-v2/service/bedrockruntime v1.53.4
|
|
github.com/aws/aws-sdk-go-v2/service/s3 v1.103.2
|
|
github.com/aws/aws-sdk-go-v2/service/secretsmanager v1.42.3
|
|
github.com/aws/aws-sdk-go-v2/service/ssm v1.69.3
|
|
github.com/brianvoe/gofakeit/v7 v7.15.0
|
|
github.com/charmbracelet/huh v1.0.0
|
|
github.com/charmbracelet/lipgloss v1.1.0
|
|
github.com/chromedp/cdproto v0.0.0-20260427013145-5737772c319b
|
|
github.com/chromedp/chromedp v0.15.1
|
|
github.com/crewjam/saml v0.5.1
|
|
github.com/digitorus/timestamp v0.0.0-20250524132541-c45532741eea
|
|
github.com/go-chi/chi/v5 v5.3.0
|
|
github.com/go-chi/cors v1.2.2
|
|
github.com/go-git/go-git/v5 v5.19.1
|
|
github.com/jackc/pgx/v5 v5.10.0
|
|
github.com/jhillyerd/enmime v1.3.0
|
|
github.com/microcosm-cc/bluemonday v1.0.27
|
|
github.com/modelcontextprotocol/go-sdk v1.6.1
|
|
github.com/muesli/termenv v0.16.0
|
|
github.com/openai/openai-go v1.12.0
|
|
github.com/pdfcpu/pdfcpu v0.12.1
|
|
github.com/pires/go-proxyproto v0.12.0
|
|
github.com/prometheus/client_golang v1.23.2
|
|
github.com/scim2/filter-parser/v2 v2.2.1
|
|
github.com/sigstore/sigstore-go v1.2.0
|
|
github.com/stretchr/testify v1.11.1
|
|
github.com/vektah/gqlparser/v2 v2.5.33
|
|
github.com/vikstrous/dataloadgen v0.0.10
|
|
github.com/yuin/goldmark v1.8.2
|
|
go.gearno.de/crypto/uuid v0.1.1-0.20251208105319-3f587312a712
|
|
go.gearno.de/kit v0.13.1
|
|
go.gearno.de/x/ref v0.0.0-20260216110753-a700c951377c
|
|
go.opentelemetry.io/otel v1.44.0
|
|
go.opentelemetry.io/otel/trace v1.44.0
|
|
go.probo.inc/mcpgen v0.0.0-20260428172408-1496ba9b4619
|
|
golang.org/x/crypto v0.52.0
|
|
golang.org/x/image v0.43.0
|
|
golang.org/x/oauth2 v0.36.0
|
|
golang.org/x/sync v0.21.0
|
|
google.golang.org/api v0.283.0
|
|
gopkg.in/dnaeon/go-vcr.v4 v4.0.6
|
|
gopkg.in/yaml.v3 v3.0.1
|
|
)
|
|
|
|
require (
|
|
dario.cat/mergo v1.0.2 // indirect
|
|
github.com/Microsoft/go-winio v0.6.2 // indirect
|
|
github.com/ProtonMail/go-crypto v1.4.1 // indirect
|
|
github.com/asaskevich/govalidator v0.0.0-20230301143203-a9d515a09cc2 // indirect
|
|
github.com/atotto/clipboard v0.1.4 // indirect
|
|
github.com/aws/aws-sdk-go-v2/feature/ec2/imds v1.18.28 // indirect
|
|
github.com/aws/aws-sdk-go-v2/service/signin v1.1.4 // indirect
|
|
github.com/aws/aws-sdk-go-v2/service/sso v1.31.2 // indirect
|
|
github.com/aws/aws-sdk-go-v2/service/ssooidc v1.36.5 // indirect
|
|
github.com/aws/aws-sdk-go-v2/service/sts v1.43.2 // indirect
|
|
github.com/aymanbagabas/go-osc52/v2 v2.0.1 // indirect
|
|
github.com/aymerick/douceur v0.2.0 // indirect
|
|
github.com/bahlo/generic-list-go v0.2.0 // indirect
|
|
github.com/blang/semver v3.5.1+incompatible // indirect
|
|
github.com/buger/jsonparser v1.2.0 // indirect
|
|
github.com/catppuccin/go v0.3.0 // indirect
|
|
github.com/charmbracelet/bubbles v1.0.0 // indirect
|
|
github.com/charmbracelet/bubbletea v1.3.10 // indirect
|
|
github.com/charmbracelet/colorprofile v0.4.3 // indirect
|
|
github.com/charmbracelet/x/ansi v0.11.7 // indirect
|
|
github.com/charmbracelet/x/cellbuf v0.0.15 // indirect
|
|
github.com/charmbracelet/x/exp/strings v0.1.0 // indirect
|
|
github.com/charmbracelet/x/term v0.2.2 // indirect
|
|
github.com/clipperhouse/displaywidth v0.11.0 // indirect
|
|
github.com/cloudflare/circl v1.6.3 // indirect
|
|
github.com/cyberphone/json-canonicalization v0.0.0-20241213102144-19d51d7fe467 // indirect
|
|
github.com/cyphar/filepath-securejoin v0.6.1 // indirect
|
|
github.com/dustin/go-humanize v1.0.1 // indirect
|
|
github.com/emirpasic/gods v1.18.1 // indirect
|
|
github.com/erikgeiser/coninput v0.0.0-20211004153227-1c3628e74d0f // indirect
|
|
github.com/go-git/gcfg v1.5.1-0.20230307220236-3a3c6141e376 // indirect
|
|
github.com/go-git/go-billy/v5 v5.9.0 // indirect
|
|
github.com/go-openapi/analysis v0.25.2 // indirect
|
|
github.com/go-openapi/errors v0.22.7 // indirect
|
|
github.com/go-openapi/jsonpointer v0.23.1 // indirect
|
|
github.com/go-openapi/jsonreference v0.21.6 // indirect
|
|
github.com/go-openapi/loads v0.23.3 // indirect
|
|
github.com/go-openapi/runtime v0.32.3 // indirect
|
|
github.com/go-openapi/runtime/server-middleware v0.32.1 // indirect
|
|
github.com/go-openapi/spec v0.22.5 // indirect
|
|
github.com/go-openapi/strfmt v0.26.3 // indirect
|
|
github.com/go-openapi/swag v0.26.0 // indirect
|
|
github.com/go-openapi/swag/cmdutils v0.26.0 // indirect
|
|
github.com/go-openapi/swag/conv v0.26.0 // indirect
|
|
github.com/go-openapi/swag/fileutils v0.26.0 // indirect
|
|
github.com/go-openapi/swag/jsonname v0.26.0 // indirect
|
|
github.com/go-openapi/swag/jsonutils v0.26.0 // indirect
|
|
github.com/go-openapi/swag/loading v0.26.0 // indirect
|
|
github.com/go-openapi/swag/mangling v0.26.0 // indirect
|
|
github.com/go-openapi/swag/netutils v0.26.0 // indirect
|
|
github.com/go-openapi/swag/stringutils v0.26.0 // indirect
|
|
github.com/go-openapi/swag/typeutils v0.26.0 // indirect
|
|
github.com/go-openapi/swag/yamlutils v0.26.0 // indirect
|
|
github.com/go-openapi/validate v0.25.3 // indirect
|
|
github.com/goccy/go-json v0.10.6 // indirect
|
|
github.com/golang/groupcache v0.0.0-20241129210726-2c02b8208cf8 // indirect
|
|
github.com/google/certificate-transparency-go v1.3.3 // indirect
|
|
github.com/google/go-containerregistry v0.21.6 // indirect
|
|
github.com/gorilla/css v1.0.1 // indirect
|
|
github.com/in-toto/attestation v1.2.0 // indirect
|
|
github.com/in-toto/in-toto-golang v0.11.0 // indirect
|
|
github.com/invopop/jsonschema v0.14.0 // indirect
|
|
github.com/jbenet/go-context v0.0.0-20150711004518-d14ea06fba99 // indirect
|
|
github.com/kevinburke/ssh_config v1.6.0 // indirect
|
|
github.com/klauspost/cpuid/v2 v2.3.0 // indirect
|
|
github.com/lucasb-eyer/go-colorful v1.4.0 // indirect
|
|
github.com/mattn/go-localereader v0.0.1 // indirect
|
|
github.com/mitchellh/hashstructure/v2 v2.0.2 // indirect
|
|
github.com/muesli/ansi v0.0.0-20230316100256-276c6243b2f6 // indirect
|
|
github.com/muesli/cancelreader v0.2.2 // indirect
|
|
github.com/oklog/ulid/v2 v2.1.1 // indirect
|
|
github.com/olekukonko/cat v0.0.0-20250911104152-50322a0618f6 // indirect
|
|
github.com/olekukonko/errors v1.3.0 // indirect
|
|
github.com/olekukonko/ll v0.1.8 // indirect
|
|
github.com/opencontainers/go-digest v1.0.0 // indirect
|
|
github.com/pb33f/ordered-map/v2 v2.3.1 // indirect
|
|
github.com/pjbgf/sha1cd v0.6.0 // indirect
|
|
github.com/rivo/uniseg v0.4.7 // indirect
|
|
github.com/secure-systems-lab/go-securesystemslib v0.11.0 // indirect
|
|
github.com/sergi/go-diff v1.4.0 // indirect
|
|
github.com/shibumi/go-pathspec v1.3.0 // indirect
|
|
github.com/sigstore/protobuf-specs v0.5.1 // indirect
|
|
github.com/sigstore/rekor v1.5.2 // indirect
|
|
github.com/sigstore/rekor-tiles/v2 v2.2.2-0.20260601073857-5d098a2b6443 // indirect
|
|
github.com/sigstore/sigstore v1.10.8 // indirect
|
|
github.com/sigstore/timestamp-authority/v2 v2.1.2 // indirect
|
|
github.com/skeema/knownhosts v1.3.2 // indirect
|
|
github.com/standard-webhooks/standard-webhooks/libraries v0.0.1 // indirect
|
|
github.com/theupdateframework/go-tuf/v2 v2.4.2 // indirect
|
|
github.com/transparency-dev/formats v0.1.1 // indirect
|
|
github.com/transparency-dev/merkle v0.0.2 // indirect
|
|
github.com/xanzy/ssh-agent v0.3.3 // indirect
|
|
github.com/xo/terminfo v0.0.0-20220910002029-abceb7e1c41e // indirect
|
|
github.com/youmark/pkcs8 v0.0.0-20240726163527-a2c0da244d78 // indirect
|
|
go.yaml.in/yaml/v3 v3.0.4 // indirect
|
|
go.yaml.in/yaml/v4 v4.0.0-rc.4 // indirect
|
|
golang.org/x/telemetry v0.0.0-20260508192327-42602be52be6 // indirect
|
|
gopkg.in/warnings.v0 v0.1.2 // indirect
|
|
k8s.io/klog/v2 v2.140.0 // indirect
|
|
)
|
|
|
|
require (
|
|
cloud.google.com/go/auth v0.20.0 // indirect
|
|
cloud.google.com/go/auth/oauth2adapt v0.2.8 // indirect
|
|
cloud.google.com/go/compute/metadata v0.9.0 // indirect
|
|
github.com/agnivade/levenshtein v1.2.1 // indirect
|
|
github.com/aws/aws-sdk-go-v2/aws/protocol/eventstream v1.7.13 // indirect
|
|
github.com/aws/aws-sdk-go-v2/internal/configsources v1.4.29 // indirect
|
|
github.com/aws/aws-sdk-go-v2/internal/endpoints/v2 v2.7.29 // indirect
|
|
github.com/aws/aws-sdk-go-v2/internal/v4a v1.4.29 // indirect
|
|
github.com/aws/aws-sdk-go-v2/service/internal/accept-encoding v1.13.12 // indirect
|
|
github.com/aws/aws-sdk-go-v2/service/internal/checksum v1.9.21 // indirect
|
|
github.com/aws/aws-sdk-go-v2/service/internal/presigned-url v1.13.28 // indirect
|
|
github.com/aws/aws-sdk-go-v2/service/internal/s3shared v1.19.28 // indirect
|
|
github.com/aws/smithy-go v1.27.1
|
|
github.com/beevik/etree v1.6.0 // indirect
|
|
github.com/beorn7/perks v1.0.1 // indirect
|
|
github.com/bitfield/gotestdox v0.2.2 // indirect
|
|
github.com/cenkalti/backoff/v5 v5.0.3 // indirect
|
|
github.com/cention-sany/utf7 v0.0.0-20170124080048-26cad61bd60a // indirect
|
|
github.com/cespare/xxhash/v2 v2.3.0 // indirect
|
|
github.com/chromedp/sysutil v1.1.0 // indirect
|
|
github.com/clipperhouse/uax29/v2 v2.7.0 // indirect
|
|
github.com/davecgh/go-spew v1.1.2-0.20180830191138-d8f796af33cc // indirect
|
|
github.com/di-wu/parser v0.3.0 // indirect
|
|
github.com/di-wu/xsd-datetime v1.0.0 // indirect
|
|
github.com/digitorus/pkcs7 v0.0.0-20250730155240-ffadbf3f398c // indirect
|
|
github.com/dnephin/pflag v1.0.7 // indirect
|
|
github.com/elimity-com/scim v0.0.0-20260506142751-830e1caafcc3
|
|
github.com/fatih/color v1.19.0 // indirect
|
|
github.com/felixge/httpsnoop v1.0.4 // indirect
|
|
github.com/fsnotify/fsnotify v1.9.0 // indirect
|
|
github.com/go-json-experiment/json v0.0.0-20260520185125-572e7c383686 // indirect
|
|
github.com/go-logr/logr v1.4.3 // indirect
|
|
github.com/go-logr/stdr v1.2.2 // indirect
|
|
github.com/go-viper/mapstructure/v2 v2.5.0 // indirect
|
|
github.com/gobwas/httphead v0.1.0 // indirect
|
|
github.com/gobwas/pool v0.2.1 // indirect
|
|
github.com/gobwas/ws v1.4.0 // indirect
|
|
github.com/goccy/go-yaml v1.19.2 // indirect
|
|
github.com/gogs/chardet v0.0.0-20211120154057-b7413eaefb8f // indirect
|
|
github.com/google/jsonschema-go v0.4.3
|
|
github.com/google/s2a-go v0.1.9 // indirect
|
|
github.com/google/shlex v0.0.0-20191202100458-e7afc7fbc510 // indirect
|
|
github.com/google/uuid v1.6.0 // indirect
|
|
github.com/googleapis/enterprise-certificate-proxy v0.3.16 // indirect
|
|
github.com/googleapis/gax-go/v2 v2.22.0 // indirect
|
|
github.com/gorilla/websocket v1.5.3 // indirect
|
|
github.com/grpc-ecosystem/grpc-gateway/v2 v2.29.0 // indirect
|
|
github.com/hashicorp/golang-lru/v2 v2.0.7 // indirect
|
|
github.com/hhrutter/lzw v1.0.0 // indirect
|
|
github.com/hhrutter/pkcs7 v0.2.2 // indirect
|
|
github.com/hhrutter/tiff v1.0.3 // indirect
|
|
github.com/inconshreveable/mousetrap v1.1.0 // indirect
|
|
github.com/jackc/pgpassfile v1.0.0 // indirect
|
|
github.com/jackc/pgservicefile v0.0.0-20240606120523-5a60cdf6a761 // indirect
|
|
github.com/jackc/puddle/v2 v2.2.2 // indirect
|
|
github.com/jaytaylor/html2text v0.0.0-20260303211410-1a4bdc82ecec // indirect
|
|
github.com/jonboulle/clockwork v0.5.0 // indirect
|
|
github.com/mattermost/xml-roundtrip-validator v0.1.0 // indirect
|
|
github.com/mattn/go-colorable v0.1.14 // indirect
|
|
github.com/mattn/go-isatty v0.0.22 // indirect
|
|
github.com/mattn/go-runewidth v0.0.23 // indirect
|
|
github.com/munnerz/goautoneg v0.0.0-20191010083416-a7dc8b61c822 // indirect
|
|
github.com/olekukonko/tablewriter v1.1.4 // indirect
|
|
github.com/pkg/errors v0.9.1 // indirect
|
|
github.com/pmezard/go-difflib v1.0.1-0.20181226105442-5d4384ee4fb2 // indirect
|
|
github.com/prometheus/client_model v0.6.2 // indirect
|
|
github.com/prometheus/common v0.67.5 // indirect
|
|
github.com/prometheus/procfs v0.20.1 // indirect
|
|
github.com/russellhaering/goxmldsig v1.6.0 // indirect
|
|
github.com/segmentio/asm v1.2.1 // indirect
|
|
github.com/segmentio/encoding v0.5.4 // indirect
|
|
github.com/sosodev/duration v1.4.0 // indirect
|
|
github.com/spf13/cobra v1.10.2
|
|
github.com/spf13/pflag v1.0.10 // indirect
|
|
github.com/ssor/bom v0.0.0-20170718123548-6386211fdfcf // indirect
|
|
github.com/tidwall/gjson v1.19.0 // indirect
|
|
github.com/tidwall/match v1.2.0 // indirect
|
|
github.com/tidwall/pretty v1.2.1 // indirect
|
|
github.com/tidwall/sjson v1.2.5 // indirect
|
|
github.com/urfave/cli/v3 v3.8.0 // indirect
|
|
github.com/yosida95/uritemplate/v3 v3.0.2 // indirect
|
|
go.gearno.de/x/panicf v0.1.1 // indirect
|
|
go.opentelemetry.io/auto/sdk v1.2.1 // indirect
|
|
go.opentelemetry.io/contrib/instrumentation/net/http/otelhttp v0.68.0 // indirect
|
|
go.opentelemetry.io/otel/exporters/otlp/otlptrace v1.43.0 // indirect
|
|
go.opentelemetry.io/otel/exporters/otlp/otlptrace/otlptracehttp v1.43.0 // indirect
|
|
go.opentelemetry.io/otel/metric v1.44.0 // indirect
|
|
go.opentelemetry.io/otel/sdk v1.44.0
|
|
go.opentelemetry.io/proto/otlp v1.10.0 // indirect
|
|
go.yaml.in/yaml/v2 v2.4.4 // indirect
|
|
golang.org/x/mod v0.36.0
|
|
golang.org/x/net v0.55.0
|
|
golang.org/x/sys v0.45.0 // indirect
|
|
golang.org/x/term v0.43.0
|
|
golang.org/x/text v0.38.0 // indirect
|
|
golang.org/x/tools v0.45.0 // indirect
|
|
google.golang.org/genproto/googleapis/api v0.0.0-20260526163538-3dc84a4a5aaa // indirect
|
|
google.golang.org/genproto/googleapis/rpc v0.0.0-20260526163538-3dc84a4a5aaa // indirect
|
|
google.golang.org/grpc v1.81.1 // indirect
|
|
google.golang.org/protobuf v1.36.11 // indirect
|
|
gopkg.in/yaml.v2 v2.4.0 // indirect
|
|
gotest.tools/gotestsum v1.13.0 // indirect
|
|
sigs.k8s.io/yaml v1.6.0
|
|
)
|
|
|
|
tool (
|
|
github.com/99designs/gqlgen
|
|
go.probo.inc/mcpgen
|
|
golang.org/x/tools/cmd/deadcode
|
|
gotest.tools/gotestsum
|
|
)
|
|
|
|
replace github.com/elimity-com/scim => github.com/getprobo/scim v0.0.0-20260309220528-a952b258e8d3
|