2019年08月07日

S-nail v14.9.14 がビルドできない

メールクライアント S-nailv14.9.14 が 7/27(土) 付でリリースされたのですが、CONFIG=NULLI でビルドできないので、以下のパッチを当てて対応。これで本当に良いのかは不明なので、使用にあたっては自己責任でお願いします。
diff -ru ../s-nail-14.9.14.ORG/include/mx/cred-auth.h ./include/mx/cred-auth.h
--- ../s-nail-14.9.14.ORG/include/mx/cred-auth.h 2019-07-28 06:16:38.000000000 +0900
+++ ./include/mx/cred-auth.h 2019-08-05 10:18:45.708201373 +0900
@@ -20,8 +20,6 @@
#define mx_CRED_AUTH_H

#include <mx/nail.h>
-#ifdef mx_HAVE_NET
-
#include <mx/url.h>

#define mx_HEADER
@@ -56,6 +54,5 @@
enum cproto cproto, char const *addr);

#include <su/code-ou.h>
-#endif /* mx_HAVE_NET */
#endif /* mx_CRED_AUTH_H */
/* s-it-mode */
diff -ru ../s-nail-14.9.14.ORG/include/mx/termcap.h ./include/mx/termcap.h
--- ../s-nail-14.9.14.ORG/include/mx/termcap.h 2019-07-28 06:16:38.000000000 +0900
+++ ./include/mx/termcap.h 2019-08-05 10:38:45.258437684 +0900
@@ -221,6 +221,6 @@
# define mx_TERMCAP_SUSPEND(CPL) do{;}while(0);
#endif

-#include <su/code-ou.h>
+#include <su/code.h>
#endif /* mx_TERMCAP_H */
/* s-it-mode */
diff -ru ../s-nail-14.9.14.ORG/include/mx/url.h ./include/mx/url.h
--- ../s-nail-14.9.14.ORG/include/mx/url.h 2019-07-28 06:16:38.000000000 +0900
+++ ./include/mx/url.h 2019-08-05 10:17:37.118187860 +0900
@@ -24,7 +24,7 @@
#define mx_HEADER
#include <su/code-in.h>

-#ifdef mx_HAVE_NET /* XXX only for now */
+/* XXX only for now */
enum mx_url_flags{
mx_URL_TLS_REQUIRED = 1u<<0, /* Whether protocol always uses SSL/TLS.. */
mx_URL_TLS_OPTIONAL = 1u<<1, /* ..may later upgrade to SSL/TLS */
@@ -62,7 +62,6 @@
char const *url_p_eu_h_p; /* .url_proto://.url_eu_h_p */
char const *url_p_eu_h_p_p; /* .url_proto://.url_eu_h_p[/.url_path] */
};
-#endif /* mx_HAVE_NET */

/* URL en- and decoding according to (enough of) RFC 3986 (RFC 1738).
* These return a newly autorec_alloc()ated result, or NIL on length excess */
posted by yamaga at 08:35| Comment(0) | プログラミング | このブログの読者になる | 更新情報をチェックする

2019年08月01日

「海の向こうの“セキュリティ”」第155回公開

今月分が公開されました。

母親の旧姓、安易に他人に教えてない? 個人情報を教えてしまうハードルはどれぐらい?
https://internet.watch.impress.co.jp/docs/column/security/1199342.html
posted by yamaga at 06:06| Comment(0) | 日記 | このブログの読者になる | 更新情報をチェックする

2019年07月04日

「海の向こうの“セキュリティ”」第154回公開

今月分が公開されました。

リスク低減のために脆弱性スキャン実施→対処できているのは深刻度の高いものだけ……という組織が半数
https://internet.watch.impress.co.jp/docs/column/security/1193989.html
posted by yamaga at 06:52| Comment(0) | 日記 | このブログの読者になる | 更新情報をチェックする

2019年06月05日

「海の向こうの“セキュリティ”」第153回公開

今月分が公開されました。

Adobe製品の脆弱性2891件の傾向と悪用度合いまとめ
米RiskSense、過去20年以上にわたるAdobe製品の脆弱性を分析 ほか
https://internet.watch.impress.co.jp/docs/column/security/1188330.html
posted by yamaga at 06:09| Comment(0) | 日記 | このブログの読者になる | 更新情報をチェックする

