2026ๅนด04ๆœˆ19ๆ—ฅ 2m read

Cato CTRLโ„ข่„…ๅจใƒชใ‚ตใƒผใƒ๏ผšMongoDBใฎๆ–ฐใŸใช่„†ๅผฑๆ€งใซใ‚ˆใ‚Šใ€ใƒชใƒขใƒผใƒˆใงใ‚ตใƒผใƒใƒผใ‚’ๅณๅบงใซๅœๆญขๅฏ่ƒฝใซ๏ผˆCVE-2026-25611๏ผ‰

Vitaly Simonovich
Vitaly Simonovich

่ฆๆ—จ

Cato CTRL ใฎใ‚ทใƒ‹ใ‚ขใ‚ปใ‚ญใƒฅใƒชใƒ†ใ‚ฃใƒชใ‚ตใƒผใƒใƒฃใƒผใงใ‚ใ‚‹ Vitaly Simonovich ใฏใ€ๅœง็ธฎๆฉŸ่ƒฝใŒๆœ‰ๅŠนๅŒ–ใ•ใ‚Œใฆใ„ใ‚‹ใ™ในใฆใฎ MongoDB ใƒใƒผใ‚ธใƒงใƒณ๏ผˆ3.4 ไปฅ้™ใ€‚ใชใŠ 3.6 ไปฅ้™ใงใฏใƒ‡ใƒ•ใ‚ฉใƒซใƒˆใงๆœ‰ๅŠน๏ผ‰ใซๅฝฑ้Ÿฟใ™ใ‚‹ๆ–ฐใŸใช่„†ๅผฑๆ€ง CVE-2026-25611๏ผˆๆทฑๅˆปๅบฆ๏ผšHighใ€CVSS ใ‚นใ‚ณใ‚ข 7.5 / 10๏ผ‰ใ‚’็™บ่ฆ‹ใ—ใพใ—ใŸใ€‚ใ“ใฎ่„†ๅผฑๆ€งใฏ MongoDB Atlas ใ‚’ๅซใ‚€็’ฐๅขƒใซใŠใ„ใฆๆ‚ช็”จใ•ใ‚Œใ‚‹ๅฏ่ƒฝๆ€งใŒใ‚ใ‚Šใ€ๆ”ปๆ’ƒ่€…ใŒ MongoDB ใ‚ตใƒผใƒใƒผใ‚’ใ‚ฏใƒฉใƒƒใ‚ทใƒฅใ•ใ›ใ‚‹ใ“ใจใ‚’ๅฏ่ƒฝใซใ™ใ‚‹ใ‚‚ใฎใงใ™ใ€‚

MongoDB Atlas ใฎใ‚ฏใƒฉใ‚นใ‚ฟใƒผใฏใ€ใƒ‡ใƒ•ใ‚ฉใƒซใƒˆ่จญๅฎšใงใฏใ‚คใƒณใ‚ฟใƒผใƒใƒƒใƒˆใ‹ใ‚‰็›ดๆŽฅใ‚ขใ‚ฏใ‚ปใ‚นใงใใ‚‹็Šถๆ…‹ใซใฏใชใฃใฆใ„ใพใ›ใ‚“ใ€‚ใ‚ฏใƒฉใ‚คใ‚ขใƒณใƒˆใŒๆŽฅ็ถšใ™ใ‚‹ใซใฏใ€ใƒ—ใƒญใ‚ธใ‚งใ‚ฏใƒˆใฎ IP ใ‚ขใ‚ฏใ‚ปใ‚นใƒชใ‚นใƒˆใซ็™ป้Œฒใ•ใ‚Œใฆใ„ใ‚‹ใ“ใจใ€ใพใŸใฏ ใƒ—ใƒฉใ‚คใƒ™ใƒผใƒˆๆŽฅ็ถšใ‚’ๅˆฉ็”จใ—ใฆใ„ใ‚‹ใ“ใจใŒๅฟ…่ฆใงใ™ใ€‚ไธปใชใƒชใ‚นใ‚ฏใฏใ€ใƒฆใƒผใ‚ถใƒผใŒใ‚ขใ‚ฏใ‚ปใ‚น่จญๅฎšใ‚’ ใฉใ“ใ‹ใ‚‰ใงใ‚‚ๆŽฅ็ถšๅฏ่ƒฝ๏ผˆ0.0.0.0/0๏ผ‰ ใซใ—ใฆใ„ใ‚‹ๅ ดๅˆใซ็”Ÿใ˜ใพใ™ใ€‚

ๆœฌไปถใฏใ€MongoDB ใฎ ใƒใ‚ฐใƒใ‚ฆใƒณใƒ†ใ‚ฃใƒ—ใƒญใ‚ฐใƒฉใƒ ใ‚’้€šใ˜ใฆ่ฒฌไปปใ‚ใ‚‹ๅฝขใงๅ ฑๅ‘Šใ•ใ‚Œใ€ๅŒ็คพใฎใ‚ปใ‚ญใƒฅใƒชใƒ†ใ‚ฃใƒใƒผใƒ ใจใฎ้€ฃๆบใซใ‚ˆใ‚Šไฟฎๆญฃใ•ใ‚Œใพใ—ใŸใ€‚

Shodan ใฎใƒ‡ใƒผใ‚ฟใซใ‚ˆใ‚‹ใจใ€ๆœฌ็จฟๅŸท็ญ†ๆ™‚็‚นใง 207,000 ไปฅไธŠใฎ MongoDB ใ‚คใƒณใ‚นใ‚ฟใƒณใ‚นใŒใ‚คใƒณใ‚ฟใƒผใƒใƒƒใƒˆไธŠใซๅ…ฌ้–‹ใ•ใ‚ŒใŸ็Šถๆ…‹ใซใ‚ใ‚Šใพใ™ใ€‚

ๅ›ณ1๏ผšShodan ใซๅŸบใฅใใ€ใ‚คใƒณใ‚ฟใƒผใƒใƒƒใƒˆใ‹ใ‚‰ใ‚ขใ‚ฏใ‚ปใ‚นๅฏ่ƒฝใช MongoDB ใ‚ตใƒผใƒใƒผใฎ็Šถๆณ

