From b7fe004d6b2e6edb810aec16889a94cf1a65f859 Mon Sep 17 00:00:00 2001 From: Michael Matloka Date: Mon, 18 Sep 2023 14:38:02 +0200 Subject: [PATCH] chore(plugin-server): Validate `fetch` hostnames (#17183) * chore(plugin-server): Validate fetch hostnames * Only apply Python host check on Cloud * Update tests to use valid hook URLs * Only apply plugin server host check in prod * Update URLs in a couple more tests * Only check hostnames on Cloud and remove port check * Fix fetch mocking * Roll out hostname guard per project * Fix fetch call assertions * Make `fetchHostnameGuardTeams` optional --- ...ordings-play-list-no-pinned-recordings.png | Bin 112683 -> 77018 bytes plugin-server/jest.setup.fetch-mock.js | 8 ++- plugin-server/package.json | 1 + plugin-server/pnpm-lock.yaml | 8 +++ plugin-server/src/config/config.ts | 3 +- .../on-event-handler-consumer.ts | 8 ++- plugin-server/src/types.ts | 5 +- plugin-server/src/utils/db/hub.ts | 4 ++ plugin-server/src/utils/env-utils.ts | 2 + plugin-server/src/utils/fetch.ts | 68 +++++++++++++++--- plugin-server/src/worker/ingestion/hooks.ts | 13 +++- plugin-server/src/worker/plugins/mmdb.ts | 2 +- plugin-server/src/worker/vm/imports.ts | 52 +++++++------- plugin-server/src/worker/vm/vm.ts | 4 +- plugin-server/tests/main/db.test.ts | 8 +-- plugin-server/tests/utils/fetch.test.ts | 40 +++++++++++ .../event-pipeline-integration.test.ts | 6 +- .../tests/worker/ingestion/hooks.test.ts | 45 +++++++++--- .../tests/worker/plugins/mmdb.test.ts | 2 +- .../tests/worker/vm.extra-lazy.test.ts | 8 +-- plugin-server/tests/worker/vm.test.ts | 32 +++++---- posthog/api/test/test_utils.py | 37 +++++++--- posthog/api/user.py | 4 +- posthog/api/utils.py | 19 +++-- 24 files changed, 279 insertions(+), 100 deletions(-) create mode 100644 plugin-server/tests/utils/fetch.test.ts diff --git a/frontend/__snapshots__/scenes-app-recordings--recordings-play-list-no-pinned-recordings.png b/frontend/__snapshots__/scenes-app-recordings--recordings-play-list-no-pinned-recordings.png index a3d4147b50f6790af5862c75833da59db3038b11..072bef08ef7e3b92f8913319e284c93399d04136 100644 GIT binary patch literal 77018 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 aCFJxHpQNS8E7cehA)cXxNg%zt^`@AJI- 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 {iPQ^^T5^T?Z!upf`ME7W8NZW7ScnQl(h-hv& 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 MQVM4iPix=)ADbx=cK`qY diff --git a/plugin-server/jest.setup.fetch-mock.js b/plugin-server/jest.setup.fetch-mock.js index 151debe7538..60e240a8982 100644 --- a/plugin-server/jest.setup.fetch-mock.js +++ b/plugin-server/jest.setup.fetch-mock.js @@ -6,7 +6,11 @@ import fetch from 'node-fetch' import { status } from './src/utils/status' -jest.mock('node-fetch') +jest.mock('node-fetch', () => ({ + __esModule: true, + ...jest.requireActual('node-fetch'), // Only mock fetch(), leave Request, Response, FetchError, etc. alone + default: jest.fn(), +})) beforeEach(() => { const responsesToUrls = { @@ -21,7 +25,7 @@ beforeEach(() => { ]), } - fetch.mockImplementation( + jest.mocked(fetch).mockImplementation( (url, options) => new Promise((resolve) => resolve({ diff --git a/plugin-server/package.json b/plugin-server/package.json index e2d766f344b..d13ed75c16f 100644 --- a/plugin-server/package.json +++ b/plugin-server/package.json @@ -127,6 +127,7 @@ "eslint-plugin-prettier": "^4.2.1", "eslint-plugin-promise": "^6.0.0", "eslint-plugin-simple-import-sort": "^7.0.0", + "ipaddr.js": "^2.1.0", "jest": "^28.1.1", "nodemon": "^2.0.22", "parse-prometheus-text-format": "^1.1.1", diff --git a/plugin-server/pnpm-lock.yaml b/plugin-server/pnpm-lock.yaml index ffb5724f5ec..9389350aa76 100644 --- a/plugin-server/pnpm-lock.yaml +++ b/plugin-server/pnpm-lock.yaml @@ -279,6 +279,9 @@ devDependencies: eslint-plugin-simple-import-sort: specifier: ^7.0.0 version: 7.0.0(eslint@8.39.0) + ipaddr.js: + specifier: ^2.1.0 + version: 2.1.0 jest: specifier: ^28.1.1 version: 28.1.3(@types/node@16.18.25)(ts-node@10.9.1) @@ -7510,6 +7513,11 @@ packages: resolution: {integrity: sha512-WKa+XuLG1A1R0UWhl2+1XQSi+fZWMsYKffMZTTYsiZaUD8k2yDAj5atimTUD2TZkyCkNEeYE5NhFZmupOGtjYQ==} dev: false + /ipaddr.js@2.1.0: + resolution: {integrity: sha512-LlbxQ7xKzfBusov6UMi4MFpEg0m+mAm9xyNGEduwXMEDuf4WfzB/RZwMVYEd7IKGvh4IUkEXYxtAVu9T3OelJQ==} + engines: {node: '>= 10'} + dev: true + /is-arguments@1.1.1: resolution: {integrity: sha512-8Q7EARjzEnKpt/PCD7e1cgUS0a6X8u5tdSiMqXhojOdoV9TsMsiO+9VLC5vAmO8N7/GmXn7yjR8qnA6bVAEzfA==} engines: {node: '>= 0.4'} diff --git a/plugin-server/src/config/config.ts b/plugin-server/src/config/config.ts index f3245ce6223..ed19e701fca 100644 --- a/plugin-server/src/config/config.ts +++ b/plugin-server/src/config/config.ts @@ -111,6 +111,7 @@ export function getDefaultConfig(): PluginsServerConfig { CONVERSION_BUFFER_ENABLED_TEAMS: '', CONVERSION_BUFFER_TOPIC_ENABLED_TEAMS: '', BUFFER_CONVERSION_SECONDS: isDevEnv() ? 2 : 60, // KEEP IN SYNC WITH posthog/settings/ingestion.py + FETCH_HOSTNAME_GUARD_TEAMS: '', PERSON_INFO_CACHE_TTL: 5 * 60, // 5 min KAFKA_HEALTHCHECK_SECONDS: 20, OBJECT_STORAGE_ENABLED: true, @@ -129,7 +130,7 @@ export function getDefaultConfig(): PluginsServerConfig { APP_METRICS_GATHERED_FOR_ALL: isDevEnv() ? true : false, MAX_TEAM_ID_TO_BUFFER_ANONYMOUS_EVENTS_FOR: 0, USE_KAFKA_FOR_SCHEDULED_TASKS: true, - CLOUD_DEPLOYMENT: 'default', // Used as a Sentry tag + CLOUD_DEPLOYMENT: null, STARTUP_PROFILE_DURATION_SECONDS: 300, // 5 minutes STARTUP_PROFILE_CPU: false, diff --git a/plugin-server/src/main/ingestion-queues/on-event-handler-consumer.ts b/plugin-server/src/main/ingestion-queues/on-event-handler-consumer.ts index 221c33b1381..31a0e425a40 100644 --- a/plugin-server/src/main/ingestion-queues/on-event-handler-consumer.ts +++ b/plugin-server/src/main/ingestion-queues/on-event-handler-consumer.ts @@ -85,7 +85,13 @@ export const startAsyncWebhooksHandlerConsumer = async ({ const actionManager = new ActionManager(postgres) await actionManager.prepare() const actionMatcher = new ActionMatcher(postgres, actionManager, statsd) - const hookCannon = new HookCommander(postgres, teamManager, organizationManager, statsd) + const hookCannon = new HookCommander( + postgres, + teamManager, + organizationManager, + new Set(serverConfig.FETCH_HOSTNAME_GUARD_TEAMS.split(',').filter(String).map(Number)), + statsd + ) const concurrency = serverConfig.TASKS_PER_WORKER || 20 const pubSub = new PubSub(serverConfig, { diff --git a/plugin-server/src/types.ts b/plugin-server/src/types.ts index 9cc7fbfa216..7434efb3635 100644 --- a/plugin-server/src/types.ts +++ b/plugin-server/src/types.ts @@ -181,6 +181,7 @@ export interface PluginsServerConfig { CONVERSION_BUFFER_ENABLED_TEAMS: string CONVERSION_BUFFER_TOPIC_ENABLED_TEAMS: string BUFFER_CONVERSION_SECONDS: number + FETCH_HOSTNAME_GUARD_TEAMS: string PERSON_INFO_CACHE_TTL: number KAFKA_HEALTHCHECK_SECONDS: number OBJECT_STORAGE_ENABLED: boolean // Disables or enables the use of object storage. It will become mandatory to use object storage @@ -201,7 +202,8 @@ export interface PluginsServerConfig { USE_KAFKA_FOR_SCHEDULED_TASKS: boolean // distribute scheduled tasks across the scheduler workers EVENT_OVERFLOW_BUCKET_CAPACITY: number EVENT_OVERFLOW_BUCKET_REPLENISH_RATE: number - CLOUD_DEPLOYMENT: string + /** Label of the PostHog Cloud environment. Null if not running PostHog Cloud. @example 'US' */ + CLOUD_DEPLOYMENT: string | null // dump profiles to disk, covering the first N seconds of runtime STARTUP_PROFILE_DURATION_SECONDS: number @@ -266,6 +268,7 @@ export interface Hub extends PluginsServerConfig { lastActivityType: string statelessVms: StatelessVmMap conversionBufferEnabledTeams: Set + fetchHostnameGuardTeams: Set // functions enqueuePluginJob: (job: EnqueuedPluginJob) => Promise // ValueMatchers used for various opt-in/out features diff --git a/plugin-server/src/utils/db/hub.ts b/plugin-server/src/utils/db/hub.ts index 4e37d8a5cd7..a3ee16667d2 100644 --- a/plugin-server/src/utils/db/hub.ts +++ b/plugin-server/src/utils/db/hub.ts @@ -70,6 +70,9 @@ export async function createHub( const conversionBufferEnabledTeams = new Set( serverConfig.CONVERSION_BUFFER_ENABLED_TEAMS.split(',').filter(String).map(Number) ) + const fetchHostnameGuardTeams = new Set( + serverConfig.FETCH_HOSTNAME_GUARD_TEAMS.split(',').filter(String).map(Number) + ) const statsd: StatsD | undefined = createStatsdClient(serverConfig, threadId) @@ -181,6 +184,7 @@ export async function createHub( rootAccessManager, promiseManager, conversionBufferEnabledTeams, + fetchHostnameGuardTeams, pluginConfigsToSkipElementsParsing: buildIntegerMatcher(process.env.SKIP_ELEMENTS_PARSING_PLUGINS, true), } diff --git a/plugin-server/src/utils/env-utils.ts b/plugin-server/src/utils/env-utils.ts index 0b343f09fc8..4c2ab7d1731 100644 --- a/plugin-server/src/utils/env-utils.ts +++ b/plugin-server/src/utils/env-utils.ts @@ -40,6 +40,8 @@ export const isTestEnv = (): boolean => determineNodeEnv() === NodeEnv.Test export const isDevEnv = (): boolean => determineNodeEnv() === NodeEnv.Development export const isProdEnv = (): boolean => determineNodeEnv() === NodeEnv.Production +export const isCloud = (): boolean => !!process.env.CLOUD_DEPLOYMENT + export function isIngestionOverflowEnabled(): boolean { const ingestionOverflowEnabled = process.env.INGESTION_OVERFLOW_ENABLED return stringToBoolean(ingestionOverflowEnabled) diff --git a/plugin-server/src/utils/fetch.ts b/plugin-server/src/utils/fetch.ts index c45166edd0d..298e9e70deb 100644 --- a/plugin-server/src/utils/fetch.ts +++ b/plugin-server/src/utils/fetch.ts @@ -1,21 +1,73 @@ // This module wraps node-fetch with a sentry tracing-aware extension -import fetch, { FetchError, Request, Response } from 'node-fetch' +import { LookupAddress } from 'dns' +import dns from 'dns/promises' +import * as ipaddr from 'ipaddr.js' +import fetch, { type RequestInfo, type RequestInit, type Response, FetchError, Request } from 'node-fetch' +import { URL } from 'url' import { runInSpan } from '../sentry' -function fetchWrapper(...args: Parameters): Promise { - const request = new Request(...args) - return runInSpan( +export async function trackedFetch(url: RequestInfo, init?: RequestInit): Promise { + const request = new Request(url, init) + return await runInSpan( { op: 'fetch', description: `${request.method} ${request.url}`, }, - () => fetch(...args) + async () => await fetch(url, init) ) } -fetchWrapper.isRedirect = fetch.isRedirect -fetchWrapper.FetchError = FetchError +trackedFetch.isRedirect = fetch.isRedirect +trackedFetch.FetchError = FetchError -export default fetchWrapper +export async function safeTrackedFetch(url: RequestInfo, init?: RequestInit): Promise { + const request = new Request(url, init) + return await runInSpan( + { + op: 'fetch', + description: `${request.method} ${request.url}`, + }, + async () => { + await raiseIfUserProvidedUrlUnsafe(request.url) + return await fetch(url, init) + } + ) +} + +safeTrackedFetch.isRedirect = fetch.isRedirect +safeTrackedFetch.FetchError = FetchError + +/** + * Raise if the provided URL seems unsafe, otherwise do nothing. + * + * Equivalent of Django raise_if_user_provided_url_unsafe. + */ +export async function raiseIfUserProvidedUrlUnsafe(url: string): Promise { + // Raise if the provided URL seems unsafe, otherwise do nothing. + let parsedUrl: URL + try { + parsedUrl = new URL(url) + } catch (err) { + throw new FetchError('Invalid URL', 'posthog-host-guard') + } + if (!parsedUrl.hostname) { + throw new FetchError('No hostname', 'posthog-host-guard') + } + if (parsedUrl.protocol !== 'http:' && parsedUrl.protocol !== 'https:') { + throw new FetchError('Scheme must be either HTTP or HTTPS', 'posthog-host-guard') + } + let addrinfo: LookupAddress[] + try { + addrinfo = await dns.lookup(parsedUrl.hostname, { all: true }) + } catch (err) { + throw new FetchError('Invalid hostname', 'posthog-host-guard') + } + for (const { address } of addrinfo) { + // Prevent addressing internal services + if (ipaddr.parse(address).range() !== 'unicast') { + throw new FetchError('Internal hostname', 'posthog-host-guard') + } + } +} diff --git a/plugin-server/src/worker/ingestion/hooks.ts b/plugin-server/src/worker/ingestion/hooks.ts index e3c15a93291..2cc8279c88d 100644 --- a/plugin-server/src/worker/ingestion/hooks.ts +++ b/plugin-server/src/worker/ingestion/hooks.ts @@ -5,7 +5,8 @@ import { format } from 'util' import { Action, Hook, PostIngestionEvent, Team } from '../../types' import { PostgresRouter, PostgresUse } from '../../utils/db/postgres' -import fetch from '../../utils/fetch' +import { isCloud } from '../../utils/env-utils' +import { safeTrackedFetch, trackedFetch } from '../../utils/fetch' import { status } from '../../utils/status' import { getPropertyValueByPath, stringify } from '../../utils/utils' import { OrganizationManager } from './organization-manager' @@ -256,6 +257,7 @@ export class HookCommander { organizationManager: OrganizationManager statsd: StatsD | undefined siteUrl: string + fetchHostnameGuardTeams: Set /** Hook request timeout in ms. */ EXTERNAL_REQUEST_TIMEOUT = 10 * 1000 @@ -264,11 +266,13 @@ export class HookCommander { postgres: PostgresRouter, teamManager: TeamManager, organizationManager: OrganizationManager, + fetchHostnameGuardTeams?: Set, statsd?: StatsD ) { this.postgres = postgres this.teamManager = teamManager this.organizationManager = organizationManager + this.fetchHostnameGuardTeams = fetchHostnameGuardTeams || new Set() if (process.env.SITE_URL) { this.siteUrl = process.env.SITE_URL } else { @@ -358,9 +362,10 @@ export class HookCommander { `⌛⌛⌛ Posting Webhook slow. Timeout warning after 5 sec! url=${webhookUrl} team_id=${team.id} event_id=${event.eventUuid}` ) }, 5000) + const relevantFetch = isCloud() && this.fetchHostnameGuardTeams.has(team.id) ? safeTrackedFetch : trackedFetch try { await instrumentWebhookStep('fetch', async () => { - const request = await fetch(webhookUrl, { + const request = await relevantFetch(webhookUrl, { method: 'POST', body: JSON.stringify(message, undefined, 4), headers: { 'Content-Type': 'application/json' }, @@ -399,8 +404,10 @@ export class HookCommander { `⌛⌛⌛ Posting RestHook slow. Timeout warning after 5 sec! url=${hook.target} team_id=${event.teamId} event_id=${event.eventUuid}` ) }, 5000) + const relevantFetch = + isCloud() && this.fetchHostnameGuardTeams.has(hook.team_id) ? safeTrackedFetch : trackedFetch try { - const request = await fetch(hook.target, { + const request = await relevantFetch(hook.target, { method: 'POST', body: JSON.stringify(payload, undefined, 4), headers: { 'Content-Type': 'application/json' }, diff --git a/plugin-server/src/worker/plugins/mmdb.ts b/plugin-server/src/worker/plugins/mmdb.ts index a825c931c4d..7321238b2ba 100644 --- a/plugin-server/src/worker/plugins/mmdb.ts +++ b/plugin-server/src/worker/plugins/mmdb.ts @@ -1,5 +1,6 @@ import { Reader, ReaderModel } from '@maxmind/geoip2-node' import { DateTime } from 'luxon' +import fetch from 'node-fetch' import * as schedule from 'node-schedule' import prettyBytes from 'pretty-bytes' import { brotliDecompress } from 'zlib' @@ -12,7 +13,6 @@ import { } from '../../config/mmdb-constants' import { Hub, PluginAttachmentDB } from '../../types' import { PostgresUse } from '../../utils/db/postgres' -import fetch from '../../utils/fetch' import { status } from '../../utils/status' import { delay } from '../../utils/utils' diff --git a/plugin-server/src/worker/vm/imports.ts b/plugin-server/src/worker/vm/imports.ts index bcb96489749..d7b02d87c1c 100644 --- a/plugin-server/src/worker/vm/imports.ts +++ b/plugin-server/src/worker/vm/imports.ts @@ -12,33 +12,37 @@ import * as jsonwebtoken from 'jsonwebtoken' import * as pg from 'pg' import snowflake from 'snowflake-sdk' import { PassThrough } from 'stream' +import { Hub } from 'types' import * as url from 'url' import * as zlib from 'zlib' -import fetch from '../../utils/fetch' +import { isCloud, isTestEnv } from '../../utils/env-utils' +import { safeTrackedFetch, trackedFetch } from '../../utils/fetch' import { writeToFile } from './extensions/test-utils' -export const imports = { - ...(process.env.NODE_ENV === 'test' - ? { - 'test-utils/write-to-file': writeToFile, - } - : {}), - '@google-cloud/bigquery': bigquery, - '@google-cloud/pubsub': pubsub, - '@google-cloud/storage': gcs, - '@posthog/plugin-contrib': contrib, - '@posthog/plugin-scaffold': scaffold, - 'aws-sdk': AWS, - ethers: ethers, - 'generic-pool': genericPool, - 'node-fetch': fetch, - 'snowflake-sdk': snowflake, - crypto: crypto, - jsonwebtoken: jsonwebtoken, - faker: faker, - pg: pg, - stream: { PassThrough }, - url: url, - zlib: zlib, +export function determineImports(hub: Hub, teamId: number) { + return { + ...(isTestEnv() + ? { + 'test-utils/write-to-file': writeToFile, + } + : {}), + '@google-cloud/bigquery': bigquery, + '@google-cloud/pubsub': pubsub, + '@google-cloud/storage': gcs, + '@posthog/plugin-contrib': contrib, + '@posthog/plugin-scaffold': scaffold, + 'aws-sdk': AWS, + ethers: ethers, + 'generic-pool': genericPool, + 'node-fetch': isCloud() && hub.fetchHostnameGuardTeams.has(teamId) ? safeTrackedFetch : trackedFetch, + 'snowflake-sdk': snowflake, + crypto: crypto, + jsonwebtoken: jsonwebtoken, + faker: faker, + pg: pg, + stream: { PassThrough }, + url: url, + zlib: zlib, + } } diff --git a/plugin-server/src/worker/vm/vm.ts b/plugin-server/src/worker/vm/vm.ts index 967701cdff8..95e40ca4a6d 100644 --- a/plugin-server/src/worker/vm/vm.ts +++ b/plugin-server/src/worker/vm/vm.ts @@ -11,7 +11,7 @@ import { createJobs } from './extensions/jobs' import { createPosthog } from './extensions/posthog' import { createStorage } from './extensions/storage' import { createUtils } from './extensions/utilities' -import { imports } from './imports' +import { determineImports } from './imports' import { transformCode } from './transforms' import { upgradeExportEvents } from './upgrades/export-events' import { addHistoricalEventsExportCapability } from './upgrades/historical-export/export-historical-events' @@ -34,6 +34,8 @@ export function createPluginConfigVM( pluginConfig: PluginConfig, // NB! might have team_id = 0 indexJs: string ): PluginConfigVMResponse { + const imports = determineImports(hub, pluginConfig.team_id) + const timer = new Date() const statsdTiming = (metric: string) => { diff --git a/plugin-server/tests/main/db.test.ts b/plugin-server/tests/main/db.test.ts index 06c23380448..a2a570ce0af 100644 --- a/plugin-server/tests/main/db.test.ts +++ b/plugin-server/tests/main/db.test.ts @@ -165,7 +165,7 @@ describe('DB', () => { user_id: 1001, resource_id: 69, event: 'action_performed', - target: 'https://rest-hooks.example.com/', + target: 'https://example.com/', created: new Date().toISOString(), updated: new Date().toISOString(), }) @@ -188,7 +188,7 @@ describe('DB', () => { team_id: 2, resource_id: 69, event: 'action_performed', - target: 'https://rest-hooks.example.com/', + target: 'https://example.com/', }, ], bytecode: null, @@ -226,7 +226,7 @@ describe('DB', () => { user_id: 1001, resource_id: 69, event: 'event_performed', - target: 'https://rest-hooks.example.com/', + target: 'https://example.com/', created: new Date().toISOString(), updated: new Date().toISOString(), }) @@ -236,7 +236,7 @@ describe('DB', () => { user_id: 1001, resource_id: 70, event: 'event_performed', - target: 'https://rest-hooks.example.com/', + target: 'https://example.com/', created: new Date().toISOString(), updated: new Date().toISOString(), }) diff --git a/plugin-server/tests/utils/fetch.test.ts b/plugin-server/tests/utils/fetch.test.ts new file mode 100644 index 00000000000..d6100232a71 --- /dev/null +++ b/plugin-server/tests/utils/fetch.test.ts @@ -0,0 +1,40 @@ +import { FetchError } from 'node-fetch' + +import { raiseIfUserProvidedUrlUnsafe } from '../../src/utils/fetch' + +test('raiseIfUserProvidedUrlUnsafe', async () => { + // Sync test cases with posthog/api/test/test_utils.py + await raiseIfUserProvidedUrlUnsafe('https://google.com?q=20') // Safe + await raiseIfUserProvidedUrlUnsafe('https://posthog.com') // Safe + await raiseIfUserProvidedUrlUnsafe('https://posthog.com/foo/bar') // Safe, with path + await raiseIfUserProvidedUrlUnsafe('https://posthog.com:443') // Safe, good port + await raiseIfUserProvidedUrlUnsafe('https://1.1.1.1') // Safe, public IP + await expect(raiseIfUserProvidedUrlUnsafe('')).rejects.toThrow(new FetchError('Invalid URL', 'posthog-host-guard')) + await expect(raiseIfUserProvidedUrlUnsafe('@@@')).rejects.toThrow( + new FetchError('Invalid URL', 'posthog-host-guard') + ) + await expect(raiseIfUserProvidedUrlUnsafe('posthog.com')).rejects.toThrow( + new FetchError('Invalid URL', 'posthog-host-guard') + ) + await expect(raiseIfUserProvidedUrlUnsafe('ftp://posthog.com')).rejects.toThrow( + new FetchError('Scheme must be either HTTP or HTTPS', 'posthog-host-guard') + ) + await expect(raiseIfUserProvidedUrlUnsafe('http://localhost')).rejects.toThrow( + new FetchError('Internal hostname', 'posthog-host-guard') + ) + await expect(raiseIfUserProvidedUrlUnsafe('http://192.168.0.5')).rejects.toThrow( + new FetchError('Internal hostname', 'posthog-host-guard') + ) + await expect(raiseIfUserProvidedUrlUnsafe('http://0.0.0.0')).rejects.toThrow( + new FetchError('Internal hostname', 'posthog-host-guard') + ) + await expect(raiseIfUserProvidedUrlUnsafe('http://10.0.0.24')).rejects.toThrow( + new FetchError('Internal hostname', 'posthog-host-guard') + ) + await expect(raiseIfUserProvidedUrlUnsafe('http://172.20.0.21')).rejects.toThrow( + new FetchError('Internal hostname', 'posthog-host-guard') + ) + await expect(raiseIfUserProvidedUrlUnsafe('http://fgtggggzzggggfd.com')).rejects.toThrow( + new FetchError('Invalid hostname', 'posthog-host-guard') + ) +}) diff --git a/plugin-server/tests/worker/ingestion/event-pipeline/event-pipeline-integration.test.ts b/plugin-server/tests/worker/ingestion/event-pipeline/event-pipeline-integration.test.ts index 343826d81a4..71643e2668b 100644 --- a/plugin-server/tests/worker/ingestion/event-pipeline/event-pipeline-integration.test.ts +++ b/plugin-server/tests/worker/ingestion/event-pipeline/event-pipeline-integration.test.ts @@ -176,7 +176,7 @@ describe('Event Pipeline integration test', () => { user_id: commonUserId, resource_id: 69, event: 'action_performed', - target: 'https://rest-hooks.example.com/', + target: 'https://example.com/', created: timestamp, updated: timestamp, } as Hook) @@ -200,7 +200,7 @@ describe('Event Pipeline integration test', () => { hook: { id: 'abc', event: 'action_performed', - target: 'https://rest-hooks.example.com/', + target: 'https://example.com/', }, data: { event: 'xyz', @@ -224,7 +224,7 @@ describe('Event Pipeline integration test', () => { // Using a more verbose way instead of toHaveBeenCalledWith because we need to parse request body // and use expect.any for a few payload properties, which wouldn't be possible in a simpler way - expect(jest.mocked(fetch).mock.calls[0][0]).toBe('https://rest-hooks.example.com/') + expect(jest.mocked(fetch).mock.calls[0][0]).toBe('https://example.com/') const secondArg = jest.mocked(fetch).mock.calls[0][1] expect(JSON.parse(secondArg!.body as unknown as string)).toStrictEqual(expectedPayload) expect(JSON.parse(secondArg!.body as unknown as string)).toStrictEqual(expectedPayload) diff --git a/plugin-server/tests/worker/ingestion/hooks.test.ts b/plugin-server/tests/worker/ingestion/hooks.test.ts index c319ba01c3b..19e1f0eb684 100644 --- a/plugin-server/tests/worker/ingestion/hooks.test.ts +++ b/plugin-server/tests/worker/ingestion/hooks.test.ts @@ -1,7 +1,8 @@ import { DateTime } from 'luxon' -import * as fetch from 'node-fetch' +import fetch, { FetchError } from 'node-fetch' import { Action, PostIngestionEvent, Team } from '../../../src/types' +import { isCloud } from '../../../src/utils/env-utils' import { UUIDT } from '../../../src/utils/utils' import { determineWebhookType, @@ -15,6 +16,8 @@ import { } from '../../../src/worker/ingestion/hooks' import { Hook } from './../../../src/types' +jest.mock('../../../src/utils/env-utils') + describe('hooks', () => { describe('determineWebhookType', () => { test('Slack', () => { @@ -471,29 +474,35 @@ describe('hooks', () => { let hook: Hook beforeEach(() => { - hookCommander = new HookCommander({} as any, {} as any, {} as any) + jest.mocked(isCloud).mockReturnValue(false) // Disable private IP guard hook = { id: 'id', - team_id: 2, + team_id: 1, user_id: 1, resource_id: 1, event: 'foo', - target: 'foo.bar', + target: 'https://example.com/', created: new Date().toISOString(), updated: new Date().toISOString(), } + hookCommander = new HookCommander( + {} as any, + {} as any, + {} as any, + new Set([hook.team_id]) // Hostname guard enabled + ) }) test('person = undefined', async () => { await hookCommander.postRestHook(hook, { event: 'foo' } as any) - expect(fetch).toHaveBeenCalledWith('foo.bar', { + expect(fetch).toHaveBeenCalledWith('https://example.com/', { body: JSON.stringify( { hook: { id: 'id', event: 'foo', - target: 'foo.bar', + target: 'https://example.com/', }, data: { event: 'foo', @@ -510,26 +519,28 @@ describe('hooks', () => { }) test('person data from the event', async () => { + jest.mocked(isCloud).mockReturnValue(true) // Enable private IP guard, which example.com should pass + const now = new Date().toISOString() const uuid = new UUIDT().toString() await hookCommander.postRestHook(hook, { event: 'foo', - teamId: 1, + teamId: hook.team_id, person_id: uuid, person_properties: { foo: 'bar' }, person_created_at: DateTime.fromISO(now).toUTC(), } as any) - expect(fetch).toHaveBeenCalledWith('foo.bar', { + expect(fetch).toHaveBeenCalledWith('https://example.com/', { body: JSON.stringify( { hook: { id: 'id', event: 'foo', - target: 'foo.bar', + target: 'https://example.com/', }, data: { event: 'foo', - teamId: 1, + teamId: hook.team_id, person: { uuid: uuid, properties: { foo: 'bar' }, @@ -545,5 +556,19 @@ describe('hooks', () => { timeout: 10000, }) }) + + test('private IP hook allowed on self-hosted', async () => { + await hookCommander.postRestHook({ ...hook, target: 'http://127.0.0.1' }, { event: 'foo' } as any) + + expect(fetch).toHaveBeenCalledWith('http://127.0.0.1', expect.anything()) + }) + + test('private IP hook forbidden on Cloud', async () => { + jest.mocked(isCloud).mockReturnValue(true) + + await expect( + hookCommander.postRestHook({ ...hook, target: 'http://127.0.0.1' }, { event: 'foo' } as any) + ).rejects.toThrow(new FetchError('Internal hostname', 'posthog-host-guard')) + }) }) }) diff --git a/plugin-server/tests/worker/plugins/mmdb.test.ts b/plugin-server/tests/worker/plugins/mmdb.test.ts index 9bd3769032b..8179191a276 100644 --- a/plugin-server/tests/worker/plugins/mmdb.test.ts +++ b/plugin-server/tests/worker/plugins/mmdb.test.ts @@ -1,7 +1,7 @@ import { ReaderModel } from '@maxmind/geoip2-node' import { readFileSync } from 'fs' import { DateTime } from 'luxon' -import * as fetch from 'node-fetch' +import fetch from 'node-fetch' import { join } from 'path' import { Hub, LogLevel } from '../../../src/types' diff --git a/plugin-server/tests/worker/vm.extra-lazy.test.ts b/plugin-server/tests/worker/vm.extra-lazy.test.ts index 6f971c2e38d..e571b2f809b 100644 --- a/plugin-server/tests/worker/vm.extra-lazy.test.ts +++ b/plugin-server/tests/worker/vm.extra-lazy.test.ts @@ -1,4 +1,4 @@ -import * as fetch from 'node-fetch' +import fetch from 'node-fetch' import { Hub, PluginTaskType } from '../../src/types' import { createHub } from '../../src/utils/db/hub' @@ -39,7 +39,7 @@ describe('VMs are extra lazy 💤', () => { expect(lazyVm.ready).toEqual(true) expect(lazyVm.setupPluginIfNeeded).not.toHaveBeenCalled() - expect(fetch).toHaveBeenCalledWith('https://onevent.com/') + expect(fetch).toHaveBeenCalledWith('https://onevent.com/', undefined) }) test('VM with jobs gets setup immediately', async () => { @@ -64,7 +64,7 @@ describe('VMs are extra lazy 💤', () => { expect(lazyVm.ready).toEqual(true) expect(lazyVm.setupPluginIfNeeded).not.toHaveBeenCalled() - expect(fetch).toHaveBeenCalledWith('https://onevent.com/') + expect(fetch).toHaveBeenCalledWith('https://onevent.com/', undefined) }) test('VM without tasks delays setup until necessary', async () => { @@ -91,7 +91,7 @@ describe('VMs are extra lazy 💤', () => { await lazyVm.getOnEvent() expect(lazyVm.ready).toEqual(true) expect(lazyVm.setupPluginIfNeeded).toHaveBeenCalled() - expect(fetch).toHaveBeenCalledWith('https://onevent.com/') + expect(fetch).toHaveBeenCalledWith('https://onevent.com/', undefined) }) test('getting methods and tasks returns null if plugin is in errored state', async () => { diff --git a/plugin-server/tests/worker/vm.test.ts b/plugin-server/tests/worker/vm.test.ts index 8496a94a5a2..138c813d5c7 100644 --- a/plugin-server/tests/worker/vm.test.ts +++ b/plugin-server/tests/worker/vm.test.ts @@ -1,5 +1,5 @@ import { PluginEvent, ProcessedPluginEvent } from '@posthog/plugin-scaffold' -import * as fetch from 'node-fetch' +import fetch from 'node-fetch' import { KAFKA_EVENTS_PLUGIN_INGESTION, KAFKA_PLUGIN_LOG_ENTRIES } from '../../src/config/kafka-topics' import { Hub, PluginLogEntrySource, PluginLogEntryType } from '../../src/types' @@ -122,7 +122,7 @@ describe('vm tests', () => { }) expect(fetch).not.toHaveBeenCalled() await vm.methods.teardownPlugin!() - expect(fetch).toHaveBeenCalledWith('https://google.com/results.json?query=hoho') + expect(fetch).toHaveBeenCalledWith('https://google.com/results.json?query=hoho', undefined) }) test('processEvent', async () => { @@ -376,7 +376,7 @@ describe('vm tests', () => { event: 'export', } await vm.methods.onEvent!(event) - expect(fetch).toHaveBeenCalledWith('https://google.com/results.json?query=export') + expect(fetch).toHaveBeenCalledWith('https://google.com/results.json?query=export', undefined) }) test('export default', async () => { @@ -395,7 +395,7 @@ describe('vm tests', () => { event: 'default export', } await vm.methods.onEvent!(event) - expect(fetch).toHaveBeenCalledWith('https://google.com/results.json?query=default export') + expect(fetch).toHaveBeenCalledWith('https://google.com/results.json?query=default export', undefined) }) }) @@ -723,7 +723,7 @@ describe('vm tests', () => { } await vm.methods.processEvent!(event) - expect(fetch).toHaveBeenCalledWith('https://google.com/results.json?query=fetched') + expect(fetch).toHaveBeenCalledWith('https://google.com/results.json?query=fetched', undefined) expect(event.properties).toEqual({ count: 2, query: 'bla', results: [true, true] }) }) @@ -745,7 +745,7 @@ describe('vm tests', () => { } await vm.methods.processEvent!(event) - expect(fetch).toHaveBeenCalledWith('https://google.com/results.json?query=fetched') + expect(fetch).toHaveBeenCalledWith('https://google.com/results.json?query=fetched', undefined) expect(event.properties).toEqual({ count: 2, query: 'bla', results: [true, true] }) }) @@ -766,7 +766,7 @@ describe('vm tests', () => { } await vm.methods.processEvent!(event) - expect(fetch).toHaveBeenCalledWith('https://google.com/results.json?query=fetched') + expect(fetch).toHaveBeenCalledWith('https://google.com/results.json?query=fetched', undefined) expect(event.properties).toEqual({ count: 2, query: 'bla', results: [true, true] }) }) @@ -1051,7 +1051,7 @@ describe('vm tests', () => { event: 'onEvent', } await vm.methods.onEvent!(event) - expect(fetch).toHaveBeenCalledWith('https://google.com/results.json?query=onEvent') + expect(fetch).toHaveBeenCalledWith('https://google.com/results.json?query=onEvent', undefined) }) describe('exportEvents', () => { @@ -1085,7 +1085,7 @@ describe('vm tests', () => { await vm.methods.onEvent!({ ...defaultEvent, event: 'otherEvent2' }) await vm.methods.onEvent!({ ...defaultEvent, event: 'otherEvent3' }) await delay(1010) - expect(fetch).toHaveBeenCalledWith('https://export.com/results.json?query=otherEvent2&events=2') + expect(fetch).toHaveBeenCalledWith('https://export.com/results.json?query=otherEvent2&events=2', undefined) expect(hub.appMetrics.queueMetric).toHaveBeenCalledWith({ teamId: pluginConfig39.team_id, pluginConfigId: pluginConfig39.id, @@ -1136,8 +1136,8 @@ describe('vm tests', () => { await vm.methods.onEvent!(event) await delay(1010) expect(fetch).toHaveBeenCalledTimes(4) - expect(fetch).toHaveBeenCalledWith('https://onevent.com/') - expect(fetch).toHaveBeenCalledWith('https://export.com/results.json?query=exported&events=2') + expect(fetch).toHaveBeenCalledWith('https://onevent.com/', undefined) + expect(fetch).toHaveBeenCalledWith('https://export.com/results.json?query=exported&events=2', undefined) }) test('buffers bytes with exportEventsBufferBytes', async () => { @@ -1264,10 +1264,16 @@ describe('vm tests', () => { indexJs ) await vm.methods.onEvent!(defaultEvent) - expect(fetch).not.toHaveBeenCalledWith('https://export.com/results.json?query=default event&events=1') + expect(fetch).not.toHaveBeenCalledWith( + 'https://export.com/results.json?query=default event&events=1', + undefined + ) await vm.methods.teardownPlugin!() - expect(fetch).toHaveBeenCalledWith('https://export.com/results.json?query=default event&events=1') + expect(fetch).toHaveBeenCalledWith( + 'https://export.com/results.json?query=default event&events=1', + undefined + ) }) }) diff --git a/posthog/api/test/test_utils.py b/posthog/api/test/test_utils.py index c34aa06dac9..84a3d7315c2 100644 --- a/posthog/api/test/test_utils.py +++ b/posthog/api/test/test_utils.py @@ -147,20 +147,35 @@ class TestUtils(BaseTest): self.assertEqual(safe_clickhouse_string("💜 \u1f49c\ 💜"), "💜 \u1f49c\ 💜") def test_raise_if_user_provided_url_unsafe(self): + # Sync test cases with plugin-server/src/utils/fetch.test.ts raise_if_user_provided_url_unsafe("https://google.com?q=20") # Safe raise_if_user_provided_url_unsafe("https://posthog.com") # Safe raise_if_user_provided_url_unsafe("https://posthog.com/foo/bar") # Safe, with path raise_if_user_provided_url_unsafe("https://posthog.com:443") # Safe, good port raise_if_user_provided_url_unsafe("https://1.1.1.1") # Safe, public IP - self.assertRaises(ValueError, lambda: raise_if_user_provided_url_unsafe("https://posthog.com:80")) # Bad port - self.assertRaises(ValueError, lambda: raise_if_user_provided_url_unsafe("ftp://posthog.com")) # Bad scheme - self.assertRaises(ValueError, lambda: raise_if_user_provided_url_unsafe("")) # Empty - self.assertRaises(ValueError, lambda: raise_if_user_provided_url_unsafe("posthog.com")) # No scheme - self.assertRaises(ValueError, lambda: raise_if_user_provided_url_unsafe("http://localhost")) # Internal - self.assertRaises(ValueError, lambda: raise_if_user_provided_url_unsafe("http://192.168.0.5")) # Internal - self.assertRaises(ValueError, lambda: raise_if_user_provided_url_unsafe("http://0.0.0.0")) # Internal - self.assertRaises(ValueError, lambda: raise_if_user_provided_url_unsafe("http://10.0.0.24")) # Internal - self.assertRaises(ValueError, lambda: raise_if_user_provided_url_unsafe("http://172.20.0.21")) # Internal - self.assertRaises( - ValueError, lambda: raise_if_user_provided_url_unsafe("http://fgtggggzzggggfd.com") + self.assertRaisesMessage(ValueError, "No hostname", lambda: raise_if_user_provided_url_unsafe("")) + self.assertRaisesMessage(ValueError, "No hostname", lambda: raise_if_user_provided_url_unsafe("@@@")) + self.assertRaisesMessage(ValueError, "No hostname", lambda: raise_if_user_provided_url_unsafe("posthog.com")) + self.assertRaisesMessage( + ValueError, + "Scheme must be either HTTP or HTTPS", + lambda: raise_if_user_provided_url_unsafe("ftp://posthog.com"), + ) + self.assertRaisesMessage( + ValueError, "Internal hostname", lambda: raise_if_user_provided_url_unsafe("http://localhost") + ) + self.assertRaisesMessage( + ValueError, "Internal hostname", lambda: raise_if_user_provided_url_unsafe("http://192.168.0.5") + ) + self.assertRaisesMessage( + ValueError, "Internal hostname", lambda: raise_if_user_provided_url_unsafe("http://0.0.0.0") + ) + self.assertRaisesMessage( + ValueError, "Internal hostname", lambda: raise_if_user_provided_url_unsafe("http://10.0.0.24") + ) + self.assertRaisesMessage( + ValueError, "Internal hostname", lambda: raise_if_user_provided_url_unsafe("http://172.20.0.21") + ) + self.assertRaisesMessage( + ValueError, "Invalid hostname", lambda: raise_if_user_provided_url_unsafe("http://fgtggggzzggggfd.com") ) # Non-existent diff --git a/posthog/api/user.py b/posthog/api/user.py index 05629437602..4fbb85e8ca1 100644 --- a/posthog/api/user.py +++ b/posthog/api/user.py @@ -33,6 +33,7 @@ from posthog.api.organization import OrganizationSerializer from posthog.api.shared import OrganizationBasicSerializer, TeamBasicSerializer from posthog.api.utils import raise_if_user_provided_url_unsafe from posthog.auth import authenticate_secondarily +from posthog.cloud_utils import is_cloud from posthog.email import is_email_available from posthog.event_usage import report_user_logged_in, report_user_updated, report_user_verified_email from posthog.models import Team, User, UserScenePersonalisation, Dashboard @@ -450,7 +451,8 @@ def test_slack_webhook(request): return JsonResponse({"error": "no webhook URL"}) message = {"text": "_Greetings_ from PostHog!"} try: - raise_if_user_provided_url_unsafe(webhook) + if is_cloud(): # Protect against SSRF + raise_if_user_provided_url_unsafe(webhook) response = requests.post(webhook, verify=False, json=message) if response.ok: diff --git a/posthog/api/utils.py b/posthog/api/utils.py index 2a9991ea37f..298908f1ccb 100644 --- a/posthog/api/utils.py +++ b/posthog/api/utils.py @@ -302,23 +302,20 @@ def parse_bool(value: Union[str, List[str]]) -> bool: def raise_if_user_provided_url_unsafe(url: str): - """Raise if the provided URL seems unsafe, otherwise do nothing.""" - parsed_url: urllib.parse.ParseResult = urllib.parse.urlparse(url) + """Raise if the provided URL seems unsafe, otherwise do nothing. + + Equivalent of plugin server raiseIfUserProvidedUrlUnsafe. + """ + parsed_url: urllib.parse.ParseResult = urllib.parse.urlparse(url) # urlparse never raises errors if not parsed_url.hostname: raise ValueError("No hostname") - if parsed_url.scheme == "http": - port = 80 - elif parsed_url.scheme == "https": - port = 443 - else: + if parsed_url.scheme not in ("http", "https"): raise ValueError("Scheme must be either HTTP or HTTPS") - if parsed_url.port is not None and parsed_url.port != port: - raise ValueError("Port does not match scheme") # Disallow if hostname resolves to a private (internal) IP address try: - addrinfo = socket.getaddrinfo(parsed_url.hostname, port) + addrinfo = socket.getaddrinfo(parsed_url.hostname, None) except socket.gaierror: raise ValueError("Invalid hostname") for _, _, _, _, sockaddr in addrinfo: if ip_address(sockaddr[0]).is_private: # Prevent addressing internal services - raise ValueError("Invalid hostname") + raise ValueError("Internal hostname")