2019年05月09日

「海の向こうの“セキュリティ”」第152回公開

今月分が公開されました。

リモートワークのセキュリティ改善に向けた3つのステップとは?
情報共有の必要性に対する理解はまだ不十分/リモートワークのリスクに対する意識と対策の実態
https://internet.watch.impress.co.jp/docs/column/security/1183359.html
posted by yamaga at 06:08| Comment(0) | 日記 | このブログの読者になる | 更新情報をチェックする

2019年04月26日

Libevent 2.1.8 で LibreSSL を使うためのパッチ

Libevent 2.1.8LibreSSL を使うには以下のパッチが必要です。
--- ./openssl-compat.h.ORG	2016-12-07 07:13:44.000000000 +0900
+++ ./openssl-compat.h 2018-04-09 23:53:59.600157572 +0900
@@ -30,6 +30,10 @@

#define TLS_method SSLv23_method

+#elif defined(LIBRESSL_VERSION_NUMBER)
+
+#define BIO_get_init(b) (b)->init
+
#endif /* OPENSSL_VERSION_NUMBER < 0x10100000L */

#endif /* OPENSSL_COMPAT_H */
ちなみに古い(2.7系以前?)を使う場合は以下のファイル
openssl-compat.h
sample/https-client.c
sample/le-proxy.c
sample/openssl_hostname_validation.c
test/regress_ssl.c
に対して次のような修正が必要です。
元 #if OPENSSL_VERSION_NUMBER < 0x10100000L
新 #if (OPENSSL_VERSION_NUMBER < 0x10100000L) || defined(LIBRESSL_VERSION_NUMBER)
posted by yamaga at 10:10| Comment(0) | OpenBSD | このブログの読者になる | 更新情報をチェックする

Netatalk 3.1.12 で LibreSSL 2.7系以降を使うためのパッチ

Netatalk 3.1.12 は LibreSSL に対応しているのですが、LibreSSL 2.7系以降に対しては以下のパッチが必要です。
--- ./etc/uams/openssl_compat.h.ORG     2018-11-29 18:30:45.000000000 +0900
+++ ./etc/uams/openssl_compat.h 2019-04-26 07:40:55.857191351 +0900
@@ -11,7 +11,7 @@
#ifndef OPENSSL_COMPAT_H
#define OPENSSL_COMPAT_H