MongoDB Server ใซใฏใ€ๅ…ฅๅŠ›ๅ€คใฎๆคœ่จผใ‚’่กŒใ†ๅ‰ใซใ€ๆ”ปๆ’ƒ่€…ใŒๆŒ‡ๅฎšใ—ใŸๅ€คใซๅŸบใฅใ„ใฆใƒกใƒขใƒชใ‚’็ขบไฟใ—ใฆใ—ใพใ†ๅฎŸ่ฃ…ไธŠใฎๅ•้กŒใŒใ‚ใ‚Šใพใ™ใ€‚ใ“ใฎๆฌ ้™ฅใซใ‚ˆใ‚Šใ€ๆœช่ช่จผใฎๆ”ปๆ’ƒ่€…ใงใ‚‚ใ€็ด„47KBใฎใƒ‘ใ‚ฑใƒƒใƒˆใง48MBใฎใƒกใƒขใƒชๅ‰ฒใ‚Šๅฝ“ใฆใ‚’ๅผทๅˆถใ™ใ‚‹ใ“ใจใŒๅฏ่ƒฝใงใ™ใ€‚ใใฎ็ตๆžœใ€ใ‚ใšใ‹3ใ€œ10็จ‹ๅบฆใฎๆŽฅ็ถšใงๅฐ่ฆๆจกใช MongoDB ใ‚คใƒณใ‚นใ‚ฟใƒณใ‚นใ‚’ๆ•ฐ็ง’ใงใ‚ฏใƒฉใƒƒใ‚ทใƒฅใ•ใ›ใ‚‹ใ“ใจใŒใงใใพใ™ใ€‚ใพใŸใ€64GBใ‚ฏใƒฉใ‚นใฎใ‚จใƒณใ‚ฟใƒผใƒ—ใƒฉใ‚คใ‚บใ‚ตใƒผใƒใƒผใงใ‚‚ใ€็ด„1,350ๆŽฅ็ถšใงๅœๆญขใซ่ฟฝใ„่พผใ‚€ใ“ใจใŒๅฏ่ƒฝใงใ™ใ€‚

  • ไปŠๅ›ž็ขบ่ชใ•ใ‚ŒใŸๅ•้กŒ๏ผšMongoDB ใฏใ€OP_COMPRESSED ใƒฏใ‚คใƒคใƒ—ใƒญใƒˆใ‚ณใƒซใƒกใƒƒใ‚ปใƒผใ‚ธใซๅซใพใ‚Œใ‚‹ uncompressedSize ใƒ•ใ‚ฃใƒผใƒซใƒ‰๏ผˆๆ”ปๆ’ƒ่€…ใŒไปปๆ„ใซๆŒ‡ๅฎšๅฏ่ƒฝ๏ผ‰ใ‚’ใ‚‚ใจใซใƒกใƒขใƒชใ‚’็ขบไฟใ—ใพใ™ใ€‚ใ—ใ‹ใ—ใ€ๅœง็ธฎใƒ‡ใƒผใ‚ฟใŒๅฎŸ้š›ใซใใฎใ‚ตใ‚คใ‚บใพใง่งฃๅ‡ใงใใ‚‹ใ‹ใฉใ†ใ‹ใฎๆคœ่จผใŒ่กŒใ‚ใ‚Œใ‚‹ๅ‰ใซใƒกใƒขใƒชๅ‰ฒใ‚Šๅฝ“ใฆใŒๅฎŸ่กŒใ•ใ‚Œใพใ™ใ€‚ใ“ใฎๆŒ™ๅ‹•ใ‚’ๆ‚ช็”จใ™ใ‚‹ใจใ€ๆ”ปๆ’ƒ่€…ใฏ ็ด„47KBใฎ็ดฐๅทฅใ•ใ‚ŒใŸใƒ‘ใ‚ฑใƒƒใƒˆใ‚’้€ไฟกใ™ใ‚‹ใ ใ‘ใงใ€ๆŽฅ็ถšใ”ใจใซ48MBใฎใƒกใƒขใƒชใ‚’็ขบไฟใ•ใ›ใ‚‹ใ“ใจใŒใงใใพใ™ใ€‚็ตๆžœใจใ—ใฆใ€็ด„1027:1ใจใ„ใ†้žๅธธใซ้ซ˜ใ„ๅข—ๅน…็އใŒ็”Ÿใ˜ใพใ™ใ€‚
  • ๆ”ปๆ’ƒใฎไป•็ต„ใฟ๏ผšๅ•้กŒใฎใ‚ใ‚‹ใ‚ณใƒผใƒ‰ใƒ‘ใ‚นใงใฏใ€message_compressor_manager.cpp ๅ†…ใง SharedBuffer::allocate(uncompressedSize) ใŒๅ‘ผใณๅ‡บใ•ใ‚Œใ€ๅฎŸ้š›ใฎ่งฃๅ‡ๅ‡ฆ็†ใŒ่กŒใ‚ใ‚Œใ‚‹ๅ‰ใซใƒกใƒขใƒชใŒ็ขบไฟใ•ใ‚Œใพใ™ใ€‚ๆ”ปๆ’ƒ่€…ใฏใ€ๅฎŸ้š›ใซใฏใ”ใๅฐใ•ใชใƒ‡ใƒผใ‚ฟใ—ใ‹้€ไฟกใ—ใชใ„ไธ€ๆ–นใงใ€่งฃๅ‡ๅพŒใ‚ตใ‚คใ‚บใ‚’ๆฅต็ซฏใซๅคงใใๅฝ่ฃ…ใ™ใ‚‹ใ“ใจใงใ€ใ‚ตใƒผใƒใƒผใซๅคงๅฎน้‡ใƒกใƒขใƒชใฎๅ‰ฒใ‚Šๅฝ“ใฆใ‚’ๅผทๅˆถใ—ใพใ™ใ€‚็ขบไฟใ•ใ‚ŒใŸใƒกใƒขใƒชใฏ ๆŽฅ็ถšใŒ้–‰ใ˜ใ‚‰ใ‚Œใ‚‹ใพใงไฟๆŒใ•ใ‚Œใ‚‹ใŸใ‚ใ€็Ÿญๆ™‚้–“ใงใƒกใƒขใƒชใ‚’ๆžฏๆธ‡ใ•ใ›ใ‚‹ใ“ใจใŒๅฏ่ƒฝใซใชใ‚Šใพใ™ใ€‚
  • ใ“ใฎๅ•้กŒใŒ้‡่ฆใงใ‚ใ‚‹็†็”ฑ๏ผš
    • ไบ‹ๅ‰่ช่จผใชใ—ใงๆ”ปๆ’ƒๅฏ่ƒฝ๏ผˆPre-authentication๏ผ‰๏ผš่ช่จผๆƒ…ๅ ฑใฏไธ่ฆใงใ™ใ€‚่ช่จผใƒใ‚งใƒƒใ‚ฏใŒ่กŒใ‚ใ‚Œใ‚‹ๅ‰ใฎใƒฏใ‚คใƒคใƒ—ใƒญใƒˆใ‚ณใƒซๅ‡ฆ็†ๆฎต้šŽใงๆ‚ช็”จใงใใพใ™ใ€‚
    • ๆฅตใ‚ใฆ้ซ˜ใ„ๅข—ๅน…็އ๏ผš็ด„47KBใฎ้€ไฟกใง 48MBใฎใƒกใƒขใƒชๅ‰ฒใ‚Šๅฝ“ใฆใ‚’็™บ็”Ÿใ•ใ›ใ‚‹ใ“ใจใŒใงใใ€ๅข—ๅน…็އใฏ ็ด„1027:1 ใซ้”ใ—ใพใ™ใ€‚
    • ๆ”ปๆ’ƒใŒ้žๅธธใซ้ซ˜้€Ÿ๏ผšใ‚ตใƒผใƒใƒผใฏๆ•ฐ็ง’ใงใƒกใƒขใƒชไธ่ถณ๏ผˆOOM๏ผ‰ใซ้™ฅใ‚Šๅœๆญขใ—ใพใ™ใ€‚ไพ‹ใˆใฐ 512MBใฎใ‚คใƒณใ‚นใ‚ฟใƒณใ‚นใฏใ€ใ‚ใšใ‹10ๆŽฅ็ถšใงใ‚ฏใƒฉใƒƒใ‚ทใƒฅใ—ใพใ™ใ€‚
    • ใƒ‡ใƒ•ใ‚ฉใƒซใƒˆ่จญๅฎšใงใ‚‚่„†ๅผฑ๏ผšMongoDB ใงใฏ 3.6ไปฅ้™ใ€ๅœง็ธฎๆฉŸ่ƒฝใŒใƒ‡ใƒ•ใ‚ฉใƒซใƒˆใงๆœ‰ๅŠนใซใชใฃใฆใ„ใพใ™ใ€‚
  • ๅœง็ธฎๆฉŸ่ƒฝใŒๆœ‰ๅŠนใช MongoDB 3.4ไปฅ้™ใฎใƒใƒผใ‚ธใƒงใƒณ๏ผˆโ€ป3.6ไปฅ้™ใงใฏใƒ‡ใƒ•ใ‚ฉใƒซใƒˆใงๆœ‰ๅŠน๏ผ‰ใฎใ†ใกใ€8.2.4 / 8.0.18 / 7.0.29 ใ‚ˆใ‚Šๅ‰ใฎใƒชใƒชใƒผใ‚นใŒๅฝฑ้Ÿฟใ‚’ๅ—ใ‘ใพใ™ใ€‚
    • ๆณจ่จ˜๏ผš่ฉณ็ดฐใซใคใ„ใฆใฏใ€MongoDB ใฎๅ…ฌๅผใ‚ฆใ‚งใƒ–ใ‚ตใ‚คใƒˆใ‚’ใ”ๅ‚็…งใใ ใ•ใ„ใ€‚

