Upgrade to Pro — share decks privately, control downloads, hide ads and more …

クライアントプロセスの権限情報に基づくTCPを介した透過的な権限分離方式の設計

 クライアントプロセスの権限情報に基づくTCPを介した透過的な権限分離方式の設計

松本亮介, 坪内佑樹, 2020年度第1回(IOT通算49回)研究会

2020/05/15
さくらインターネット株式会社
さくらインターネット研究所
上級研究員 松本亮介 / まつもとりー / @matsumotory

MATSUMOTO Ryosuke

May 15, 2020
Tweet

More Decks by MATSUMOTO Ryosuke

Other Decks in Research

Transcript

  1. • ֤ςφϯτؒͷݖݶ෼཭͸ݚڀ։ൃ͞Ε͖͍ͯͯΔʢίϯςφ΋ؚΉʣ • جຊઓུ: Linuxϓϩηεͷ໊લۭؒ΍Ϧιʔεͷִ཭ • جຊઓུ: Φʔφ΍ύʔϛογϣϯ৘ใΛར༻ͨ͠ݖݶ෼཭ • εϨουΛར༻ͯ͠ߴ଎ʹݖݶ෼཭Λߦ͏ख๏[1]ͳͲ

    • ωοτϫʔΫΛհͨ͠ݖݶ෼཭ͷ೉͠͞ ← ຊݚڀͷϞνϕʔγϣϯ • ID/PASS͕࿙ΕΔͱϦϞʔτʹ഑ஔ͞ΕͨDBͱ୭Ͱ΋௨৴Մೳ • ςφϯτ୯ҐͰNW΍DBΛ෼཭͢Δίετ΍ෳࡶੑͷߴ͞΋՝୊ 5 ςφϯτج൫ଆͰղܾ͍ͨ͠ - ؔ࿈ݚڀͱ՝୊ <>দຊ྄հ Ԭ෦णஉ εϨου୯ҐͰݖݶ෼཭Λߦ͏8FCαʔόͷΞΫηε੍ޚΞʔΩςΫνϟ ిࢠ৘ใ௨৴ֶձ࿦จࢽ7PM+# /P QQ 0DU
  2. Ϛϧνςφϯτํࣜʹ͓͚ΔDB೷͖ݟͷྫ 9 Tenant A (Malicious User) Tenant B (include ID/Pass)

    Database Malicious User An exploit Read ID/Pass Steal tenant B and C data Normal data access Tenant C (include ID/Pass) An exploit Read ID/Pass An exploit Read ID/Pass Internet Hosting System
  3. WebαʔϏεʹ͓͚Δσʔλͷ࿙Ӯͷྫ 10 Image Upload Script Data Management Script (include ID/Pass)

    Database Malicious User An exploit Read ID/Pass Steal customer data Normal data access Internet Web System
  4. • Host Identity Protocol (HIP) • IPΞυϨεͷࣝผࢠͱϩέʔγϣϯͷ໾ׂΛ෼཭ • ެ։伴Ͱ҉߸Խͨࣝ͠ผࢠʹΑͬͯ௨৴ݩϗετͷҰҙੑΛ઀ଓઌͰࣝผ •

    ݪཧతʹ͸TLSτϯωϦϯάͷެ։伴ೝূͱಉ͘͡ϚϧνςφϯτͰར༻͢ Δ৔߹ʹ͸ςφϯτ͕࣋ͭࣝผࢠͷ࿙Ӯͷ໰୊͕࢒Δ 14 HIP
  5. • SPIFFE͸Zero Trust Networkͷߟ͑ํʹ΋ͱͮ͘αʔϏεؒೝূͷ࢓༷ • APIͷ௨৴ݩΫϥΠΞϯτ͕৴པͰ͖Δ͔Λݕূ͢Δ࢓૊Έ • Ξϓϩʔνͱͯ͠͸ެ։伴ೝূʹΑͬͯ௨৴ݩΛݕূ • Perfect

    Forward Secrecy (PFS)ͷ؍఺͔Βఆظతʹ伴ͷߋ৽Λߦ͏ • ݪཧతʹ͸TLSτϯωϦϯάͷެ։伴ར༻ͱಉ͘͡ϚϧνςφϯτͰར༻͢ Δ৔߹ʹ͸ςφϯτʹ͓͚Δ伴ͷ࿙Ӯͷ໰୊͕࢒Δ 15 SPIFFE
  6. • RCF 7974 An Experimental TCP Option for Host Identification

    • IPΞυϨεڞ༗؀ڥͰ઀ଓݩϗετͷҰҙੑΛೝূ • TCPΦϓγϣϯϔομʹ৘ใΛॻ͖ࠐΜͰ͓͘͜ͱͰಁաੑΛ࣮ݱ • RFCͰ͸ҰҙͷΩʔΛͲ͏͢Δ͔͸ٞ࿦த • ݪཧతʹ͸઀ଓݩͰݻ༗ͷIDΛੜ੒ͯ͠઀ଓ͢ΔͨΊɺTLSτϯωϦϯά΍ HIPΞϓϩʔνͱಉ༷ɺ৐ͬऔΒΕͨςφϯτʹ͓͚ΔIDऔಘͷ՝୊͕࢒Δ 16 TCPΦϓγϣϯϔομΛར༻ͨؔ͠࿈ݚڀ
  7. ఏҊख๏ (tcpriv) ͷϑϩʔ 19 Kernel TCP/IP Stack User Land Read

    tcpriv information Process(Middleware) Detect tcpriv TCP Options Kernel Module Library /proc Socket API Kernel TCP/IP Stack User Land Insert tcpriv TCP Options Kernel Module Process(Client) )PTU" )PTU# 5$1
  8. • TCPΦϓγϣϯϔομʔʹ࣮ݧతΦϓγϣϯͱͯ͠ΩʔอଘྖҬΛఆٛ • ઀ଓཱ֬࣌ͷsynύέοτͷTCPΦϓγϣϯϔομΛར༻ • kind no(8bits) + length(8bits) +

    ExID(32bits) + contents(64bits) • contentsྖҬʹLinuxͷuid(32bits)ͱgid(32bits)ΛΧʔωϧͰอଘ • ૹ৴ݩͰอଘޙɺૹ৴ઌͷαʔόͰ͜ͷྖҬΛparseͯ͠औಘ • ͢΂ͯΛLinuxΧʔωϧϞδϡʔϧͱͯ͠ΧʔωϧʹखΛೖΕͣʹ࣮૷ • Մൖੑͷ֬อʢͱ͸͍͑ΧʔωϧόʔδϣϯΛ௥͏ඞཁ͋Γʣ 20 ઃܭͱ࣮૷