From 7e4e58e96028451871dda57491ee6f03dec58df1 Mon Sep 17 00:00:00 2001 From: regevnoam1 Date: Thu, 29 Aug 2024 14:42:15 +0300 Subject: [PATCH 1/4] Draft Static Factory and JSON Parser --- .vscode/launch.json | 14 + KubiScan.py | 29 +- api/api_client.py | 12 +- api/base_client_api.py | 9 + api/client_factory.py | 15 + api/static_api_client.py | 61 + combined.json | 10573 +++++++++++++++++++++++++++++++++++++ static_scan.py | 36 + temp.json | 0 9 files changed, 10742 insertions(+), 7 deletions(-) create mode 100644 .vscode/launch.json create mode 100644 api/base_client_api.py create mode 100644 api/client_factory.py create mode 100644 api/static_api_client.py create mode 100644 combined.json create mode 100644 static_scan.py create mode 100644 temp.json diff --git a/.vscode/launch.json b/.vscode/launch.json new file mode 100644 index 0000000..a5728ed --- /dev/null +++ b/.vscode/launch.json @@ -0,0 +1,14 @@ +{ + "version": "0.2.0", + "configurations": [ + { + "name": "Python: KubiScan", + "type": "debugpy", + "request": "launch", + "program": "${workspaceFolder}/KubiScan.py", + "args": ["-rs","-r"], + "console": "integratedTerminal", + "pythonPath": "python3" + } + ] +} diff --git a/KubiScan.py b/KubiScan.py index 00a6c03..9642e68 100755 --- a/KubiScan.py +++ b/KubiScan.py @@ -274,7 +274,16 @@ def print_all_risky_containers(priority=None, namespace=None, read_token_from_co print_table_aligned_left(t) -def print_all_risky_subjects(priority=None, namespace=None): + +def get_rules_by_namespace(namespace=None): + namespace_risky_roles = [] + risky_roles = engine.utils.get_risky_roles() + for role in risky_roles: + if role.namespace == namespace: + return role + return None + +def print_all_risky_subjects(show_rules=False, priority=None, namespace=None): subjects = engine.utils.get_all_risky_subjects() if priority: subjects = filter_objects_by_priority(priority, subjects) @@ -282,10 +291,18 @@ def print_all_risky_subjects(priority=None, namespace=None): curr_header = "|Risky Users|" print("+-----------+") print("|Risky Users|") - t = PrettyTable(['Priority', 'Kind', 'Namespace', 'Name']) - for subject in subjects: - if subject.user_info.namespace == namespace or namespace is None: - t.add_row([get_color_by_priority(subject.priority)+subject.priority.name+WHITE, subject.user_info.kind, subject.user_info.namespace, subject.user_info.name]) + if show_rules: + t = PrettyTable(['Priority', 'Kind', 'Namespace', 'Name', 'Rules']) + for subject in subjects: + if subject.user_info.namespace == namespace or namespace is None: + subject_role = get_rules_by_namespace(subject.user_info.namespace) + rules = subject_role.rules if subject_role else None + t.add_row([get_color_by_priority(subject.priority)+subject.priority.name+WHITE, subject.user_info.kind, subject.user_info.namespace, subject.user_info.name,get_pretty_rules(rules)]) + else: + t = PrettyTable(['Priority', 'Kind', 'Namespace', 'Name']) + for subject in subjects: + if subject.user_info.namespace == namespace or namespace is None: + t.add_row([get_color_by_priority(subject.priority)+subject.priority.name+WHITE, subject.user_info.kind, subject.user_info.namespace, subject.user_info.name]) print_table_aligned_left(t) @@ -740,7 +757,7 @@ def main(): if args.risky_any_rolebindings: print_all_risky_rolebindings(days=args.less_than, priority=args.priority, namespace=args.namespace) if args.risky_subjects: - print_all_risky_subjects(priority=args.priority, namespace=args.namespace) + print_all_risky_subjects(show_rules=args.rules,priority=args.priority, namespace=args.namespace) if args.risky_pods: print_all_risky_containers(priority=args.priority, namespace=args.namespace, read_token_from_container=args.deep) if args.all: diff --git a/api/api_client.py b/api/api_client.py index 5befdd5..ccff033 100755 --- a/api/api_client.py +++ b/api/api_client.py @@ -5,10 +5,11 @@ from shutil import move from kubernetes.client.configuration import Configuration from kubernetes.client.api_client import ApiClient +from base_client_api import BaseApiClient # TODO: Should be removed after the bug will be solved: # https://github.com/kubernetes-client/python/issues/577 -from api.api_client_temp import ApiClientTemp +from api_client_temp import ApiClientTemp # The following variables have been commented as it resulted a bug when running `kubiscan -h` # Exception ignored in: Date: Thu, 29 Aug 2024 16:07:22 +0300 Subject: [PATCH 2/4] import fixes --- __pycache__/static_risky_roles.cpython-310.pyc | Bin 0 -> 1064 bytes api/__pycache__/__init__.cpython-310.pyc | Bin 0 -> 139 bytes api/__pycache__/api_client.cpython-310.pyc | Bin 0 -> 4558 bytes api/__pycache__/api_client_temp.cpython-310.pyc | Bin 0 -> 19377 bytes api/__pycache__/base_client_api.cpython-310.pyc | Bin 0 -> 542 bytes api/api_client.py | 4 ++-- api/static_api_client.py | 2 +- engine/__pycache__/__init__.cpython-310.pyc | Bin 0 -> 142 bytes engine/__pycache__/container.cpython-310.pyc | Bin 0 -> 625 bytes engine/__pycache__/pod.cpython-310.pyc | Bin 0 -> 460 bytes engine/__pycache__/priority.cpython-310.pyc | Bin 0 -> 645 bytes .../privleged_containers.cpython-310.pyc | Bin 0 -> 1773 bytes engine/__pycache__/role.cpython-310.pyc | Bin 0 -> 900 bytes engine/__pycache__/role_binding.cpython-310.pyc | Bin 0 -> 552 bytes engine/__pycache__/rule.cpython-310.pyc | Bin 0 -> 475 bytes engine/__pycache__/subject.cpython-310.pyc | Bin 0 -> 456 bytes engine/__pycache__/utils.cpython-310.pyc | Bin 0 -> 17745 bytes .../__pycache__/capabilities.cpython-310.pyc | Bin 0 -> 1580 bytes misc/__pycache__/__init__.cpython-310.pyc | Bin 0 -> 140 bytes misc/__pycache__/colours.cpython-310.pyc | Bin 0 -> 1730 bytes misc/__pycache__/constants.cpython-310.pyc | Bin 0 -> 419 bytes 21 files changed, 3 insertions(+), 3 deletions(-) create mode 100644 __pycache__/static_risky_roles.cpython-310.pyc create mode 100644 api/__pycache__/__init__.cpython-310.pyc create mode 100644 api/__pycache__/api_client.cpython-310.pyc create mode 100644 api/__pycache__/api_client_temp.cpython-310.pyc create mode 100644 api/__pycache__/base_client_api.cpython-310.pyc create mode 100644 engine/__pycache__/__init__.cpython-310.pyc create mode 100644 engine/__pycache__/container.cpython-310.pyc create mode 100644 engine/__pycache__/pod.cpython-310.pyc create mode 100644 engine/__pycache__/priority.cpython-310.pyc create mode 100644 engine/__pycache__/privleged_containers.cpython-310.pyc create mode 100644 engine/__pycache__/role.cpython-310.pyc create mode 100644 engine/__pycache__/role_binding.cpython-310.pyc create mode 100644 engine/__pycache__/rule.cpython-310.pyc create mode 100644 engine/__pycache__/subject.cpython-310.pyc create mode 100644 engine/__pycache__/utils.cpython-310.pyc create mode 100644 engine/capabilities/__pycache__/capabilities.cpython-310.pyc create mode 100644 misc/__pycache__/__init__.cpython-310.pyc create mode 100644 misc/__pycache__/colours.cpython-310.pyc create mode 100644 misc/__pycache__/constants.cpython-310.pyc diff --git a/__pycache__/static_risky_roles.cpython-310.pyc b/__pycache__/static_risky_roles.cpython-310.pyc new file mode 100644 index 0000000000000000000000000000000000000000..7b2b4ec56221b4923ac71abcb5a3e420c7bb6676 GIT binary patch literal 1064 zcmZWnOK%e~5VpPEWbCJ zm21U?AJ826N%#m75)!`vC}q59MI>zboAJ!p{^r|_OQk%5@%hKc-WLO*uX-~-3b1(s zOMU}jh~WT**v44w#uG&F59^=XjV(|I$<+S$}vw$(>=j%8T(J+kw>z^%jL zc`3y*Uzp-4X4WcVxl{7tp4_@W$u`Ms^jW zlRRJM)mg3!FWS|Y)u=SH$M_gdFq0yRPBlxj^WXkHlEE?DtY;UNuBjKkL$9cg72S;k zp4wq*t9_n01L4QQPe#uE$cfxg=kdKA59>2m!vw2kU4tbL0LEw?y=qQyA5F*@GhEaA zI};;8V}p^JMx%xpJtGr3Cg*rer$8zJFEOCrgj}YE5_;ulwH#xTn9Mp$E06L=gdw1w z+fk+fvQp&)m+??|;F@o^*q3!8vOq;x0Llt^;xadJ71cc`>$)rGCZ{8E;Cj5C5%5nS zm2n3H9x=7l*=y}>tU0?Ioz1SZ`*f?_5k%ifb=ATwywlolcb>J@+I3Tze!@ekr~n;B zMi)`dPFWhAc>nMd5>*KQe9%0IL*9&HHx$kF*c*mCN@R0$xbJs7H)_hnO?=N0zI;7$ z^lh>+7^#|s?=cs1dLj;;ksAhDeR&hW!W0*A73Xn4rY2 zun-kU)mK!3M}0ryjg-7@^Irtm&y-oXs=1bLrbIdPrPuJ{2xvnail#S{Sc)=SlRm9z z43a83aFYX-Wxkkw2EpAR4Ox!U^Fbp=Wn==;Q01iC<4zE}OcgY8mUgOg-PZP2TZmXF zgTM8Z30$Him30o5HGk_-7&GAhSpTf@Eg`kf}3xqq=D$iAOaaM0yz#qT+9L_QW%06G#UL?G8BP?5yUS&{fzwFRQlA>ivb{sox+*N41Vp=h)X|rMIiXo1hbXi)pNStod+7gs56;q)^ zOdHWK&n-0yqO$L}1b z%gerj=l=b__pe+qjDJ#P@v%|4f+GJ0!VS(6W5_yeXm(6Sbu+PscE{Gdm6SRqwAqO> zbUUtYE1}=(c$#;T^3d=2ns<|>VWm?6@9}c7Jgj!An)j31u->VIx55>aRg`lmYbfXW z60dw|bk_MYuj0GG&+{6uf5|!*-Z%IPU;WbHtI-PwR_8_3&+#?X*P<%w7rAxYXs&;Y zI~YwE5^Yy4QPEi8Dv+(o*C2ja6jv+;^^sPyQ5M-TOuQS^QP3MMlSj8DydYv0b;%*-v^ z-TeCUekrqZ#?U`)ZJa>cHe_zL6?@q9LP{diJToH|vuoo#uL}W0+!O*6s%4AW&IL!8x3z|h@q)Kwqm6=zdDy@MpV1GFimvd8G&fwFzxdCh2K-&hS4=J#LIkO;Vwh!Hi&3WBI-O6mz05oQO zWz9;5M(AYj%){5iw~TK&^D~FrU$JnB8@FN4;@8-tq}Q#?mgj3h+J(GN&8^I;qzPDp zpO*#;>m099JD@$;tj-;bbF!5KLwu7v@EUw|yUV>pbKli`nfu^9z3Xc39Wwcc>|BmM z+;ELA9pc8hNBYjr=N_-{<=p+o;MKoaWJg(Lu$+6jjr-KT(srd=9NkiwYbcuraMQ(orKGH$u)uBxR#% zDSI!4$yD_yZ5*R;7^&r6B(mcw0ZsvDbC8;D6l>p`bfZSm(;ySuQfoKwT)lC7XS+=h za{b2p!N=RXzgTGfX)O@G$9cuxnTtbiNQKr@ka3OF45+C8KrIzN)(22zlVYuQA5M0uK zhDgm9RB0^YQC7I7T{s$?N;4~0qfkU*mqhzP8uCb}N`h|?j(8xWOnjeKH9=H)Cl%2r zmw?xR*lyU{o@9Heh^HFtb-P%iaUShWkwFl+sk&Z{lA--xt1Zx=3YRU<;s zsGL~pdr@#ze)MRJBRvR()NU&XES3LBBqTx&ooR`-1*%ZJ>8tv}j#~YK5J9|3)vR3ujO@nl_iJ7SIOiKnH~2L7D*kgRzME@gudixB>L2F-rW1mOcqbg+Ss_oLxev zyaM7mghe*1uvO-n9;-4N6g*yv51#2T!mWx`!I*U**Q!}JeUoYxj27Eiq=$0iA#q

GA#kWK`1-=ev!0;tOhimsp*hdc`BdxiEBCmn~ z(Tu>z5q$y%d@}+QsAvSJ514$JQ!fyY8;QMd=Qg5{J#YptAsAsCm8RX^y)JYv;Hg@0 z%2%tw31?NMK)du3sWt9D4x~(!I}u3|ci&cZ9?P(c$nh`~6uu?dNG}>w>LJzojggFc z6A|5t?oT3_{i+z$EGb(?N&mDlT*vLss4YN75NAO^f|e9m95#QU9#WV6@9B$Y{AcTU z8eQ|~ArGRWWw{0>H)h5mVlKYy(AbAOZyQfo8(v=tw8s=isFuhJ=N|IJ6u-pO!Y5A} znRp8wBNR#Ti|oi|)9;-<+@f#yP9KnbN+0kaU`VwC1HccJABCfVjnJ@?mAHApzF-;B zfq{)gWP^@Ba}SM~#}WQ8ql})id>tdv{{=gfSiHHISYWI#ddGYC*kcDX5e(;h_}Jsz z$vxyQMmW!1`}5Ol<2*XZHr@8r+sm@Ce5ci#zIrKdd) zi@2W>A-7ZIYe$AH)~RlbDC9_^WG3RVDrqkgq&T$%7YTaEVzE)PuolJorz~51h@lyZ z`~e8?1lUtC>o9JQnNK(WoJ{93Z z%kUL!DDDus2BQ3D@F8}o!6nqc7d?i!;9ETEhm#}|AJK$UUe!k1?@=VBwd7Uw)`7wB zu9wbw*MhH#4=|(YDlZ5q4+#S02f;Aq6ChRq9}n(N!ldXCH!)N@u-1&AO&1QLkEHWj zg6J-a^g%rQNq9@1Q(4#0-9yufhtTEo8 z;&<(YG6^PVHLXlCz(SeG>yZB*5Xg>4Q8UO;4PNgaPBx26l7`vq)Js6S#38QpmiYiXco9tqi0-y-11x6Bp!6B33UQ z&ydfV@@EW@BnqERx6T~(|4wZ;OX9b*;ip7CBcjzF68B6l&y@W+I{t`K06N4|u?4l^ z7nh#qrt&ER5hMJ^%0krSamtZ-s(Fg1Q$flM#gB=+O@xf12xC7Zj`F=Ct=k5t yoU}WLdYQIsedp&1NO|uT?(}oA2KhQj9bg7IJ$r4tOuyRnBF%FBTK&@6TmJ>uyKR5~ literal 0 HcmV?d00001 diff --git a/api/__pycache__/api_client_temp.cpython-310.pyc b/api/__pycache__/api_client_temp.cpython-310.pyc new file mode 100644 index 0000000000000000000000000000000000000000..4deb8f8a5f46e8a2cfa9b4840923934e60c2acf2 GIT binary patch literal 19377 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 literal 0 HcmV?d00001 diff --git a/api/api_client.py b/api/api_client.py index ccff033..83bb96e 100755 --- a/api/api_client.py +++ b/api/api_client.py @@ -5,11 +5,11 @@ from shutil import move from kubernetes.client.configuration import Configuration from kubernetes.client.api_client import ApiClient -from base_client_api import BaseApiClient +from .base_client_api import BaseApiClient # TODO: Should be removed after the bug will be solved: # https://github.com/kubernetes-client/python/issues/577 -from api_client_temp import ApiClientTemp +from .api_client_temp import ApiClientTemp # The following variables have been commented as it resulted a bug when running `kubiscan -h` # Exception ignored in: g`kf}3xqq=D$iAOaaM0yz#qT+9L_QW%06G#UL?G8BP?5yUS;{fzwFRQq)%)HE!_;|g7%3B;Zx%nxjIjMFa Lql%e;1PcQIad;pF literal 0 HcmV?d00001 diff --git a/engine/__pycache__/container.cpython-310.pyc b/engine/__pycache__/container.cpython-310.pyc new file mode 100644 index 0000000000000000000000000000000000000000..7b41ea7666bc6d44071922257fc65f8bb9add743 GIT binary patch literal 625 zcmZvay-ve05XbF&HI$a2LP$J9mPTSm2&qU6NL{*Rv4ZVFps|acP!(mPkHAatNO)!C z0T2^+sagu+qWi^n_TN6Ato!{g0eky+nSN42-Z9uUAA)mmI{;h~K?GfaKYJMw-h?DR zhx{+wDvls6Nk#?9JP`;__$!+Ef`Te^dn2u?yin4NdAy^?u?Ic^w?jZf8^TEA0cqm{ zy(R$qO$ZE{2pBdUU?d3aOvg#b1u8G4JG9a~7F@ENb6u;7wb|qUvUZ+x>HbdHR>7>S zTs$|0Hbu2`VWsb-a($C8*xjOHZJ5L^uyQsvSh~Rum;ezXB18v)mwP1!JN|W&-s)1O zO6R3XFEp=9sVbXZ)z`&@=PH%z2D+2-O`C@ErHdIWR8cX8$JhfvM1Q_6eHv`LI@~Nx zqH$|UfO2dBW3J0ssYN}*agVWwI-jj)Ob<3~3*5mz=HPJnp^7V5x!lll3+e0Dxh0ORxfefxv;i<)T&Y*v_lfp7~76x(6G@d6azKqe}j{|k=Y z3e%qS?}mqZ zQfgc5S{(7vq}>vQZL*%;!CYwtEvK}Q5(^^h=P!OS*6)+>ngU(IzB|=Mt?#N z{R{jg_R1*|e*m~Jvu;FYwNGz$?6+@c>fx{t7(aeJTs<;?pOkEd#N-X`<~4!=!{$)3 zoG~~C!;QEHBP{zSa&DxF?jaW@zJR2+!mlA=UXH7_oKdnFcu^<%3WC&Tm)|R$f zH0itcvbdN{tJGH4MP<{wCwsehOGoC&WivofAX&E*3zZp}T?cXM{s?!okFbDScFPHI zi@*dj8JI*C1r{NT1B;93E4&2kILne=xWR3qkeBpcM;6?W;2FVl1e}Rl+x`Dg_X10P z=h`mxx~MOgp`E1BP&4|x&$`9`@}B(dcJMGuq?Z}VdH0XpB14&4m;>Y$s-Aw9f_ K5e96V57a-E#e`b` literal 0 HcmV?d00001 diff --git a/engine/__pycache__/privleged_containers.cpython-310.pyc b/engine/__pycache__/privleged_containers.cpython-310.pyc new file mode 100644 index 0000000000000000000000000000000000000000..92e724f0381ecded39f1c95fda7ee4412e1a754a GIT binary patch literal 1773 zcmZux&u`pB6rQnXz4petX$dK65vaMKx`M8d;KUD6waNjc07}(E1hO2Dli1z0of&UJ zz>6w@ggErZAJ88ACoxw}NL-OnB?RA_O`J^>OY`Qv&oke=dGF1uhQk5F_xoSJ?ftsK z*dJspe=dyAF!bjTl1V;cQ|>Shx#Ms`oQXRXI|6zrT`7L%J3VMU=|S`4Q2H`})(19_ zE6{w&w^=m$6MSqd;%1Q4d7Mu2tZY(F;OXaJrqdr_=(`XtPMa|`Y*@hyM{?;r<8$7E zjgaSV%U+z?k-N1C=H7AAqz92uL}h{pmC7E!f4|Pno0D8Oab3xHuTpU`nZ#u>&2*il znKo!-mrMnqef7!spqggmvP!0E{IE)AQ(Q!kznJaj+i6mcvvNN# zvvIBRqe-@($vCabCIO`Mz52wwd*+J1!j~A{Rb@urS?2_Wg7W3_5f^UwpWq5fV;AB^ zF{BIIxcN{TMD8a<=_N=L?Z)BJsHzV%ki}IQz(rE;A(z$>&bX z)Q2rAP!CTWHIyz8XPdR$qFmkR5LP(qttHE~E8Iey%@5hP;oNQArdN1JOnpFWIU}~i zJ0v5qwW;WqkD|U=QL{2mbUf3UG6RZoZo_PDA+6PM+#zwM(`1q~c~zP)P3mMfpX5!B zgu989MgY=gB$IMKQ`JnzWJkhW(^)!Gd2?d(mVMWlFvric9GW4l?hI*MY`YXz^#)uW zVb~%TT=0Pd8H&F>=pyj`f$V#)d>--v5QoOU!nOM@WR{Xdd9#^)9TC`PbH2zfMZ4gL z+>dh?sA%27DO|l_XK_0B^hV=Zq;Fr3qu#NWKNscWg$9PN=RM@p!^&RK$BTBJIqIWU zJP+F53(i@&4t$`#B8k**gXZ-|%6)v1nMZ_oYKQ@dDo zv-OLi`W|c};MeCt8x*U+R#8PKS8yI2esg%Y73!DP-ZA!D4$oZj>@c8SK-GczzJWMB zimusmH@&>crrHQyXQ}ZIDm?zYKGW)4n$Tip)*M&ri4DA32Z0%MiPpwT>N+c>>D85L zvPb?=8Q;3x>K*8`dE3Fzej*Zkt8h kh!(lAoYZ|UU(5e^TFKcY`;^*)rc+;I@XHzW2kvO?e;-Z4DgXcg literal 0 HcmV?d00001 diff --git a/engine/__pycache__/role.cpython-310.pyc b/engine/__pycache__/role.cpython-310.pyc new file mode 100644 index 0000000000000000000000000000000000000000..a8b533d5dc0d3db14285cb17a16a8e4dfdce62df GIT binary patch literal 900 zcmYk3&yLeD5XNoCY13?5Ei1I*#DNnzu+iSpiWNv4kb2lk9CESJ*zLN_pW-B-t-^_Y z19*V;$Rpt^CnTPL6Em(_)zy5l$L{CxZ>rHKBrtyc{W1T}2>FeR)8WD54MhC{L=s7J zQqY7JEMb(qCz46;kx1_wOFYS^B=Y~jITA73%W|#C2EJ7}*NY6(r{ie+9I}ceRFZ_r zo-?FqCjCc}a7n?mZ~0x7t4Y>BalkoLOx{A&FF`um5kWczN;?mfbsW^|d{Ex?Kz&KT zj!vSU;{a^zjbg3I5(7Z;6 z9zFa*x*6fquMTH23j2qF&*u;h!3|6rvZXshNyE0@j(i0mOTP7Y(6$vb&pNsV2+KZ1 zuw%=?6p(F0%rWbU~He*NWcqHNz7?F=~u?Qh-C`3_7Xfn))LVRk|e7|GHU}Y{*5dMka yMFs(5)Y$fbgmf6V+$7>QL^h^WjjA0Qht2JtxHwbygy8kQf*WjNji%@1!ut7Zkh#H+m>H@1Jb3j8I!b#%+Y2yRE zh5`L10J5eB3LkS>8y}0+!|FHRqfmW_ja4*(y?dA=R#XApJZNH$0}9GsPCAS zo0Y+w28%Zg5g>X9Ea-!n0W3ck@nc!YSeIF0;=3}h3#ls`&+DaH5dZ)H literal 0 HcmV?d00001 diff --git a/engine/__pycache__/rule.cpython-310.pyc b/engine/__pycache__/rule.cpython-310.pyc new file mode 100644 index 0000000000000000000000000000000000000000..cd3c8e00fa5484bb89b63046b55f7953c1832f46 GIT binary patch literal 475 zcmY*Wu};G<5WREKl18*c2fl#}G(Uh45=ab49q5+DN@EuyB@WmP5-1z}1b(8QgjZI+ zpc8kkio!|vd_Ld1d$ybLI0mw>pU>4f0(|qPZvkzt$=#IT4iqTdkbj5_lvqF#6qNsG ze~dFqYsgSRCRC_|3O1Mp3W+uF;X_;Lc@g%g91HRra>wKjJCM)`LhJ%UppSuTp)q}n`|MyHlk&Ys_VBxPyJwUpe=4GD%g#2DYle2>}j)Utk>Oyw*>N*_yE zH;QT~K9%yN&8x$S9Z~6COAjK>(Kqbh!LjHFCb-Yclf&Ap=8IUS_~`O5g%&_1gGoYfEFxdY1$~bZWEqk{CJGB@17@XC4rG)UY5S5Y5hV~;N wUYdNzRt(P8;-l;Ck{jYW`myQRFKiuQWB>pF literal 0 HcmV?d00001 diff --git a/engine/__pycache__/utils.cpython-310.pyc b/engine/__pycache__/utils.cpython-310.pyc new file mode 100644 index 0000000000000000000000000000000000000000..be0e90ddc3bedeacd5fefe773aa4653eb8c3bbbd GIT binary patch literal 17745 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 literal 0 HcmV?d00001 diff --git a/engine/capabilities/__pycache__/capabilities.cpython-310.pyc b/engine/capabilities/__pycache__/capabilities.cpython-310.pyc new file mode 100644 index 0000000000000000000000000000000000000000..8ad05a225e211c34bb849bb66c86025f863b2215 GIT binary patch literal 1580 zcmbu8S$Er15XbGwjknlw_I*!NaDkdVK$@nqq$H|k%SduV`XbznTYOGp_sGcuUw|(V z9`o7rr_7Da35@Q%ACNN1%VIMJ#8Dc+Xi32!D9KvDZ2#ylRaGW@S zlf)^UCeGk2aSrE+3%Gb3rF)ienba9vA)dv@h>v5Acn+T+K8a5e&tsnWG(JOo7M~+N zk1r5k#8u);_%iVoTq9ncbQwpxP2mSMXyqI*n@FQVjpHO zi-S0d)3}1GxP}`PWt?QMa&}?mVO6K=`9~#>>If?cvp!wNe^n6XzK#m2k21V`5~KV8 zi%ukG2EFRGwNsYVl1Px&6xFk?=(cTWx&*eeY}vY^d5*5w>bC4*H?~Q8bX$s0IJ#?S zvX_M@8m1|!{S-v@7Wwf%MU_N?MVx-As7gg9S!GS5Tz$1l7^*J&*v@op+fp=Daa@^ZFUg*wm5j2?u#U5~l^xm7Dq&Pq&$QH{%yxoVhS~E# z1}SIP@k*9frHcnU0c_B2!;(YY0Cn58ELRS9jf!h4l+#FeM@3OpSB`ddn9msN1fN*o z{o`F(=87g*raSlPj#ahEn(RinMoE`bEc-dab$310DsLKFa+=NFQn74la;CF3b;Z%; zEU){Ns%E&}j%~QQoMR^wI<(ofEmO|3#~s+@4lJ-rmrnP6k*y?KVGT>9{5^^@XPj`s#DR+T968F=MlD6`dqEgm-?%WHO2%!u@&@Vt$CyFw~pE!{Z7PxmG?0o7V>Yj4(j=4t9Ib$wbtIzLA`m{&KHla zHJrU#Ghc7sXf*42I;VE6vEMjs)Z2d(=Wo6lBrY7Z@Myn&k^fxn1QDVl3cm}0-$W1m zDg^u@df{gggNGsxKZykVD3b7lNWu4_555y=_*P`#8_^G6i!3}41Mrm?6!*mt+!Moa zSB$_NF$!ObG5A7^gA^0+xtN5{#1wogrr{GY10Rc7xGm=3BQXyjiUs&UEW-O@NxTQk c5amxIfOFyM-x+%VL;pW#xDP{rou8I}0CGB=VE_OC literal 0 HcmV?d00001 diff --git a/misc/__pycache__/__init__.cpython-310.pyc b/misc/__pycache__/__init__.cpython-310.pyc new file mode 100644 index 0000000000000000000000000000000000000000..7cb5e1ed058d6bf81a201ca401ef413533206856 GIT binary patch literal 140 zcmd1j<>g`kf}3xqq=D$iAOaaM0yz#qT+9L_QW%06G#UL?G8BP?5yUTj{fzwFRQS|$pLyOdg~8Jj=lG9^aqsJo(vQPdhMm1T}m?RlH7TJ+?nAHqt#Ud!S&l8KaKw? zAoM#|@)y|9=dj{mfDmLMB3TlVEtx2mLR3p71*@PVQY0&WF<7xy0?pDSL|2GL^h?>& zJ!BbOL=2+6K}4harDBz6iIf0Q1i1`yc`mPlygHZHKwg{6>$FS_vi=a!Rp1-I*MQ#w zz7G60aE)$Izq^UMuhI*Wa7mb z9>;&_T*RPK96JFuYWOpJm|XY}Qp4kj;V@!><5!GE9XuoYDuEaH(Uk3Au<(FW=ABIv ze8wmZD~4GMAg<}S&(Byi4aqXvtnuvxzz1)|FpN>>*$B4=y}{8?Zw=ZVT^J5WC%sOl zH@|2-?G6V={dPXgz_`g@p<{kEYJ&G8OvhvDCVHmlLqr@9vj)&1C3E1e;LXU-44HcE zU!rya)#cUAadp9uLPDAEg;dY`72j~g){ph8R8x4W$(=#XWzM;E%rZ4>q5a(t? z6gj2yEzSQx>-t`1Z~BXf1=utJ_~n$H`v7h1={f{vvB34EXAv&;+5<@I!daBJe-m`= zTfoeHfE-V}WRc&&O-#bl1fp#@H9|P1 zB$+~mX=%XVBT&-z+$2?o-R5iqw4LlM?%-2skIP~C3#K6(=`9c_f^kML&M?$(5R9|} zBcn1ET&|Quahd-MTCidcB+^^-8htInl3^+DI8dJ58`5OT!dRSohP@C^=qrBc11Fhn ze)#RDwfeK~@^o8Gif2JP#?&AGj2Qn*{avX}qJUPz$O%}r9l6th zhDls~Iz9CcT_>ytUhG!0;fyQi7pVbz+u6%M=6UnVx8&Ix^r>>~>O%^eZS$_$c52vm z5Rs|R<+5$Rm^yyuVP!yzJaVMOZM<0@!HT({p|W)K4+vL(a`G!DKLANpsBTx#x}Xg~ z&Hr_oCn>tDf$$pod>8S~_8I>KVryuNl-x)n)gJmza7vs<`w%87)eyT2GDIuS=|zA0 zcDiEQByyoJW!Pz_TJK5s@rX;slTNQUI8IB#GFJ-6kDrV>X$ku2!(YXV!kF>gm;xj% zwBR4e(jxCRi$x1k72X9E0)+~JLWMxhv=~P$;hz@9C5Us0^N-4S3nBZg>5q7k@h3o3 eS>046am%v2p%}6%Z7AhpS>m@QYZAXdkpBgm`;YVh literal 0 HcmV?d00001 diff --git a/misc/__pycache__/constants.cpython-310.pyc b/misc/__pycache__/constants.cpython-310.pyc new file mode 100644 index 0000000000000000000000000000000000000000..a4fe03f02fa3c2509997f3a5f17ed39dba666b40 GIT binary patch literal 419 zcmY*VOHRWu5KY>oO^QnStk|>Z0>S|hB2A+xYDucNLBg9V*ajjRyRs9catz0oI^~b*SSOY~eO+V*?u4 zgeLC54(`G(wtzOYUk5xF&+9Xq6-2BuM5K|hC6RmHvJxfX8&cyar#PpN@@UKX(~MLQ zF3o_mY9;pp;V(HNE<&uLWi+(pAPK?bZV|aRKA5?lFYP3r`in^zjpd;?O~Kqx7F$wN zj+7fl!KUkEr)$TuQ=q1sUA-WQ)7hpzR_bl&`L5^1X*6%dca0yY(=_mX;XJW|IFw}t xcg74=1)-&ICe?ioP)4017sx@3iZWCB`D!h#%Yxx*Nv`Tci+Yox8T$XT^j~Fgdba=o literal 0 HcmV?d00001 From 80f96ba52c85f635fe2e3ce1c4188a22d2ffc90f Mon Sep 17 00:00:00 2001 From: regevnoam1 Date: Thu, 29 Aug 2024 16:21:27 +0300 Subject: [PATCH 3/4] important module and global config for api_client --- KubiScan.py | 15 ++++++++++++++- api/__pycache__/api_client.cpython-310.pyc | Bin 4558 -> 4558 bytes .../api_client_temp.cpython-310.pyc | Bin 19377 -> 19377 bytes .../client_factory.cpython-310.pyc | Bin 0 -> 627 bytes api/__pycache__/config.cpython-310.pyc | Bin 0 -> 543 bytes .../static_api_client.cpython-310.pyc | Bin 0 -> 2322 bytes api/api_client_temp.py | 2 +- api/client_factory.py | 8 ++++---- api/config.py | 10 ++++++++++ 9 files changed, 29 insertions(+), 6 deletions(-) create mode 100644 api/__pycache__/client_factory.cpython-310.pyc create mode 100644 api/__pycache__/config.cpython-310.pyc create mode 100644 api/__pycache__/static_api_client.cpython-310.pyc create mode 100644 api/config.py diff --git a/KubiScan.py b/KubiScan.py index 9642e68..8adb652 100755 --- a/KubiScan.py +++ b/KubiScan.py @@ -12,6 +12,8 @@ from misc import constants import datetime from api.api_client import api_init, running_in_container +from api.client_factory import ApiClientFactory +from api.config import set_api_client json_filename = "" output_file = "" @@ -624,6 +626,8 @@ def main(): - Prettytable pip3 install PTable """) + opt.add_argument('-s', '--static', action='store_true', help='Use static API client with predefined data', required=False) + opt.add_argument('-f', '--file', type=str, help='File path for static API client', required='--static' in sys.argv) opt.add_argument('-rr', '--risky-roles', action='store_true', help='Get all risky Roles (can be used with -r to view rules)', required=False) opt.add_argument('-rcr', '--risky-clusterroles', action='store_true', help='Get all risky ClusterRoles (can be used with -r to view rules)',required=False) @@ -740,7 +744,16 @@ def main(): exit() - api_init(kube_config_file=args.kube_config, host=args.host, token_filename=args.token_filename, cert_filename=args.cert_filename, context=args.context) + if args.static: + if not args.file: + print("Error: File path must be provided with --file when using --static") + exit(1) + api_client = ApiClientFactory.get_client(use_static=True, input_file=args.file) + else: + api_client = ApiClientFactory.get_client(use_static=False) + api_init(kube_config_file=args.kube_config, host=args.host, token_filename=args.token_filename, cert_filename=args.cert_filename, context=args.context) + set_api_client(api_client) + if args.cve: print_cve(args.cert_filename, args.client_certificate, args.client_key, args.host) diff --git a/api/__pycache__/api_client.cpython-310.pyc b/api/__pycache__/api_client.cpython-310.pyc index 97e4544fa9a2f8c64f111d7f90e752d853bf2f45..aeb3949abae779e8e1fc7a5942d5596811813949 100644 GIT binary patch delta 19 ZcmX@7d`_7wpO=@50SIb}H*y^j1OPLx1pfd4 delta 19 ZcmX@7d`_7wpO=@50SF2UH*y^j1OPK)1o8j? diff --git a/api/__pycache__/api_client_temp.cpython-310.pyc b/api/__pycache__/api_client_temp.cpython-310.pyc index 4deb8f8a5f46e8a2cfa9b4840923934e60c2acf2..671dd4ba7644837d9117f710585707a1fb527f0d 100644 GIT binary patch delta 24 ecmdluopIxIM&5j0UM>b8NH4ySHg_ZM5^n%m{RfQz delta 24 ecmdluopIxIM&5j0UM>b8$Sb^%Hg6;E5^n%nF$a?X diff --git a/api/__pycache__/client_factory.cpython-310.pyc b/api/__pycache__/client_factory.cpython-310.pyc new file mode 100644 index 0000000000000000000000000000000000000000..73b3af4fbf5811f5aedaa9e2336b1083e74d05ca GIT binary patch literal 627 zcmZ8fJx{|x47D$5DNzvx!2-V^3}j(M2m~qvQU|(aIfdL6BITo8E(3_Ito#rL{tI(f zCjJ5w_63!KB|CR7@$-9Ds*Q~RDBha)*{%Ti;LB=wbUCH052z?mm_vavBA-Pr3NQ8$ zE~sf5NBRDP_G! zMMI1VVxc|Nb8~QkG)3@~cC;iJC#kK>!+4UCk7e+gJ)Be4J5-*)tXX(Mg)cY-iwhtg zF(Fw&R?ZtMXIZX8VYtz7XDHgBskN+~57Q&)l{o0}brjuIg^tQ9DNJ-xrA*%Vv z$);&iM#(&jQs-LEI(3Khhc>v?R(3Fx)qN_y2(T|6_y4;&{QWi*<4M?S2U3lvyW!r+1|c7~?H-It2p|I6{Zg|3}J}d;v1V4k>~&b literal 0 HcmV?d00001 diff --git a/api/__pycache__/config.cpython-310.pyc b/api/__pycache__/config.cpython-310.pyc new file mode 100644 index 0000000000000000000000000000000000000000..3198a78ee9e49e9d0fb8cfe7e159c38c0665131c GIT binary patch literal 543 zcmZutu};G<5Vf5)4I!=i4Q!DR`2mC~6^Q{UOSdjoh|>_%B*jh!BsTgZjQJbpto#KN z?;MpC&Yh48=>Q+yBq5NoD{a`tS^)kuwT z3gxa?I7xv!F^*~hH*OCo|q|Bu3eJRUYwOh&qDPP-U zd*~#)LZ;gytD25!7k}FDa~(a`WfoO+QtIfwPTLX)6Fs(1#VSpz2+yL_GTrRnG>M|o z%m~3_9=A6sT_22c0bjxmE$N*#OhWyNbv*8beWAx_guHhLMMph)f<`|xStE~vNv)wj zeXcKYoZXe>BV@x~up#Xs)fW{0h8?njAwOXtoMmvi4v@#8Gw38bdvo>|?{?Vs9Sv=W KXC^!+aDD-WRAa;d literal 0 HcmV?d00001 diff --git a/api/__pycache__/static_api_client.cpython-310.pyc b/api/__pycache__/static_api_client.cpython-310.pyc new file mode 100644 index 0000000000000000000000000000000000000000..d1f46df4fc3d61088b6ba812a00164db2c40ff7e GIT binary patch literal 2322 zcmaJ@Uysx_5VxH_o4wmR4oWGsAO(s*E73hFq*9?1q8w1ENDJz=y>cpwLhQW@WRslj z?XjzDMRiE!tskJOv^?@{`s~*}@fE5Tb;h~>AQE{p6OTP(&(FW4n46m+a9!N^tN#UP zf1|Pga>2L(O??T16HYU-T0iM3wKiL2oN*^}2JWg$$=8It+xB*RF0wD;-ff$st=VaC44tL=RF}M#;k2iP# zPoFm-&Wt(I)3HvIy~%O1oeOmb+A=itBZ!JjNkw1MibT++5X9<^)tS{@t2V#n`zF|e9au&*R%7^?}UPZaT#eTmu@hX?Q;C)T|(?$i=Um*;;!hJQ#S~)xos+ZjY4% zBQVD2M6GN>JiH%3LysQJsb@w-{T4E6RP+z>C&RoR?DWr$UQjaeDH+d$M^O1Y9xK*o z;{W2~Ot3D{Ht8m5H@jo6^H>$RaZ!RXiU*l-QI40t&(*Lj3#kPU5pAJ(szt8SBJYIv z@@y1dwC)$fIOm|_44_L9?hfl1D#r_VaBN=auwM*wek~jyzb$1ULn&g!ot^ty*lrnC zDC3r~UN?a%vs6Po<7LIBkj5)znrq`0rO4&SP*&4aabMUoAy1+0;_)y?F<7_IcQBL< zW16?0CZg1kcDo^ugRA@y{b^+8aaGaos?4ml`-L3D5DE=Lg++5MKElDXAQqsh4l3+C zby+}N%2%=oEnUlD;4S zcQ|A}0B|>eLV^B(Bc1@mbb;#~;3u$I=dy8e@>f(Mt?%uwX)djaTs$r1^~)FnW3gu; z8DBoUa|f8Nvy>G{oT=-b-QnY<8f2v`fC?4j3@Ne`F0YH^NvPKWrdkdYJp{lOef#2@ z-o36xW2f!Q7K8>~gOR{ec_IK{snW)`aN(x;-KZ2cgbcy6?bgu3<(TFk1$#hha#Sx6 zS0pWl=0LjuO(9bKwP-P5zb`_iz7Tl-f&kiT^-jUsQ16drWiXt-;MT3G5 z;iN^T6-67vIIDZ)NlXXNlf(^?_*YS9cQ8+hD8OYY+s@$gvRcTH}Br8>LoxPyBU;FEKl{STl@QfvSK literal 0 HcmV?d00001 diff --git a/api/api_client_temp.py b/api/api_client_temp.py index 0df79d6..735971d 100644 --- a/api/api_client_temp.py +++ b/api/api_client_temp.py @@ -690,4 +690,4 @@ def list_cluster_role(self): cluster_role = V1ClusterRole(kind='ClusterRole', metadata=metadata, rules=rules) cluster_roles.append(cluster_role) - return V1ClusterRoleList(items=cluster_roles) + return V1ClusterRoleList(items=cluster_roles) \ No newline at end of file diff --git a/api/client_factory.py b/api/client_factory.py index 9b9d500..042aaff 100644 --- a/api/client_factory.py +++ b/api/client_factory.py @@ -1,5 +1,5 @@ -from static_api_client import StaticApiClient -from api_client import RegularApiClient +from .static_api_client import StaticApiClient +from .api_client import RegularApiClient class ApiClientFactory: @staticmethod @@ -11,5 +11,5 @@ def get_client(use_static=False, input_file=None): #api_client = ApiClientFactory.get_client(use_static=True, input_file="/home/noamr/Documents/KubiScan/combined.json") -api_client = ApiClientFactory.get_client() -print(api_client.list_roles_for_all_namespaces()) \ No newline at end of file +#api_client = ApiClientFactory.get_client() +#print(api_client.list_roles_for_all_namespaces()) \ No newline at end of file diff --git a/api/config.py b/api/config.py new file mode 100644 index 0000000..981335a --- /dev/null +++ b/api/config.py @@ -0,0 +1,10 @@ +# config.py + +class Config: + api_client = None + +def set_api_client(client): + Config.api_client = client + +def get_api_client(): + return Config.api_client From 59d456703a1ef89851af7473840bbba176983049 Mon Sep 17 00:00:00 2001 From: regevnoam1 Date: Thu, 29 Aug 2024 16:28:03 +0300 Subject: [PATCH 4/4] utils update to be generic --- engine/__pycache__/utils.cpython-310.pyc | Bin 17745 -> 17825 bytes engine/utils.py | 6 ++++-- 2 files changed, 4 insertions(+), 2 deletions(-) diff --git a/engine/__pycache__/utils.cpython-310.pyc b/engine/__pycache__/utils.cpython-310.pyc index be0e90ddc3bedeacd5fefe773aa4653eb8c3bbbd..ab80a275df93f734f834b9f187e430fdb0f09acd 100644 GIT binary patch delta 5488 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 diff --git a/engine/utils.py b/engine/utils.py index 475a36c..c2154c9 100755 --- a/engine/utils.py +++ b/engine/utils.py @@ -14,7 +14,7 @@ from kubernetes.client.rest import ApiException import urllib3 urllib3.disable_warnings(urllib3.exceptions.InsecureRequestWarning) - +from api.config import get_api_client # region - Roles and ClusteRoles @@ -158,8 +158,10 @@ def find_risky_roles(roles, kind): def get_roles_by_kind(kind): all_roles = [] + test_api_client = get_api_client() if kind == ROLE_KIND: - all_roles = api_client.RbacAuthorizationV1Api.list_role_for_all_namespaces() + #all_roles = api_client.RbacAuthorizationV1Api.list_role_for_all_namespaces() + all_roles = test_api_client.list_roles_for_all_namespaces() else: # all_roles = api_client.RbacAuthorizationV1Api.list_cluster_role() all_roles = api_client.api_temp.list_cluster_role()