ๅ›ณ2๏ผšMongoDB ใซๅฏพใ™ใ‚‹ DoS ๆ”ปๆ’ƒใฎใ‚ทใƒผใ‚ฑใƒณใ‚น

2025 Cato CTRLโ„ข Threat Report | Download the report

ๆŠ€่ก“ๆฆ‚่ฆ

่„†ๅผฑๆ€งใฎ่ฉณ็ดฐใซๅ…ฅใ‚‹ๅ‰ใซใ€ใพใšไปŠๅ›žใฎๅ•้กŒใซ้–ขไฟ‚ใ™ใ‚‹ MongoDB ใฎๅ†…้ƒจๅ‹•ไฝœใซใคใ„ใฆ็ฐกๅ˜ใซ่ชฌๆ˜Žใ—ใพใ™ใ€‚

่ƒŒๆ™ฏ๏ผš้–ข้€ฃใ™ใ‚‹ๅŸบๆœฌๆฆ‚ๅฟตใฎ็†่งฃ

MongoDB ใƒฏใ‚คใƒคใƒ—ใƒญใƒˆใ‚ณใƒซ

MongoDB ใƒฏใ‚คใƒคใƒ—ใƒญใƒˆใ‚ณใƒซใฏใ€ใ‚ฏใƒฉใ‚คใ‚ขใƒณใƒˆ๏ผˆใƒ‰ใƒฉใ‚คใƒใƒผใ€ใ‚ทใ‚งใƒซใ€ใ‚ขใƒ—ใƒชใ‚ฑใƒผใ‚ทใƒงใƒณ๏ผ‰ใจ MongoDB ใ‚ตใƒผใƒใƒผใฎ้–“ใงใ€TCP๏ผˆTransmission Control Protocol๏ผ‰ใ‚’ไป‹ใ—ใฆ้€šไฟกใ™ใ‚‹ใŸใ‚ใฎใƒใ‚คใƒŠใƒชใƒ—ใƒญใƒˆใ‚ณใƒซใงใ™ใ€‚MongoDB ใฏใƒ‡ใƒ•ใ‚ฉใƒซใƒˆใง ใƒใƒผใƒˆ27017 ใ‚’ไฝฟ็”จใ—ใฆๆŽฅ็ถšใ‚’ๅพ…ใกๅ—ใ‘ใพใ™ใ€‚

ใ™ในใฆใฎใƒกใƒƒใ‚ปใƒผใ‚ธใฏใ€ใพใš 16ใƒใ‚คใƒˆใฎๆจ™ๆบ–ใƒ˜ใƒƒใƒ€ใƒผใ‹ใ‚‰ๅง‹ใพใ‚Šใ€ไปฅไธ‹ใฎๆƒ…ๅ ฑใŒๅซใพใ‚Œใพใ™ใ€‚

  • messageLength:ย ใƒกใƒƒใ‚ปใƒผใ‚ธๅ…จไฝ“ใฎใ‚ตใ‚คใ‚บ
  • requestID:ย ใƒชใ‚ฏใ‚จใ‚นใƒˆใ‚’่ญ˜ๅˆฅใ™ใ‚‹ใƒฆใƒ‹ใƒผใ‚ฏID
  • responseTo:ย ใ“ใฎใƒกใƒƒใ‚ปใƒผใ‚ธใŒๅฟœ็ญ”ใ™ใ‚‹ใƒชใ‚ฏใ‚จใ‚นใƒˆใฎID๏ผˆใƒชใ‚ฏใ‚จใ‚นใƒˆใฎๅ ดๅˆใฏ0๏ผ‰
  • opCode:ย ๆ“ไฝœใฎ็จฎ้กž๏ผˆไพ‹๏ผšOP_MSG ใฏ 2013ใ€OP_COMPRESSED ใฏ 2012๏ผ‰

OP_COMPRESSED๏ผšใƒฏใ‚คใƒคใƒ—ใƒญใƒˆใ‚ณใƒซใฎๅœง็ธฎๆฉŸ่ƒฝ

OP_COMPRESSED๏ผˆopcode 2012๏ผ‰ ใฏใ€MongoDB ใƒใƒผใ‚ธใƒงใƒณ3.4ใงๅฐŽๅ…ฅใ•ใ‚ŒใŸใƒฏใ‚คใƒคใƒ—ใƒญใƒˆใ‚ณใƒซใฎๅœง็ธฎๆฉŸ่ƒฝใงใ™ใ€‚้€šๅธธใฎใƒกใƒƒใ‚ปใƒผใ‚ธใ‚’ๅœง็ธฎใ—ใฆ้€ไฟกใงใใ‚‹ใ‚ˆใ†ใซใ™ใ‚‹ใ‚‚ใฎใงใ€ๆจ™ๆบ–ใƒกใƒƒใ‚ปใƒผใ‚ธใ‚’ใƒฉใƒƒใƒ—ใ™ใ‚‹ๅฝขใงๅ‡ฆ็†ใ•ใ‚Œใพใ™ใ€‚ใ“ใฎไป•็ต„ใฟใงใฏใ€3็จฎ้กžใฎๅœง็ธฎใ‚ขใƒซใ‚ดใƒชใ‚บใƒ ใŒใ‚ตใƒใƒผใƒˆใ•ใ‚Œใฆใ„ใพใ™ใ€‚

compressorId ใ‚ขใƒซใ‚ดใƒชใ‚บใƒ  ๅ‚™่€ƒ
1 Snappy ้ซ˜้€Ÿใงใ€ๅœง็ธฎ็އใฏไธญ็จ‹ๅบฆ
2 zlib ๅœง็ธฎ็އใฏ้ซ˜ใ„ใŒใ€ๅ‡ฆ็†ใฏๆฏ”่ผƒ็š„้…ใ„
3 zstd ้€Ÿๅบฆใจๅœง็ธฎ็އใฎใƒใƒฉใƒณใ‚นใซๅ„ชใ‚Œใ‚‹๏ผˆMongoDB 4.2ไปฅ้™ใงๅˆฉ็”จๅฏ่ƒฝ๏ผ‰

ๅˆๆœŸใฎๆŽฅ็ถšๅ‡ฆ็†ใฎๆฎต้šŽใงใ€ใ‚ฏใƒฉใ‚คใ‚ขใƒณใƒˆใจใ‚ตใƒผใƒใƒผใฏไฝฟ็”จใ™ใ‚‹ๅœง็ธฎๆ–นๅผใ‚’็›ธไบ’ใซ็ขบ่ชใ—ใ€ๅˆฉ็”จใ™ใ‚‹ๆ–นๅผใ‚’ๆฑบๅฎšใ—ใพใ™ใ€‚ใ„ใฃใŸใ‚“ๅˆๆ„ใŒๆˆ็ซ‹ใ™ใ‚‹ใจใ€ๅŒๆ–นใฏๅœง็ธฎใ•ใ‚ŒใŸใƒกใƒƒใ‚ปใƒผใ‚ธใ‚’้€ไฟกใงใใ‚‹ใ‚ˆใ†ใซใชใ‚Šใพใ™ใ€‚ๅ—ไฟกๅดใฏ compressorId ใƒใ‚คใƒˆใ‚’ๅ‚็…งใ™ใ‚‹ใ“ใจใงใ€ใฉใฎใ‚ขใƒซใ‚ดใƒชใ‚บใƒ ใง่งฃๅ‡ใ™ในใใ‹ใ‚’ๅˆคๆ–ญใ—ใพใ™ใ€‚

