אחרי הנדסה לאחור של Typeless התגלו סיכוני פרטיות חמורים: זה גם מבהיר כמה נתונים קלט קולי טוב באמת זולל

【תזכורת/אזהרה】לאחר ניתוח לאחור (Reverse Engineering) של יישום קלט קולי „Typeless” התגלו סיכוני פרטיות חמורים למדי, ולכן אני משתף.

■ קודם כל השורה התחתונה

Typeless מצהירה „On-device history”“Zero data retention”, אך בפועל כל נתוני האודיו נשלחים לשרתים של AWS (ארה״ב, אוהיו) לעיבוד. מקומית אין כלל מודל לזיהוי דיבור.

אם זה היה הכול, זה היה פשוט „שירות STT בענן”. הבעיה היא שטווח הנתונים הלא-אודיו שהיא אוספת רחב מאוד.

■ אילו ניתוחים בוצעו

ב-macOS בוצע ניתוח בינארי, ניתוח תקשורת רשת, ניתוח DB מקומי, וכן ניתוח מחרוזות (strings) של ספריות Native עבור Typeless v0.9.3.

■ עובדות שאושרו

  1. עיבוד אודיו 100% בענן
    באפליקציה אין מודלי STT כמו Whisper. האודיו נדחס ל-Opus, ונשלח בזמן אמת דרך WebSocket(wss://api.typeless.com/ws/rt_voice_flow)לשרתי AWS us-east-2.

http://api.typeless.comhttp://prod-typeless-lb-565501648.us-east-2.elb.amazonaws.com

גם במדיניות הפרטיות הרשמית כתוב “processed in real time on our cloud servers”, כך שזה לא זיוף מוחלט, אך בשיווק הטענה “On-device” מוגבלת ל“היסטוריה נשמרת מקומית”, ומאוד קל שזה יטעה.

  1. איסוף נתונים רחב גם מעבר לאודיו
    באמצעות ניתוח מסד SQLite המקומי וספריות Native, אושר שנאספים הנתונים הבאים:

・ כתובת URL מלאה של אתרים שנצפים (גם Gmail, Google Docs וכו’ נרשמים)
・ שם האפליקציה שבפוקוס, וכותרת החלון
・ טקסט שעל המסך (דרך Accessibility API באיסוף רקורסיבי בפונקציה collectVisibleTexts)
・ קריאה/כתיבה ללוח (clipboard) (יכול לטפל ב-TransientType של מנהלי סיסמאות)
・ האזנה מערכתית לקלט מקלדת באמצעות CGEventTap
・ מידע על רכיבי DOM בדפדפן (תמיכה ב-Safari, Chrome, Edge, Firefox, Brave)
・ תוכן טקסט שהמשתמש ערך (TrackEditTextService → sendTrackResultToServer)

  1. שמירה מקומית של מידע אישי ב-DB בטקסט גלוי
    ב-typeless.db נשמרים בטקסט גלוי: תמלילי זיהוי הדיבור, כתובות URL שנצפו, ומידע על אפליקציות. למרות ההצהרה “Zero data retention”, מקומית הכול נשמר. גם קובצי האודיו (.ogg) לא נמחקים אלא נותרים.

  2. דרישות הרשאה מופרזות
    ככלי קלט קולי, מעבר למיקרופון הוא דורש גם הרשאות הקלטת מסך, מצלמה, Bluetooth, ונגישות (Accessibility), ובנוסף יש בו יכולת צילום מסך מובנית.

  3. שקיפות החברה כמעט אפסית
    ・ בתקנון ובמדיניות הפרטיות לא מצוין שם הישות המשפטית
    ・ המיקום מצוין רק כ“מחוז סן פרנסיסקו, קליפורניה” (תחום שיפוט בתקנון)
    ・ WHOIS מוסתר (GoDaddy + Cloudflare)
    ・ אין מידע על ביקורות אבטחה כגון SOC2, ISO27001 וכו’
    ・ אמצעי הקשר היחיד הוא hello@typeless.com

■ ראיות טכניות (ניתן לשחזור)

ניתן לאמת לבד באמצעות הפקודות הבאות:

# יעד תקשורת הרשת
nslookup http://api.typeless.com

# כתובת ה-API בתוך app.asar
strings /Applications/Typeless.app/Contents/Resources/app.asar | grep "http://api.typeless.com"

# פרוטוקול תקשורת WebSocket
strings /Applications/Typeless.app/Contents/Resources/app.asar | grep "rt_voice_flow"

# ספריית Native להאזנת מקלדת
strings /Applications/Typeless.app/Contents/Resources/lib/keyboard-helper/build/libKeyboardHelper.dylib | grep -i "key pressed"

# איסוף טקסט מהמסך
strings /Applications/Typeless.app/Contents/Resources/lib/context-helper/build/libContextHelper.dylib | grep -i "collectVisibleTexts"

# תוכן ה-DB המקומי
sqlite3 ~/Library/Application\ Support/Typeless/typeless.db ".schema history"

■ איפה הבעיה

CGEventTap (האזנת מקלדת) + Accessibility API (איסוף טקסט מהמסך) + גישה ללוח. השילוב של שלושתם מעניק טכנית יכולת שקולה ל-Keylogger (רושם מקשים).

ואת ההרשאות הללו אתה נותן לשירות שגורם המפעיל שלו אינו ברור.

כדי לשפר דיוק בקלט קולי, איסוף הקשר (אפליקציה נוכחית/מידע על שדה קלט) הוא עיצוב סביר. אבל כאשר הנתונים הללו נשלחים לענן, אמינות המפעיל ומערך האבטחה הופכים קריטיים. האם ניתן לסמוך על חברה שלא מפרסמת אפילו את שם הישות המשפטית שלה—שיקולך.

■ חלופות

קיימים כלי קלט קולי שרצים מקומית לחלוטין:

・ Whisper.cpp / MLX Whisper (קוד פתוח, הכול מקומי, חינם)
・ קלט קולי מובנה של macOS (ב-Apple Silicon העיבוד נעשה בצד המכשיר)
・ Superwhisper (מבוסס Whisper, מיועד ל-Mac, אך עדיין צריך לאמת בעצמך)

■ סיכום

・ זיהוי הדיבור של Typeless מעובד 100% בענן (אין מודל מקומי)
・ מעבר לאודיו, יש לה בסיס טכני לאיסוף טקסט מסך, URL, וקלט מקלדת
・ גורם מפעיל לא שקוף (לא פורסם שם הישות המשפטית והמיקום)
・ אין ראיות לביקורת אבטחה

מי שמשתמש—שיקול דעת לאחר הבנת הסיכון. לכל הפחות מומלץ להשתמש בכלים כגון Little Snitch כדי לנטר תקשורת רשת.

זה גם מזכיר למפתחים הרלוונטיים לאיזה כיוון כדאי להם להתאמץ.\n\nמי שמשתמש בהיסטוריית הלוח פשוט טוב יותר ממי שלא משתמש.