-#if OPENSSL_VERSION_NUMBER < 0x10100000L || defined(LIBRESSL_VERSION_NUMBER)
+#if OPENSSL_VERSION_NUMBER < 0x10100000L || (defined(LIBRESSL_VERSION_NUMBER) && LIBRESSL_VERSION_NUMBER < 0x20700000L)
inline static int DH_set0_pqg(DH *dh, BIGNUM *p, BIGNUM *q, BIGNUM *g)
{
/* If the fields p and g in d are NULL, the corresponding input
なお、LibreSSL とは全く関係ないですが、Python3 を使う場合はこの↓パッチをあてたほうが良いです。
--- ./contrib/shell_utils/afpstats.ORG  2014-12-11 20:26:32.000000000 +0900
+++ ./contrib/shell_utils/afpstats 2018-12-25 19:34:54.635154719 +0900
@@ -23,7 +23,7 @@

reply = iface.GetUsers()
for name in reply:
- print name
+ print(name)

if __name__ == '__main__':
main()
posted by yamaga at 07:57| Comment(3) | OpenBSD | このブログの読者になる | 更新情報をチェックする

2019年04月24日

MIT Kerberos5 1.17 で LibreSSL 2.9.1 を使うためのパッチ

LibreSSL 2.9系の最初の安定版となる 2.9.1 がリリースされたのですが、これがちょっと厄介。OpenSSL 1.1系との互換性を向上させたらしいのですが、相変わらず中途半端なので、これまでの
元 #if OPENSSL_VERSION_NUMBER < 0x10100000L
新 #if (OPENSSL_VERSION_NUMBER < 0x10100000L) || defined(LIBRESSL_VERSION_NUMBER)

元 #if OPENSSL_VERSION_NUMBER >= 0x10100000L
新 #if (OPENSSL_VERSION_NUMBER >= 0x10100000L) && !defined(LIBRESSL_VERSION_NUMBER)
と言った書き換えだけでは不充分なものもあり、例えば MIT Kerberos ではダメ。

ということで、MIT Kerberos5 1.17 に対する LibreSSL 2.9.1 を使うためのパッチを作ってみました。
diff -ruN ../krb5-1.17.ORG/src/plugins/preauth/pkinit/asn1t_add.h ./src/plugins/preauth/pkinit/asn1t_add.h
--- ../krb5-1.17.ORG/src/plugins/preauth/pkinit/asn1t_add.h 1970-01-01 09:00:00.000000000 +0900
+++ ./src/plugins/preauth/pkinit/asn1t_add.h 2019-04-24 20:09:19.848554267 +0900
@@ -0,0 +1,23 @@
+#ifndef HEADER_ASN1T_ADD_H
+#define HEADER_ASN1T_ADD_H
+#include <openssl/asn1t.h>
+
+# define static_ASN1_ITEM_start(itname) \
+ static const ASN1_ITEM itname##_it = {
+
+# define ASN1_ITEM_end(itname) \
+ };
+
+# define static_ASN1_SEQUENCE_END_name(stname, tname) \
+ ;\
+ static_ASN1_ITEM_start(tname) \
+ ASN1_ITYPE_SEQUENCE,\
+ V_ASN1_SEQUENCE,\
+ tname##_seq_tt,\
+ sizeof(tname##_seq_tt) / sizeof(ASN1_TEMPLATE),\
+ NULL,\
+ sizeof(stname),\
+ #stname \
+ ASN1_ITEM_end(tname)
+
+#endif /* HEADER_ASN1T_ADD_H */
diff -ruN ../krb5-1.17.ORG/src/plugins/preauth/pkinit/pkinit_crypto_openssl.c ./src/plugins/preauth/pkinit/pkinit_crypto_openssl.c
--- ../krb5-1.17.ORG/src/plugins/preauth/pkinit/pkinit_crypto_openssl.c 2019-01-09 01:02:37.000000000 +0900
+++ ./src/plugins/preauth/pkinit/pkinit_crypto_openssl.c 2019-04-24 20:14:54.578620209 +0900
@@ -189,7 +189,7 @@
(*_x509_pp) = PKCS7_cert_from_signer_info(_p7,_si)
#endif

-#if OPENSSL_VERSION_NUMBER < 0x10100000L
+#if (OPENSSL_VERSION_NUMBER < 0x10100000L) || defined(LIBRESSL_VERSION_NUMBER)

/* 1.1 standardizes constructor and destructor names, renaming
* EVP_MD_CTX_{create,destroy} and deprecating ASN1_STRING_data. */
@@ -3053,7 +3053,7 @@
return retval;
}

-#if OPENSSL_VERSION_NUMBER >= 0x10100000L
+#if ((OPENSSL_VERSION_NUMBER >= 0x10100000L) && !defined(LIBRESSL_VERSION_NUMBER)) || (LIBRESSL_VERSION_NUMBER >= 0x20900000L)