่งฃๅ‡ๅ‡ฆ็†ใฎๆตใ‚Œ

ใ‚ตใƒผใƒใƒผใŒ OP_COMPRESSED ใƒกใƒƒใ‚ปใƒผใ‚ธใ‚’ๅ—ไฟกใ™ใ‚‹ใจใ€MessageCompressorManager ใŒ่งฃๅ‡ๅ‡ฆ็†ใ‚’ๆ‹…ๅฝ“ใ—ใพใ™ใ€‚ๅ‡ฆ็†ใฎๆตใ‚Œใฏไปฅไธ‹ใฎ้€šใ‚Šใงใ™ใ€‚

  1. ใƒ˜ใƒƒใƒ€ใƒผใ‚’่งฃๆžใ—ใ€uncompressedSize ใจ compressorId ใ‚’ๅ–ๅพ—ใ™ใ‚‹
  2. uncompressedSize ใƒใ‚คใƒˆๅˆ†ใฎใƒใƒƒใƒ•ใ‚กใ‚’็ขบไฟใ™ใ‚‹
  3. ใƒšใ‚คใƒญใƒผใƒ‰ใ‚’ใใฎใƒใƒƒใƒ•ใ‚กใซ่งฃๅ‡ใ™ใ‚‹
  4. ่งฃๅ‡ๅพŒใฎใ‚ตใ‚คใ‚บใŒใ€ๆŒ‡ๅฎšใ•ใ‚ŒใŸใ‚ตใ‚คใ‚บใจไธ€่‡ดใ—ใฆใ„ใ‚‹ใ‹ใ‚’ๆคœ่จผใ™ใ‚‹
  5. ๅ†…้ƒจใƒกใƒƒใ‚ปใƒผใ‚ธใ‚’ใ€้žๅœง็ธฎใƒกใƒƒใ‚ปใƒผใ‚ธใจใ—ใฆๅ‡ฆ็†ใ™ใ‚‹

ไปŠๅ›žใฎ่„†ๅผฑๆ€งใฏใ€ๆ‰‹้ †2ใŒๆ‰‹้ †4ใ‚ˆใ‚Šๅ…ˆใซๅฎŸ่กŒใ•ใ‚Œใ‚‹็‚นใซใ‚ใ‚Šใพใ™ใ€‚ใคใพใ‚Šใ‚ตใƒผใƒใƒผใฏใ€ใ‚ตใ‚คใ‚บใฎๅฆฅๅฝ“ๆ€งใ‚’็ขบ่ชใ™ใ‚‹ๅ‰ใซใ€ๆŒ‡ๅฎšใ•ใ‚ŒใŸใ‚ตใ‚คใ‚บใ‚’ใใฎใพใพไฟก้ ผใ—ใฆใƒกใƒขใƒชใ‚’็ขบไฟใ—ใฆใ—ใพใ†ใฎใงใ™ใ€‚

่„†ๅผฑใชใ‚ณใƒผใƒ‰ใƒ‘ใ‚น

ใ“ใฎ่„†ๅผฑๆ€งใฏใ€MongoDB ใฎใƒกใƒƒใ‚ปใƒผใ‚ธ่งฃๅ‡ๅ‡ฆ็†ใƒญใ‚ธใƒƒใ‚ฏใซๅญ˜ๅœจใ—ใพใ™ใ€‚ใ‚ตใƒผใƒใƒผใŒ OP_COMPRESSED ใƒกใƒƒใ‚ปใƒผใ‚ธใ‚’ๅ—ไฟกใ™ใ‚‹ใจใ€ใพใšใƒ‘ใ‚ฑใƒƒใƒˆใƒ˜ใƒƒใƒ€ใƒผใ‹ใ‚‰ uncompressedSize ใƒ•ใ‚ฃใƒผใƒซใƒ‰ใ‚’ๅ–ๅพ—ใ—ใ€ใใฎๅ€คใซๅŸบใฅใ„ใฆใƒใƒƒใƒ•ใ‚กใ‚’็ขบไฟใ—ใพใ™ใ€‚ใ—ใ‹ใ—ใ“ใฎๆ™‚็‚นใงใฏใ€ๅœง็ธฎใƒ‡ใƒผใ‚ฟใŒๅฎŸ้š›ใซใใฎใ‚ตใ‚คใ‚บใพใง่งฃๅ‡ใงใใ‚‹ใ‹ใฉใ†ใ‹ใฎๆคœ่จผใŒ่กŒใ‚ใ‚Œใฆใ„ใพใ›ใ‚“ใ€‚ใคใพใ‚Šใ€ๆ”ปๆ’ƒ่€…ใŒ่งฃๅ‡ๅพŒใ‚ตใ‚คใ‚บใ‚’้Žๅคงใซๅฝ่ฃ…ใ—ใŸๅ ดๅˆใงใ‚‚ใ€ใ‚ตใƒผใƒใƒผใฏใใฎๅ€คใ‚’ไฟกใ˜ใฆใƒกใƒขใƒชใ‚’็ขบไฟใ—ใฆใ—ใพใ„ใพใ™ใ€‚ใ“ใ‚ŒใŒไปŠๅ›žใฎ่„†ๅผฑๆ€งใฎๆ นๆœฌๅŽŸๅ› ใงใ™ใ€‚

ๅ›ณ3๏ผšMongoDB ใฎ่„†ๅผฑใชใ‚ณใƒผใƒ‰

ๅ•้กŒ็‚น๏ผšใƒกใƒขใƒชใฎๅ‰ฒใ‚Šๅฝ“ใฆใฏ 158่กŒ็›ฎใงใ€ไฟก้ ผใงใใชใ„ๅ…ฅๅŠ›ๅ€คใซๅŸบใฅใ„ใฆๅฎŸ่กŒใ•ใ‚Œใฆใ„ใพใ™ใ€‚ไธ€ๆ–นใ€ใใฎๅ€คใฎๆคœ่จผใฏ 175่กŒ็›ฎใง่กŒใ‚ใ‚Œใพใ™ใ€‚ใคใพใ‚Šใ€ๆคœ่จผใŒ่กŒใ‚ใ‚Œใ‚‹ๆ™‚็‚นใงใฏใ€ใ™ใงใซใƒกใƒขใƒช็ขบไฟใŒๅฎŸ่กŒใ•ใ‚ŒใŸๅพŒใซใชใฃใฆใ„ใพใ™ใ€‚

ใƒฏใ‚คใƒคใƒ—ใƒญใƒˆใ‚ณใƒซใฎๆง‹้€ 

OP_COMPRESSED ใƒกใƒƒใ‚ปใƒผใ‚ธใฏใ€ๆฌกใฎๆง‹้€ ใซใชใฃใฆใ„ใพใ™ใ€‚

Wire Header๏ผˆ16ใƒใ‚คใƒˆ๏ผ‰ messageLengthใ€requestIdใ€responseToใ€opCode=2012
originalOpcode 4ใƒใ‚คใƒˆ๏ผˆ้€šๅธธใฏ OP_MSG ใฎ 2013๏ผ‰
uncompressedSize 4ใƒใ‚คใƒˆ โ† ๆ”ปๆ’ƒ่€…ใŒไปปๆ„ใซๆŒ‡ๅฎšๅฏ่ƒฝ
compressorId 1ใƒใ‚คใƒˆ๏ผˆ1=snappyใ€2=zlibใ€3=zstd๏ผ‰
compressedMessage ๅฏๅค‰้•ท๏ผˆๅฎŸ้š›ใฎๅœง็ธฎใƒ‡ใƒผใ‚ฟ๏ผ‰

