{"id":"GHSA-qp7j-x725-g67f","summary":"HydrAIDE Authentication Bypass Vulnerability","details":"### Summary\nThere is no authentication of any kind.\n\n\n### Details\nTLS is implemented, the tunnel between the client and server is secure, however once data is on the server, it's free to be read by any adversaries.\n\nOn the client side : https://github.com/hydraide/hydraide/blob/main/sdk/go/hydraidego/client/client.go#L221\nIt should be using a TLS Config with RootCAs and Certificates, currently RootCAs only (under NewClientTLSFromFile)\n\nAnd on the server side, there should be ClientCAs and ClientAuth filled.\n\n### PoC\nTo bypass as is, the simplest way is to take the client and modify the code as such : \n\nModified from https://github.com/hydraide/hydraide/blob/main/sdk/go/hydraidego/client/client.go#L209\n```go\n\t\t\t// hostOnly := strings.Split(server.Host, \":\")[0]\n\t\t\t// creds, certErr := credentials.NewClientTLSFromFile(server.CertFilePath, hostOnly)\n\t\t\t// if certErr != nil {\n\t\t\t// \tslog.Error(\"error while loading TLS credentials: \", \"error\", certErr, \"server\", server.Host, \"fromIsland\", server.FromIsland, \"toIsland\", server.ToIsland)\n\t\t\t// \terrorMessages = append(errorMessages, certErr)\n\t\t\t// }\n\t\t\tvar opts []grpc.DialOption\n\t\t\ttlsConfig := &tls.Config{\n\t\t\t\tInsecureSkipVerify: true,\n\t\t\t}\n\t\t\tcreds := credentials.NewTLS(tlsConfig)\n\t\t\topts = append(opts, grpc.WithTransportCredentials(creds))\n```\n\n### Impact\nIt impacts everyone who think there is any kind of authentication.\n\n---\n\n## Resolution\n\nThis vulnerability has been fully fixed in server/v2.2.1 together with hydraidectl/v0.2.1.\n\nAll users are strongly advised to upgrade:\n\n1. Update to hydraidectl v0.2.1\n2. Re-initialize server instances with hydraidectl init into a new folder. This generates the required certificate files, downloads the latest binaries, and sets up the necessary environment variables.\n\nFor migration help, join the community Discord: https://discord.gg/xE2YSkzFRm or open a GitHub Discussion.\nIf anything does not work, please report it.","aliases":["GO-2025-3895"],"modified":"2025-08-29T20:37:10Z","published":"2025-08-19T15:34:48Z","database_specific":{"github_reviewed":true,"github_reviewed_at":"2025-08-19T15:34:48Z","nvd_published_at":null,"cwe_ids":["CWE-290"],"severity":"CRITICAL"},"references":[{"type":"WEB","url":"https://github.com/hydraide/hydraide/security/advisories/GHSA-qp7j-x725-g67f"},{"type":"WEB","url":"https://github.com/hydraide/hydraide/commit/b252554a811400a81951dc9f959b99077f187975#diff-63efbc8179fff403eb5cc642407b33c0fb21aea2c84baaf5e5223f76f5d75f55"},{"type":"PACKAGE","url":"https://github.com/hydraide/hydraide"},{"type":"WEB","url":"https://pkg.go.dev/vuln/GO-2025-3895"}],"affected":[{"package":{"name":"github.com/hydraide/hydraide","ecosystem":"Go","purl":"pkg:golang/github.com/hydraide/hydraide"},"ranges":[{"type":"SEMVER","events":[{"introduced":"2.1.1"},{"fixed":"2.2.1"}]}],"database_specific":{"source":"https://github.com/github/advisory-database/blob/main/advisories/github-reviewed/2025/08/GHSA-qp7j-x725-g67f/GHSA-qp7j-x725-g67f.json"}},{"package":{"name":"github.com/hydraide/hydraide","ecosystem":"Go","purl":"pkg:golang/github.com/hydraide/hydraide"},"ranges":[{"type":"SEMVER","events":[{"introduced":"0"},{"fixed":"0.0.0-20250816184905-1256db38c33c"}]}],"database_specific":{"source":"https://github.com/github/advisory-database/blob/main/advisories/github-reviewed/2025/08/GHSA-qp7j-x725-g67f/GHSA-qp7j-x725-g67f.json"}}],"schema_version":"1.9.0","severity":[{"type":"CVSS_V3","score":"CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:C/C:H/I:H/A:H"}]}