/*
* We need to decode DomainParameters from RFC 3279 section 2.3.3. We would
diff -ruN ../krb5-1.17.ORG/src/plugins/preauth/pkinit/pkinit_crypto_openssl.h ./src/plugins/preauth/pkinit/pkinit_crypto_openssl.h
--- ../krb5-1.17.ORG/src/plugins/preauth/pkinit/pkinit_crypto_openssl.h 2019-01-09 01:02:37.000000000 +0900
+++ ./src/plugins/preauth/pkinit/pkinit_crypto_openssl.h 2019-04-24 20:15:42.128629575 +0900
@@ -46,8 +46,11 @@
#include <openssl/asn1.h>
#include <openssl/pem.h>

-#if OPENSSL_VERSION_NUMBER >= 0x10100000L
+#if ((OPENSSL_VERSION_NUMBER >= 0x10100000L) && !defined(LIBRESSL_VERSION_NUMBER)) || (LIBRESSL_VERSION_NUMBER >= 0x20900000L)
#include <openssl/asn1t.h>
+# ifdef LIBRESSL_VERSION_NUMBER
+# include "asn1t_add.h"
+# endif
#else
#include <openssl/asn1_mac.h>
#endif
LibreSSL とは全く関係ないですが、他にもこの↓パッチもあてたほうが良い場合もあるかも。
diff -ruN ../krb5-1.17.ORG/src/Makefile.in ./src/Makefile.in
--- ../krb5-1.17.ORG/src/Makefile.in 2019-01-09 01:02:37.000000000 +0900
+++ ./src/Makefile.in 2019-04-24 16:45:55.157416835 +0900
@@ -1,3 +1,4 @@
+localstatedir=@localstatedir@
datadir=@datadir@

mydir=.
posted by yamaga at 23:25| Comment(0) | OpenBSD | このブログの読者になる | 更新情報をチェックする

2019年04月04日

「海の向こうの“セキュリティ”」第151回公開

今月分が公開されました。

サイバー恐喝攻撃のリスクを下げるためのアドバイスとは
SNSを使った米国世論の操作:中国とロシアの違い/ランサムウェアやセクストーションなどの恐喝攻撃の実態
https://internet.watch.impress.co.jp/docs/column/security/1178153.html
posted by yamaga at 06:56| Comment(0) | 日記 | このブログの読者になる | 更新情報をチェックする

2019年03月22日

古いMacBookで無線LANを使う

10年ほど前の古い MacBook に Ubuntu 16.04 LTS をインストールしたものの、無線LANが切れたり繋がったりを繰り返して使い物にならない。で、調べてみたら、この方法↓で OK。

https://www.linuxquestions.org/questions/linux-networking-3/ubuntu-16-04-mac-mini-2009-broadcom-driver-selected-and-wlan-enabled-but-home-network-does-not-show-4175600634/

ただし、/etc/modprobe.d/blacklist-bcm43.conf のように blacklist b43 と記載されているファイルが /etc/modprobe.d/ に存在する場合はそのファイルを削除するか別のディレクトリに移動させておかないとダメ。もちろんファイル内の当該箇所をコメントアウトしても OK。ちなみに自分は /etc/modprobe.d/.disabled/ に移動させた。

また、/etc/modprobe.d/blacklist.confblacklist wl を直接書き足すのではなく、新規に /etc/modprobe.d/blacklist-wl.conf のようなファイルを作って、そこに記述した方が良いと思う。

なお、Ubuntu の仕様上の問題だけれど、/etc/modprobe.d/blacklist-bcm43.conf/etc/modprobe.d/blacklist-bcm43.conf.ORG のようにバックアップして、/etc/modprobe.d/blacklist-bcm43.conf の当該箇所をコメントアウトしてもダメ。/etc/modprobe.d/blacklist-bcm43.conf.ORG も起動時に読み込まれてしまうので、そこに blacklist b43 という記述が残っているため。
posted by yamaga at 11:07| Comment(0) | ubuntu | このブログの読者になる | 更新情報をチェックする

2019年03月07日

「海の向こうの“セキュリティ”」第150回公開

今月分が公開されました。

現実はそんなもの? IT従事者でもパスワードを使い回し、同僚と共有
欧米のITおよびITセキュリティ従事者のセキュリティ意識の実態 ほか
https://internet.watch.impress.co.jp/docs/column/security/1172731.html
posted by yamaga at 06:57| Comment(0) | 日記 | このブログの読者になる | 更新情報をチェックする

2019年02月07日

「海の向こうの“セキュリティ”」第149回公開

今月分が公開されました。

Appleは、どの国の当局にどれだけの情報を開示していたのか――「透明性レポート」を読む
Appleに対する情報開示請求/EUによるバグバウンティプログラム
https://internet.watch.impress.co.jp/docs/column/security/1168434.html
posted by yamaga at 06:40| Comment(0) | 日記 | このブログの読者になる | 更新情報をチェックする

2019年01月09日

「海の向こうの“セキュリティ”」第148回公開

今月分が公開されました。

「CVSS」とはそもそも何か? 脆弱性対応の優先順位付けではない!?
CVSSの改善に向けたCERT/CCからの提言/脆弱性開示の経済学 ほか
https://internet.watch.impress.co.jp/docs/column/security/1161142.html
posted by yamaga at 06:48| Comment(0) | 日記 | このブログの読者になる | 更新情報をチェックする

2018年12月26日

「Internet Week 2018」を通して振り返る今年のセキュリティ

いつもの連載とは別にこんな記事を書いてみました。

穏やかだった印象のある2018年だが、インシデントは日常的に起きている! 深刻な脆弱性も
「Internet Week 2018」を通して振り返る今年のセキュリティ
https://internet.watch.impress.co.jp/docs/event/1158991.html
posted by yamaga at 07:45| Comment(0) | 日記 | このブログの読者になる | 更新情報をチェックする

2018年12月21日

CSIRT小説「側線」第14話(最終話)後編

今週分が公開されました。これで一旦、終了です。

CSIRT小説「側線」【最終話】第14話:新生(後編)
http://www.itmedia.co.jp/enterprise/articles/1812/21/news005.html
posted by yamaga at 08:26| Comment(0) | 日記 | このブログの読者になる | 更新情報をチェックする

2018年12月14日

CSIRT小説「側線」第14話(最終話)前編

今週分が公開されました。

CSIRT小説「側線」【最終話】第14話:新生(前編)
http://www.itmedia.co.jp/enterprise/articles/1812/14/news009.html
posted by yamaga at 15:26| Comment(0) | 日記 | このブログの読者になる | 更新情報をチェックする

2018年12月07日

CSIRT小説「側線」第13話後編

今週分が公開されました。

CSIRT小説「側線」 第13話:包囲網(後編)
http://www.itmedia.co.jp/enterprise/articles/1812/07/news015.html
posted by yamaga at 12:19| Comment(0) | 日記 | このブログの読者になる | 更新情報をチェックする

2018年12月06日

「海の向こうの“セキュリティ”」第147回公開

今月分が公開されました。

フィッシング攻撃には曜日ごとに違いがある、攻撃者のFacebook離れも ほか
https://internet.watch.impress.co.jp/docs/column/security/1156896.html
posted by yamaga at 06:23| Comment(0) | 日記 | このブログの読者になる | 更新情報をチェックする

2018年11月30日

CSIRT小説「側線」第13話前編

今週分が公開されました。

CSIRT小説「側線」 第13話:包囲網(前編)
http://www.itmedia.co.jp/enterprise/articles/1811/30/news021.html
posted by yamaga at 07:36| Comment(0) | 日記 | このブログの読者になる | 更新情報をチェックする

2018年11月26日

OpenSMTPD の設定方法が大きく変更

2018年10月にリリースされた OpenSMTPD 6.4.0 以降では smtpd.conf の文法が大幅に変更されました。詳細は smtpd.conf(5) をご参照ください。smtpd.conf 以外は以前に紹介した方法のままで問題ありません。

典型的な例として、外部への配信に認証付きの SMTP サーバを経由する場合の smtpd.conf の内容を比較します。

[旧]
relayhost = "tls+auth://ラベル@リレーサーバ名:587"

table aliases file:/etc/mail/aliases
table secrets file:/etc/mail/secrets

listen on all

accept from any for local alias <aliases> deliver to mbox
accept for any relay via $relayhost auth <secrets>
[新]
relayhost = "smtp+tls://ラベル@リレーサーバ名:587"

table aliases file:/etc/mail/aliases
table secrets file:/etc/mail/secrets

listen on all

action "local" mbox alias <aliases>
action "relay" relay host $relayhost auth <secrets>

match from any for local action "local"
match for any action "relay"
ポイントは大きく以下の2点。
  • accept で始まる一文で記述されていたパターンマッチとアクションを別々に記述
  • リレーサーバに対するプロトコルとして tls+authsmtp+tls
from が省略された場合は以前と変わらず、from local を意味します。また、特定のアドレスブロック(例えば、192.168.0.0/24)から無条件でリレーを許可する場合、以前の設定方法では
mynetwork = "192.168.0.0/24"

accept from source $mynetwork for any relay via $relayhost auth <secrets>
のような設定を加えていましたが、新しい設定方法では
mynetwork = "192.168.0.0/24"

match from src $mynetwork for any action "relay"
を加えることになります。sourcesrc に変更されていることに注意が必要です。

因みに、STARTTLS ではなく、SMTPS を使う場合は以下のようにプロトコルとして smtps のみを設定します(以前は smtps+auth)。
relayhost = "smtps://ラベル@リレーサーバ名"

参考文献
posted by yamaga at 09:29| Comment(0) | OpenBSD | このブログの読者になる | 更新情報をチェックする