uncompressedSize ใƒ•ใ‚ฃใƒผใƒซใƒ‰ใฏ 4ใƒใ‚คใƒˆใงๆง‹ๆˆใ•ใ‚ŒใฆใŠใ‚Šใ€็†่ซ–ไธŠใฏ ็ด„4GBใพใงใฎใ‚ตใ‚คใ‚บใ‚’ๆŒ‡ๅฎšใ™ใ‚‹ใ“ใจใŒๅฏ่ƒฝใงใ™MongoDB ใงใฏใ€1ใƒกใƒƒใ‚ปใƒผใ‚ธใ‚ใŸใ‚Š 48MB ใซไธŠ้™ใŒ่จญใ‘ใ‚‰ใ‚Œใฆใ„ใพใ™ใŒใ€ใใ‚Œใงใ‚‚ ่ค‡ๆ•ฐใฎๆŽฅ็ถšใ‚’้€šใ˜ใฆ็นฐใ‚Š่ฟ”ใ—่ฆๆฑ‚ใ•ใ‚Œใ‚‹ใจใ€ใ‚ตใƒผใƒใƒผใซๅคงใใช่ฒ ่ทใ‚’ไธŽใˆใ‚‹ใซใฏๅๅˆ†ใช้‡ใซใชใ‚Šใพใ™ใ€‚

ๅ›ณ4๏ผšย ใƒ‘ใ‚ฑใƒƒใƒˆๆง‹้€ ใฎๆฏ”่ผƒ๏ผšๆญฃ่ฆใƒˆใƒฉใƒ•ใ‚ฃใƒƒใ‚ฏใจๆ‚ชๆ„ใ‚ใ‚‹ใƒˆใƒฉใƒ•ใ‚ฃใƒƒใ‚ฏ

ๆ”ปๆ’ƒใฎไป•็ต„ใฟ

  1. ๆ”ปๆ’ƒ่€…ใฏใ€zlib ใงๅœง็ธฎใ—ใŸ็ด„47KBใฎใƒšใ‚คใƒญใƒผใƒ‰ใ‚’ไฝœๆˆใ—ใพใ™๏ผˆๅ†…ๅฎนใฏๆญฃๅฝ“ใช็นฐใ‚Š่ฟ”ใ—ใƒ‡ใƒผใ‚ฟ๏ผ‰ใ€‚
  2. ๆ”ปๆ’ƒ่€…ใฏใพใŸใ€uncompressedSize ใƒ•ใ‚ฃใƒผใƒซใƒ‰ใซใ€่จฑๅฎนใ•ใ‚Œใ‚‹ๆœ€ๅคงๅ€ค๏ผˆ48,000,000ใƒใ‚คใƒˆ๏ผ‰ใ‚’่จญๅฎšใ—ใพใ™
  3. ใ‚ตใƒผใƒใƒผใฏใƒ‘ใ‚ฑใƒƒใƒˆใ‚’ๅ—ไฟกใ—ใ€ใƒ˜ใƒƒใƒ€ใƒผใ‹ใ‚‰ uncompressedSize ใ‚’่ชญใฟๅ–ใ‚Šใพใ™
  4. ใ‚ตใƒผใƒใƒผใฏ่งฃๅ‡ๅ‡ฆ็†ใ‚’่กŒใ†ๅ‰ใซใ€48MBใฎใƒใƒƒใƒ•ใ‚กใ‚’็ขบไฟใ—ใพใ™ใ€‚
  5. ใƒ‡ใƒผใ‚ฟใฏๆญฃๅธธใซ่งฃๅ‡ใ•ใ‚Œใ‚‹ใŸใ‚ๅ‡ฆ็†่‡ชไฝ“ใฏๅ•้กŒใชใๅฎŒไบ†ใ—ใพใ™ใŒใ€ย ็ขบไฟใ•ใ‚ŒใŸใƒกใƒขใƒชใฏใใฎใพใพไฟๆŒใ•ใ‚Œใพใ™ใ€‚
  6. ๆ”ปๆ’ƒ่€…ใฏๅŒๆ™‚ๆŽฅ็ถšๆ•ฐใ‚’ๅข—ใ‚„ใ—ใฆใ„ใใพใ™๏ผˆไพ‹๏ผš512MBใ‚ตใƒผใƒใƒผใงใฏ็ด„10ๆŽฅ็ถšใ€1GBใงใฏ็ด„25ๆŽฅ็ถšใ€ใชใฉ๏ผ‰ใ€‚
  7. ใใฎ็ตๆžœใ€ใ‚ตใƒผใƒใƒผใฏๅˆฉ็”จๅฏ่ƒฝใชใƒกใƒขใƒชใ‚’ไฝฟใ„ๅˆ‡ใ‚Šใ€ใ‚ซใƒผใƒใƒซใซใ‚ˆใฃใฆ OOM๏ผˆOut Of Memory๏ผ‰ใจใ—ใฆๅผทๅˆถ็ต‚ไบ†ใ•ใ‚Œใพใ™๏ผˆ็ต‚ไบ†ใ‚ณใƒผใƒ‰137๏ผ‰ใ€‚

ใ“ใ“ใง้‡่ฆใชใฎใฏใ€้€ไฟกใ•ใ‚Œใ‚‹ๅœง็ธฎใƒ‡ใƒผใ‚ฟ่‡ชไฝ“ใฏๆญฃๅฝ“ใงใ‚ใ‚‹ใจใ„ใ†็‚นใงใ™ใ€‚ๅฎŸ้š›ใซๆŒ‡ๅฎšใ•ใ‚ŒใŸใ‚ตใ‚คใ‚บใพใง่งฃๅ‡ๅฏ่ƒฝใชใŸใ‚ใ€ใ‚ตใƒผใƒใƒผใฏๆŽฅ็ถšใ‚’็ถญๆŒใ—ใŸใพใพๆฌกใฎใƒกใƒƒใ‚ปใƒผใ‚ธใ‚’ๅพ…ใก็ถšใ‘ใพใ™ใ€‚ใใฎ็ตๆžœใ€็ขบไฟใ•ใ‚ŒใŸใƒกใƒขใƒชใ‚‚่งฃๆ”พใ•ใ‚Œใšใซๆฎ‹ใ‚Š็ถšใ‘ใพใ™ใ€‚ๅฎŸ้š›ใฎๆคœ่จผใงใฏใ€512MBใฎ MongoDB ใ‚คใƒณใ‚นใ‚ฟใƒณใ‚นใฏใ€ใ‚ใšใ‹10ๆŽฅ็ถš๏ผˆ็ด„457KBใฎๆ”ปๆ’ƒใƒˆใƒฉใƒ•ใ‚ฃใƒƒใ‚ฏ๏ผ‰ใงใ‚ฏใƒฉใƒƒใ‚ทใƒฅใ—ใพใ—ใŸใ€‚ใพใŸใ€8GBใฎใ‚คใƒณใ‚นใ‚ฟใƒณใ‚นใงใ‚‚198ๆŽฅ็ถš๏ผˆ็ด„9MB๏ผ‰ใงๅœๆญขใ™ใ‚‹ใ“ใจใŒ็ขบ่ชใ•ใ‚Œใฆใ„ใพใ™ใ€‚

OOM ใ‚’ๅผ•ใ่ตทใ“ใ™ใŸใ‚ใซๅฟ…่ฆใชๆŽฅ็ถšๆ•ฐ

MongoDB ใƒใƒผใ‚ธใƒงใƒณ8.0ใ‚’ Docker ใ‚ณใƒณใƒ†ใƒŠไธŠใงๅ‹•ไฝœใ•ใ›ใ€ใƒกใƒขใƒชๅˆถ้™ใ‚’ๅค‰ใˆใชใŒใ‚‰ใ€OOM๏ผˆใƒกใƒขใƒชไธ่ถณ๏ผ‰ใซใ‚ˆใ‚‹ๅœๆญขใŒ็™บ็”Ÿใ™ใ‚‹ใพใงใซๅฟ…่ฆใชๆŽฅ็ถšๆ•ฐใ‚’ๆคœ่จผใ—ใพใ—ใŸใ€‚ๅ„ๆŽฅ็ถšใฏ ็ด„47KBใฎใƒšใ‚คใƒญใƒผใƒ‰ใ‚’้€ไฟกใ—ใพใ™ใŒใ€ใ‚ตใƒผใƒใƒผใซใฏ 48MBใฎใƒกใƒขใƒชๅ‰ฒใ‚Šๅฝ“ใฆใŒ็™บ็”Ÿใ—ใพใ™ใ€‚ใคใพใ‚Šใ€็ด„1,027ๅ€ใจใ„ใ†ๆฅตใ‚ใฆ้ซ˜ใ„ๅข—ๅน…็އใซใชใ‚Šใพใ™ใ€‚ใŸใจใˆใฆ่จ€ใˆใฐใ€็Ÿญใ„ใƒกใƒผใƒซ1้€šๅˆ†๏ผˆ47KB๏ผ‰ใฎใƒ‡ใƒผใ‚ฟใ‚’้€ใ‚‹ใ ใ‘ใงใ€ใ‚ตใƒผใƒใƒผใซใƒใƒƒใƒ‰ใ‚ญใƒฃใ‚นใƒˆ1ๆœฌๅˆ†๏ผˆ48MB๏ผ‰ใฎใƒกใƒขใƒช็ขบไฟใ‚’ๅผทใ„ใ‚‹ใ‚ˆใ†ใชใ‚‚ใฎใงใ™ใ€‚ใ“ใฎๅ‡ฆ็†ใŒๆŽฅ็ถšใ”ใจใซ็นฐใ‚Š่ฟ”ใ•ใ‚Œใ‚‹ใ“ใจใงใ€็Ÿญๆ™‚้–“ใฎใ†ใกใซใƒกใƒขใƒชใŒๆžฏๆธ‡ใ—ใพใ™ใ€‚

ใ‚ตใƒผใƒใƒผใƒกใƒขใƒช ๅฟ…่ฆๆŽฅ็ถšๆ•ฐ ้€ไฟกใƒ‡ใƒผใ‚ฟ้‡ ๅผทๅˆถใƒกใƒขใƒช็ขบไฟ้‡ ใ‚ฏใƒฉใƒƒใ‚ทใƒฅใพใงใฎๆ™‚้–“
256 MB 3 137 KB 144 MB 1็ง’ๆœชๆบ€
512 MB 10 457 KB 480 MB ็ด„2็ง’
1 GB 25 1.1 MB 1.2 GB ็ด„3็ง’
2 GB 45 2.1 MB 2.2 GB ็ด„4็ง’
4 GB 85 3.9 MB 4.1 GB ็ด„5็ง’
8 GB 198 9.0 MB 9.5 GB ็ด„8็ง’

ไธปใชใƒใ‚คใƒณใƒˆ๏ผš

  • ่จˆ็ฎ—ๅผ๏ผšๆœ€ๅฐๆŽฅ็ถšๆ•ฐ โ‰ˆ (RAM_MB โ€“ 100) / 48 MongoDB ใฏใƒ™ใƒผใ‚นๅ‹•ไฝœใ ใ‘ใง ็ด„100MBใฎใƒกใƒขใƒชใ‚’ไฝฟ็”จใ™ใ‚‹ใŸใ‚ใ€ใใ‚Œไปฅๅค–ใฎใƒกใƒขใƒชใŒๆ”ปๆ’ƒใฎๅฏพ่ฑกใซใชใ‚Šใพใ™ใ€‚
  • ใปใผๆฏ”ไพ‹ใ—ใฆๅข—ๅŠ ๏ผšย ๅฟ…่ฆใชๆŽฅ็ถšๆ•ฐใฏ ใ‚ตใƒผใƒใƒผใฎใƒกใƒขใƒชๅฎน้‡ใซใปใผๆฏ”ไพ‹ใ—ใฆๅข—ๅŠ ใ—ใพใ™๏ผˆ็›ฎๅฎ‰ใจใ—ใฆ 1GBใ‚ใŸใ‚Š็ด„20ๆŽฅ็ถš๏ผ‰ใ€‚
  • ใ”ใๅฐ‘ใชใ„้€šไฟก้‡ใงๆˆ็ซ‹๏ผšย 8GBใฎใ‚ตใƒผใƒใƒผใงใ‚‚ใ€็ด„9MBใฎๆ”ปๆ’ƒใƒˆใƒฉใƒ•ใ‚ฃใƒƒใ‚ฏใงๅœๆญขใ•ใ›ใ‚‹ใ“ใจใŒๅฏ่ƒฝใงใ™ใ€‚
  • ๅ˜ไธ€ใƒžใ‚ทใƒณใ‹ใ‚‰ๅฎŸ่กŒๅฏ่ƒฝ๏ผšย ใ“ใ‚Œใ‚‰ใฎใƒ†ใ‚นใƒˆใฏ ใ™ในใฆๅ˜ไธ€ใฎๆ”ปๆ’ƒ็”จใƒžใ‚ทใƒณใ‹ใ‚‰ๅฎŸๆ–ฝใ•ใ‚Œใฆใ„ใพใ™ใ€‚

ๅฎŸ้‹็”จ็’ฐๅขƒใธใฎๅฝ“ใฆใฏใ‚๏ผš

ใƒ‡ใƒ—ใƒญใ‚คใƒกใƒณใƒˆ ไธ€่ˆฌ็š„ใชใƒกใƒขใƒชๅฎน้‡ ๆŽจๅฎšๅฟ…่ฆๆŽฅ็ถšๆ•ฐ ๆŽจๅฎš้€ไฟกใƒ‡ใƒผใ‚ฟ้‡
Atlas M0 (Free) 512 MB ~10 ~457 KB
Atlas M10 2 GB ~45 ~2.1 MB
Atlas M30 8 GB ~198 ~9.0 MB
Atlas M60 32 GB ~680 ~31 MB
ใ‚จใƒณใ‚ฟใƒผใƒ—ใƒฉใ‚คใ‚บ 64 GB ~1363 ~64 MB

ใ“ใฎ็ตๆžœใ‹ใ‚‰ๅˆ†ใ‹ใ‚‹ใ‚ˆใ†ใซใ€ๅๅˆ†ใชใƒชใ‚ฝใƒผใ‚นใ‚’ๅ‚™ใˆใŸใ‚จใƒณใ‚ฟใƒผใƒ—ใƒฉใ‚คใ‚บ็’ฐๅขƒใงใ‚ใฃใฆใ‚‚ๅฝฑ้Ÿฟใ‚’ๅ—ใ‘ใ‚‹ๅฏ่ƒฝๆ€งใŒใ‚ใ‚Šใพใ™ใ€‚ไพ‹ใˆใฐใ€ไธ€่ˆฌ็š„ใชๅฎถๅบญ็”จใ‚คใƒณใ‚ฟใƒผใƒใƒƒใƒˆๅ›ž็ทšใ‹ใ‚‰ใงใ‚‚ใ€64GBใฎ MongoDB ใ‚ตใƒผใƒใƒผใ‚’1ๅˆ†ๆœชๆบ€ใงๅœๆญขใ•ใ›ใ‚‹ใ“ใจใŒๅฏ่ƒฝใงใ™ใ€‚

ๅ›ณ5๏ผšย MongoDB ใ‚ตใƒผใƒใƒผใ‚’ๅœๆญขใ•ใ›ใ‚‹ใŸใ‚ใซๅฟ…่ฆใชๆŽฅ็ถšๆ•ฐ

็ต่ซ–

ไปŠๅ›žๆ˜Žใ‚‰ใ‹ใซใชใฃใŸ MongoDB ใฎ่„†ๅผฑๆ€งใฏใ€ๆ”ปๆ’ƒ่€…ใŒ MongoDB ใ‚ตใƒผใƒใƒผใ‚’ๅœๆญขใซ่ฟฝใ„่พผใ‚€ใ“ใจใ‚’ๅฏ่ƒฝใซใ™ใ‚‹ใ‚‚ใฎใงใ™ใ€‚Shodan ใฎใƒ‡ใƒผใ‚ฟใซใ‚ˆใ‚‹ใจใ€ๆœฌ็จฟๅŸท็ญ†ๆ™‚็‚นใง 207,000ไปฅไธŠใฎ MongoDB ใ‚คใƒณใ‚นใ‚ฟใƒณใ‚นใŒใ‚คใƒณใ‚ฟใƒผใƒใƒƒใƒˆไธŠใซๅ…ฌ้–‹ใ•ใ‚Œใฆใ„ใพใ™ใ€‚ๆœฌๆฅใ€MongoDB ใฎๅœง็ธฎๆฉŸ่ƒฝใฏใƒ‘ใƒ•ใ‚ฉใƒผใƒžใƒณใ‚นๅ‘ไธŠใ‚’็›ฎ็š„ใจใ—ใฆๅฐŽๅ…ฅใ•ใ‚ŒใŸใ‚‚ใฎใงใ™ใŒใ€ใ“ใฎ่„†ๅผฑๆ€งใซใ‚ˆใ‚Š ๆ”ปๆ’ƒใฎๅ…ฅๅฃใจใชใ‚‹ๅฏ่ƒฝๆ€งใŒใ‚ใ‚‹ใ“ใจใŒๅˆ†ใ‹ใ‚Šใพใ—ใŸ

ๅฏพ็ญ–่‡ชไฝ“ใฏๆฏ”่ผƒ็š„ใ‚ทใƒณใƒ—ใƒซใงใ™ใ€‚ใƒกใƒขใƒชใ‚’ๅ‰ฒใ‚Šๅฝ“ใฆใ‚‹ๅ‰ใซใ€uncompressedSize ใฎๅ€คใŒ ๅฎŸ้š›ใฎๅœง็ธฎใƒ‡ใƒผใ‚ฟใฎ้•ทใ•ใจๆ•ดๅˆใ—ใฆใ„ใ‚‹ใ‹ใ‚’ๆคœ่จผใ™ในใใงใ™ใ€‚ๅœง็ธฎใ‚ขใƒซใ‚ดใƒชใ‚บใƒ ใซใฏ็†่ซ–ไธŠใฎๅœง็ธฎ็އใฎไธŠ้™ใŒใ‚ใ‚Šใ€ไพ‹ใˆใฐ zlib ใŒใƒฉใƒณใƒ€ใƒ ใƒ‡ใƒผใ‚ฟใ‚’ 1027:1 ใฎๆฏ”็އใงๅœง็ธฎใ™ใ‚‹ใ“ใจใฏ็พๅฎŸ็š„ใงใฏใ‚ใ‚Šใพใ›ใ‚“ใ€‚ๆŽฅ็ถšใ”ใจใซใƒกใƒขใƒชๅ‰ฒใ‚Šๅฝ“ใฆใŒ็ฉใฟ้‡ใชใ‚‹ใ“ใจใงใ€ๆœ€็ต‚็š„ใซใฏ MongoDB ใ‚ตใƒผใƒใƒผใŒใ‚ฏใƒฉใƒƒใ‚ทใƒฅใ—ใพใ™ใ€‚ใใฎใŸใ‚ๅ„็ต„็น”ใฏใ€่‡ช็คพใฎ MongoDB ็’ฐๅขƒใ‚’ใ‚คใƒณใ‚ฟใƒผใƒใƒƒใƒˆใซ็›ดๆŽฅๅ…ฌ้–‹ใ™ใ‚‹ๅฟ…่ฆใŒๆœฌๅฝ“ใซใ‚ใ‚‹ใฎใ‹ใ‚’ๆ”นใ‚ใฆ็ขบ่ชใ™ใ‚‹ใ“ใจใŒ้‡่ฆใงใ™ใ€‚

้˜ฒๅพก็ญ–

MongoDB ๅˆฉ็”จ่€…ๅ‘ใ‘๏ผš

  • ใƒใƒƒใƒˆใƒฏใƒผใ‚ฏใ‚ขใ‚ฏใ‚ปใ‚นใฎๅˆถ้™๏ผšย ใƒ•ใ‚กใ‚คใ‚ขใ‚ฆใ‚ฉใƒผใƒซใ‚„ VPN ใ‚’ๅˆฉ็”จใ—ใ€MongoDB ใธใฎใ‚ขใ‚ฏใ‚ปใ‚นใ‚’ไฟก้ ผใงใใ‚‹ใƒใƒƒใƒˆใƒฏใƒผใ‚ฏใซ้™ๅฎšใ—ใฆใใ ใ•ใ„ใ€‚
  • ๆŽฅ็ถšๆ•ฐใฎๅˆถ้™๏ผšย maxIncomingConnections ใ‚’่จญๅฎšใ™ใ‚‹ใจใจใ‚‚ใซใ€OS ใƒฌใƒ™ใƒซใงใ‚‚ๆŽฅ็ถšใƒฌใƒผใƒˆๅˆถ้™ใ‚’ๅฎŸ่ฃ…ใ™ใ‚‹ใ“ใจใŒๆŽจๅฅจใ•ใ‚Œใพใ™ใ€‚
  • ใƒกใƒขใƒชไฝฟ็”จ้‡ใฎ็›ฃ่ฆ–๏ผšย ใƒกใƒขใƒชไฝฟ็”จ้‡ใฎ็•ฐๅธธใชๅข—ๅŠ ใ‚’ๆคœ็Ÿฅใงใใ‚‹ใ‚ˆใ†ใ€็›ฃ่ฆ–ใจใ‚ขใƒฉใƒผใƒˆใ‚’่จญๅฎšใ—ใฆใใ ใ•ใ„ใ€‚
  • ๅœง็ธฎๆฉŸ่ƒฝใฎ็„กๅŠนๅŒ–ใฎๆคœ่จŽ๏ผšย ๅœง็ธฎใซใ‚ˆใ‚‹ใƒกใƒชใƒƒใƒˆใŒๅฐใ•ใ„็’ฐๅขƒใงใฏใ€–networkMessageCompressors=disabled ใ‚’่จญๅฎšใ—ใ€ๅœง็ธฎๆฉŸ่ƒฝใ‚’็„กๅŠนๅŒ–ใ™ใ‚‹ใ“ใจใ‚‚ๆคœ่จŽใงใใพใ™ใ€‚
  • ๅœง็ธฎๆฉŸ่ƒฝใŒๆœ‰ๅŠนใช MongoDB 3.4ไปฅ้™๏ผˆโ€ป3.6ไปฅ้™ใงใฏใƒ‡ใƒ•ใ‚ฉใƒซใƒˆใงๆœ‰ๅŠน๏ผ‰ใฎใ†ใกใ€8.2.4 / 8.0.18 / 7.0.29 ใ‚ˆใ‚Šๅ‰ใฎใƒใƒผใ‚ธใƒงใƒณใŒๅฝฑ้Ÿฟใ‚’ๅ—ใ‘ใพใ™ใ€‚่ฉฒๅฝ“ใ™ใ‚‹ๅ ดๅˆใฏใ€ไฟฎๆญฃๆธˆใฟใฎใƒใƒผใ‚ธใƒงใƒณใธๆ›ดๆ–ฐใ—ใฆใใ ใ•ใ„ใ€‚

Cato ๅˆฉ็”จ่€…ๅ‘ใ‘๏ผš

  • IPS ไฟ่ญท๏ผšย Cato ใฎ IPS ใฏใ€MongoDB ใ‚’็‹™ใ† ไธๆญฃใช OP_COMPRESSED ใƒ‘ใ‚ฑใƒƒใƒˆใ‚„ใ€็•ฐๅธธใชๆŽฅ็ถšใƒ‘ใ‚ฟใƒผใƒณใ‚’ๆคœ็Ÿฅใ—ใƒ–ใƒญใƒƒใ‚ฏใ—ใพใ™ใ€‚
  • ใƒใƒƒใƒˆใƒฏใƒผใ‚ฏๅˆ†้›ข๏ผšCato SASE ใƒ—ใƒฉใƒƒใƒˆใƒ•ใ‚ฉใƒผใƒ ใฎใƒใƒƒใƒˆใƒฏใƒผใ‚ฏใ‚ปใ‚ฐใƒกใƒณใƒ†ใƒผใ‚ทใƒงใƒณๆฉŸ่ƒฝใ‚’ๆดป็”จใ—ใ€ใƒ‡ใƒผใ‚ฟใƒ™ใƒผใ‚น้€šไฟกใ‚’ไฟก้ ผใงใใชใ„ใƒใƒƒใƒˆใƒฏใƒผใ‚ฏใ‹ใ‚‰ๅˆ†้›ขใ—ใพใ™ใ€‚
  • MDR ใซใ‚ˆใ‚‹็›ฃ่ฆ–ย Cato MDR ใฏใ€ๆŽฅ็ถšใƒ•ใƒฉใƒƒใƒ‰ใ‚„็•ฐๅธธใชใƒ‘ใ‚ฑใƒƒใƒˆใ‚ตใ‚คใ‚บใชใฉใ€MongoDB ใ‚’ๆจ™็š„ใจใ—ใŸไธๅฏฉใช้€šไฟกใƒ‘ใ‚ฟใƒผใƒณใ‚’ๅˆ†ๆžใƒปๅฏพๅฟœใ—ใพใ™ใ€‚

ไพตๅฎณใฎๆŒ‡ๆจ™๏ผˆIoC๏ผ‰

ใƒใƒƒใƒˆใƒฏใƒผใ‚ฏไธŠใฎๅ…†ๅ€™๏ผš

  • ๅ˜ไธ€ใฎ้€ไฟกๅ…ƒใ‹ใ‚‰ ใƒใƒผใƒˆ27017๏ผˆใพใŸใฏ่จญๅฎšใ•ใ‚ŒใŸ MongoDB ใƒใƒผใƒˆ๏ผ‰ใธใฎๅคง้‡ใฎ TCP ๆŽฅ็ถš
  • OP_COMPRESSED ใƒ‘ใ‚ฑใƒƒใƒˆ๏ผˆopCode 2012๏ผ‰ใงใ€uncompressedSize ใŒๅคงใใ๏ผˆ10MBไปฅไธŠ๏ผ‰ใ€ใ—ใ‹ใ— ใƒ‘ใ‚ฑใƒƒใƒˆๅ…จไฝ“ใฎใ‚ตใ‚คใ‚บใฏๅฐใ•ใ„๏ผˆ100KBๆœชๆบ€๏ผ‰
  • ๆŽฅ็ถšใŒ็Ÿญๆ™‚้–“ใงๅคง้‡ใซ็ขบ็ซ‹ใ•ใ‚Œใ€ใใฎๅพŒ ใ‚ขใ‚คใƒ‰ใƒซ็Šถๆ…‹ใฎๆŽฅ็ถšใŒ็ถญๆŒใ•ใ‚Œใ‚‹

ใ‚ทใ‚นใƒ†ใƒ ไธŠใฎๅ…†ๅ€™๏ผš

  • MongoDB ใƒ—ใƒญใ‚ปใ‚นใฎใƒกใƒขใƒชไฝฟ็”จ้‡ใŒๆ€ฅๆฟ€ใซๅข—ๅŠ 
  • ใ‚ทใ‚นใƒ†ใƒ ใƒญใ‚ฐใซ OOM Killer ใซใ‚ˆใ‚‹ mongod ใƒ—ใƒญใ‚ปใ‚นใฎ็ต‚ไบ†ใ‚คใƒ™ใƒณใƒˆ
  • MongoDB ใฎ็ต‚ไบ†ใ‚ณใƒผใƒ‰ 137๏ผˆOOM ใซใ‚ˆใ‚‹ SIGKILL๏ผ‰

Related Topics

Vitaly Simonovich

Vitaly Simonovich

Senior Security Researcher

ใ‚คใ‚นใƒฉใ‚จใƒซใ‚’ๆ‹ ็‚นใจใ™ใ‚‹ใƒดใ‚ฃใ‚ฟใƒชใƒผใฏใ€ใ‚ขใƒ—ใƒชใ‚ฑใƒผใ‚ทใƒงใƒณใจใƒ‡ใƒผใ‚ฟใ‚ปใ‚ญใƒฅใƒชใƒ†ใ‚ฃใ‚’ไธญๅฟƒใซใ€ใ‚ตใ‚คใƒใƒผใ‚ปใ‚ญใƒฅใƒชใƒ†ใ‚ฃๅˆ†้‡Žใง8ๅนดไปฅไธŠใฎ็ตŒ้จ“ใŒใ‚ใ‚Šใพใ™ใ€‚้ŽๅŽปใซใฏใ€IncapsulaใจImpervaใงใ‚ปใ‚ญใƒฅใƒชใƒ†ใ‚ฃใ‚ขใƒŠใƒชใ‚นใƒˆใจ็ ”็ฉถ่€…ใฎใƒใƒผใƒ ใ‚’็އใ„ใฆใ„ใพใ—ใŸใ€‚ไป•ไบ‹ใจใฏๅˆฅใซใ€ใ‚ตใ‚คใƒใƒผใ‚ปใ‚ญใƒฅใƒชใƒ†ใ‚ฃใ‚ณใƒŸใƒฅใƒ‹ใƒ†ใ‚ฃใซ็ฉๆฅต็š„ใซ่ฒข็Œฎใ—ใฆใ„ใ‚‹ใƒดใ‚ฃใ‚ฟใƒชใƒผใฏใ€ๅฎšๆœŸ็š„ใซ็ ”็ฉถใƒ–ใƒญใ‚ฐใ‚„ใ‚ฆใ‚งใƒ“ใƒŠใƒผใ‚’ๅ…ฌ้–‹ใ—ใ€ใ•ใพใ–ใพใชใ‚ปใ‚ญใƒฅใƒชใƒ†ใ‚ฃใ‚ซใƒณใƒ•ใ‚กใƒฌใƒณใ‚นใงใ‚‚่ฌ›ๆผ”ใ‚’่กŒใฃใฆใ„ใพใ™ใ€‚ใพใŸใ€ใ‚ตใ‚คใƒใƒผใ‚ปใ‚ญใƒฅใƒชใƒ†ใ‚ฃใฎๆ•™่‚ฒใซใ‚‚็†ฑๅฟƒใงใ€ๅœฐๅ…ƒใฎๅคงๅญฆใงๆ•™้žญใ‚’ใจใฃใฆใ„ใพใ™ใ€‚ไฝ™ๆš‡ใซใฏใ‚ญใƒฃใƒ—ใƒใƒฃใƒผใƒปใ‚ถใƒปใƒ•ใƒฉใƒƒใ‚ฐ๏ผˆCTF๏ผ‰ใฎ่ชฒ้กŒใ‚’่งฃใใฎใŒๅฅฝใใงใ€ๆฅฝใ—ใฟใชใŒใ‚‰่‡ชใ‚‰ใฎใ‚นใ‚ญใƒซๅ‘ไธŠใซๅฝน็ซ‹ใฆใฆใ„ใพใ™ใ€‚

Read More