123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730731732733734735736737738739740741742743744745746747748749750751752753754755756757758759760761762763764765766767768769770771772773774775776777778779780781782783784785786787788789790791792793794795796797798799800801802803804805806807808809810811812813814815816817818819820821822823824825826827828829830831832833834835836837838839840841842843844845846847848849850851852853854855856857858859860861862863864865866867868869870871872873874875876877878879880881882883884885886887888889890891892893894895896897898899900901902903904905906907908909910911912913914915916917918919920921922923924925926927928929930931932933934935936937938939940941942943944945946947948949950951952953954955956957958959960961962963964965966967968969970971972973974975976977978979980981982983984985986987988989990991992993994995996997998999100010011002100310041005100610071008100910101011101210131014101510161017101810191020102110221023102410251026102710281029103010311032103310341035103610371038103910401041104210431044104510461047104810491050105110521053105410551056105710581059106010611062106310641065106610671068106910701071107210731074107510761077107810791080108110821083108410851086108710881089109010911092109310941095109610971098109911001101110211031104110511061107110811091110111111121113111411151116111711181119112011211122112311241125112611271128112911301131113211331134113511361137113811391140114111421143114411451146114711481149115011511152115311541155115611571158115911601161116211631164116511661167116811691170117111721173117411751176117711781179118011811182118311841185118611871188118911901191119211931194119511961197119811991200120112021203120412051206120712081209121012111212121312141215121612171218121912201221122212231224122512261227122812291230123112321233123412351236123712381239124012411242124312441245124612471248124912501251125212531254125512561257125812591260126112621263126412651266126712681269127012711272127312741275127612771278127912801281128212831284128512861287128812891290129112921293129412951296129712981299130013011302130313041305130613071308130913101311131213131314131513161317131813191320132113221323132413251326132713281329133013311332133313341335133613371338133913401341134213431344134513461347134813491350135113521353135413551356135713581359136013611362136313641365136613671368136913701371137213731374137513761377137813791380138113821383138413851386138713881389139013911392139313941395139613971398139914001401140214031404140514061407140814091410141114121413141414151416141714181419142014211422142314241425142614271428142914301431143214331434143514361437143814391440144114421443144414451446144714481449145014511452145314541455145614571458145914601461146214631464146514661467146814691470147114721473147414751476147714781479148014811482148314841485148614871488148914901491149214931494149514961497149814991500150115021503150415051506150715081509151015111512151315141515151615171518151915201521152215231524152515261527152815291530153115321533153415351536153715381539154015411542154315441545154615471548154915501551155215531554155515561557155815591560156115621563156415651566156715681569157015711572157315741575157615771578157915801581158215831584158515861587158815891590159115921593159415951596159715981599160016011602160316041605160616071608160916101611161216131614161516161617161816191620162116221623162416251626162716281629163016311632163316341635163616371638163916401641164216431644164516461647164816491650165116521653165416551656165716581659166016611662166316641665166616671668166916701671167216731674167516761677167816791680168116821683168416851686168716881689169016911692169316941695169616971698169917001701170217031704170517061707170817091710171117121713171417151716171717181719172017211722172317241725172617271728172917301731173217331734173517361737173817391740174117421743174417451746174717481749175017511752175317541755175617571758175917601761176217631764176517661767176817691770177117721773177417751776177717781779178017811782178317841785178617871788178917901791179217931794179517961797179817991800180118021803180418051806180718081809181018111812181318141815181618171818181918201821182218231824182518261827182818291830183118321833183418351836183718381839184018411842184318441845184618471848184918501851185218531854185518561857185818591860186118621863186418651866186718681869187018711872187318741875187618771878187918801881188218831884188518861887188818891890189118921893189418951896189718981899190019011902190319041905190619071908190919101911191219131914191519161917191819191920192119221923192419251926192719281929193019311932193319341935193619371938193919401941194219431944194519461947194819491950195119521953195419551956195719581959196019611962196319641965196619671968196919701971197219731974197519761977197819791980198119821983198419851986198719881989199019911992199319941995199619971998199920002001200220032004200520062007200820092010201120122013201420152016201720182019202020212022202320242025202620272028202920302031203220332034203520362037203820392040204120422043204420452046204720482049205020512052205320542055205620572058205920602061206220632064206520662067206820692070207120722073207420752076207720782079208020812082208320842085208620872088208920902091209220932094209520962097209820992100210121022103210421052106210721082109211021112112211321142115211621172118211921202121212221232124212521262127212821292130213121322133213421352136213721382139214021412142214321442145214621472148214921502151215221532154215521562157215821592160216121622163216421652166216721682169217021712172217321742175217621772178217921802181218221832184218521862187218821892190219121922193219421952196219721982199220022012202220322042205220622072208220922102211221222132214221522162217221822192220222122222223222422252226222722282229223022312232223322342235223622372238223922402241224222432244224522462247224822492250225122522253225422552256225722582259226022612262226322642265226622672268226922702271227222732274227522762277227822792280228122822283228422852286228722882289229022912292229322942295229622972298229923002301230223032304230523062307230823092310231123122313231423152316231723182319232023212322232323242325232623272328232923302331233223332334233523362337233823392340234123422343234423452346234723482349235023512352235323542355235623572358235923602361236223632364236523662367236823692370237123722373237423752376237723782379238023812382238323842385238623872388238923902391239223932394239523962397239823992400240124022403240424052406240724082409241024112412241324142415241624172418241924202421242224232424242524262427242824292430243124322433243424352436243724382439244024412442244324442445244624472448244924502451245224532454245524562457245824592460246124622463246424652466246724682469247024712472247324742475247624772478247924802481248224832484248524862487248824892490249124922493249424952496249724982499250025012502250325042505250625072508250925102511251225132514251525162517251825192520252125222523252425252526252725282529253025312532253325342535253625372538253925402541254225432544254525462547254825492550255125522553255425552556255725582559256025612562256325642565256625672568256925702571257225732574257525762577257825792580258125822583258425852586258725882589259025912592259325942595259625972598259926002601260226032604260526062607260826092610261126122613261426152616261726182619262026212622262326242625262626272628262926302631263226332634263526362637263826392640264126422643264426452646264726482649265026512652265326542655265626572658265926602661266226632664266526662667266826692670267126722673267426752676267726782679268026812682268326842685268626872688268926902691269226932694269526962697269826992700270127022703270427052706270727082709271027112712271327142715271627172718271927202721272227232724272527262727272827292730273127322733273427352736273727382739274027412742274327442745274627472748274927502751275227532754275527562757275827592760276127622763276427652766276727682769277027712772277327742775277627772778277927802781278227832784278527862787278827892790279127922793279427952796279727982799280028012802280328042805280628072808280928102811281228132814281528162817281828192820282128222823282428252826282728282829283028312832283328342835283628372838283928402841284228432844284528462847284828492850285128522853285428552856285728582859286028612862286328642865286628672868286928702871287228732874287528762877287828792880288128822883288428852886288728882889289028912892289328942895289628972898289929002901290229032904290529062907290829092910291129122913291429152916291729182919292029212922292329242925292629272928292929302931293229332934293529362937293829392940294129422943294429452946294729482949295029512952295329542955295629572958295929602961296229632964296529662967296829692970297129722973297429752976297729782979298029812982298329842985298629872988298929902991299229932994299529962997299829993000300130023003300430053006300730083009301030113012301330143015301630173018301930203021302230233024302530263027302830293030303130323033303430353036303730383039304030413042304330443045304630473048304930503051305230533054305530563057305830593060306130623063306430653066306730683069307030713072307330743075307630773078307930803081308230833084308530863087308830893090309130923093309430953096309730983099310031013102310331043105310631073108310931103111311231133114311531163117311831193120312131223123312431253126312731283129313031313132313331343135313631373138313931403141314231433144314531463147314831493150315131523153315431553156315731583159316031613162316331643165316631673168316931703171317231733174317531763177317831793180318131823183318431853186318731883189319031913192319331943195319631973198319932003201320232033204320532063207320832093210321132123213321432153216321732183219322032213222322332243225322632273228322932303231323232333234323532363237323832393240324132423243324432453246324732483249325032513252325332543255325632573258325932603261326232633264326532663267326832693270327132723273327432753276327732783279328032813282328332843285328632873288328932903291329232933294329532963297329832993300330133023303330433053306330733083309331033113312331333143315331633173318331933203321332233233324332533263327332833293330333133323333333433353336333733383339334033413342334333443345334633473348334933503351335233533354335533563357335833593360336133623363336433653366336733683369337033713372337333743375337633773378337933803381338233833384338533863387338833893390339133923393339433953396339733983399340034013402340334043405340634073408340934103411341234133414341534163417341834193420342134223423342434253426342734283429343034313432343334343435343634373438343934403441344234433444344534463447344834493450345134523453345434553456345734583459346034613462346334643465346634673468346934703471347234733474347534763477347834793480348134823483348434853486348734883489349034913492349334943495349634973498349935003501350235033504350535063507350835093510351135123513351435153516351735183519352035213522352335243525352635273528352935303531353235333534353535363537353835393540354135423543354435453546354735483549355035513552355335543555355635573558355935603561356235633564356535663567356835693570357135723573357435753576357735783579358035813582358335843585358635873588358935903591359235933594359535963597359835993600360136023603360436053606360736083609361036113612361336143615361636173618361936203621362236233624362536263627362836293630363136323633363436353636363736383639364036413642364336443645364636473648364936503651365236533654365536563657365836593660366136623663366436653666366736683669367036713672367336743675367636773678367936803681368236833684368536863687368836893690369136923693369436953696369736983699370037013702370337043705370637073708370937103711371237133714371537163717371837193720372137223723372437253726372737283729373037313732373337343735373637373738373937403741374237433744374537463747374837493750375137523753375437553756375737583759376037613762376337643765376637673768376937703771377237733774377537763777377837793780378137823783378437853786378737883789379037913792379337943795379637973798379938003801380238033804380538063807380838093810381138123813381438153816381738183819382038213822382338243825382638273828382938303831383238333834383538363837383838393840384138423843384438453846384738483849385038513852385338543855385638573858385938603861386238633864386538663867386838693870387138723873387438753876387738783879388038813882388338843885388638873888388938903891389238933894389538963897389838993900390139023903390439053906390739083909391039113912391339143915391639173918391939203921392239233924392539263927392839293930393139323933393439353936393739383939394039413942394339443945394639473948394939503951395239533954395539563957395839593960396139623963396439653966396739683969397039713972397339743975397639773978397939803981398239833984398539863987398839893990399139923993399439953996399739983999400040014002400340044005400640074008400940104011401240134014401540164017401840194020402140224023402440254026402740284029403040314032403340344035403640374038403940404041404240434044404540464047404840494050405140524053405440554056405740584059406040614062406340644065406640674068406940704071407240734074407540764077407840794080408140824083408440854086408740884089409040914092409340944095409640974098409941004101410241034104410541064107410841094110411141124113411441154116411741184119412041214122412341244125412641274128412941304131413241334134413541364137413841394140414141424143414441454146414741484149415041514152415341544155415641574158415941604161416241634164416541664167416841694170417141724173417441754176417741784179418041814182418341844185418641874188418941904191419241934194419541964197419841994200420142024203420442054206420742084209421042114212421342144215421642174218421942204221422242234224422542264227422842294230423142324233423442354236423742384239424042414242424342444245424642474248424942504251425242534254425542564257425842594260426142624263426442654266426742684269427042714272427342744275427642774278427942804281428242834284428542864287428842894290429142924293429442954296429742984299430043014302430343044305430643074308430943104311431243134314431543164317431843194320432143224323432443254326432743284329433043314332433343344335433643374338433943404341434243434344434543464347434843494350435143524353435443554356435743584359436043614362436343644365436643674368436943704371437243734374437543764377437843794380438143824383438443854386438743884389439043914392439343944395439643974398439944004401440244034404440544064407440844094410441144124413441444154416441744184419442044214422442344244425442644274428442944304431443244334434443544364437443844394440444144424443444444454446444744484449445044514452445344544455445644574458445944604461446244634464446544664467446844694470447144724473447444754476447744784479448044814482448344844485448644874488448944904491449244934494449544964497449844994500450145024503450445054506450745084509451045114512451345144515451645174518451945204521452245234524452545264527452845294530453145324533453445354536453745384539454045414542454345444545454645474548454945504551455245534554455545564557455845594560456145624563456445654566456745684569457045714572457345744575457645774578457945804581458245834584458545864587458845894590459145924593459445954596459745984599460046014602460346044605460646074608460946104611461246134614461546164617461846194620462146224623462446254626462746284629463046314632463346344635463646374638463946404641464246434644464546464647464846494650465146524653465446554656465746584659466046614662466346644665466646674668466946704671467246734674467546764677467846794680468146824683468446854686468746884689469046914692469346944695469646974698469947004701470247034704470547064707470847094710471147124713471447154716471747184719472047214722472347244725472647274728472947304731473247334734473547364737473847394740474147424743474447454746474747484749475047514752475347544755475647574758475947604761476247634764476547664767476847694770477147724773477447754776477747784779478047814782478347844785478647874788478947904791479247934794479547964797479847994800480148024803480448054806480748084809481048114812481348144815481648174818481948204821482248234824482548264827482848294830483148324833483448354836483748384839484048414842484348444845484648474848484948504851485248534854485548564857485848594860486148624863486448654866486748684869487048714872487348744875487648774878487948804881488248834884488548864887488848894890489148924893489448954896489748984899490049014902490349044905490649074908490949104911491249134914491549164917491849194920492149224923492449254926492749284929493049314932493349344935493649374938493949404941494249434944494549464947494849494950495149524953495449554956495749584959496049614962496349644965496649674968496949704971497249734974497549764977497849794980498149824983498449854986498749884989499049914992499349944995499649974998499950005001500250035004500550065007500850095010501150125013501450155016501750185019502050215022502350245025502650275028502950305031503250335034503550365037503850395040504150425043504450455046504750485049505050515052505350545055505650575058505950605061506250635064506550665067506850695070507150725073507450755076507750785079508050815082508350845085508650875088508950905091509250935094509550965097509850995100510151025103510451055106510751085109511051115112511351145115511651175118511951205121512251235124512551265127512851295130513151325133513451355136513751385139514051415142514351445145514651475148514951505151515251535154515551565157515851595160516151625163516451655166516751685169517051715172517351745175517651775178517951805181518251835184518551865187518851895190519151925193519451955196519751985199520052015202520352045205520652075208520952105211521252135214521552165217521852195220522152225223522452255226522752285229523052315232523352345235523652375238523952405241524252435244524552465247524852495250525152525253525452555256525752585259526052615262526352645265526652675268526952705271527252735274527552765277527852795280528152825283528452855286528752885289529052915292529352945295529652975298529953005301530253035304530553065307530853095310531153125313531453155316531753185319532053215322532353245325532653275328532953305331533253335334533553365337533853395340534153425343534453455346534753485349535053515352535353545355535653575358535953605361536253635364536553665367536853695370537153725373537453755376537753785379538053815382538353845385538653875388538953905391539253935394539553965397539853995400540154025403540454055406540754085409541054115412541354145415541654175418541954205421542254235424542554265427542854295430543154325433543454355436543754385439544054415442544354445445544654475448544954505451545254535454545554565457545854595460546154625463546454655466546754685469547054715472547354745475547654775478547954805481548254835484548554865487548854895490549154925493549454955496549754985499550055015502550355045505550655075508550955105511551255135514551555165517551855195520552155225523552455255526552755285529553055315532553355345535553655375538553955405541554255435544554555465547554855495550555155525553555455555556555755585559556055615562556355645565556655675568556955705571557255735574557555765577557855795580558155825583558455855586558755885589559055915592559355945595559655975598559956005601560256035604560556065607560856095610561156125613561456155616561756185619562056215622562356245625562656275628562956305631563256335634563556365637563856395640564156425643564456455646564756485649565056515652565356545655565656575658565956605661566256635664566556665667566856695670567156725673567456755676567756785679568056815682568356845685568656875688568956905691569256935694569556965697569856995700570157025703570457055706570757085709571057115712571357145715571657175718571957205721572257235724572557265727572857295730573157325733573457355736573757385739574057415742574357445745574657475748574957505751575257535754575557565757575857595760576157625763576457655766576757685769577057715772577357745775577657775778577957805781578257835784578557865787578857895790579157925793579457955796579757985799580058015802580358045805580658075808580958105811581258135814581558165817581858195820582158225823582458255826582758285829583058315832583358345835583658375838583958405841584258435844584558465847584858495850585158525853585458555856585758585859586058615862586358645865586658675868586958705871587258735874587558765877587858795880588158825883588458855886588758885889589058915892589358945895589658975898589959005901590259035904590559065907590859095910591159125913591459155916591759185919592059215922592359245925592659275928592959305931593259335934593559365937593859395940594159425943594459455946594759485949595059515952595359545955595659575958595959605961596259635964596559665967596859695970597159725973597459755976597759785979598059815982598359845985598659875988598959905991599259935994599559965997599859996000600160026003600460056006600760086009601060116012601360146015601660176018601960206021602260236024602560266027602860296030603160326033603460356036603760386039604060416042604360446045604660476048604960506051605260536054605560566057605860596060606160626063606460656066606760686069607060716072607360746075607660776078607960806081608260836084608560866087608860896090609160926093609460956096609760986099610061016102610361046105610661076108610961106111611261136114611561166117611861196120612161226123612461256126612761286129613061316132613361346135613661376138613961406141614261436144614561466147614861496150615161526153615461556156615761586159616061616162616361646165616661676168616961706171617261736174617561766177617861796180618161826183618461856186618761886189619061916192619361946195619661976198619962006201620262036204620562066207620862096210621162126213621462156216621762186219622062216222622362246225622662276228622962306231623262336234623562366237623862396240624162426243624462456246624762486249625062516252625362546255625662576258625962606261626262636264626562666267626862696270627162726273627462756276627762786279628062816282628362846285628662876288628962906291629262936294629562966297629862996300630163026303630463056306630763086309631063116312631363146315631663176318631963206321632263236324632563266327632863296330633163326333633463356336633763386339634063416342634363446345634663476348634963506351635263536354635563566357635863596360636163626363636463656366636763686369637063716372637363746375637663776378637963806381638263836384638563866387638863896390639163926393639463956396639763986399640064016402640364046405640664076408640964106411641264136414641564166417641864196420642164226423642464256426642764286429643064316432643364346435643664376438643964406441644264436444644564466447644864496450645164526453645464556456645764586459646064616462646364646465646664676468646964706471647264736474647564766477647864796480648164826483648464856486648764886489649064916492649364946495649664976498649965006501650265036504650565066507650865096510651165126513651465156516651765186519652065216522652365246525652665276528652965306531653265336534653565366537653865396540654165426543654465456546654765486549655065516552655365546555655665576558655965606561656265636564656565666567656865696570657165726573657465756576657765786579658065816582658365846585658665876588658965906591659265936594659565966597659865996600660166026603660466056606660766086609661066116612661366146615661666176618661966206621662266236624662566266627662866296630663166326633663466356636663766386639664066416642664366446645664666476648664966506651665266536654665566566657665866596660666166626663666466656666666766686669667066716672667366746675667666776678667966806681668266836684668566866687668866896690669166926693669466956696669766986699670067016702670367046705670667076708670967106711671267136714671567166717671867196720672167226723672467256726672767286729673067316732673367346735673667376738673967406741674267436744674567466747674867496750675167526753675467556756675767586759676067616762676367646765676667676768676967706771677267736774677567766777677867796780678167826783678467856786678767886789679067916792679367946795679667976798679968006801680268036804680568066807680868096810681168126813681468156816681768186819682068216822682368246825682668276828682968306831683268336834683568366837683868396840684168426843684468456846684768486849685068516852685368546855685668576858685968606861686268636864686568666867686868696870687168726873687468756876687768786879688068816882688368846885688668876888688968906891689268936894689568966897689868996900690169026903690469056906690769086909691069116912691369146915691669176918691969206921692269236924692569266927692869296930693169326933693469356936693769386939694069416942694369446945694669476948694969506951695269536954695569566957695869596960696169626963696469656966696769686969697069716972697369746975697669776978697969806981698269836984698569866987698869896990699169926993699469956996699769986999700070017002700370047005700670077008700970107011701270137014701570167017701870197020702170227023702470257026702770287029703070317032703370347035703670377038703970407041704270437044704570467047704870497050705170527053705470557056705770587059706070617062706370647065706670677068706970707071707270737074707570767077707870797080708170827083708470857086708770887089709070917092709370947095709670977098709971007101710271037104710571067107710871097110711171127113711471157116711771187119712071217122712371247125712671277128712971307131713271337134713571367137713871397140714171427143714471457146714771487149715071517152715371547155715671577158715971607161716271637164716571667167716871697170717171727173717471757176717771787179718071817182718371847185718671877188718971907191719271937194719571967197719871997200720172027203720472057206720772087209721072117212721372147215721672177218721972207221722272237224722572267227722872297230723172327233723472357236723772387239724072417242724372447245724672477248724972507251725272537254725572567257725872597260726172627263726472657266726772687269727072717272727372747275727672777278727972807281728272837284728572867287728872897290729172927293729472957296729772987299730073017302730373047305730673077308730973107311731273137314731573167317731873197320732173227323732473257326732773287329733073317332733373347335733673377338733973407341734273437344734573467347734873497350735173527353735473557356735773587359736073617362736373647365736673677368736973707371737273737374737573767377737873797380738173827383738473857386738773887389739073917392739373947395739673977398739974007401740274037404740574067407740874097410741174127413741474157416741774187419742074217422742374247425742674277428742974307431743274337434743574367437743874397440744174427443744474457446744774487449745074517452745374547455745674577458745974607461746274637464746574667467746874697470747174727473747474757476747774787479748074817482748374847485748674877488748974907491749274937494749574967497749874997500750175027503750475057506750775087509751075117512751375147515751675177518751975207521752275237524752575267527752875297530753175327533753475357536753775387539754075417542754375447545754675477548754975507551755275537554755575567557755875597560756175627563756475657566756775687569757075717572757375747575757675777578757975807581758275837584758575867587758875897590759175927593759475957596759775987599760076017602760376047605760676077608760976107611761276137614761576167617761876197620762176227623762476257626762776287629763076317632763376347635763676377638763976407641764276437644764576467647764876497650765176527653765476557656765776587659766076617662766376647665766676677668766976707671767276737674767576767677767876797680768176827683768476857686768776887689769076917692769376947695769676977698769977007701770277037704770577067707770877097710771177127713771477157716771777187719772077217722772377247725772677277728772977307731773277337734773577367737773877397740774177427743774477457746774777487749775077517752775377547755775677577758775977607761776277637764776577667767776877697770777177727773777477757776777777787779778077817782778377847785778677877788778977907791779277937794779577967797779877997800780178027803780478057806780778087809781078117812781378147815781678177818781978207821782278237824782578267827782878297830783178327833783478357836783778387839784078417842784378447845784678477848784978507851785278537854785578567857785878597860786178627863786478657866786778687869787078717872787378747875787678777878787978807881788278837884788578867887788878897890789178927893789478957896789778987899790079017902790379047905790679077908790979107911791279137914791579167917791879197920792179227923792479257926792779287929793079317932793379347935793679377938793979407941794279437944794579467947794879497950795179527953795479557956795779587959796079617962796379647965796679677968796979707971797279737974797579767977797879797980798179827983798479857986798779887989799079917992799379947995799679977998799980008001800280038004800580068007800880098010801180128013801480158016801780188019802080218022802380248025802680278028802980308031803280338034803580368037803880398040804180428043804480458046804780488049805080518052805380548055805680578058805980608061806280638064806580668067806880698070807180728073807480758076807780788079808080818082808380848085808680878088808980908091809280938094809580968097809880998100810181028103810481058106810781088109811081118112811381148115811681178118811981208121812281238124812581268127812881298130813181328133813481358136813781388139814081418142814381448145814681478148814981508151815281538154815581568157815881598160816181628163816481658166816781688169817081718172817381748175817681778178817981808181818281838184818581868187818881898190819181928193819481958196819781988199820082018202820382048205820682078208820982108211821282138214821582168217821882198220822182228223822482258226822782288229823082318232823382348235823682378238823982408241824282438244824582468247824882498250825182528253825482558256825782588259826082618262826382648265826682678268826982708271827282738274827582768277827882798280828182828283828482858286828782888289829082918292829382948295829682978298829983008301830283038304830583068307830883098310831183128313831483158316831783188319832083218322832383248325832683278328832983308331833283338334833583368337833883398340834183428343834483458346834783488349835083518352835383548355835683578358835983608361836283638364836583668367836883698370837183728373837483758376837783788379838083818382838383848385838683878388838983908391839283938394839583968397839883998400840184028403840484058406840784088409841084118412841384148415841684178418841984208421842284238424842584268427842884298430843184328433843484358436843784388439844084418442844384448445844684478448844984508451845284538454845584568457845884598460846184628463846484658466846784688469847084718472847384748475847684778478847984808481848284838484848584868487848884898490849184928493849484958496849784988499850085018502850385048505850685078508850985108511851285138514851585168517851885198520852185228523852485258526852785288529853085318532853385348535853685378538853985408541854285438544854585468547854885498550855185528553855485558556855785588559856085618562856385648565856685678568856985708571857285738574857585768577857885798580858185828583858485858586858785888589859085918592859385948595859685978598859986008601860286038604860586068607860886098610861186128613861486158616861786188619862086218622862386248625862686278628862986308631863286338634863586368637863886398640864186428643864486458646864786488649865086518652865386548655865686578658865986608661866286638664866586668667866886698670867186728673867486758676867786788679868086818682868386848685868686878688868986908691869286938694869586968697869886998700870187028703870487058706870787088709871087118712871387148715871687178718871987208721872287238724872587268727872887298730873187328733873487358736873787388739874087418742874387448745874687478748874987508751875287538754875587568757875887598760876187628763876487658766876787688769877087718772877387748775877687778778877987808781878287838784878587868787878887898790879187928793879487958796879787988799880088018802880388048805880688078808880988108811881288138814881588168817881888198820882188228823882488258826882788288829883088318832883388348835883688378838883988408841884288438844884588468847884888498850885188528853885488558856885788588859886088618862886388648865886688678868886988708871887288738874887588768877887888798880888188828883888488858886888788888889889088918892889388948895889688978898889989008901890289038904890589068907890889098910891189128913891489158916891789188919892089218922892389248925892689278928892989308931893289338934893589368937893889398940894189428943894489458946894789488949895089518952895389548955895689578958895989608961896289638964896589668967896889698970897189728973897489758976897789788979898089818982898389848985898689878988898989908991899289938994899589968997899889999000900190029003900490059006900790089009901090119012901390149015901690179018901990209021902290239024902590269027902890299030903190329033903490359036903790389039904090419042904390449045904690479048904990509051905290539054905590569057905890599060906190629063906490659066906790689069907090719072907390749075907690779078907990809081908290839084908590869087908890899090909190929093909490959096909790989099910091019102910391049105910691079108910991109111911291139114911591169117911891199120912191229123912491259126912791289129913091319132913391349135913691379138913991409141914291439144914591469147914891499150915191529153915491559156915791589159916091619162916391649165916691679168916991709171917291739174917591769177917891799180918191829183918491859186918791889189919091919192919391949195919691979198919992009201920292039204920592069207920892099210921192129213921492159216921792189219922092219222922392249225922692279228922992309231923292339234923592369237923892399240924192429243924492459246924792489249925092519252925392549255925692579258925992609261926292639264926592669267926892699270927192729273927492759276927792789279928092819282928392849285928692879288928992909291929292939294929592969297929892999300930193029303930493059306930793089309931093119312931393149315931693179318931993209321932293239324932593269327932893299330933193329333933493359336933793389339934093419342934393449345934693479348934993509351935293539354935593569357935893599360936193629363936493659366936793689369937093719372937393749375937693779378937993809381938293839384938593869387938893899390939193929393939493959396939793989399940094019402940394049405940694079408940994109411941294139414941594169417941894199420942194229423942494259426942794289429943094319432943394349435943694379438943994409441944294439444944594469447944894499450945194529453945494559456945794589459946094619462946394649465946694679468946994709471947294739474947594769477947894799480948194829483948494859486948794889489949094919492949394949495949694979498949995009501950295039504950595069507950895099510951195129513951495159516951795189519952095219522952395249525952695279528952995309531953295339534953595369537953895399540954195429543954495459546954795489549955095519552955395549555955695579558955995609561956295639564956595669567956895699570957195729573957495759576957795789579958095819582958395849585958695879588958995909591959295939594959595969597959895999600960196029603960496059606960796089609961096119612961396149615961696179618961996209621962296239624962596269627962896299630963196329633963496359636963796389639964096419642964396449645964696479648964996509651965296539654965596569657965896599660966196629663966496659666966796689669967096719672967396749675967696779678967996809681968296839684968596869687968896899690969196929693969496959696969796989699970097019702970397049705970697079708970997109711971297139714971597169717971897199720972197229723972497259726972797289729973097319732973397349735973697379738973997409741974297439744974597469747974897499750975197529753975497559756975797589759976097619762976397649765976697679768976997709771977297739774977597769777977897799780978197829783978497859786978797889789979097919792979397949795979697979798979998009801980298039804980598069807980898099810981198129813981498159816981798189819982098219822982398249825982698279828982998309831983298339834983598369837983898399840984198429843984498459846984798489849985098519852985398549855985698579858985998609861986298639864986598669867986898699870987198729873987498759876987798789879988098819882988398849885988698879888988998909891989298939894989598969897989898999900990199029903990499059906990799089909991099119912991399149915991699179918991999209921992299239924992599269927992899299930993199329933993499359936993799389939994099419942994399449945994699479948994999509951995299539954995599569957995899599960996199629963996499659966996799689969997099719972997399749975997699779978997999809981998299839984998599869987998899899990999199929993999499959996999799989999100001000110002100031000410005100061000710008100091001010011100121001310014100151001610017100181001910020100211002210023100241002510026100271002810029100301003110032100331003410035100361003710038100391004010041100421004310044100451004610047100481004910050100511005210053100541005510056100571005810059100601006110062100631006410065100661006710068100691007010071100721007310074100751007610077100781007910080100811008210083100841008510086100871008810089100901009110092100931009410095100961009710098100991010010101101021010310104101051010610107101081010910110101111011210113101141011510116101171011810119101201012110122101231012410125101261012710128101291013010131101321013310134101351013610137101381013910140101411014210143101441014510146101471014810149101501015110152101531015410155101561015710158101591016010161101621016310164101651016610167101681016910170101711017210173101741017510176101771017810179101801018110182101831018410185101861018710188101891019010191101921019310194101951019610197101981019910200102011020210203102041020510206102071020810209102101021110212102131021410215102161021710218102191022010221102221022310224102251022610227102281022910230102311023210233102341023510236102371023810239102401024110242102431024410245102461024710248102491025010251102521025310254102551025610257102581025910260102611026210263102641026510266102671026810269102701027110272102731027410275102761027710278102791028010281102821028310284102851028610287102881028910290102911029210293102941029510296102971029810299103001030110302103031030410305103061030710308103091031010311103121031310314103151031610317103181031910320103211032210323103241032510326103271032810329103301033110332103331033410335103361033710338103391034010341103421034310344103451034610347103481034910350103511035210353103541035510356103571035810359103601036110362103631036410365103661036710368103691037010371103721037310374103751037610377103781037910380103811038210383103841038510386103871038810389103901039110392103931039410395103961039710398103991040010401104021040310404104051040610407104081040910410104111041210413104141041510416104171041810419104201042110422104231042410425104261042710428104291043010431104321043310434104351043610437104381043910440104411044210443104441044510446104471044810449104501045110452104531045410455104561045710458104591046010461104621046310464104651046610467104681046910470104711047210473104741047510476104771047810479104801048110482104831048410485104861048710488104891049010491104921049310494104951049610497104981049910500105011050210503105041050510506105071050810509105101051110512105131051410515105161051710518105191052010521105221052310524105251052610527105281052910530105311053210533105341053510536105371053810539105401054110542105431054410545105461054710548105491055010551105521055310554105551055610557105581055910560105611056210563105641056510566105671056810569105701057110572105731057410575105761057710578105791058010581105821058310584105851058610587105881058910590105911059210593105941059510596105971059810599106001060110602106031060410605106061060710608106091061010611106121061310614106151061610617106181061910620106211062210623106241062510626106271062810629106301063110632106331063410635106361063710638106391064010641106421064310644106451064610647106481064910650106511065210653106541065510656106571065810659106601066110662106631066410665106661066710668106691067010671106721067310674106751067610677106781067910680106811068210683106841068510686106871068810689106901069110692106931069410695106961069710698106991070010701107021070310704107051070610707107081070910710107111071210713107141071510716107171071810719107201072110722107231072410725107261072710728107291073010731107321073310734107351073610737107381073910740107411074210743107441074510746107471074810749107501075110752107531075410755107561075710758107591076010761107621076310764107651076610767107681076910770107711077210773107741077510776107771077810779107801078110782107831078410785107861078710788107891079010791107921079310794107951079610797107981079910800108011080210803108041080510806108071080810809108101081110812108131081410815108161081710818108191082010821108221082310824108251082610827108281082910830108311083210833108341083510836108371083810839108401084110842108431084410845108461084710848108491085010851108521085310854108551085610857108581085910860108611086210863108641086510866108671086810869108701087110872108731087410875108761087710878108791088010881108821088310884108851088610887108881088910890108911089210893108941089510896108971089810899109001090110902109031090410905109061090710908109091091010911109121091310914109151091610917109181091910920109211092210923109241092510926109271092810929109301093110932109331093410935109361093710938109391094010941109421094310944109451094610947109481094910950109511095210953109541095510956109571095810959109601096110962109631096410965109661096710968109691097010971109721097310974109751097610977109781097910980109811098210983109841098510986109871098810989109901099110992109931099410995109961099710998109991100011001110021100311004110051100611007110081100911010110111101211013110141101511016110171101811019110201102111022110231102411025110261102711028110291103011031110321103311034110351103611037110381103911040110411104211043110441104511046110471104811049110501105111052110531105411055110561105711058110591106011061110621106311064110651106611067110681106911070110711107211073110741107511076110771107811079110801108111082110831108411085110861108711088110891109011091110921109311094110951109611097110981109911100111011110211103111041110511106111071110811109111101111111112111131111411115111161111711118111191112011121111221112311124111251112611127111281112911130111311113211133111341113511136111371113811139111401114111142111431114411145111461114711148111491115011151111521115311154111551115611157111581115911160111611116211163111641116511166111671116811169111701117111172111731117411175111761117711178111791118011181111821118311184111851118611187111881118911190111911119211193111941119511196111971119811199112001120111202112031120411205112061120711208112091121011211112121121311214112151121611217112181121911220112211122211223112241122511226112271122811229112301123111232112331123411235112361123711238112391124011241112421124311244112451124611247112481124911250112511125211253112541125511256112571125811259112601126111262112631126411265112661126711268112691127011271112721127311274112751127611277112781127911280112811128211283112841128511286112871128811289112901129111292112931129411295112961129711298112991130011301113021130311304113051130611307113081130911310113111131211313113141131511316113171131811319113201132111322113231132411325113261132711328113291133011331113321133311334113351133611337113381133911340113411134211343113441134511346113471134811349113501135111352113531135411355113561135711358113591136011361113621136311364113651136611367113681136911370113711137211373113741137511376113771137811379113801138111382113831138411385113861138711388113891139011391113921139311394113951139611397113981139911400114011140211403114041140511406114071140811409114101141111412114131141411415114161141711418114191142011421114221142311424114251142611427114281142911430114311143211433114341143511436114371143811439114401144111442114431144411445114461144711448114491145011451114521145311454114551145611457114581145911460114611146211463114641146511466114671146811469114701147111472114731147411475114761147711478114791148011481114821148311484114851148611487114881148911490114911149211493114941149511496114971149811499115001150111502115031150411505115061150711508115091151011511115121151311514115151151611517115181151911520115211152211523115241152511526115271152811529115301153111532115331153411535115361153711538115391154011541115421154311544115451154611547115481154911550115511155211553115541155511556115571155811559115601156111562115631156411565115661156711568115691157011571115721157311574115751157611577115781157911580115811158211583115841158511586115871158811589115901159111592115931159411595115961159711598115991160011601116021160311604116051160611607116081160911610116111161211613116141161511616116171161811619116201162111622116231162411625116261162711628116291163011631116321163311634116351163611637116381163911640116411164211643116441164511646116471164811649116501165111652116531165411655116561165711658116591166011661116621166311664116651166611667116681166911670116711167211673116741167511676116771167811679116801168111682116831168411685116861168711688116891169011691116921169311694116951169611697116981169911700117011170211703117041170511706117071170811709117101171111712117131171411715117161171711718117191172011721117221172311724117251172611727117281172911730117311173211733117341173511736117371173811739117401174111742117431174411745117461174711748117491175011751117521175311754117551175611757117581175911760117611176211763117641176511766117671176811769117701177111772117731177411775117761177711778117791178011781117821178311784117851178611787117881178911790117911179211793117941179511796117971179811799118001180111802118031180411805118061180711808118091181011811118121181311814118151181611817118181181911820118211182211823118241182511826118271182811829118301183111832118331183411835118361183711838118391184011841118421184311844118451184611847118481184911850118511185211853118541185511856118571185811859118601186111862118631186411865118661186711868118691187011871118721187311874118751187611877118781187911880118811188211883118841188511886118871188811889118901189111892118931189411895118961189711898118991190011901119021190311904119051190611907119081190911910119111191211913119141191511916119171191811919119201192111922119231192411925119261192711928119291193011931119321193311934119351193611937119381193911940119411194211943119441194511946119471194811949119501195111952119531195411955119561195711958119591196011961119621196311964119651196611967119681196911970119711197211973119741197511976119771197811979119801198111982119831198411985119861198711988119891199011991119921199311994119951199611997119981199912000120011200212003120041200512006120071200812009120101201112012120131201412015120161201712018120191202012021120221202312024120251202612027120281202912030120311203212033120341203512036120371203812039120401204112042120431204412045120461204712048120491205012051120521205312054120551205612057120581205912060120611206212063120641206512066120671206812069120701207112072120731207412075120761207712078120791208012081120821208312084120851208612087120881208912090120911209212093120941209512096120971209812099121001210112102121031210412105121061210712108121091211012111121121211312114121151211612117121181211912120121211212212123121241212512126121271212812129121301213112132121331213412135121361213712138121391214012141121421214312144121451214612147121481214912150121511215212153121541215512156121571215812159121601216112162121631216412165121661216712168121691217012171121721217312174121751217612177121781217912180121811218212183121841218512186121871218812189121901219112192121931219412195121961219712198121991220012201122021220312204122051220612207122081220912210122111221212213122141221512216122171221812219122201222112222122231222412225122261222712228122291223012231122321223312234122351223612237122381223912240122411224212243122441224512246122471224812249122501225112252122531225412255122561225712258122591226012261122621226312264122651226612267122681226912270122711227212273122741227512276122771227812279122801228112282122831228412285122861228712288122891229012291122921229312294122951229612297122981229912300123011230212303123041230512306123071230812309123101231112312123131231412315123161231712318123191232012321123221232312324123251232612327123281232912330123311233212333123341233512336123371233812339123401234112342123431234412345123461234712348123491235012351123521235312354123551235612357123581235912360123611236212363123641236512366123671236812369123701237112372123731237412375123761237712378123791238012381123821238312384123851238612387123881238912390123911239212393123941239512396123971239812399124001240112402124031240412405124061240712408124091241012411124121241312414124151241612417124181241912420124211242212423124241242512426124271242812429124301243112432124331243412435124361243712438124391244012441124421244312444124451244612447124481244912450124511245212453124541245512456124571245812459124601246112462124631246412465124661246712468124691247012471124721247312474124751247612477124781247912480124811248212483124841248512486124871248812489124901249112492124931249412495124961249712498124991250012501125021250312504125051250612507125081250912510125111251212513125141251512516125171251812519125201252112522125231252412525125261252712528125291253012531125321253312534125351253612537125381253912540125411254212543125441254512546125471254812549125501255112552125531255412555125561255712558125591256012561125621256312564125651256612567125681256912570125711257212573125741257512576125771257812579125801258112582125831258412585125861258712588125891259012591125921259312594125951259612597125981259912600126011260212603126041260512606126071260812609126101261112612126131261412615126161261712618126191262012621126221262312624126251262612627126281262912630126311263212633126341263512636126371263812639126401264112642126431264412645126461264712648126491265012651126521265312654126551265612657126581265912660126611266212663126641266512666126671266812669126701267112672126731267412675126761267712678126791268012681126821268312684126851268612687126881268912690126911269212693126941269512696126971269812699127001270112702127031270412705127061270712708127091271012711127121271312714127151271612717127181271912720127211272212723127241272512726127271272812729127301273112732127331273412735127361273712738127391274012741127421274312744127451274612747127481274912750127511275212753127541275512756127571275812759127601276112762127631276412765127661276712768127691277012771127721277312774127751277612777127781277912780127811278212783127841278512786127871278812789127901279112792127931279412795127961279712798127991280012801128021280312804128051280612807128081280912810128111281212813128141281512816128171281812819128201282112822128231282412825128261282712828128291283012831128321283312834128351283612837128381283912840128411284212843128441284512846128471284812849128501285112852128531285412855128561285712858128591286012861128621286312864128651286612867128681286912870128711287212873128741287512876128771287812879128801288112882128831288412885128861288712888128891289012891128921289312894128951289612897128981289912900129011290212903129041290512906129071290812909129101291112912129131291412915129161291712918129191292012921129221292312924129251292612927129281292912930129311293212933129341293512936129371293812939129401294112942129431294412945129461294712948129491295012951129521295312954129551295612957129581295912960129611296212963129641296512966129671296812969129701297112972129731297412975129761297712978129791298012981129821298312984129851298612987129881298912990129911299212993129941299512996129971299812999130001300113002130031300413005130061300713008130091301013011130121301313014130151301613017130181301913020130211302213023130241302513026130271302813029130301303113032130331303413035130361303713038130391304013041130421304313044130451304613047130481304913050130511305213053130541305513056130571305813059130601306113062130631306413065130661306713068130691307013071130721307313074130751307613077130781307913080130811308213083130841308513086130871308813089130901309113092130931309413095130961309713098130991310013101131021310313104131051310613107131081310913110131111311213113131141311513116131171311813119131201312113122131231312413125131261312713128131291313013131131321313313134131351313613137131381313913140131411314213143131441314513146131471314813149131501315113152131531315413155131561315713158131591316013161131621316313164131651316613167131681316913170131711317213173131741317513176131771317813179131801318113182131831318413185131861318713188131891319013191131921319313194131951319613197131981319913200132011320213203132041320513206132071320813209132101321113212132131321413215132161321713218132191322013221132221322313224132251322613227132281322913230132311323213233132341323513236132371323813239132401324113242132431324413245132461324713248132491325013251132521325313254132551325613257132581325913260132611326213263132641326513266132671326813269132701327113272132731327413275132761327713278132791328013281132821328313284132851328613287132881328913290132911329213293132941329513296132971329813299133001330113302133031330413305133061330713308133091331013311133121331313314133151331613317133181331913320133211332213323133241332513326133271332813329133301333113332133331333413335133361333713338133391334013341133421334313344133451334613347133481334913350133511335213353133541335513356133571335813359133601336113362133631336413365133661336713368133691337013371133721337313374133751337613377133781337913380133811338213383133841338513386133871338813389133901339113392133931339413395133961339713398133991340013401134021340313404134051340613407134081340913410134111341213413134141341513416134171341813419134201342113422134231342413425134261342713428134291343013431134321343313434134351343613437134381343913440134411344213443134441344513446134471344813449134501345113452134531345413455134561345713458134591346013461134621346313464134651346613467134681346913470134711347213473134741347513476134771347813479134801348113482134831348413485134861348713488134891349013491134921349313494134951349613497134981349913500135011350213503135041350513506135071350813509135101351113512135131351413515135161351713518135191352013521135221352313524135251352613527135281352913530135311353213533135341353513536135371353813539135401354113542135431354413545135461354713548135491355013551135521355313554135551355613557135581355913560135611356213563135641356513566135671356813569135701357113572135731357413575135761357713578135791358013581135821358313584135851358613587135881358913590135911359213593135941359513596135971359813599136001360113602136031360413605136061360713608136091361013611136121361313614136151361613617136181361913620136211362213623136241362513626136271362813629136301363113632136331363413635136361363713638136391364013641136421364313644136451364613647136481364913650136511365213653136541365513656136571365813659136601366113662136631366413665136661366713668136691367013671136721367313674136751367613677136781367913680136811368213683136841368513686136871368813689136901369113692136931369413695136961369713698136991370013701137021370313704137051370613707137081370913710137111371213713137141371513716137171371813719137201372113722137231372413725137261372713728137291373013731137321373313734137351373613737137381373913740137411374213743137441374513746137471374813749137501375113752137531375413755137561375713758137591376013761137621376313764137651376613767137681376913770137711377213773137741377513776137771377813779137801378113782137831378413785137861378713788137891379013791137921379313794137951379613797137981379913800138011380213803138041380513806138071380813809138101381113812138131381413815138161381713818138191382013821138221382313824138251382613827138281382913830138311383213833138341383513836138371383813839138401384113842138431384413845138461384713848138491385013851138521385313854138551385613857138581385913860138611386213863138641386513866138671386813869138701387113872138731387413875138761387713878138791388013881138821388313884138851388613887138881388913890138911389213893138941389513896138971389813899139001390113902139031390413905139061390713908139091391013911139121391313914139151391613917139181391913920139211392213923139241392513926139271392813929139301393113932139331393413935139361393713938139391394013941139421394313944139451394613947139481394913950139511395213953139541395513956139571395813959139601396113962139631396413965139661396713968139691397013971139721397313974139751397613977139781397913980139811398213983139841398513986139871398813989139901399113992139931399413995139961399713998139991400014001140021400314004140051400614007140081400914010140111401214013140141401514016140171401814019140201402114022140231402414025140261402714028140291403014031140321403314034140351403614037140381403914040140411404214043140441404514046140471404814049140501405114052140531405414055140561405714058140591406014061140621406314064140651406614067140681406914070140711407214073140741407514076140771407814079140801408114082140831408414085140861408714088140891409014091140921409314094140951409614097140981409914100141011410214103141041410514106141071410814109141101411114112141131411414115141161411714118141191412014121141221412314124141251412614127141281412914130141311413214133141341413514136141371413814139141401414114142141431414414145141461414714148141491415014151141521415314154141551415614157141581415914160141611416214163141641416514166141671416814169141701417114172141731417414175141761417714178141791418014181141821418314184141851418614187141881418914190141911419214193141941419514196141971419814199142001420114202142031420414205142061420714208142091421014211142121421314214142151421614217142181421914220142211422214223142241422514226142271422814229142301423114232142331423414235142361423714238142391424014241142421424314244142451424614247142481424914250142511425214253142541425514256142571425814259142601426114262142631426414265142661426714268142691427014271142721427314274142751427614277142781427914280142811428214283142841428514286142871428814289142901429114292142931429414295142961429714298142991430014301143021430314304143051430614307143081430914310143111431214313143141431514316143171431814319143201432114322143231432414325143261432714328143291433014331143321433314334143351433614337143381433914340143411434214343143441434514346143471434814349143501435114352143531435414355143561435714358143591436014361143621436314364143651436614367143681436914370143711437214373143741437514376143771437814379143801438114382143831438414385143861438714388143891439014391143921439314394143951439614397143981439914400144011440214403144041440514406144071440814409144101441114412144131441414415144161441714418144191442014421144221442314424144251442614427144281442914430144311443214433144341443514436144371443814439144401444114442144431444414445144461444714448144491445014451144521445314454144551445614457144581445914460144611446214463144641446514466144671446814469144701447114472144731447414475144761447714478144791448014481144821448314484144851448614487144881448914490144911449214493144941449514496144971449814499145001450114502145031450414505145061450714508145091451014511145121451314514145151451614517145181451914520145211452214523145241452514526145271452814529145301453114532145331453414535145361453714538145391454014541145421454314544145451454614547145481454914550145511455214553145541455514556145571455814559145601456114562145631456414565145661456714568145691457014571145721457314574145751457614577145781457914580145811458214583145841458514586145871458814589145901459114592145931459414595145961459714598145991460014601146021460314604146051460614607146081460914610146111461214613146141461514616146171461814619146201462114622146231462414625146261462714628146291463014631146321463314634146351463614637146381463914640146411464214643146441464514646146471464814649146501465114652146531465414655146561465714658146591466014661146621466314664146651466614667146681466914670146711467214673146741467514676146771467814679146801468114682146831468414685146861468714688146891469014691146921469314694146951469614697146981469914700147011470214703147041470514706147071470814709147101471114712147131471414715147161471714718147191472014721147221472314724147251472614727147281472914730147311473214733147341473514736147371473814739147401474114742147431474414745147461474714748147491475014751147521475314754147551475614757147581475914760147611476214763147641476514766147671476814769147701477114772147731477414775147761477714778147791478014781147821478314784147851478614787147881478914790147911479214793147941479514796147971479814799148001480114802148031480414805148061480714808148091481014811148121481314814148151481614817148181481914820148211482214823148241482514826148271482814829148301483114832148331483414835148361483714838148391484014841148421484314844148451484614847148481484914850148511485214853148541485514856148571485814859148601486114862148631486414865148661486714868148691487014871148721487314874148751487614877148781487914880148811488214883148841488514886148871488814889148901489114892148931489414895148961489714898148991490014901149021490314904149051490614907149081490914910149111491214913149141491514916149171491814919149201492114922149231492414925149261492714928149291493014931149321493314934149351493614937149381493914940149411494214943149441494514946149471494814949149501495114952149531495414955149561495714958149591496014961149621496314964149651496614967149681496914970149711497214973149741497514976149771497814979149801498114982149831498414985149861498714988149891499014991149921499314994149951499614997149981499915000150011500215003150041500515006150071500815009150101501115012150131501415015150161501715018150191502015021150221502315024150251502615027150281502915030150311503215033150341503515036150371503815039150401504115042150431504415045150461504715048150491505015051150521505315054150551505615057150581505915060150611506215063150641506515066150671506815069150701507115072150731507415075150761507715078150791508015081150821508315084150851508615087150881508915090150911509215093150941509515096150971509815099151001510115102151031510415105151061510715108151091511015111151121511315114151151511615117151181511915120151211512215123151241512515126151271512815129151301513115132151331513415135151361513715138151391514015141151421514315144151451514615147151481514915150151511515215153151541515515156151571515815159151601516115162151631516415165151661516715168151691517015171151721517315174151751517615177151781517915180151811518215183151841518515186151871518815189151901519115192151931519415195151961519715198151991520015201152021520315204152051520615207152081520915210152111521215213152141521515216152171521815219152201522115222152231522415225152261522715228152291523015231152321523315234152351523615237152381523915240152411524215243152441524515246152471524815249152501525115252152531525415255152561525715258152591526015261152621526315264152651526615267152681526915270152711527215273152741527515276152771527815279152801528115282152831528415285152861528715288152891529015291152921529315294152951529615297152981529915300153011530215303153041530515306153071530815309153101531115312153131531415315153161531715318153191532015321153221532315324153251532615327153281532915330153311533215333153341533515336153371533815339153401534115342153431534415345153461534715348153491535015351153521535315354153551535615357153581535915360153611536215363153641536515366153671536815369153701537115372153731537415375153761537715378153791538015381153821538315384153851538615387153881538915390153911539215393153941539515396153971539815399154001540115402154031540415405154061540715408154091541015411154121541315414154151541615417154181541915420154211542215423154241542515426154271542815429154301543115432154331543415435154361543715438154391544015441154421544315444154451544615447154481544915450154511545215453154541545515456154571545815459154601546115462154631546415465154661546715468154691547015471154721547315474154751547615477154781547915480154811548215483154841548515486154871548815489154901549115492154931549415495154961549715498154991550015501155021550315504155051550615507155081550915510155111551215513155141551515516155171551815519155201552115522155231552415525155261552715528155291553015531155321553315534155351553615537155381553915540155411554215543155441554515546155471554815549155501555115552155531555415555155561555715558155591556015561155621556315564155651556615567155681556915570155711557215573155741557515576155771557815579155801558115582155831558415585155861558715588155891559015591155921559315594155951559615597155981559915600156011560215603156041560515606156071560815609156101561115612156131561415615156161561715618156191562015621156221562315624156251562615627156281562915630156311563215633156341563515636156371563815639156401564115642156431564415645156461564715648156491565015651156521565315654156551565615657156581565915660156611566215663156641566515666156671566815669156701567115672156731567415675156761567715678156791568015681156821568315684156851568615687156881568915690156911569215693156941569515696156971569815699157001570115702157031570415705157061570715708157091571015711157121571315714157151571615717157181571915720157211572215723157241572515726157271572815729157301573115732157331573415735157361573715738157391574015741157421574315744157451574615747157481574915750157511575215753157541575515756157571575815759157601576115762157631576415765157661576715768157691577015771157721577315774157751577615777157781577915780157811578215783157841578515786157871578815789157901579115792157931579415795157961579715798157991580015801158021580315804158051580615807158081580915810158111581215813158141581515816158171581815819158201582115822158231582415825158261582715828158291583015831158321583315834158351583615837158381583915840158411584215843158441584515846158471584815849158501585115852158531585415855158561585715858158591586015861158621586315864158651586615867158681586915870158711587215873158741587515876158771587815879158801588115882158831588415885158861588715888158891589015891158921589315894158951589615897158981589915900159011590215903159041590515906159071590815909159101591115912159131591415915159161591715918159191592015921159221592315924159251592615927159281592915930159311593215933159341593515936159371593815939159401594115942159431594415945159461594715948159491595015951159521595315954159551595615957159581595915960159611596215963159641596515966159671596815969159701597115972159731597415975159761597715978159791598015981159821598315984159851598615987159881598915990159911599215993159941599515996159971599815999160001600116002160031600416005160061600716008160091601016011160121601316014160151601616017160181601916020160211602216023160241602516026160271602816029160301603116032160331603416035160361603716038160391604016041160421604316044160451604616047160481604916050160511605216053160541605516056160571605816059160601606116062160631606416065160661606716068160691607016071160721607316074160751607616077160781607916080160811608216083160841608516086160871608816089160901609116092160931609416095160961609716098160991610016101161021610316104161051610616107161081610916110161111611216113161141611516116161171611816119161201612116122161231612416125161261612716128161291613016131161321613316134161351613616137161381613916140161411614216143161441614516146161471614816149161501615116152161531615416155161561615716158161591616016161161621616316164161651616616167161681616916170161711617216173161741617516176161771617816179161801618116182161831618416185161861618716188161891619016191161921619316194161951619616197161981619916200162011620216203162041620516206162071620816209162101621116212162131621416215162161621716218162191622016221162221622316224162251622616227162281622916230162311623216233162341623516236162371623816239162401624116242162431624416245162461624716248162491625016251162521625316254162551625616257162581625916260162611626216263162641626516266162671626816269162701627116272162731627416275162761627716278162791628016281162821628316284162851628616287162881628916290162911629216293162941629516296162971629816299163001630116302163031630416305163061630716308163091631016311163121631316314163151631616317163181631916320163211632216323163241632516326163271632816329163301633116332163331633416335163361633716338163391634016341163421634316344163451634616347163481634916350163511635216353163541635516356163571635816359163601636116362163631636416365163661636716368163691637016371163721637316374163751637616377163781637916380163811638216383163841638516386163871638816389163901639116392163931639416395163961639716398163991640016401164021640316404164051640616407164081640916410164111641216413164141641516416164171641816419164201642116422164231642416425164261642716428164291643016431164321643316434164351643616437164381643916440164411644216443164441644516446164471644816449164501645116452164531645416455164561645716458164591646016461164621646316464164651646616467164681646916470164711647216473164741647516476164771647816479164801648116482164831648416485164861648716488164891649016491164921649316494164951649616497164981649916500165011650216503165041650516506165071650816509165101651116512165131651416515165161651716518165191652016521165221652316524165251652616527165281652916530165311653216533165341653516536165371653816539165401654116542165431654416545165461654716548165491655016551165521655316554165551655616557165581655916560165611656216563165641656516566165671656816569165701657116572165731657416575165761657716578165791658016581165821658316584165851658616587165881658916590165911659216593165941659516596165971659816599166001660116602166031660416605166061660716608166091661016611166121661316614166151661616617166181661916620166211662216623166241662516626166271662816629166301663116632166331663416635166361663716638166391664016641166421664316644166451664616647166481664916650166511665216653166541665516656166571665816659166601666116662166631666416665166661666716668166691667016671166721667316674166751667616677166781667916680166811668216683166841668516686166871668816689166901669116692166931669416695166961669716698166991670016701167021670316704167051670616707167081670916710167111671216713167141671516716167171671816719167201672116722167231672416725167261672716728167291673016731167321673316734167351673616737167381673916740167411674216743167441674516746167471674816749167501675116752167531675416755167561675716758167591676016761167621676316764167651676616767167681676916770167711677216773167741677516776167771677816779167801678116782167831678416785167861678716788167891679016791167921679316794167951679616797167981679916800168011680216803168041680516806168071680816809168101681116812168131681416815168161681716818168191682016821168221682316824168251682616827168281682916830168311683216833168341683516836168371683816839168401684116842168431684416845168461684716848168491685016851168521685316854168551685616857168581685916860168611686216863168641686516866168671686816869168701687116872168731687416875168761687716878168791688016881168821688316884168851688616887168881688916890168911689216893168941689516896168971689816899169001690116902169031690416905169061690716908169091691016911169121691316914169151691616917169181691916920169211692216923169241692516926169271692816929169301693116932169331693416935169361693716938169391694016941169421694316944169451694616947169481694916950169511695216953169541695516956169571695816959169601696116962169631696416965169661696716968169691697016971169721697316974169751697616977169781697916980169811698216983169841698516986169871698816989169901699116992169931699416995169961699716998169991700017001170021700317004170051700617007170081700917010170111701217013170141701517016170171701817019170201702117022170231702417025170261702717028170291703017031170321703317034170351703617037170381703917040170411704217043170441704517046170471704817049170501705117052170531705417055170561705717058170591706017061170621706317064170651706617067170681706917070170711707217073170741707517076170771707817079170801708117082170831708417085170861708717088170891709017091170921709317094170951709617097170981709917100171011710217103171041710517106171071710817109171101711117112171131711417115171161711717118171191712017121171221712317124171251712617127171281712917130171311713217133171341713517136171371713817139171401714117142171431714417145171461714717148171491715017151171521715317154171551715617157171581715917160171611716217163171641716517166171671716817169171701717117172171731717417175171761717717178171791718017181171821718317184171851718617187171881718917190171911719217193171941719517196171971719817199172001720117202172031720417205172061720717208172091721017211172121721317214172151721617217172181721917220172211722217223172241722517226172271722817229172301723117232172331723417235172361723717238172391724017241172421724317244172451724617247172481724917250172511725217253172541725517256172571725817259172601726117262172631726417265172661726717268172691727017271172721727317274172751727617277172781727917280172811728217283172841728517286172871728817289172901729117292172931729417295172961729717298172991730017301173021730317304173051730617307173081730917310173111731217313173141731517316173171731817319173201732117322173231732417325173261732717328173291733017331173321733317334173351733617337173381733917340173411734217343173441734517346173471734817349173501735117352173531735417355173561735717358173591736017361173621736317364173651736617367173681736917370173711737217373173741737517376173771737817379173801738117382173831738417385173861738717388173891739017391173921739317394173951739617397173981739917400174011740217403174041740517406174071740817409174101741117412174131741417415174161741717418174191742017421174221742317424174251742617427174281742917430174311743217433174341743517436174371743817439174401744117442174431744417445174461744717448174491745017451174521745317454174551745617457174581745917460174611746217463174641746517466174671746817469174701747117472174731747417475174761747717478174791748017481174821748317484174851748617487174881748917490174911749217493174941749517496174971749817499175001750117502175031750417505175061750717508175091751017511175121751317514175151751617517175181751917520175211752217523175241752517526175271752817529175301753117532175331753417535175361753717538175391754017541175421754317544175451754617547175481754917550175511755217553175541755517556175571755817559175601756117562175631756417565175661756717568175691757017571175721757317574175751757617577175781757917580175811758217583175841758517586175871758817589175901759117592175931759417595175961759717598175991760017601176021760317604176051760617607176081760917610176111761217613176141761517616176171761817619176201762117622176231762417625176261762717628176291763017631176321763317634176351763617637176381763917640176411764217643176441764517646176471764817649176501765117652176531765417655176561765717658176591766017661176621766317664176651766617667176681766917670176711767217673176741767517676176771767817679176801768117682176831768417685176861768717688176891769017691176921769317694176951769617697176981769917700177011770217703177041770517706177071770817709177101771117712177131771417715177161771717718177191772017721177221772317724177251772617727177281772917730177311773217733177341773517736177371773817739177401774117742177431774417745177461774717748177491775017751177521775317754177551775617757177581775917760177611776217763177641776517766177671776817769177701777117772177731777417775177761777717778177791778017781177821778317784177851778617787177881778917790177911779217793177941779517796177971779817799178001780117802178031780417805178061780717808178091781017811178121781317814178151781617817178181781917820178211782217823178241782517826178271782817829178301783117832178331783417835178361783717838178391784017841178421784317844178451784617847178481784917850178511785217853178541785517856178571785817859178601786117862178631786417865178661786717868178691787017871178721787317874178751787617877178781787917880178811788217883178841788517886178871788817889178901789117892178931789417895178961789717898178991790017901179021790317904179051790617907179081790917910179111791217913179141791517916179171791817919179201792117922179231792417925179261792717928179291793017931179321793317934179351793617937179381793917940179411794217943179441794517946179471794817949179501795117952179531795417955179561795717958179591796017961179621796317964179651796617967179681796917970179711797217973179741797517976179771797817979179801798117982179831798417985179861798717988179891799017991179921799317994179951799617997179981799918000180011800218003180041800518006180071800818009180101801118012180131801418015180161801718018180191802018021180221802318024180251802618027180281802918030180311803218033180341803518036180371803818039180401804118042180431804418045180461804718048180491805018051180521805318054180551805618057180581805918060180611806218063180641806518066180671806818069180701807118072180731807418075180761807718078180791808018081180821808318084180851808618087180881808918090180911809218093180941809518096180971809818099181001810118102181031810418105181061810718108181091811018111181121811318114181151811618117181181811918120181211812218123181241812518126181271812818129181301813118132181331813418135181361813718138181391814018141181421814318144181451814618147181481814918150181511815218153181541815518156181571815818159181601816118162181631816418165181661816718168181691817018171181721817318174181751817618177181781817918180181811818218183181841818518186181871818818189181901819118192181931819418195181961819718198181991820018201182021820318204182051820618207182081820918210182111821218213182141821518216182171821818219182201822118222182231822418225182261822718228182291823018231182321823318234182351823618237182381823918240182411824218243182441824518246182471824818249182501825118252182531825418255182561825718258182591826018261182621826318264182651826618267182681826918270182711827218273182741827518276182771827818279182801828118282182831828418285182861828718288182891829018291182921829318294182951829618297182981829918300183011830218303183041830518306183071830818309183101831118312183131831418315183161831718318183191832018321183221832318324183251832618327183281832918330183311833218333183341833518336183371833818339183401834118342183431834418345183461834718348183491835018351183521835318354183551835618357183581835918360183611836218363183641836518366183671836818369183701837118372183731837418375183761837718378183791838018381183821838318384183851838618387183881838918390183911839218393183941839518396183971839818399184001840118402184031840418405184061840718408184091841018411184121841318414184151841618417184181841918420184211842218423184241842518426184271842818429184301843118432184331843418435184361843718438184391844018441184421844318444184451844618447184481844918450184511845218453184541845518456184571845818459184601846118462184631846418465184661846718468184691847018471184721847318474184751847618477184781847918480184811848218483184841848518486184871848818489184901849118492184931849418495184961849718498184991850018501185021850318504185051850618507185081850918510185111851218513185141851518516185171851818519185201852118522185231852418525185261852718528185291853018531185321853318534185351853618537185381853918540185411854218543185441854518546185471854818549185501855118552185531855418555185561855718558185591856018561185621856318564185651856618567185681856918570185711857218573185741857518576185771857818579185801858118582185831858418585185861858718588185891859018591185921859318594185951859618597185981859918600186011860218603186041860518606186071860818609186101861118612186131861418615186161861718618186191862018621186221862318624186251862618627186281862918630186311863218633186341863518636186371863818639186401864118642186431864418645186461864718648186491865018651186521865318654186551865618657186581865918660186611866218663186641866518666186671866818669186701867118672186731867418675186761867718678186791868018681186821868318684186851868618687186881868918690186911869218693186941869518696186971869818699187001870118702187031870418705187061870718708187091871018711187121871318714187151871618717187181871918720187211872218723187241872518726187271872818729187301873118732187331873418735187361873718738187391874018741187421874318744187451874618747187481874918750187511875218753187541875518756187571875818759187601876118762187631876418765187661876718768187691877018771187721877318774187751877618777187781877918780187811878218783187841878518786187871878818789187901879118792187931879418795187961879718798187991880018801188021880318804188051880618807188081880918810188111881218813188141881518816188171881818819188201882118822188231882418825188261882718828188291883018831188321883318834188351883618837188381883918840188411884218843188441884518846188471884818849188501885118852188531885418855188561885718858188591886018861188621886318864188651886618867188681886918870188711887218873188741887518876188771887818879188801888118882188831888418885188861888718888188891889018891188921889318894188951889618897188981889918900189011890218903189041890518906189071890818909189101891118912189131891418915189161891718918189191892018921189221892318924189251892618927189281892918930189311893218933189341893518936189371893818939189401894118942189431894418945189461894718948189491895018951189521895318954189551895618957189581895918960189611896218963189641896518966189671896818969189701897118972189731897418975189761897718978189791898018981189821898318984189851898618987189881898918990189911899218993189941899518996189971899818999190001900119002190031900419005190061900719008190091901019011190121901319014190151901619017190181901919020190211902219023190241902519026190271902819029190301903119032190331903419035190361903719038190391904019041190421904319044190451904619047190481904919050190511905219053190541905519056190571905819059190601906119062190631906419065190661906719068190691907019071190721907319074190751907619077190781907919080190811908219083190841908519086190871908819089190901909119092190931909419095190961909719098 |
- This document summarizes new features and bugfixes in each stable
- release of Tor. If you want to see more detailed descriptions of the
- changes in each development snapshot, see the ChangeLog file.
- Changes in version 0.3.3.8 - 2018-07-09
- Tor 0.3.3.8 backports several changes from the 0.3.4.x series, including
- fixes for a memory leak affecting directory authorities.
- o Major bugfixes (directory authority, backport from 0.3.4.3-alpha):
- - Stop leaking memory on directory authorities when planning to
- vote. This bug was crashing authorities by exhausting their
- memory. Fixes bug 26435; bugfix on 0.3.3.6.
- o Major bugfixes (rust, testing, backport from 0.3.4.3-alpha):
- - Make sure that failing tests in Rust will actually cause the build
- to fail: previously, they were ignored. Fixes bug 26258; bugfix
- on 0.3.3.4-alpha.
- o Minor features (compilation, backport from 0.3.4.4-rc):
- - When building Tor, prefer to use Python 3 over Python 2, and more
- recent (contemplated) versions over older ones. Closes
- ticket 26372.
- o Minor features (geoip):
- - Update geoip and geoip6 to the July 3 2018 Maxmind GeoLite2
- Country database. Closes ticket 26674.
- o Minor features (relay, diagnostic, backport from 0.3.4.3-alpha):
- - Add several checks to detect whether Tor relays are uploading
- their descriptors without specifying why they regenerated them.
- Diagnostic for ticket 25686.
- o Minor bugfixes (circuit path selection, backport from 0.3.4.1-alpha):
- - Don't count path selection failures as circuit build failures.
- This change should eliminate cases where Tor blames its guard or
- the network for situations like insufficient microdescriptors
- and/or overly restrictive torrc settings. Fixes bug 25705; bugfix
- on 0.3.3.1-alpha.
- o Minor bugfixes (compilation, backport from 0.3.4.4-rc):
- - Fix a compilation warning on some versions of GCC when building
- code that calls routerinfo_get_my_routerinfo() twice, assuming
- that the second call will succeed if the first one did. Fixes bug
- 26269; bugfix on 0.2.8.2-alpha.
- o Minor bugfixes (control port, backport from 0.3.4.4-rc):
- - Handle the HSADDRESS= argument to the HSPOST command properly.
- (Previously, this argument was misparsed and thus ignored.) Fixes
- bug 26523; bugfix on 0.3.3.1-alpha. Patch by "akwizgran".
- o Minor bugfixes (memory, correctness, backport from 0.3.4.4-rc):
- - Fix a number of small memory leaks identified by coverity. Fixes
- bug 26467; bugfix on numerous Tor versions.
- o Minor bugfixes (relay, backport from 0.3.4.3-alpha):
- - Relays now correctly block attempts to re-extend to the previous
- relay by Ed25519 identity. Previously they would warn in this
- case, but not actually reject the attempt. Fixes bug 26158; bugfix
- on 0.3.0.1-alpha.
- o Minor bugfixes (restart-in-process, backport from 0.3.4.1-alpha):
- - When shutting down, Tor now clears all the flags in the control.c
- module. This should prevent a bug where authentication cookies are
- not generated on restart. Fixes bug 25512; bugfix on 0.3.3.1-alpha.
- o Minor bugfixes (testing, compatibility, backport from 0.3.4.4-rc):
- - When running the hs_ntor_ref.py test, make sure only to pass
- strings (rather than "bytes" objects) to the Python subprocess
- module. Python 3 on Windows seems to require this. Fixes bug
- 26535; bugfix on 0.3.1.1-alpha.
- - When running the ntor_ref.py test, make sure only to pass strings
- (rather than "bytes" objects) to the Python subprocess module.
- Python 3 on Windows seems to require this. Fixes bug 26535; bugfix
- on 0.2.5.5-alpha.
- Changes in version 0.3.3.7 - 2018-06-12
- Tor 0.3.3.7 backports several changes from the 0.3.4.x series, including
- fixes for bugs affecting compatibility and stability.
- o Directory authority changes:
- - Add an IPv6 address for the "dannenberg" directory authority.
- Closes ticket 26343.
- o Minor features (geoip):
- - Update geoip and geoip6 to the June 7 2018 Maxmind GeoLite2
- Country database. Closes ticket 26351.
- o Minor bugfixes (compatibility, openssl, backport from 0.3.4.2-alpha):
- - Work around a change in OpenSSL 1.1.1 where return values that
- would previously indicate "no password" now indicate an empty
- password. Without this workaround, Tor instances running with
- OpenSSL 1.1.1 would accept descriptors that other Tor instances
- would reject. Fixes bug 26116; bugfix on 0.2.5.16.
- o Minor bugfixes (compilation, backport from 0.3.4.2-alpha):
- - Silence unused-const-variable warnings in zstd.h with some GCC
- versions. Fixes bug 26272; bugfix on 0.3.1.1-alpha.
- o Minor bugfixes (controller, backport from 0.3.4.2-alpha):
- - Improve accuracy of the BUILDTIMEOUT_SET control port event's
- TIMEOUT_RATE and CLOSE_RATE fields. (We were previously
- miscounting the total number of circuits for these field values.)
- Fixes bug 26121; bugfix on 0.3.3.1-alpha.
- o Minor bugfixes (hardening, backport from 0.3.4.2-alpha):
- - Prevent a possible out-of-bounds smartlist read in
- protover_compute_vote(). Fixes bug 26196; bugfix on 0.2.9.4-alpha.
- o Minor bugfixes (path selection, backport from 0.3.4.1-alpha):
- - Only select relays when they have the descriptors we prefer to use
- for them. This change fixes a bug where we could select a relay
- because it had _some_ descriptor, but reject it later with a
- nonfatal assertion error because it didn't have the exact one we
- wanted. Fixes bugs 25691 and 25692; bugfix on 0.3.3.4-alpha.
- Changes in version 0.3.3.6 - 2018-05-22
- Tor 0.3.3.6 is the first stable release in the 0.3.3 series. It
- backports several important fixes from the 0.3.4.1-alpha.
- The Tor 0.3.3 series includes controller support and other
- improvements for v3 onion services, official support for embedding Tor
- within other applications, and our first non-trivial module written in
- the Rust programming language. (Rust is still not enabled by default
- when building Tor.) And as usual, there are numerous other smaller
- bugfixes, features, and improvements.
- Below are the changes since 0.3.2.10. For a list of only the changes
- since 0.3.3.5-rc, see the ChangeLog file.
- o New system requirements:
- - When built with Rust, Tor now depends on version 0.2.39 of the
- libc crate. Closes tickets 25310 and 25664.
- o Major features (embedding):
- - There is now a documented stable API for programs that need to
- embed Tor. See tor_api.h for full documentation and known bugs.
- Closes ticket 23684.
- - Tor now has support for restarting in the same process.
- Controllers that run Tor using the "tor_api.h" interface can now
- restart Tor after Tor has exited. This support is incomplete,
- however: we fixed crash bugs that prevented it from working at
- all, but many bugs probably remain, including a possibility of
- security issues. Implements ticket 24581.
- o Major features (IPv6, directory documents):
- - Add consensus method 27, which adds IPv6 ORPorts to the microdesc
- consensus. This information makes it easier for IPv6 clients to
- bootstrap and choose reachable entry guards. Implements
- ticket 23826.
- - Add consensus method 28, which removes IPv6 ORPorts from
- microdescriptors. Now that the consensus contains IPv6 ORPorts,
- they are redundant in microdescs. This change will be used by Tor
- clients on 0.2.8.x and later. (That is to say, with all Tor
- clients that have IPv6 bootstrap and guard support.) Implements
- ticket 23828.
- - Expand the documentation for AuthDirHasIPv6Connectivity when it is
- set by different numbers of authorities. Fixes 23870
- on 0.2.4.1-alpha.
- o Major features (onion service v3, control port):
- - The control port now supports commands and events for v3 onion
- services. It is now possible to create ephemeral v3 services using
- ADD_ONION. Additionally, several events (HS_DESC, HS_DESC_CONTENT,
- CIRC and CIRC_MINOR) and commands (GETINFO, HSPOST, ADD_ONION and
- DEL_ONION) have been extended to support v3 onion services. Closes
- ticket 20699; implements proposal 284.
- o Major features (onion services):
- - Provide torrc options to pin the second and third hops of onion
- service circuits to a list of nodes. The option HSLayer2Guards
- pins the second hop, and the option HSLayer3Guards pins the third
- hop. These options are for use in conjunction with experiments
- with "vanguards" for preventing guard enumeration attacks. Closes
- ticket 13837.
- - When v3 onion service clients send introduce cells, they now
- include the IPv6 address of the rendezvous point, if it has one.
- Current v3 onion services running 0.3.2 ignore IPv6 addresses, but
- in future Tor versions, IPv6-only v3 single onion services will be
- able to use IPv6 addresses to connect directly to the rendezvous
- point. Closes ticket 23577. Patch by Neel Chauhan.
- o Major features (relay):
- - Implement an option, ReducedExitPolicy, to allow an Tor exit relay
- operator to use a more reasonable ("reduced") exit policy, rather
- than the default one. If you want to run an exit node without
- thinking too hard about which ports to allow, this one is for you.
- Closes ticket 13605. Patch from Neel Chauhan.
- o Major features (rust, portability, experimental):
- - Tor now ships with an optional implementation of one of its
- smaller modules (protover.c) in the Rust programming language. To
- try it out, install a Rust build environment, and configure Tor
- with "--enable-rust --enable-cargo-online-mode". This should not
- cause any user-visible changes, but should help us gain more
- experience with Rust, and plan future Rust integration work.
- Implementation by Chelsea Komlo. Closes ticket 22840.
- o Major bugfixes (directory authorities, security, backport from 0.3.4.1-alpha):
- - When directory authorities read a zero-byte bandwidth file, they
- would previously log a warning with the contents of an
- uninitialised buffer. They now log a warning about the empty file
- instead. Fixes bug 26007; bugfix on 0.2.2.1-alpha.
- o Major bugfixes (security, directory authority, denial-of-service):
- - Fix a bug that could have allowed an attacker to force a directory
- authority to use up all its RAM by passing it a maliciously
- crafted protocol versions string. Fixes bug 25517; bugfix on
- 0.2.9.4-alpha. This issue is also tracked as TROVE-2018-005.
- o Major bugfixes (crash, backport from 0.3.4.1-alpha):
- - Avoid a rare assertion failure in the circuit build timeout code
- if we fail to allow any circuits to actually complete. Fixes bug
- 25733; bugfix on 0.2.2.2-alpha.
- o Major bugfixes (netflow padding):
- - Stop adding unneeded channel padding right after we finish
- flushing to a connection that has been trying to flush for many
- seconds. Instead, treat all partial or complete flushes as
- activity on the channel, which will defer the time until we need
- to add padding. This fix should resolve confusing and scary log
- messages like "Channel padding timeout scheduled 221453ms in the
- past." Fixes bug 22212; bugfix on 0.3.1.1-alpha.
- o Major bugfixes (networking):
- - Tor will no longer reject IPv6 address strings from Tor Browser
- when they are passed as hostnames in SOCKS5 requests. Fixes bug
- 25036, bugfix on Tor 0.3.1.2.
- o Major bugfixes (onion service, backport from 0.3.4.1-alpha):
- - Correctly detect when onion services get disabled after HUP. Fixes
- bug 25761; bugfix on 0.3.2.1.
- o Major bugfixes (performance, load balancing):
- - Directory authorities no longer vote in favor of the Guard flag
- for relays without directory support. Starting in Tor
- 0.3.0.1-alpha, clients have been avoiding using such relays in the
- Guard position, leading to increasingly broken load balancing for
- the 5%-or-so of Guards that don't advertise directory support.
- Fixes bug 22310; bugfix on 0.3.0.6.
- o Major bugfixes (relay):
- - If we have failed to connect to a relay and received a connection
- refused, timeout, or similar error (at the TCP level), do not try
- that same address/port again for 60 seconds after the failure has
- occurred. Fixes bug 24767; bugfix on 0.0.6.
- o Major bugfixes (relay, denial of service, backport from 0.3.4.1-alpha):
- - Impose a limit on circuit cell queue size. The limit can be
- controlled by a consensus parameter. Fixes bug 25226; bugfix
- on 0.2.4.14-alpha.
- o Minor features (cleanup):
- - Tor now deletes the CookieAuthFile and ExtORPortCookieAuthFile
- when it stops. Closes ticket 23271.
- o Minor features (compatibility, backport from 0.3.4.1-alpha):
- - Avoid some compilation warnings with recent versions of LibreSSL.
- Closes ticket 26006.
- o Minor features (config options):
- - Change the way the default value for MaxMemInQueues is calculated.
- We now use 40% of the hardware RAM if the system has 8 GB RAM or
- more. Otherwise we use the former value of 75%. Closes
- ticket 24782.
- o Minor features (continuous integration):
- - Update the Travis CI configuration to use the stable Rust channel,
- now that we have decided to require that. Closes ticket 25714.
- o Minor features (continuous integration, backport from 0.3.4.1-alpha):
- - Our .travis.yml configuration now includes support for testing the
- results of "make distcheck". (It's not uncommon for "make check"
- to pass but "make distcheck" to fail.) Closes ticket 25814.
- - Our Travis CI configuration now integrates with the Coveralls
- coverage analysis tool. Closes ticket 25818.
- o Minor features (defensive programming):
- - Most of the functions in Tor that free objects have been replaced
- with macros that free the objects and set the corresponding
- pointers to NULL. This change should help prevent a large class of
- dangling pointer bugs. Closes ticket 24337.
- - Where possible, the tor_free() macro now only evaluates its input
- once. Part of ticket 24337.
- - Check that microdesc ed25519 ids are non-zero in
- node_get_ed25519_id() before returning them. Implements ticket
- 24001, patch by "aruna1234".
- o Minor features (directory authority):
- - When directory authorities are unable to add signatures to a
- pending consensus, log the reason why. Closes ticket 24849.
- o Minor features (embedding):
- - Tor can now start with a preauthenticated control connection
- created by the process that launched it. This feature is meant for
- use by programs that want to launch and manage a Tor process
- without allowing other programs to manage it as well. For more
- information, see the __OwningControllerFD option documented in
- control-spec.txt. Closes ticket 23900.
- - On most errors that would cause Tor to exit, it now tries to
- return from the tor_main() function, rather than calling the
- system exit() function. Most users won't notice a difference here,
- but it should be significant for programs that run Tor inside a
- separate thread: they should now be able to survive Tor's exit
- conditions rather than having Tor shut down the entire process.
- Closes ticket 23848.
- - Applications that want to embed Tor can now tell Tor not to
- register any of its own POSIX signal handlers, using the
- __DisableSignalHandlers option. Closes ticket 24588.
- o Minor features (fallback directory list):
- - Avoid selecting fallbacks that change their IP addresses too
- often. Select more fallbacks by ignoring the Guard flag, and
- allowing lower cutoffs for the Running and V2Dir flags. Also allow
- a lower bandwidth, and a higher number of fallbacks per operator
- (5% of the list). Implements ticket 24785.
- - Update the fallback whitelist and blacklist based on opt-ins and
- relay changes. Closes tickets 22321, 24678, 22527, 24135,
- and 24695.
- o Minor features (fallback directory mirror configuration):
- - Add a nickname to each fallback in a C comment. This makes it
- easier for operators to find their relays, and allows stem to use
- nicknames to identify fallbacks. Implements ticket 24600.
- - Add a type and version header to the fallback directory mirror
- file. Also add a delimiter to the end of each fallback entry. This
- helps external parsers like stem and Relay Search. Implements
- ticket 24725.
- - Add an extrainfo cache flag for each fallback in a C comment. This
- allows stem to use fallbacks to fetch extra-info documents, rather
- than using authorities. Implements ticket 22759.
- - Add the generateFallbackDirLine.py script for automatically
- generating fallback directory mirror lines from relay fingerprints.
- No more typos! Add the lookupFallbackDirContact.py script for
- automatically looking up operator contact info from relay
- fingerprints. Implements ticket 24706, patch by teor and atagar.
- - Reject any fallback directory mirror that serves an expired
- consensus. Implements ticket 20942, patch by "minik".
- - Remove commas and equals signs from external string inputs to the
- fallback list. This avoids format confusion attacks. Implements
- ticket 24726.
- - Remove the "weight=10" line from fallback directory mirror
- entries. Ticket 24681 will maintain the current fallback weights
- by changing Tor's default fallback weight to 10. Implements
- ticket 24679.
- - Stop logging excessive information about fallback netblocks.
- Implements ticket 24791.
- o Minor features (forward-compatibility):
- - If a relay supports some link authentication protocol that we do
- not recognize, then include that relay's ed25519 key when telling
- other relays to extend to it. Previously, we treated future
- versions as if they were too old to support ed25519 link
- authentication. Closes ticket 20895.
- o Minor features (geoip):
- - Update geoip and geoip6 to the May 1 2018 Maxmind GeoLite2 Country
- database. Closes ticket 26104.
- o Minor features (heartbeat):
- - Add onion service information to our heartbeat logs, displaying
- stats about the activity of configured onion services. Closes
- ticket 24896.
- o Minor features (instrumentation, development):
- - Add the MainloopStats option to allow developers to get
- instrumentation information from the main event loop via the
- heartbeat messages. We hope to use this to improve Tor's behavior
- when it's trying to sleep. Closes ticket 24605.
- o Minor features (IPv6):
- - Make IPv6-only clients wait for microdescs for relays, even if we
- were previously using descriptors (or were using them as a bridge)
- and have a cached descriptor for them. Implements ticket 23827.
- - When a consensus has IPv6 ORPorts, make IPv6-only clients use
- them, rather than waiting to download microdescriptors. Implements
- ticket 23827.
- o Minor features (log messages):
- - Improve log message in the out-of-memory handler to include
- information about memory usage from the different compression
- backends. Closes ticket 25372.
- - Improve a warning message that happens when we fail to re-parse an
- old router because of an expired certificate. Closes ticket 20020.
- - Make the log more quantitative when we hit MaxMemInQueues
- threshold exposing some values. Closes ticket 24501.
- o Minor features (logging):
- - Clarify the log messages produced when getrandom() or a related
- entropy-generation mechanism gives an error. Closes ticket 25120.
- - Added support for the Android logging subsystem. Closes
- ticket 24362.
- o Minor features (performance):
- - Support predictive circuit building for onion service circuits
- with multiple layers of guards. Closes ticket 23101.
- - Use stdatomic.h where available, rather than mutexes, to implement
- atomic_counter_t. Closes ticket 23953.
- o Minor features (performance, 32-bit):
- - Improve performance on 32-bit systems by avoiding 64-bit division
- when calculating the timestamp in milliseconds for channel padding
- computations. Implements ticket 24613.
- - Improve performance on 32-bit systems by avoiding 64-bit division
- when timestamping cells and buffer chunks for OOM calculations.
- Implements ticket 24374.
- o Minor features (performance, OSX, iOS):
- - Use the mach_approximate_time() function (when available) to
- implement coarse monotonic time. Having a coarse time function
- should avoid a large number of system calls, and improve
- performance slightly, especially under load. Closes ticket 24427.
- o Minor features (performance, windows):
- - Improve performance on Windows Vista and Windows 7 by adjusting
- TCP send window size according to the recommendation from
- SIO_IDEAL_SEND_BACKLOG_QUERY. Closes ticket 22798. Patch
- from Vort.
- o Minor features (sandbox):
- - Explicitly permit the poll() system call when the Linux
- seccomp2-based sandbox is enabled: apparently, some versions of
- libc use poll() when calling getpwnam(). Closes ticket 25313.
- o Minor features (storage, configuration):
- - Users can store cached directory documents somewhere other than
- the DataDirectory by using the CacheDirectory option. Similarly,
- the storage location for relay's keys can be overridden with the
- KeyDirectory option. Closes ticket 22703.
- o Minor features (testing):
- - Add a "make test-rust" target to run the rust tests only. Closes
- ticket 25071.
- o Minor features (testing, debugging, embedding):
- - For development purposes, Tor now has a mode in which it runs for
- a few seconds, then stops, and starts again without exiting the
- process. This mode is meant to help us debug various issues with
- ticket 23847. To use this feature, compile with
- --enable-restart-debugging, and set the TOR_DEBUG_RESTART
- environment variable. This is expected to crash a lot, and is
- really meant for developers only. It will likely be removed in a
- future release. Implements ticket 24583.
- o Minor bugfixes (build, rust):
- - Fix output of autoconf checks to display success messages for Rust
- dependencies and a suitable rustc compiler version. Fixes bug
- 24612; bugfix on 0.3.1.3-alpha.
- - Don't pass the --quiet option to cargo: it seems to suppress some
- errors, which is not what we want to do when building. Fixes bug
- 24518; bugfix on 0.3.1.7.
- - Build correctly when building from outside Tor's source tree with
- the TOR_RUST_DEPENDENCIES option set. Fixes bug 22768; bugfix
- on 0.3.1.7.
- o Minor bugfixes (C correctness):
- - Fix a very unlikely (impossible, we believe) null pointer
- dereference. Fixes bug 25629; bugfix on 0.2.9.15. Found by
- Coverity; this is CID 1430932.
- o Minor bugfixes (channel, client):
- - Better identify client connection when reporting to the geoip
- client cache. Fixes bug 24904; bugfix on 0.3.1.7.
- o Minor bugfixes (circuit, cannibalization):
- - Don't cannibalize preemptively-built circuits if we no longer
- recognize their first hop. This situation can happen if our Guard
- relay went off the consensus after the circuit was created. Fixes
- bug 24469; bugfix on 0.0.6.
- o Minor bugfixes (client, backport from 0.3.4.1-alpha):
- - Don't consider Tor running as a client if the ControlPort is open,
- but no actual client ports are open. Fixes bug 26062; bugfix
- on 0.2.9.4-alpha.
- o Minor bugfixes (compilation):
- - Fix a C99 compliance issue in our configuration script that caused
- compilation issues when compiling Tor with certain versions of
- xtools. Fixes bug 25474; bugfix on 0.3.2.5-alpha.
- o Minor bugfixes (controller):
- - Restore the correct operation of the RESOLVE command, which had
- been broken since we added the ability to enable/disable DNS on
- specific listener ports. Fixes bug 25617; bugfix on 0.2.9.3-alpha.
- - Avoid a (nonfatal) assertion failure when extending a one-hop
- circuit from the controller to become a multihop circuit. Fixes
- bug 24903; bugfix on 0.2.5.2-alpha.
- o Minor bugfixes (correctness):
- - Remove a nonworking, unnecessary check to see whether a circuit
- hop's identity digest was set when the circuit failed. Fixes bug
- 24927; bugfix on 0.2.4.4-alpha.
- o Minor bugfixes (correctness, client, backport from 0.3.4.1-alpha):
- - Upon receiving a malformed connected cell, stop processing the
- cell immediately. Previously we would mark the connection for
- close, but continue processing the cell as if the connection were
- open. Fixes bug 26072; bugfix on 0.2.4.7-alpha.
- o Minor bugfixes (directory authorities, IPv6):
- - When creating a routerstatus (vote) from a routerinfo (descriptor),
- set the IPv6 address to the unspecified IPv6 address, and
- explicitly initialize the port to zero. Fixes bug 24488; bugfix
- on 0.2.4.1-alpha.
- o Minor bugfixes (documentation):
- - Document that the PerConnBW{Rate,Burst} options will fall back to
- their corresponding consensus parameters only if those parameters
- are set. Previously we had claimed that these values would always
- be set in the consensus. Fixes bug 25296; bugfix on 0.2.2.7-alpha.
- o Minor bugfixes (documentation, backport from 0.3.4.1-alpha):
- - Stop saying in the manual that clients cache ipv4 dns answers from
- exit relays. We haven't used them since 0.2.6.3-alpha, and in
- ticket 24050 we stopped even caching them as of 0.3.2.6-alpha, but
- we forgot to say so in the man page. Fixes bug 26052; bugfix
- on 0.3.2.6-alpha.
- o Minor bugfixes (exit relay DNS retries):
- - Re-attempt timed-out DNS queries 3 times before failure, since our
- timeout is 5 seconds for them, but clients wait 10-15. Also allow
- slightly more timeouts per resolver when an exit has multiple
- resolvers configured. Fixes bug 21394; bugfix on 0.3.1.9.
- o Minor bugfixes (fallback directory mirrors):
- - Make updateFallbackDirs.py search harder for python. (Some OSs
- don't put it in /usr/bin.) Fixes bug 24708; bugfix
- on 0.2.8.1-alpha.
- o Minor bugfixes (hibernation, bandwidth accounting, shutdown):
- - When hibernating, close connections normally and allow them to
- flush. Fixes bug 23571; bugfix on 0.2.4.7-alpha. Also fixes
- bug 7267.
- - Do not attempt to launch self-reachability tests when entering
- hibernation. Fixes a case of bug 12062; bugfix on 0.0.9pre5.
- - Resolve several bugs related to descriptor fetching on bridge
- clients with bandwidth accounting enabled. (This combination is
- not recommended!) Fixes a case of bug 12062; bugfix
- on 0.2.0.3-alpha.
- - When hibernating, do not attempt to launch DNS checks. Fixes a
- case of bug 12062; bugfix on 0.1.2.2-alpha.
- - When hibernating, do not try to upload or download descriptors.
- Fixes a case of bug 12062; bugfix on 0.0.9pre5.
- o Minor bugfixes (IPv6, bridges):
- - Tor now always sets IPv6 preferences for bridges. Fixes bug 24573;
- bugfix on 0.2.8.2-alpha.
- - Tor now sets IPv6 address in the routerstatus as well as in the
- router descriptors when updating addresses for a bridge. Closes
- ticket 24572; bugfix on 0.2.4.5-alpha. Patch by "ffmancera".
- o Minor bugfixes (Linux seccomp2 sandbox):
- - When running with the sandbox enabled, reload configuration files
- correctly even when %include was used. Previously we would crash.
- Fixes bug 22605; bugfix on 0.3.1. Patch from Daniel Pinto.
- o Minor bugfixes (Linux seccomp2 sandbox, backport from 0.3.4.1-alpha):
- - Allow the nanosleep() system call, which glibc uses to implement
- sleep() and usleep(). Fixes bug 24969; bugfix on 0.2.5.1-alpha.
- o Minor bugfixes (logging):
- - Fix a (mostly harmless) race condition when invoking
- LOG_PROTOCOL_WARN message from a subthread while the torrc options
- are changing. Fixes bug 23954; bugfix on 0.1.1.9-alpha.
- o Minor bugfixes (man page, SocksPort):
- - Remove dead code from the old "SocksSocket" option, and rename
- SocksSocketsGroupWritable to UnixSocksGroupWritable. The old
- option still works, but is deprecated. Fixes bug 24343; bugfix
- on 0.2.6.3.
- o Minor bugfixes (memory leaks):
- - Avoid possible at-exit memory leaks related to use of Libevent's
- event_base_once() function. (This function tends to leak memory if
- the event_base is closed before the event fires.) Fixes bug 24584;
- bugfix on 0.2.8.1-alpha.
- - Fix a harmless memory leak in tor-resolve. Fixes bug 24582; bugfix
- on 0.2.1.1-alpha.
- o Minor bugfixes (network IPv6 test):
- - Tor's test scripts now check if "ping -6 ::1" works when the user
- runs "make test-network-all". Fixes bug 24677; bugfix on
- 0.2.9.3-alpha. Patch by "ffmancera".
- o Minor bugfixes (networking):
- - string_is_valid_hostname() will not consider IP strings to be
- valid hostnames. Fixes bug 25055; bugfix on Tor 0.2.5.5.
- o Minor bugfixes (onion service v3):
- - Avoid an assertion failure when the next onion service descriptor
- rotation type is out of sync with the consensus's valid-after
- time. Instead, log a warning message with extra information, so we
- can better hunt down the cause of this assertion. Fixes bug 25306;
- bugfix on 0.3.2.1-alpha.
- o Minor bugfixes (onion service, backport from 0.3.4.1-alpha):
- - Fix a memory leak when a v3 onion service is configured and gets a
- SIGHUP signal. Fixes bug 25901; bugfix on 0.3.2.1-alpha.
- - When parsing the descriptor signature, look for the token plus an
- extra white-space at the end. This is more correct but also will
- allow us to support new fields that might start with "signature".
- Fixes bug 26069; bugfix on 0.3.0.1-alpha.
- o Minor bugfixes (onion services):
- - If we are configured to offer a single onion service, don't log
- long-term established one hop rendezvous points in the heartbeat.
- Fixes bug 25116; bugfix on 0.2.9.6-rc.
- o Minor bugfixes (performance):
- - Reduce the number of circuits that will be opened at once during
- the circuit build timeout phase. This is done by increasing the
- idle timeout to 3 minutes, and lowering the maximum number of
- concurrent learning circuits to 10. Fixes bug 24769; bugfix
- on 0.3.1.1-alpha.
- - Avoid calling protocol_list_supports_protocol() from inside tight
- loops when running with cached routerinfo_t objects. Instead,
- summarize the relevant protocols as flags in the routerinfo_t, as
- we do for routerstatus_t objects. This change simplifies our code
- a little, and saves a large amount of short-term memory allocation
- operations. Fixes bug 25008; bugfix on 0.2.9.4-alpha.
- o Minor bugfixes (performance, timeouts):
- - Consider circuits for timeout as soon as they complete a hop. This
- is more accurate than applying the timeout in
- circuit_expire_building() because that function is only called
- once per second, which is now too slow for typical timeouts on the
- current network. Fixes bug 23114; bugfix on 0.2.2.2-alpha.
- - Use onion service circuits (and other circuits longer than 3 hops)
- to calculate a circuit build timeout. Previously, Tor only
- calculated its build timeout based on circuits that planned to be
- exactly 3 hops long. With this change, we include measurements
- from all circuits at the point where they complete their third
- hop. Fixes bug 23100; bugfix on 0.2.2.2-alpha.
- o Minor bugfixes (relay, crash, backport from 0.3.4.1-alpha):
- - Avoid a crash when running with DirPort set but ORPort tuned off.
- Fixes a case of bug 23693; bugfix on 0.3.1.1-alpha.
- o Minor bugfixes (Rust FFI):
- - Fix a minor memory leak which would happen whenever the C code
- would call the Rust implementation of
- protover_get_supported_protocols(). This was due to the C version
- returning a static string, whereas the Rust version newly allocated
- a CString to pass across the FFI boundary. Consequently, the C
- code was not expecting to need to free() what it was given. Fixes
- bug 25127; bugfix on 0.3.2.1-alpha.
- o Minor bugfixes (spelling):
- - Use the "misspell" tool to detect and fix typos throughout the
- source code. Fixes bug 23650; bugfix on various versions of Tor.
- Patch from Deepesh Pathak.
- o Minor bugfixes (testing):
- - Avoid intermittent test failures due to a test that had relied on
- onion service introduction point creation finishing within 5
- seconds of real clock time. Fixes bug 25450; bugfix
- on 0.3.1.3-alpha.
- - Give out Exit flags in bootstrapping networks. Fixes bug 24137;
- bugfix on 0.2.3.1-alpha.
- o Minor bugfixes (unit test, monotonic time):
- - Increase a constant (1msec to 10msec) in the monotonic time test
- that makes sure the nsec/usec/msec times read are synchronized.
- This change was needed to accommodate slow systems like armel or
- when the clock_gettime() is not a VDSO on the running kernel.
- Fixes bug 25113; bugfix on 0.2.9.1.
- o Code simplification and refactoring:
- - Move the list of default directory authorities to its own file.
- Closes ticket 24854. Patch by "beastr0".
- - Remove the old (deterministic) directory retry logic entirely:
- We've used exponential backoff exclusively for some time. Closes
- ticket 23814.
- - Remove the unused nodelist_recompute_all_hsdir_indices(). Closes
- ticket 25108.
- - Remove a series of counters used to track circuit extend attempts
- and connection status but that in reality we aren't using for
- anything other than stats logged by a SIGUSR1 signal. Closes
- ticket 25163.
- - Remove /usr/athena from search path in configure.ac. Closes
- ticket 24363.
- - Remove duplicate code in node_has_curve25519_onion_key() and
- node_get_curve25519_onion_key(), and add a check for a zero
- microdesc curve25519 onion key. Closes ticket 23966, patch by
- "aruna1234" and teor.
- - Rewrite channel_rsa_id_group_set_badness to reduce temporary
- memory allocations with large numbers of OR connections (e.g.
- relays). Closes ticket 24119.
- - Separate the function that deletes ephemeral files when Tor
- stops gracefully.
- - Small changes to Tor's buf_t API to make it suitable for use as a
- general-purpose safe string constructor. Closes ticket 22342.
- - Switch -Wnormalized=id to -Wnormalized=nfkc in configure.ac to
- avoid source code identifier confusion. Closes ticket 24467.
- - The tor_git_revision[] constant no longer needs to be redeclared
- by everything that links against the rest of Tor. Done as part of
- ticket 23845, to simplify our external API.
- - We make extend_info_from_node() use node_get_curve25519_onion_key()
- introduced in ticket 23577 to access the curve25519 public keys
- rather than accessing it directly. Closes ticket 23760. Patch by
- Neel Chauhan.
- - Add a function to log channels' scheduler state changes to aid
- debugging efforts. Closes ticket 24531.
- o Documentation:
- - Improved the documentation of AccountingStart parameter. Closes
- ticket 23635.
- - Update the documentation for "Log" to include the current list of
- logging domains. Closes ticket 25378.
- - Add documentation on how to build tor with Rust dependencies
- without having to be online. Closes ticket 22907; bugfix
- on 0.3.0.3-alpha.
- - Clarify the behavior of RelayBandwidth{Rate,Burst} with client
- traffic. Closes ticket 24318.
- - Document that OutboundBindAddress doesn't apply to DNS requests.
- Closes ticket 22145. Patch from Aruna Maurya.
- o Code simplification and refactoring (channels):
- - Remove the incoming and outgoing channel queues. These were never
- used, but still took up a step in our fast path.
- - The majority of the channel unit tests have been rewritten and the
- code coverage has now been raised to 83.6% for channel.c. Closes
- ticket 23709.
- - Remove other dead code from the channel subsystem: All together,
- this cleanup has removed more than 1500 lines of code overall and
- adding very little except for unit test.
- o Code simplification and refactoring (circuit rendezvous):
- - Split the client-side rendezvous circuit lookup into two
- functions: one that returns only established circuits and another
- that returns all kinds of circuits. Closes ticket 23459.
- o Code simplification and refactoring (controller):
- - Make most of the variables in networkstatus_getinfo_by_purpose()
- const. Implements ticket 24489.
- o Documentation (backport from 0.3.4.1-alpha):
- - Correct an IPv6 error in the documentation for ExitPolicy. Closes
- ticket 25857. Patch from "CTassisF".
- o Documentation (man page):
- - The HiddenServiceVersion torrc option accepts only one number:
- either version 2 or 3. Closes ticket 25026; bugfix
- on 0.3.2.2-alpha.
- o Documentation (manpage, denial of service):
- - Provide more detail about the denial-of-service options, by
- listing each mitigation and explaining how they relate. Closes
- ticket 25248.
- Changes in version 0.3.1.10 - 2018-03-03
- Tor 0.3.1.10 backports a number of bugfixes, including important fixes for
- security issues.
- It includes an important security fix for a remote crash attack
- against directory authorities, tracked as TROVE-2018-001.
- This release also backports our new system for improved resistance to
- denial-of-service attacks against relays.
- This release also fixes several minor bugs and annoyances from
- earlier releases.
- All directory authorities should upgrade to one of the versions
- released today. Relays running 0.3.1.x may wish to update to one of
- the versions released today, for the DoS mitigations.
- Please note: according to our release calendar, Tor 0.3.1 will no
- longer be supported after 1 July 2018. If you will be running Tor
- after that date, you should make sure to plan to upgrade to the latest
- stable version, or downgrade to 0.2.9 (which will receive long-term
- support).
- o Major bugfixes (denial-of-service, directory authority, backport from 0.3.3.3-alpha):
- - Fix a protocol-list handling bug that could be used to remotely crash
- directory authorities with a null-pointer exception. Fixes bug 25074;
- bugfix on 0.2.9.4-alpha. Also tracked as TROVE-2018-001 and
- CVE-2018-0490.
- o Major features (denial-of-service mitigation, backport from 0.3.3.2-alpha):
- - Give relays some defenses against the recent network overload. We
- start with three defenses (default parameters in parentheses).
- First: if a single client address makes too many concurrent
- connections (>100), hang up on further connections. Second: if a
- single client address makes circuits too quickly (more than 3 per
- second, with an allowed burst of 90) while also having too many
- connections open (3), refuse new create cells for the next while
- (1-2 hours). Third: if a client asks to establish a rendezvous
- point to you directly, ignore the request. These defenses can be
- manually controlled by new torrc options, but relays will also
- take guidance from consensus parameters, so there's no need to
- configure anything manually. Implements ticket 24902.
- o Minor features (linux seccomp2 sandbox, backport from 0.3.2.5-alpha):
- - Update the sandbox rules so that they should now work correctly
- with Glibc 2.26. Closes ticket 24315.
- o Major bugfixes (onion services, retry behavior, backport from 0.3.3.1-alpha):
- - Fix an "off by 2" error in counting rendezvous failures on the
- onion service side. While we thought we would stop the rendezvous
- attempt after one failed circuit, we were actually making three
- circuit attempts before giving up. Now switch to a default of 2,
- and allow the consensus parameter "hs_service_max_rdv_failures" to
- override. Fixes bug 24895; bugfix on 0.0.6.
- o Major bugfixes (protocol versions, backport from 0.3.3.2-alpha):
- - Add Link protocol version 5 to the supported protocols list. Fixes
- bug 25070; bugfix on 0.3.1.1-alpha.
- o Major bugfixes (relay, backport from 0.3.3.1-alpha):
- - Fix a set of false positives where relays would consider
- connections to other relays as being client-only connections (and
- thus e.g. deserving different link padding schemes) if those
- relays fell out of the consensus briefly. Now we look only at the
- initial handshake and whether the connection authenticated as a
- relay. Fixes bug 24898; bugfix on 0.3.1.1-alpha.
- o Minor features (denial-of-service avoidance, backport from 0.3.3.2-alpha):
- - Make our OOM handler aware of the geoip client history cache so it
- doesn't fill up the memory. This check is important for IPv6 and
- our DoS mitigation subsystem. Closes ticket 25122.
- o Minor feature (relay statistics, backport from 0.3.2.6-alpha):
- - Change relay bandwidth reporting stats interval from 4 hours to 24
- hours in order to reduce the efficiency of guard discovery
- attacks. Fixes ticket 23856.
- o Minor features (compatibility, OpenSSL, backport from 0.3.3.3-alpha):
- - Tor will now support TLS1.3 once OpenSSL 1.1.1 is released.
- Previous versions of Tor would not have worked with OpenSSL 1.1.1,
- since they neither disabled TLS 1.3 nor enabled any of the
- ciphersuites it requires. Now we enable the TLS 1.3 ciphersuites.
- Closes ticket 24978.
- o Minor features (fallback directory mirrors, backport from 0.3.2.9):
- - The fallback directory list has been re-generated based on the
- current status of the network. Tor uses fallback directories to
- bootstrap when it doesn't yet have up-to-date directory
- information. Closes ticket 24801.
- - Make the default DirAuthorityFallbackRate 0.1, so that clients
- prefer to bootstrap from fallback directory mirrors. This is a
- follow-up to 24679, which removed weights from the default
- fallbacks. Implements ticket 24681.
- o Minor features (geoip):
- - Update geoip and geoip6 to the February 7 2018 Maxmind GeoLite2
- Country database.
- o Minor bugfix (channel connection, backport from 0.3.3.2-alpha):
- - Use the actual observed address of an incoming relay connection,
- not the canonical address of the relay from its descriptor, when
- making decisions about how to handle the incoming connection.
- Fixes bug 24952; bugfix on 0.2.4.11-alpha. Patch by "ffmancera".
- o Minor bugfix (directory authority, backport from 0.3.3.2-alpha):
- - Directory authorities, when refusing a descriptor from a rejected
- relay, now explicitly tell the relay (in its logs) to set a valid
- ContactInfo address and contact the bad-relays@ mailing list.
- Fixes bug 25170; bugfix on 0.2.9.1.
- o Minor bugfixes (address selection, backport from 0.3.2.9):
- - When the fascist_firewall_choose_address_ functions don't find a
- reachable address, set the returned address to the null address
- and port. This is a precautionary measure, because some callers do
- not check the return value. Fixes bug 24736; bugfix
- on 0.2.8.2-alpha.
- o Major bugfixes (bootstrapping, backport from 0.3.2.5-alpha):
- - Fetch descriptors aggressively whenever we lack enough to build
- circuits, regardless of how many descriptors we are missing.
- Previously, we would delay launching the fetch when we had fewer
- than 15 missing descriptors, even if some of those descriptors
- were blocking circuits from building. Fixes bug 23985; bugfix on
- 0.1.1.11-alpha. The effects of this bug became worse in
- 0.3.0.3-alpha, when we began treating missing descriptors from our
- primary guards as a reason to delay circuits.
- - Don't try fetching microdescriptors from relays that have failed
- to deliver them in the past. Fixes bug 23817; bugfix
- on 0.3.0.1-alpha.
- o Minor bugfixes (compilation, backport from 0.3.2.7-rc):
- - Fix a signed/unsigned comparison warning introduced by our fix to
- TROVE-2017-009. Fixes bug 24480; bugfix on 0.2.5.16.
- o Minor bugfixes (control port, linux seccomp2 sandbox, backport from 0.3.2.5-alpha):
- - Avoid a crash when attempting to use the seccomp2 sandbox together
- with the OwningControllerProcess feature. Fixes bug 24198; bugfix
- on 0.2.5.1-alpha.
- o Minor bugfixes (denial-of-service, backport from 0.3.3.3-alpha):
- - Fix a possible crash on malformed consensus. If a consensus had
- contained an unparseable protocol line, it could have made clients
- and relays crash with a null-pointer exception. To exploit this
- issue, however, an attacker would need to be able to subvert the
- directory authority system. Fixes bug 25251; bugfix on
- 0.2.9.4-alpha. Also tracked as TROVE-2018-004.
- o Minor bugfixes (directory cache, backport from 0.3.2.5-alpha):
- - Recover better from empty or corrupt files in the consensus cache
- directory. Fixes bug 24099; bugfix on 0.3.1.1-alpha.
- - When a consensus diff calculation is only partially successful,
- only record the successful parts as having succeeded. Partial
- success can happen if (for example) one compression method fails
- but the others succeed. Previously we misrecorded all the
- calculations as having succeeded, which would later cause a
- nonfatal assertion failure. Fixes bug 24086; bugfix
- on 0.3.1.1-alpha.
- o Minor bugfixes (entry guards, backport from 0.3.2.3-alpha):
- - Tor now updates its guard state when it reads a consensus
- regardless of whether it's missing descriptors. That makes tor use
- its primary guards to fetch descriptors in some edge cases where
- it would previously have used fallback directories. Fixes bug
- 23862; bugfix on 0.3.0.1-alpha.
- o Minor bugfixes (logging, backport from 0.3.3.2-alpha):
- - Don't treat inability to store a cached consensus object as a bug:
- it can happen normally when we are out of disk space. Fixes bug
- 24859; bugfix on 0.3.1.1-alpha.
- o Minor bugfixes (memory usage, backport from 0.3.2.8-rc):
- - When queuing DESTROY cells on a channel, only queue the circuit-id
- and reason fields: not the entire 514-byte cell. This fix should
- help mitigate any bugs or attacks that fill up these queues, and
- free more RAM for other uses. Fixes bug 24666; bugfix
- on 0.2.5.1-alpha.
- o Minor bugfixes (network layer, backport from 0.3.2.5-alpha):
- - When closing a connection via close_connection_immediately(), we
- mark it as "not blocked on bandwidth", to prevent later calls from
- trying to unblock it, and give it permission to read. This fixes a
- backtrace warning that can happen on relays under various
- circumstances. Fixes bug 24167; bugfix on 0.1.0.1-rc.
- o Minor bugfixes (path selection, backport from 0.3.2.4-alpha):
- - When selecting relays by bandwidth, avoid a rounding error that
- could sometimes cause load to be imbalanced incorrectly.
- Previously, we would always round upwards; now, we round towards
- the nearest integer. This had the biggest effect when a relay's
- weight adjustments should have given it weight 0, but it got
- weight 1 instead. Fixes bug 23318; bugfix on 0.2.4.3-alpha.
- - When calculating the fraction of nodes that have descriptors, and
- all nodes in the network have zero bandwidths, count the number of
- nodes instead. Fixes bug 23318; bugfix on 0.2.4.10-alpha.
- - Actually log the total bandwidth in compute_weighted_bandwidths().
- Fixes bug 24170; bugfix on 0.2.4.3-alpha.
- o Minor bugfixes (performance, fragile-hardening, backport from 0.3.3.1-alpha):
- - Improve the performance of our consensus-diff application code
- when Tor is built with the --enable-fragile-hardening option set.
- Fixes bug 24826; bugfix on 0.3.1.1-alpha.
- o Minor bugfixes (OSX, backport from 0.3.3.1-alpha):
- - Don't exit the Tor process if setrlimit() fails to change the file
- limit (which can happen sometimes on some versions of OSX). Fixes
- bug 21074; bugfix on 0.0.9pre5.
- o Minor bugfixes (portability, msvc, backport from 0.3.2.9):
- - Fix a bug in the bit-counting parts of our timing-wheel code on
- MSVC. (Note that MSVC is still not a supported build platform, due
- to cyptographic timing channel risks.) Fixes bug 24633; bugfix
- on 0.2.9.1-alpha.
- o Minor bugfixes (relay, partial backport):
- - Make the internal channel_is_client() function look at what sort
- of connection handshake the other side used, rather than whether
- the other side ever sent a create_fast cell to us. Backports part
- of the fixes from bugs 22805 and 24898.
- o Minor bugfixes (spec conformance, backport from 0.3.3.3-alpha):
- - Forbid "-0" as a protocol version. Fixes part of bug 25249; bugfix on
- 0.2.9.4-alpha.
- - Forbid UINT32_MAX as a protocol version. Fixes part of bug 25249;
- bugfix on 0.2.9.4-alpha.
- o Code simplification and refactoring (backport from 0.3.3.3-alpha):
- - Update the "rust dependencies" submodule to be a project-level
- repository, rather than a user repository. Closes ticket 25323.
- Changes in version 0.2.9.15 - 2018-03-03
- Tor 0.2.9.15 backports important security and stability bugfixes from
- later Tor releases.
- It includes an important security fix for a remote crash attack
- against directory authorities, tracked as TROVE-2018-001.
- This release also backports our new system for improved resistance to
- denial-of-service attacks against relays.
- This release also fixes several minor bugs and annoyances from
- earlier releases.
- All directory authorities should upgrade to one of the versions
- released today. Relays running 0.2.9.x may wish to update to one of
- the versions released today, for the DoS mitigations.
- o Major bugfixes (denial-of-service, directory authority, backport from 0.3.3.3-alpha):
- - Fix a protocol-list handling bug that could be used to remotely crash
- directory authorities with a null-pointer exception. Fixes bug 25074;
- bugfix on 0.2.9.4-alpha. Also tracked as TROVE-2018-001 and
- CVE-2018-0490.
- o Major features (denial-of-service mitigation):
- - Give relays some defenses against the recent network overload. We
- start with three defenses (default parameters in parentheses).
- First: if a single client address makes too many concurrent
- connections (>100), hang up on further connections. Second: if a
- single client address makes circuits too quickly (more than 3 per
- second, with an allowed burst of 90) while also having too many
- connections open (3), refuse new create cells for the next while
- (1-2 hours). Third: if a client asks to establish a rendezvous
- point to you directly, ignore the request. These defenses can be
- manually controlled by new torrc options, but relays will also
- take guidance from consensus parameters, so there's no need to
- configure anything manually. Implements ticket 24902.
- o Major bugfixes (bootstrapping):
- - Fetch descriptors aggressively whenever we lack enough to build
- circuits, regardless of how many descriptors we are missing.
- Previously, we would delay launching the fetch when we had fewer
- than 15 missing descriptors, even if some of those descriptors
- were blocking circuits from building. Fixes bug 23985; bugfix on
- 0.1.1.11-alpha. The effects of this bug became worse in
- 0.3.0.3-alpha, when we began treating missing descriptors from our
- primary guards as a reason to delay circuits.
- o Major bugfixes (onion services, retry behavior):
- - Fix an "off by 2" error in counting rendezvous failures on the
- onion service side. While we thought we would stop the rendezvous
- attempt after one failed circuit, we were actually making three
- circuit attempts before giving up. Now switch to a default of 2,
- and allow the consensus parameter "hs_service_max_rdv_failures" to
- override. Fixes bug 24895; bugfix on 0.0.6.
- o Minor feature (relay statistics):
- - Change relay bandwidth reporting stats interval from 4 hours to 24
- hours in order to reduce the efficiency of guard discovery
- attacks. Fixes ticket 23856.
- o Minor features (compatibility, OpenSSL):
- - Tor will now support TLS1.3 once OpenSSL 1.1.1 is released.
- Previous versions of Tor would not have worked with OpenSSL 1.1.1,
- since they neither disabled TLS 1.3 nor enabled any of the
- ciphersuites it requires. Now we enable the TLS 1.3 ciphersuites.
- Closes ticket 24978.
- o Minor features (denial-of-service avoidance):
- - Make our OOM handler aware of the geoip client history cache so it
- doesn't fill up the memory. This check is important for IPv6 and
- our DoS mitigation subsystem. Closes ticket 25122.
- o Minor features (fallback directory mirrors):
- - The fallback directory list has been re-generated based on the
- current status of the network. Tor uses fallback directories to
- bootstrap when it doesn't yet have up-to-date directory
- information. Closes ticket 24801.
- - Make the default DirAuthorityFallbackRate 0.1, so that clients
- prefer to bootstrap from fallback directory mirrors. This is a
- follow-up to 24679, which removed weights from the default
- fallbacks. Implements ticket 24681.
- o Minor features (geoip):
- - Update geoip and geoip6 to the February 7 2018 Maxmind GeoLite2
- Country database.
- o Minor features (linux seccomp2 sandbox):
- - Update the sandbox rules so that they should now work correctly
- with Glibc 2.26. Closes ticket 24315.
- o Minor bugfix (channel connection):
- - Use the actual observed address of an incoming relay connection,
- not the canonical address of the relay from its descriptor, when
- making decisions about how to handle the incoming connection.
- Fixes bug 24952; bugfix on 0.2.4.11-alpha. Patch by "ffmancera".
- o Minor bugfix (directory authority):
- - Directory authorities, when refusing a descriptor from a rejected
- relay, now explicitly tell the relay (in its logs) to set a valid
- ContactInfo address and contact the bad-relays@ mailing list.
- Fixes bug 25170; bugfix on 0.2.9.1.
- o Minor bugfixes (address selection):
- - When the fascist_firewall_choose_address_ functions don't find a
- reachable address, set the returned address to the null address
- and port. This is a precautionary measure, because some callers do
- not check the return value. Fixes bug 24736; bugfix
- on 0.2.8.2-alpha.
- o Minor bugfixes (compilation):
- - Fix a signed/unsigned comparison warning introduced by our fix to
- TROVE-2017-009. Fixes bug 24480; bugfix on 0.2.5.16.
- o Minor bugfixes (control port, linux seccomp2 sandbox):
- - Avoid a crash when attempting to use the seccomp2 sandbox together
- with the OwningControllerProcess feature. Fixes bug 24198; bugfix
- on 0.2.5.1-alpha.
- o Minor bugfixes (denial-of-service, backport from 0.3.3.3-alpha):
- - Fix a possible crash on malformed consensus. If a consensus had
- contained an unparseable protocol line, it could have made clients
- and relays crash with a null-pointer exception. To exploit this
- issue, however, an attacker would need to be able to subvert the
- directory authority system. Fixes bug 25251; bugfix on
- 0.2.9.4-alpha. Also tracked as TROVE-2018-004.
- o Minor bugfixes (memory usage):
- - When queuing DESTROY cells on a channel, only queue the circuit-id
- and reason fields: not the entire 514-byte cell. This fix should
- help mitigate any bugs or attacks that fill up these queues, and
- free more RAM for other uses. Fixes bug 24666; bugfix
- on 0.2.5.1-alpha.
- o Minor bugfixes (network layer):
- - When closing a connection via close_connection_immediately(), we
- mark it as "not blocked on bandwidth", to prevent later calls from
- trying to unblock it, and give it permission to read. This fixes a
- backtrace warning that can happen on relays under various
- circumstances. Fixes bug 24167; bugfix on 0.1.0.1-rc.
- o Minor bugfixes (OSX):
- - Don't exit the Tor process if setrlimit() fails to change the file
- limit (which can happen sometimes on some versions of OSX). Fixes
- bug 21074; bugfix on 0.0.9pre5.
- o Minor bugfixes (path selection):
- - When selecting relays by bandwidth, avoid a rounding error that
- could sometimes cause load to be imbalanced incorrectly.
- Previously, we would always round upwards; now, we round towards
- the nearest integer. This had the biggest effect when a relay's
- weight adjustments should have given it weight 0, but it got
- weight 1 instead. Fixes bug 23318; bugfix on 0.2.4.3-alpha.
- - When calculating the fraction of nodes that have descriptors, and
- all nodes in the network have zero bandwidths, count the number of
- nodes instead. Fixes bug 23318; bugfix on 0.2.4.10-alpha.
- - Actually log the total bandwidth in compute_weighted_bandwidths().
- Fixes bug 24170; bugfix on 0.2.4.3-alpha.
- o Minor bugfixes (portability, msvc):
- - Fix a bug in the bit-counting parts of our timing-wheel code on
- MSVC. (Note that MSVC is still not a supported build platform, due
- to cryptographic timing channel risks.) Fixes bug 24633; bugfix
- on 0.2.9.1-alpha.
- o Minor bugfixes (relay):
- - Make the internal channel_is_client() function look at what sort
- of connection handshake the other side used, rather than whether
- the other side ever sent a create_fast cell to us. Backports part
- of the fixes from bugs 22805 and 24898.
- o Minor bugfixes (spec conformance, backport from 0.3.3.3-alpha):
- - Forbid "-0" as a protocol version. Fixes part of bug 25249; bugfix on
- 0.2.9.4-alpha.
- - Forbid UINT32_MAX as a protocol version. Fixes part of bug 25249;
- bugfix on 0.2.9.4-alpha.
- Changes in version 0.3.2.10 - 2018-03-03
- Tor 0.3.2.10 is the second stable release in the 0.3.2 series. It
- backports a number of bugfixes, including important fixes for security
- issues.
- It includes an important security fix for a remote crash attack
- against directory authorities, tracked as TROVE-2018-001.
- Additionally, it backports a fix for a bug whose severity we have
- upgraded: Bug 24700, which was fixed in 0.3.3.2-alpha, can be remotely
- triggered in order to crash relays with a use-after-free pattern. As
- such, we are now tracking that bug as TROVE-2018-002 and
- CVE-2018-0491, and backporting it to earlier releases. This bug
- affected versions 0.3.2.1-alpha through 0.3.2.9, as well as version
- 0.3.3.1-alpha.
- This release also backports our new system for improved resistance to
- denial-of-service attacks against relays.
- This release also fixes several minor bugs and annoyances from
- earlier releases.
- Relays running 0.3.2.x SHOULD upgrade to one of the versions released
- today, for the fix to TROVE-2018-002. Directory authorities should
- also upgrade. (Relays on earlier versions might want to update too for
- the DoS mitigations.)
- o Major bugfixes (denial-of-service, directory authority, backport from 0.3.3.3-alpha):
- - Fix a protocol-list handling bug that could be used to remotely crash
- directory authorities with a null-pointer exception. Fixes bug 25074;
- bugfix on 0.2.9.4-alpha. Also tracked as TROVE-2018-001 and
- CVE-2018-0490.
- o Major bugfixes (scheduler, KIST, denial-of-service, backport from 0.3.3.2-alpha):
- - Avoid adding the same channel twice in the KIST scheduler pending
- list, which could lead to remote denial-of-service use-after-free
- attacks against relays. Fixes bug 24700; bugfix on 0.3.2.1-alpha.
- o Major features (denial-of-service mitigation, backport from 0.3.3.2-alpha):
- - Give relays some defenses against the recent network overload. We
- start with three defenses (default parameters in parentheses).
- First: if a single client address makes too many concurrent
- connections (>100), hang up on further connections. Second: if a
- single client address makes circuits too quickly (more than 3 per
- second, with an allowed burst of 90) while also having too many
- connections open (3), refuse new create cells for the next while
- (1-2 hours). Third: if a client asks to establish a rendezvous
- point to you directly, ignore the request. These defenses can be
- manually controlled by new torrc options, but relays will also
- take guidance from consensus parameters, so there's no need to
- configure anything manually. Implements ticket 24902.
- o Major bugfixes (onion services, retry behavior, backport from 0.3.3.1-alpha):
- - Fix an "off by 2" error in counting rendezvous failures on the
- onion service side. While we thought we would stop the rendezvous
- attempt after one failed circuit, we were actually making three
- circuit attempts before giving up. Now switch to a default of 2,
- and allow the consensus parameter "hs_service_max_rdv_failures" to
- override. Fixes bug 24895; bugfix on 0.0.6.
- - New-style (v3) onion services now obey the "max rendezvous circuit
- attempts" logic. Previously they would make as many rendezvous
- circuit attempts as they could fit in the MAX_REND_TIMEOUT second
- window before giving up. Fixes bug 24894; bugfix on 0.3.2.1-alpha.
- o Major bugfixes (protocol versions, backport from 0.3.3.2-alpha):
- - Add Link protocol version 5 to the supported protocols list. Fixes
- bug 25070; bugfix on 0.3.1.1-alpha.
- o Major bugfixes (relay, backport from 0.3.3.1-alpha):
- - Fix a set of false positives where relays would consider
- connections to other relays as being client-only connections (and
- thus e.g. deserving different link padding schemes) if those
- relays fell out of the consensus briefly. Now we look only at the
- initial handshake and whether the connection authenticated as a
- relay. Fixes bug 24898; bugfix on 0.3.1.1-alpha.
- o Major bugfixes (scheduler, consensus, backport from 0.3.3.2-alpha):
- - The scheduler subsystem was failing to promptly notice changes in
- consensus parameters, making it harder to switch schedulers
- network-wide. Fixes bug 24975; bugfix on 0.3.2.1-alpha.
- o Minor features (denial-of-service avoidance, backport from 0.3.3.2-alpha):
- - Make our OOM handler aware of the geoip client history cache so it
- doesn't fill up the memory. This check is important for IPv6 and
- our DoS mitigation subsystem. Closes ticket 25122.
- o Minor features (compatibility, OpenSSL, backport from 0.3.3.3-alpha):
- - Tor will now support TLS1.3 once OpenSSL 1.1.1 is released.
- Previous versions of Tor would not have worked with OpenSSL 1.1.1,
- since they neither disabled TLS 1.3 nor enabled any of the
- ciphersuites it requires. Now we enable the TLS 1.3 ciphersuites.
- Closes ticket 24978.
- o Minor features (geoip):
- - Update geoip and geoip6 to the February 7 2018 Maxmind GeoLite2
- Country database.
- o Minor features (logging, diagnostic, backport from 0.3.3.2-alpha):
- - When logging a failure to create an onion service's descriptor,
- also log what the problem with the descriptor was. Diagnostic
- for ticket 24972.
- o Minor bugfix (channel connection, backport from 0.3.3.2-alpha):
- - Use the actual observed address of an incoming relay connection,
- not the canonical address of the relay from its descriptor, when
- making decisions about how to handle the incoming connection.
- Fixes bug 24952; bugfix on 0.2.4.11-alpha. Patch by "ffmancera".
- o Minor bugfixes (denial-of-service, backport from 0.3.3.3-alpha):
- - Fix a possible crash on malformed consensus. If a consensus had
- contained an unparseable protocol line, it could have made clients
- and relays crash with a null-pointer exception. To exploit this
- issue, however, an attacker would need to be able to subvert the
- directory authority system. Fixes bug 25251; bugfix on
- 0.2.9.4-alpha. Also tracked as TROVE-2018-004.
- o Minor bugfix (directory authority, backport from 0.3.3.2-alpha):
- - Directory authorities, when refusing a descriptor from a rejected
- relay, now explicitly tell the relay (in its logs) to set a valid
- ContactInfo address and contact the bad-relays@ mailing list.
- Fixes bug 25170; bugfix on 0.2.9.1.
- o Minor bugfixes (build, rust, backport from 0.3.3.1-alpha):
- - When building with Rust on OSX, link against libresolv, to work
- around the issue at https:
- Fixes bug 24652; bugfix on 0.3.1.1-alpha.
- o Minor bugfixes (onion services, backport from 0.3.3.2-alpha):
- - Remove a BUG() statement when a client fetches an onion descriptor
- that has a lower revision counter than the one in its cache. This
- can happen in normal circumstances due to HSDir desync. Fixes bug
- 24976; bugfix on 0.3.2.1-alpha.
- o Minor bugfixes (logging, backport from 0.3.3.2-alpha):
- - Don't treat inability to store a cached consensus object as a bug:
- it can happen normally when we are out of disk space. Fixes bug
- 24859; bugfix on 0.3.1.1-alpha.
- o Minor bugfixes (performance, fragile-hardening, backport from 0.3.3.1-alpha):
- - Improve the performance of our consensus-diff application code
- when Tor is built with the --enable-fragile-hardening option set.
- Fixes bug 24826; bugfix on 0.3.1.1-alpha.
- o Minor bugfixes (OSX, backport from 0.3.3.1-alpha):
- - Don't exit the Tor process if setrlimit() fails to change the file
- limit (which can happen sometimes on some versions of OSX). Fixes
- bug 21074; bugfix on 0.0.9pre5.
- o Minor bugfixes (spec conformance, backport from 0.3.3.3-alpha):
- - Forbid "-0" as a protocol version. Fixes part of bug 25249; bugfix on
- 0.2.9.4-alpha.
- - Forbid UINT32_MAX as a protocol version. Fixes part of bug 25249;
- bugfix on 0.2.9.4-alpha.
- o Minor bugfixes (testing, backport from 0.3.3.1-alpha):
- - Fix a memory leak in the scheduler/loop_kist unit test. Fixes bug
- 25005; bugfix on 0.3.2.7-rc.
- o Minor bugfixes (v3 onion services, backport from 0.3.3.2-alpha):
- - Look at the "HSRend" protocol version, not the "HSDir" protocol
- version, when deciding whether a consensus entry can support the
- v3 onion service protocol as a rendezvous point. Fixes bug 25105;
- bugfix on 0.3.2.1-alpha.
- o Code simplification and refactoring (backport from 0.3.3.3-alpha):
- - Update the "rust dependencies" submodule to be a project-level
- repository, rather than a user repository. Closes ticket 25323.
- o Documentation (backport from 0.3.3.1-alpha)
- - Document that operators who run more than one relay or bridge are
- expected to set MyFamily and ContactInfo correctly. Closes
- ticket 24526.
- Changes in version 0.3.2.9 - 2018-01-09
- Tor 0.3.2.9 is the first stable release in the 0.3.2 series.
- The 0.3.2 series includes our long-anticipated new onion service
- design, with numerous security features. (For more information, see
- our blog post at https:
- have a new circuit scheduler algorithm for improved performance on
- relays everywhere (see https:
- along with many smaller features and bugfixes.
- Per our stable release policy, we plan to support each stable release
- series for at least the next nine months, or for three months after
- the first stable release of the next series: whichever is longer. If
- you need a release with long-term support, we recommend that you stay
- with the 0.2.9 series.
- Below is a list of the changes since 0.3.1.7. For a list of all
- changes since 0.3.2.8-rc, see the ChangeLog file.
- o Directory authority changes:
- - Add "Bastet" as a ninth directory authority to the default list.
- Closes ticket 23910.
- - The directory authority "Longclaw" has changed its IP address.
- Closes ticket 23592.
- - Remove longclaw's IPv6 address, as it will soon change. Authority
- IPv6 addresses were originally added in 0.2.8.1-alpha. This leaves
- 3/8 directory authorities with IPv6 addresses, but there are also
- 52 fallback directory mirrors with IPv6 addresses. Resolves 19760.
- - Add an IPv6 address for the "bastet" directory authority. Closes
- ticket 24394.
- o Major features (next-generation onion services):
- - Tor now supports the next-generation onion services protocol for
- clients and services! As part of this release, the core of
- proposal 224 has been implemented and is available for
- experimentation and testing by our users. This newer version of
- onion services ("v3") features many improvements over the legacy
- system, including:
- a) Better crypto (replaced SHA1/DH/RSA1024
- with SHA3/ed25519/curve25519)
- b) Improved directory protocol, leaking much less information to
- directory servers.
- c) Improved directory protocol, with smaller surface for
- targeted attacks.
- d) Better onion address security against impersonation.
- e) More extensible introduction/rendezvous protocol.
- f) A cleaner and more modular codebase.
- You can identify a next-generation onion address by its length:
- they are 56 characters long, as in
- "4acth47i6kxnvkewtm6q7ib2s3ufpo5sqbsnzjpbi7utijcltosqemad.onion".
- In the future, we will release more options and features for v3
- onion services, but we first need a testing period, so that the
- current codebase matures and becomes more robust. Planned features
- include: offline keys, advanced client authorization, improved
- guard algorithms, and statistics. For full details, see
- proposal 224.
- Legacy ("v2") onion services will still work for the foreseeable
- future, and will remain the default until this new codebase gets
- tested and hardened. Service operators who want to experiment with
- the new system can use the 'HiddenServiceVersion 3' torrc
- directive along with the regular onion service configuration
- options. For more information, see our blog post at
- "https://blog.torproject.org/fall-harvest". Enjoy!
- o Major feature (scheduler, channel):
- - Tor now uses new schedulers to decide which circuits should
- deliver cells first, in order to improve congestion at relays. The
- first type is called "KIST" ("Kernel Informed Socket Transport"),
- and is only available on Linux-like systems: it uses feedback from
- the kernel to prevent the kernel's TCP buffers from growing too
- full. The second new scheduler type is called "KISTLite": it
- behaves the same as KIST, but runs on systems without kernel
- support for inspecting TCP implementation details. The old
- scheduler is still available, under the name "Vanilla". To change
- the default scheduler preference order, use the new "Schedulers"
- option. (The default preference order is "KIST,KISTLite,Vanilla".)
- Matt Traudt implemented KIST, based on research by Rob Jansen,
- John Geddes, Christ Wacek, Micah Sherr, and Paul Syverson. For
- more information, see the design paper at
- http:
- followup implementation paper at https:
- Closes ticket 12541. For more information, see our blog post at
- "https://blog.torproject.org/kist-and-tell".
- o Major bugfixes (security, general):
- - Fix a denial of service bug where an attacker could use a
- malformed directory object to cause a Tor instance to pause while
- OpenSSL would try to read a passphrase from the terminal. (Tor
- instances run without a terminal, which is the case for most Tor
- packages, are not impacted.) Fixes bug 24246; bugfix on every
- version of Tor. Also tracked as TROVE-2017-011 and CVE-2017-8821.
- Found by OSS-Fuzz as testcase 6360145429790720.
- o Major bugfixes (security, directory authority):
- - Fix a denial of service issue where an attacker could crash a
- directory authority using a malformed router descriptor. Fixes bug
- 24245; bugfix on 0.2.9.4-alpha. Also tracked as TROVE-2017-010
- and CVE-2017-8820.
- o Major bugfixes (security, onion service v2):
- - Fix a use-after-free error that could crash v2 Tor onion services
- when they failed to open circuits while expiring introduction
- points. Fixes bug 24313; bugfix on 0.2.7.2-alpha. This issue is
- also tracked as TROVE-2017-013 and CVE-2017-8823.
- - When checking for replays in the INTRODUCE1 cell data for a
- (legacy) onion service, correctly detect replays in the RSA-
- encrypted part of the cell. We were previously checking for
- replays on the entire cell, but those can be circumvented due to
- the malleability of Tor's legacy hybrid encryption. This fix helps
- prevent a traffic confirmation attack. Fixes bug 24244; bugfix on
- 0.2.4.1-alpha. This issue is also tracked as TROVE-2017-009
- and CVE-2017-8819.
- o Major bugfixes (security, relay):
- - When running as a relay, make sure that we never build a path
- through ourselves, even in the case where we have somehow lost the
- version of our descriptor appearing in the consensus. Fixes part
- of bug 21534; bugfix on 0.2.0.1-alpha. This issue is also tracked
- as TROVE-2017-012 and CVE-2017-8822.
- - When running as a relay, make sure that we never choose ourselves
- as a guard. Fixes part of bug 21534; bugfix on 0.3.0.1-alpha. This
- issue is also tracked as TROVE-2017-012 and CVE-2017-8822.
- o Major bugfixes (bootstrapping):
- - Fetch descriptors aggressively whenever we lack enough to build
- circuits, regardless of how many descriptors we are missing.
- Previously, we would delay launching the fetch when we had fewer
- than 15 missing descriptors, even if some of those descriptors
- were blocking circuits from building. Fixes bug 23985; bugfix on
- 0.1.1.11-alpha. The effects of this bug became worse in
- 0.3.0.3-alpha, when we began treating missing descriptors from our
- primary guards as a reason to delay circuits.
- - Don't try fetching microdescriptors from relays that have failed
- to deliver them in the past. Fixes bug 23817; bugfix
- on 0.3.0.1-alpha.
- o Major bugfixes (circuit prediction):
- - Fix circuit prediction logic so that a client doesn't treat a port
- as being "handled" by a circuit if that circuit already has
- isolation settings on it. This change should make Tor clients more
- responsive by improving their chances of having a pre-created
- circuit ready for use when a request arrives. Fixes bug 18859;
- bugfix on 0.2.3.3-alpha.
- o Major bugfixes (exit relays, DNS):
- - Fix an issue causing DNS to fail on high-bandwidth exit nodes,
- making them nearly unusable. Fixes bugs 21394 and 18580; bugfix on
- 0.1.2.2-alpha, which introduced eventdns. Thanks to Dhalgren for
- identifying and finding a workaround to this bug and to Moritz,
- Arthur Edelstein, and Roger for helping to track it down and
- analyze it.
- o Major bugfixes (relay, crash, assertion failure):
- - Fix a timing-based assertion failure that could occur when the
- circuit out-of-memory handler freed a connection's output buffer.
- Fixes bug 23690; bugfix on 0.2.6.1-alpha.
- o Major bugfixes (usability, control port):
- - Report trusted clock skew indications as bootstrap errors, so
- controllers can more easily alert users when their clocks are
- wrong. Fixes bug 23506; bugfix on 0.1.2.6-alpha.
- o Minor features (bridge):
- - Bridge relays can now set the BridgeDistribution config option to
- add a "bridge-distribution-request" line to their bridge
- descriptor, which tells BridgeDB how they'd like their bridge
- address to be given out. (Note that as of Oct 2017, BridgeDB does
- not yet implement this feature.) As a side benefit, this feature
- provides a way to distinguish bridge descriptors from non-bridge
- descriptors. Implements tickets 18329.
- - When handling the USERADDR command on an ExtOrPort, warn when the
- transports provides a USERADDR with no port. In a future version,
- USERADDR commands of this format may be rejected. Detects problems
- related to ticket 23080.
- o Minor features (bug detection):
- - Log a warning message with a stack trace for any attempt to call
- get_options() during option validation. This pattern has caused
- subtle bugs in the past. Closes ticket 22281.
- o Minor features (build, compilation):
- - The "check-changes" feature is now part of the "make check" tests;
- we'll use it to try to prevent misformed changes files from
- accumulating. Closes ticket 23564.
- - Tor builds should now fail if there are any mismatches between the
- C type representing a configuration variable and the C type the
- data-driven parser uses to store a value there. Previously, we
- needed to check these by hand, which sometimes led to mistakes.
- Closes ticket 23643.
- o Minor features (client):
- - You can now use Tor as a tunneled HTTP proxy: use the new
- HTTPTunnelPort option to open a port that accepts HTTP CONNECT
- requests. Closes ticket 22407.
- - Add an extra check to make sure that we always use the newer guard
- selection code for picking our guards. Closes ticket 22779.
- - When downloading (micro)descriptors, don't split the list into
- multiple requests unless we want at least 32 descriptors.
- Previously, we split at 4, not 32, which led to significant
- overhead in HTTP request size and degradation in compression
- performance. Closes ticket 23220.
- - Improve log messages when missing descriptors for primary guards.
- Resolves ticket 23670.
- o Minor features (command line):
- - Add a new commandline option, --key-expiration, which prints when
- the current signing key is going to expire. Implements ticket
- 17639; patch by Isis Lovecruft.
- o Minor features (control port):
- - If an application tries to use the control port as an HTTP proxy,
- respond with a meaningful "This is the Tor control port" message,
- and log the event. Closes ticket 1667. Patch from Ravi
- Chandra Padmala.
- - Provide better error message for GETINFO desc/(id|name) when not
- fetching router descriptors. Closes ticket 5847. Patch by
- Kevin Butler.
- - Add GETINFO "{desc,md}/download-enabled", to inform the controller
- whether Tor will try to download router descriptors and
- microdescriptors respectively. Closes ticket 22684.
- - Added new GETINFO targets "ip-to-country/{ipv4,ipv6}-available",
- so controllers can tell whether the geoip databases are loaded.
- Closes ticket 23237.
- - Adds a timestamp field to the CIRC_BW and STREAM_BW bandwidth
- events. Closes ticket 19254. Patch by "DonnchaC".
- o Minor features (development support):
- - Developers can now generate a call-graph for Tor using the
- "calltool" python program, which post-processes object dumps. It
- should work okay on many Linux and OSX platforms, and might work
- elsewhere too. To run it, install calltool from
- https:
- "make callgraph". Closes ticket 19307.
- o Minor features (directory authority):
- - Make the "Exit" flag assignment only depend on whether the exit
- policy allows connections to ports 80 and 443. Previously relays
- would get the Exit flag if they allowed connections to one of
- these ports and also port 6667. Resolves ticket 23637.
- o Minor features (ed25519):
- - Add validation function to checks for torsion components in
- ed25519 public keys, used by prop224 client-side code. Closes
- ticket 22006. Math help by Ian Goldberg.
- o Minor features (exit relay, DNS):
- - Improve the clarity and safety of the log message from evdns when
- receiving an apparently spoofed DNS reply. Closes ticket 3056.
- o Minor features (fallback directory mirrors):
- - The fallback directory list has been re-generated based on the
- current status of the network. Tor uses fallback directories to
- bootstrap when it doesn't yet have up-to-date directory
- information. Closes ticket 24801.
- - Make the default DirAuthorityFallbackRate 0.1, so that clients
- prefer to bootstrap from fallback directory mirrors. This is a
- follow-up to 24679, which removed weights from the default
- fallbacks. Implements ticket 24681.
- o Minor features (geoip):
- - Update geoip and geoip6 to the January 5 2018 Maxmind GeoLite2
- Country database.
- o Minor features (integration, hardening):
- - Add a new NoExec option to prevent Tor from running other
- programs. When this option is set to 1, Tor will never try to run
- another program, regardless of the settings of
- PortForwardingHelper, ClientTransportPlugin, or
- ServerTransportPlugin. Once NoExec is set, it cannot be disabled
- without restarting Tor. Closes ticket 22976.
- o Minor features (linux seccomp2 sandbox):
- - Update the sandbox rules so that they should now work correctly
- with Glibc 2.26. Closes ticket 24315.
- o Minor features (logging):
- - Provide better warnings when the getrandom() syscall fails. Closes
- ticket 24500.
- - Downgrade a pair of log messages that could occur when an exit's
- resolver gave us an unusual (but not forbidden) response. Closes
- ticket 24097.
- - Improve the message we log when re-enabling circuit build timeouts
- after having received a consensus. Closes ticket 20963.
- - Log more circuit information whenever we are about to try to
- package a relay cell on a circuit with a nonexistent n_chan.
- Attempt to diagnose ticket 8185.
- - Improve info-level log identification of particular circuits, to
- help with debugging. Closes ticket 23645.
- - Improve the warning message for specifying a relay by nickname.
- The previous message implied that nickname registration was still
- part of the Tor network design, which it isn't. Closes
- ticket 20488.
- - If the sandbox filter fails to load, suggest to the user that
- their kernel might not support seccomp2. Closes ticket 23090.
- o Minor features (onion service, circuit, logging):
- - Improve logging of many callsite in the circuit subsystem to print
- the circuit identifier(s).
- - Log when we cleanup an intro point from a service so we know when
- and for what reason it happened. Closes ticket 23604.
- o Minor features (portability):
- - Tor now compiles correctly on arm64 with libseccomp-dev installed.
- (It doesn't yet work with the sandbox enabled.) Closes
- ticket 24424.
- - Check at configure time whether uint8_t is the same type as
- unsigned char. Lots of existing code already makes this
- assumption, and there could be strict aliasing issues if the
- assumption is violated. Closes ticket 22410.
- o Minor features (relay):
- - When choosing which circuits can be expired as unused, consider
- circuits from clients even if those clients used regular CREATE
- cells to make them; and do not consider circuits from relays even
- if they were made with CREATE_FAST. Part of ticket 22805.
- - Reject attempts to use relative file paths when RunAsDaemon is
- set. Previously, Tor would accept these, but the directory-
- changing step of RunAsDaemon would give strange and/or confusing
- results. Closes ticket 22731.
- o Minor features (relay statistics):
- - Change relay bandwidth reporting stats interval from 4 hours to 24
- hours in order to reduce the efficiency of guard discovery
- attacks. Fixes ticket 23856.
- o Minor features (reverted deprecations):
- - The ClientDNSRejectInternalAddresses flag can once again be set in
- non-testing Tor networks, so long as they do not use the default
- directory authorities. This change also removes the deprecation of
- this flag from 0.2.9.2-alpha. Closes ticket 21031.
- o Minor features (robustness):
- - Change several fatal assertions when flushing buffers into non-
- fatal assertions, to prevent any recurrence of 23690.
- o Minor features (startup, safety):
- - When configured to write a PID file, Tor now exits if it is unable
- to do so. Previously, it would warn and continue. Closes
- ticket 20119.
- o Minor features (static analysis):
- - The BUG() macro has been changed slightly so that Coverity no
- longer complains about dead code if the bug is impossible. Closes
- ticket 23054.
- o Minor features (testing):
- - Our fuzzing tests now test the encrypted portions of v3 onion
- service descriptors. Implements more of 21509.
- - Add a unit test to make sure that our own generated platform
- string will be accepted by directory authorities. Closes
- ticket 22109.
- - The default chutney network tests now include tests for the v3
- onion service design. Make sure you have the latest version of
- chutney if you want to run these. Closes ticket 22437.
- - Add a unit test to verify that we can parse a hardcoded v2 onion
- service descriptor. Closes ticket 15554.
- o Minor bugfixes (address selection):
- - When the fascist_firewall_choose_address_ functions don't find a
- reachable address, set the returned address to the null address
- and port. This is a precautionary measure, because some callers do
- not check the return value. Fixes bug 24736; bugfix
- on 0.2.8.2-alpha.
- o Minor bugfixes (bootstrapping):
- - When warning about state file clock skew, report the correct
- direction for the detected skew. Fixes bug 23606; bugfix
- on 0.2.8.1-alpha.
- o Minor bugfixes (bridge clients, bootstrap):
- - Retry directory downloads when we get our first bridge descriptor
- during bootstrap or while reconnecting to the network. Keep
- retrying every time we get a bridge descriptor, until we have a
- reachable bridge. Fixes part of bug 24367; bugfix on 0.2.0.3-alpha.
- - Stop delaying bridge descriptor fetches when we have cached bridge
- descriptors. Instead, only delay bridge descriptor fetches when we
- have at least one reachable bridge. Fixes part of bug 24367;
- bugfix on 0.2.0.3-alpha.
- - Stop delaying directory fetches when we have cached bridge
- descriptors. Instead, only delay bridge descriptor fetches when
- all our bridges are definitely unreachable. Fixes part of bug
- 24367; bugfix on 0.2.0.3-alpha.
- o Minor bugfixes (bridge):
- - Overwrite the bridge address earlier in the process of retrieving
- its descriptor, to make sure we reach it on the configured
- address. Fixes bug 20532; bugfix on 0.2.0.10-alpha.
- o Minor bugfixes (build, compilation):
- - Fix a compilation warning when building with zstd support on
- 32-bit platforms. Fixes bug 23568; bugfix on 0.3.1.1-alpha. Found
- and fixed by Andreas Stieger.
- - When searching for OpenSSL, don't accept any OpenSSL library that
- lacks TLSv1_1_method(): Tor doesn't build with those versions.
- Additionally, look in /usr/local/opt/openssl, if it's present.
- These changes together repair the default build on OSX systems
- with Homebrew installed. Fixes bug 23602; bugfix on 0.2.7.2-alpha.
- - Fix a signed/unsigned comparison warning introduced by our fix to
- TROVE-2017-009. Fixes bug 24480; bugfix on 0.2.5.16.
- - Fix a memory leak warning in one of the libevent-related
- configuration tests that could occur when manually specifying
- -fsanitize=address. Fixes bug 24279; bugfix on 0.3.0.2-alpha.
- Found and patched by Alex Xu.
- - Fix unused-variable warnings in donna's Curve25519 SSE2 code.
- Fixes bug 22895; bugfix on 0.2.7.2-alpha.
- o Minor bugfixes (certificate handling):
- - Fix a time handling bug in Tor certificates set to expire after
- the year 2106. Fixes bug 23055; bugfix on 0.3.0.1-alpha. Found by
- Coverity as CID 1415728.
- o Minor bugfixes (client):
- - By default, do not enable storage of client-side DNS values. These
- values were unused by default previously, but they should not have
- been cached at all. Fixes bug 24050; bugfix on 0.2.6.3-alpha.
- o Minor bugfixes (client, usability):
- - Refrain from needlessly rejecting SOCKS5-with-hostnames and
- SOCKS4a requests that contain IP address strings, even when
- SafeSocks in enabled, as this prevents user from connecting to
- known IP addresses without relying on DNS for resolving. SafeSocks
- still rejects SOCKS connections that connect to IP addresses when
- those addresses are _not_ encoded as hostnames. Fixes bug 22461;
- bugfix on Tor 0.2.6.2-alpha.
- o Minor bugfixes (code correctness):
- - Call htons() in extend_cell_format() for encoding a 16-bit value.
- Previously we used ntohs(), which happens to behave the same on
- all the platforms we support, but which isn't really correct.
- Fixes bug 23106; bugfix on 0.2.4.8-alpha.
- - For defense-in-depth, make the controller's write_escaped_data()
- function robust to extremely long inputs. Fixes bug 19281; bugfix
- on 0.1.1.1-alpha. Reported by Guido Vranken.
- - Fix several places in our codebase where a C compiler would be
- likely to eliminate a check, based on assuming that undefined
- behavior had not happened elsewhere in the code. These cases are
- usually a sign of redundant checking or dubious arithmetic. Found
- by Georg Koppen using the "STACK" tool from Wang, Zeldovich,
- Kaashoek, and Solar-Lezama. Fixes bug 24423; bugfix on various
- Tor versions.
- o Minor bugfixes (compression):
- - Handle a pathological case when decompressing Zstandard data when
- the output buffer size is zero. Fixes bug 23551; bugfix
- on 0.3.1.1-alpha.
- o Minor bugfixes (consensus expiry):
- - Check for adequate directory information correctly. Previously, Tor
- would reconsider whether it had sufficient directory information
- every 2 minutes. Fixes bug 23091; bugfix on 0.2.0.19-alpha.
- o Minor bugfixes (control port, linux seccomp2 sandbox):
- - Avoid a crash when attempting to use the seccomp2 sandbox together
- with the OwningControllerProcess feature. Fixes bug 24198; bugfix
- on 0.2.5.1-alpha.
- o Minor bugfixes (control port, onion services):
- - Report "FAILED" instead of "UPLOAD_FAILED" "FAILED" for the
- HS_DESC event when a service is not able to upload a descriptor.
- Fixes bug 24230; bugfix on 0.2.7.1-alpha.
- o Minor bugfixes (directory cache):
- - Recover better from empty or corrupt files in the consensus cache
- directory. Fixes bug 24099; bugfix on 0.3.1.1-alpha.
- - When a consensus diff calculation is only partially successful,
- only record the successful parts as having succeeded. Partial
- success can happen if (for example) one compression method fails
- but the others succeed. Previously we misrecorded all the
- calculations as having succeeded, which would later cause a
- nonfatal assertion failure. Fixes bug 24086; bugfix
- on 0.3.1.1-alpha.
- o Minor bugfixes (directory client):
- - On failure to download directory information, delay retry attempts
- by a random amount based on the "decorrelated jitter" algorithm.
- Our previous delay algorithm tended to produce extra-long delays
- too easily. Fixes bug 23816; bugfix on 0.2.9.1-alpha.
- o Minor bugfixes (directory protocol):
- - Directory servers now include a "Date:" http header for response
- codes other than 200. Clients starting with a skewed clock and a
- recent consensus were getting "304 Not modified" responses from
- directory authorities, so without the Date header, the client
- would never hear about a wrong clock. Fixes bug 23499; bugfix
- on 0.0.8rc1.
- - Make clients wait for 6 seconds before trying to download a
- consensus from an authority. Fixes bug 17750; bugfix
- on 0.2.8.1-alpha.
- o Minor bugfixes (documentation):
- - Document better how to read gcov, and what our gcov postprocessing
- scripts do. Fixes bug 23739; bugfix on 0.2.9.1-alpha.
- - Fix manpage to not refer to the obsolete (and misspelled)
- UseEntryGuardsAsDirectoryGuards parameter in the description of
- NumDirectoryGuards. Fixes bug 23611; bugfix on 0.2.4.8-alpha.
- o Minor bugfixes (DoS-resistance):
- - If future code asks if there are any running bridges, without
- checking if bridges are enabled, log a BUG warning rather than
- crashing. Fixes bug 23524; bugfix on 0.3.0.1-alpha.
- o Minor bugfixes (entry guards):
- - Tor now updates its guard state when it reads a consensus
- regardless of whether it's missing descriptors. That makes tor use
- its primary guards to fetch descriptors in some edge cases where
- it would previously have used fallback directories. Fixes bug
- 23862; bugfix on 0.3.0.1-alpha.
- o Minor bugfixes (format strictness):
- - Restrict several data formats to decimal. Previously, the
- BuildTimeHistogram entries in the state file, the "bw=" entries in
- the bandwidth authority file, and the process IDs passed to the
- __OwningControllerProcess option could all be specified in hex or
- octal as well as in decimal. This was not an intentional feature.
- Fixes bug 22802; bugfixes on 0.2.2.1-alpha, 0.2.2.2-alpha,
- and 0.2.2.28-beta.
- o Minor bugfixes (heartbeat):
- - If we fail to write a heartbeat message, schedule a retry for the
- minimum heartbeat interval number of seconds in the future. Fixes
- bug 19476; bugfix on 0.2.3.1-alpha.
- o Minor bugfixes (logging):
- - Suppress a log notice when relay descriptors arrive. We already
- have a bootstrap progress for this so no need to log notice
- everytime tor receives relay descriptors. Microdescriptors behave
- the same. Fixes bug 23861; bugfix on 0.2.8.2-alpha.
- - Remove duplicate log messages regarding opening non-local
- SocksPorts upon parsing config and opening listeners at startup.
- Fixes bug 4019; bugfix on 0.2.3.3-alpha.
- - Use a more comprehensible log message when telling the user
- they've excluded every running exit node. Fixes bug 7890; bugfix
- on 0.2.2.25-alpha.
- - When logging the number of descriptors we intend to download per
- directory request, do not log a number higher than then the number
- of descriptors we're fetching in total. Fixes bug 19648; bugfix
- on 0.1.1.8-alpha.
- - When warning about a directory owned by the wrong user, log the
- actual name of the user owning the directory. Previously, we'd log
- the name of the process owner twice. Fixes bug 23487; bugfix
- on 0.2.9.1-alpha.
- - Fix some messages on unexpected errors from the seccomp2 library.
- Fixes bug 22750; bugfix on 0.2.5.1-alpha. Patch from "cypherpunks".
- - The tor specification says hop counts are 1-based, so fix two log
- messages that mistakenly logged 0-based hop counts. Fixes bug
- 18982; bugfix on 0.2.6.2-alpha and 0.2.4.5-alpha. Patch by teor.
- Credit to Xiaofan Li for reporting this issue.
- o Minor bugfixes (logging, relay shutdown, annoyance):
- - When a circuit is marked for close, do not attempt to package any
- cells for channels on that circuit. Previously, we would detect
- this condition lower in the call stack, when we noticed that the
- circuit had no attached channel, and log an annoying message.
- Fixes bug 8185; bugfix on 0.2.5.4-alpha.
- o Minor bugfixes (memory safety, defensive programming):
- - Clear the target address when node_get_prim_orport() returns
- early. Fixes bug 23874; bugfix on 0.2.8.2-alpha.
- o Minor bugfixes (memory usage):
- - When queuing DESTROY cells on a channel, only queue the circuit-id
- and reason fields: not the entire 514-byte cell. This fix should
- help mitigate any bugs or attacks that fill up these queues, and
- free more RAM for other uses. Fixes bug 24666; bugfix
- on 0.2.5.1-alpha.
- o Minor bugfixes (network layer):
- - When closing a connection via close_connection_immediately(), we
- mark it as "not blocked on bandwidth", to prevent later calls from
- trying to unblock it, and give it permission to read. This fixes a
- backtrace warning that can happen on relays under various
- circumstances. Fixes bug 24167; bugfix on 0.1.0.1-rc.
- o Minor bugfixes (onion services):
- - The introduction circuit was being timed out too quickly while
- waiting for the rendezvous circuit to complete. Keep the intro
- circuit around longer instead of timing out and reopening new ones
- constantly. Fixes bug 23681; bugfix on 0.2.4.8-alpha.
- - Rename the consensus parameter "hsdir-interval" to "hsdir_interval"
- so it matches dir-spec.txt. Fixes bug 24262; bugfix
- on 0.3.1.1-alpha.
- - When handling multiple SOCKS request for the same .onion address,
- only fetch the service descriptor once.
- - Avoid a possible double close of a circuit by the intro point on
- error of sending the INTRO_ESTABLISHED cell. Fixes bug 23610;
- bugfix on 0.3.0.1-alpha.
- - When reloading configured onion services, copy all information
- from the old service object. Previously, some data was omitted,
- causing delays in descriptor upload, and other bugs. Fixes bug
- 23790; bugfix on 0.2.1.9-alpha.
- o Minor bugfixes (path selection):
- - When selecting relays by bandwidth, avoid a rounding error that
- could sometimes cause load to be imbalanced incorrectly.
- Previously, we would always round upwards; now, we round towards
- the nearest integer. This had the biggest effect when a relay's
- weight adjustments should have given it weight 0, but it got
- weight 1 instead. Fixes bug 23318; bugfix on 0.2.4.3-alpha.
- - When calculating the fraction of nodes that have descriptors, and
- all nodes in the network have zero bandwidths, count the number of
- nodes instead. Fixes bug 23318; bugfix on 0.2.4.10-alpha.
- - Actually log the total bandwidth in compute_weighted_bandwidths().
- Fixes bug 24170; bugfix on 0.2.4.3-alpha.
- o Minor bugfixes (portability):
- - Stop using the PATH_MAX variable, which is not defined on GNU
- Hurd. Fixes bug 23098; bugfix on 0.3.1.1-alpha.
- - Fix a bug in the bit-counting parts of our timing-wheel code on
- MSVC. (Note that MSVC is still not a supported build platform, due
- to cryptographic timing channel risks.) Fixes bug 24633; bugfix
- on 0.2.9.1-alpha.
- o Minor bugfixes (relay):
- - When uploading our descriptor for the first time after startup,
- report the reason for uploading as "Tor just started" rather than
- leaving it blank. Fixes bug 22885; bugfix on 0.2.3.4-alpha.
- - Avoid unnecessary calls to directory_fetches_from_authorities() on
- relays, to prevent spurious address resolutions and descriptor
- rebuilds. This is a mitigation for bug 21789. Fixes bug 23470;
- bugfix on in 0.2.8.1-alpha.
- - Avoid a crash when transitioning from client mode to bridge mode.
- Previously, we would launch the worker threads whenever our
- "public server" mode changed, but not when our "server" mode
- changed. Fixes bug 23693; bugfix on 0.2.6.3-alpha.
- o Minor bugfixes (testing):
- - Fix a spurious fuzzing-only use of an uninitialized value. Found
- by Brian Carpenter. Fixes bug 24082; bugfix on 0.3.0.3-alpha.
- - Test that IPv6-only clients can use microdescriptors when running
- "make test-network-all". Requires chutney master 61c28b9 or later.
- Closes ticket 24109.
- - Prevent scripts/test/coverage from attempting to move gcov output
- to the root directory. Fixes bug 23741; bugfix on 0.2.5.1-alpha.
- - Capture and detect several "Result does not fit" warnings in unit
- tests on platforms with 32-bit time_t. Fixes bug 21800; bugfix
- on 0.2.9.3-alpha.
- - Fix additional channelpadding unit test failures by using mocked
- time instead of actual time for all tests. Fixes bug 23608; bugfix
- on 0.3.1.1-alpha.
- - Fix a bug in our fuzzing mock replacement for crypto_pk_checksig(),
- to correctly handle cases where a caller gives it an RSA key of
- under 160 bits. (This is not actually a bug in Tor itself, but
- rather in our fuzzing code.) Fixes bug 24247; bugfix on
- 0.3.0.3-alpha. Found by OSS-Fuzz as issue 4177.
- - Fix a broken unit test for the OutboundAddress option: the parsing
- function was never returning an error on failure. Fixes bug 23366;
- bugfix on 0.3.0.3-alpha.
- - Fix a signed-integer overflow in the unit tests for
- dir/download_status_random_backoff, which was untriggered until we
- fixed bug 17750. Fixes bug 22924; bugfix on 0.2.9.1-alpha.
- o Minor bugfixes (usability, control port):
- - Stop making an unnecessary routerlist check in NETINFO clock skew
- detection; this was preventing clients from reporting NETINFO clock
- skew to controllers. Fixes bug 23532; bugfix on 0.2.4.4-alpha.
- o Code simplification and refactoring:
- - Remove various ways of testing circuits and connections for
- "clientness"; instead, favor channel_is_client(). Part of
- ticket 22805.
- - Extract the code for handling newly-open channels into a separate
- function from the general code to handle channel state
- transitions. This change simplifies our callgraph, reducing the
- size of the largest strongly connected component by roughly a
- factor of two. Closes ticket 22608.
- - Remove dead code for largely unused statistics on the number of
- times we've attempted various public key operations. Fixes bug
- 19871; bugfix on 0.1.2.4-alpha. Fix by Isis Lovecruft.
- - Remove several now-obsolete functions for asking about old
- variants directory authority status. Closes ticket 22311; patch
- from "huyvq".
- - Remove some of the code that once supported "Named" and "Unnamed"
- routers. Authorities no longer vote for these flags. Closes
- ticket 22215.
- - Rename the obsolete malleable hybrid_encrypt functions used in TAP
- and old hidden services, to indicate that they aren't suitable for
- new protocols or formats. Closes ticket 23026.
- - Replace our STRUCT_OFFSET() macro with offsetof(). Closes ticket
- 22521. Patch from Neel Chauhan.
- - Split the enormous circuit_send_next_onion_skin() function into
- multiple subfunctions. Closes ticket 22804.
- - Split the portions of the buffer.c module that handle particular
- protocols into separate modules. Part of ticket 23149.
- - Use our test macros more consistently, to produce more useful
- error messages when our unit tests fail. Add coccinelle patches to
- allow us to re-check for test macro uses. Closes ticket 22497.
- o Deprecated features:
- - The ReachableDirAddresses and ClientPreferIPv6DirPort options are
- now deprecated; they do not apply to relays, and they have had no
- effect on clients since 0.2.8.x. Closes ticket 19704.
- - Deprecate HTTPProxy/HTTPProxyAuthenticator config options. They
- only applies to direct unencrypted HTTP connections to your
- directory server, which your Tor probably isn't using. Closes
- ticket 20575.
- o Documentation:
- - Add notes in man page regarding OS support for the various
- scheduler types. Attempt to use less jargon in the scheduler
- section. Closes ticket 24254.
- - Clarify that the Address option is entirely about setting an
- advertised IPv4 address. Closes ticket 18891.
- - Clarify the manpage's use of the term "address" to clarify what
- kind of address is intended. Closes ticket 21405.
- - Document that onion service subdomains are allowed, and ignored.
- Closes ticket 18736.
- - Clarify in the manual that "Sandbox 1" is only supported on Linux
- kernels. Closes ticket 22677.
- - Document all values of PublishServerDescriptor in the manpage.
- Closes ticket 15645.
- - Improve the documentation for the directory port part of the
- DirAuthority line. Closes ticket 20152.
- - Restore documentation for the authorities' "approved-routers"
- file. Closes ticket 21148.
- o Removed features:
- - The AllowDotExit option has been removed as unsafe. It has been
- deprecated since 0.2.9.2-alpha. Closes ticket 23426.
- - The ClientDNSRejectInternalAddresses flag can no longer be set on
- non-testing networks. It has been deprecated since 0.2.9.2-alpha.
- Closes ticket 21031.
- - The controller API no longer includes an AUTHDIR_NEWDESCS event:
- nobody was using it any longer. Closes ticket 22377.
- Changes in version 0.3.1.9 - 2017-12-01:
- Tor 0.3.1.9 backports important security and stability fixes from the
- 0.3.2 development series. All Tor users should upgrade to this
- release, or to another of the releases coming out today.
- o Major bugfixes (security, backport from 0.3.2.6-alpha):
- - Fix a denial of service bug where an attacker could use a
- malformed directory object to cause a Tor instance to pause while
- OpenSSL would try to read a passphrase from the terminal. (Tor
- instances run without a terminal, which is the case for most Tor
- packages, are not impacted.) Fixes bug 24246; bugfix on every
- version of Tor. Also tracked as TROVE-2017-011 and CVE-2017-8821.
- Found by OSS-Fuzz as testcase 6360145429790720.
- - Fix a denial of service issue where an attacker could crash a
- directory authority using a malformed router descriptor. Fixes bug
- 24245; bugfix on 0.2.9.4-alpha. Also tracked as TROVE-2017-010
- and CVE-2017-8820.
- - When checking for replays in the INTRODUCE1 cell data for a
- (legacy) onion service, correctly detect replays in the RSA-
- encrypted part of the cell. We were previously checking for
- replays on the entire cell, but those can be circumvented due to
- the malleability of Tor's legacy hybrid encryption. This fix helps
- prevent a traffic confirmation attack. Fixes bug 24244; bugfix on
- 0.2.4.1-alpha. This issue is also tracked as TROVE-2017-009
- and CVE-2017-8819.
- o Major bugfixes (security, onion service v2, backport from 0.3.2.6-alpha):
- - Fix a use-after-free error that could crash v2 Tor onion services
- when they failed to open circuits while expiring introduction
- points. Fixes bug 24313; bugfix on 0.2.7.2-alpha. This issue is
- also tracked as TROVE-2017-013 and CVE-2017-8823.
- o Major bugfixes (security, relay, backport from 0.3.2.6-alpha):
- - When running as a relay, make sure that we never build a path
- through ourselves, even in the case where we have somehow lost the
- version of our descriptor appearing in the consensus. Fixes part
- of bug 21534; bugfix on 0.2.0.1-alpha. This issue is also tracked
- as TROVE-2017-012 and CVE-2017-8822.
- - When running as a relay, make sure that we never choose ourselves
- as a guard. Fixes part of bug 21534; bugfix on 0.3.0.1-alpha. This
- issue is also tracked as TROVE-2017-012 and CVE-2017-8822.
- o Major bugfixes (exit relays, DNS, backport from 0.3.2.4-alpha):
- - Fix an issue causing DNS to fail on high-bandwidth exit nodes,
- making them nearly unusable. Fixes bugs 21394 and 18580; bugfix on
- 0.1.2.2-alpha, which introduced eventdns. Thanks to Dhalgren for
- identifying and finding a workaround to this bug and to Moritz,
- Arthur Edelstein, and Roger for helping to track it down and
- analyze it.
- o Minor features (bridge):
- - Bridges now include notice in their descriptors that they are
- bridges, and notice of their distribution status, based on their
- publication settings. Implements ticket 18329. For more fine-
- grained control of how a bridge is distributed, upgrade to 0.3.2.x
- or later.
- o Minor features (directory authority, backport from 0.3.2.6-alpha):
- - Add an IPv6 address for the "bastet" directory authority. Closes
- ticket 24394.
- o Minor features (geoip):
- - Update geoip and geoip6 to the November 6 2017 Maxmind GeoLite2
- Country database.
- o Minor bugfix (relay address resolution, backport from 0.3.2.1-alpha):
- - Avoid unnecessary calls to directory_fetches_from_authorities() on
- relays, to prevent spurious address resolutions and descriptor
- rebuilds. This is a mitigation for bug 21789. Fixes bug 23470;
- bugfix on in 0.2.8.1-alpha.
- o Minor bugfixes (compilation, backport from 0.3.2.1-alpha):
- - Fix unused variable warnings in donna's Curve25519 SSE2 code.
- Fixes bug 22895; bugfix on 0.2.7.2-alpha.
- o Minor bugfixes (logging, relay shutdown, annoyance, backport from 0.3.2.2-alpha):
- - When a circuit is marked for close, do not attempt to package any
- cells for channels on that circuit. Previously, we would detect
- this condition lower in the call stack, when we noticed that the
- circuit had no attached channel, and log an annoying message.
- Fixes bug 8185; bugfix on 0.2.5.4-alpha.
- o Minor bugfixes (onion service, backport from 0.3.2.5-alpha):
- - Rename the consensus parameter "hsdir-interval" to "hsdir_interval"
- so it matches dir-spec.txt. Fixes bug 24262; bugfix
- on 0.3.1.1-alpha.
- o Minor bugfixes (relay, crash, backport from 0.3.2.4-alpha):
- - Avoid a crash when transitioning from client mode to bridge mode.
- Previously, we would launch the worker threads whenever our
- "public server" mode changed, but not when our "server" mode
- changed. Fixes bug 23693; bugfix on 0.2.6.3-alpha.
- Changes in version 0.3.0.13 - 2017-12-01
- Tor 0.3.0.13 backports important security and stability bugfixes from
- later Tor releases. All Tor users should upgrade to this release, or
- to another of the releases coming out today.
- Note: the Tor 0.3.0 series will no longer be supported after 26 Jan
- 2018. If you need a release with long-term support, please stick with
- the 0.2.9 series. Otherwise, please upgrade to 0.3.1 or later.
- o Major bugfixes (security, backport from 0.3.2.6-alpha):
- - Fix a denial of service bug where an attacker could use a
- malformed directory object to cause a Tor instance to pause while
- OpenSSL would try to read a passphrase from the terminal. (Tor
- instances run without a terminal, which is the case for most Tor
- packages, are not impacted.) Fixes bug 24246; bugfix on every
- version of Tor. Also tracked as TROVE-2017-011 and CVE-2017-8821.
- Found by OSS-Fuzz as testcase 6360145429790720.
- - Fix a denial of service issue where an attacker could crash a
- directory authority using a malformed router descriptor. Fixes bug
- 24245; bugfix on 0.2.9.4-alpha. Also tracked as TROVE-2017-010
- and CVE-2017-8820.
- - When checking for replays in the INTRODUCE1 cell data for a
- (legacy) onion service, correctly detect replays in the RSA-
- encrypted part of the cell. We were previously checking for
- replays on the entire cell, but those can be circumvented due to
- the malleability of Tor's legacy hybrid encryption. This fix helps
- prevent a traffic confirmation attack. Fixes bug 24244; bugfix on
- 0.2.4.1-alpha. This issue is also tracked as TROVE-2017-009
- and CVE-2017-8819.
- o Major bugfixes (security, onion service v2, backport from 0.3.2.6-alpha):
- - Fix a use-after-free error that could crash v2 Tor onion services
- when they failed to open circuits while expiring introduction
- points. Fixes bug 24313; bugfix on 0.2.7.2-alpha. This issue is
- also tracked as TROVE-2017-013 and CVE-2017-8823.
- o Major bugfixes (security, relay, backport from 0.3.2.6-alpha):
- - When running as a relay, make sure that we never build a path
- through ourselves, even in the case where we have somehow lost the
- version of our descriptor appearing in the consensus. Fixes part
- of bug 21534; bugfix on 0.2.0.1-alpha. This issue is also tracked
- as TROVE-2017-012 and CVE-2017-8822.
- - When running as a relay, make sure that we never choose ourselves
- as a guard. Fixes part of bug 21534; bugfix on 0.3.0.1-alpha. This
- issue is also tracked as TROVE-2017-012 and CVE-2017-8822.
- o Major bugfixes (exit relays, DNS, backport from 0.3.2.4-alpha):
- - Fix an issue causing DNS to fail on high-bandwidth exit nodes,
- making them nearly unusable. Fixes bugs 21394 and 18580; bugfix on
- 0.1.2.2-alpha, which introduced eventdns. Thanks to Dhalgren for
- identifying and finding a workaround to this bug and to Moritz,
- Arthur Edelstein, and Roger for helping to track it down and
- analyze it.
- o Minor features (security, windows, backport from 0.3.1.1-alpha):
- - Enable a couple of pieces of Windows hardening: one
- (HeapEnableTerminationOnCorruption) that has been on-by-default
- since Windows 8, and unavailable before Windows 7; and one
- (PROCESS_DEP_DISABLE_ATL_THUNK_EMULATION) which we believe doesn't
- affect us, but shouldn't do any harm. Closes ticket 21953.
- o Minor features (bridge, backport from 0.3.1.9):
- - Bridges now include notice in their descriptors that they are
- bridges, and notice of their distribution status, based on their
- publication settings. Implements ticket 18329. For more fine-
- grained control of how a bridge is distributed, upgrade to 0.3.2.x
- or later.
- o Minor features (directory authority, backport from 0.3.2.6-alpha):
- - Add an IPv6 address for the "bastet" directory authority. Closes
- ticket 24394.
- o Minor features (geoip):
- - Update geoip and geoip6 to the November 6 2017 Maxmind GeoLite2
- Country database.
- o Minor bugfix (relay address resolution, backport from 0.3.2.1-alpha):
- - Avoid unnecessary calls to directory_fetches_from_authorities() on
- relays, to prevent spurious address resolutions and descriptor
- rebuilds. This is a mitigation for bug 21789. Fixes bug 23470;
- bugfix on in 0.2.8.1-alpha.
- o Minor bugfixes (compilation, backport from 0.3.2.1-alpha):
- - Fix unused variable warnings in donna's Curve25519 SSE2 code.
- Fixes bug 22895; bugfix on 0.2.7.2-alpha.
- o Minor bugfixes (logging, relay shutdown, annoyance, backport from 0.3.2.2-alpha):
- - When a circuit is marked for close, do not attempt to package any
- cells for channels on that circuit. Previously, we would detect
- this condition lower in the call stack, when we noticed that the
- circuit had no attached channel, and log an annoying message.
- Fixes bug 8185; bugfix on 0.2.5.4-alpha.
- o Minor bugfixes (relay, crash, backport from 0.3.2.4-alpha):
- - Avoid a crash when transitioning from client mode to bridge mode.
- Previously, we would launch the worker threads whenever our
- "public server" mode changed, but not when our "server" mode
- changed. Fixes bug 23693; bugfix on 0.2.6.3-alpha.
- o Minor bugfixes (testing, backport from 0.3.1.6-rc):
- - Fix an undersized buffer in test-memwipe.c. Fixes bug 23291;
- bugfix on 0.2.7.2-alpha. Found and patched by Ties Stuij.
- Changes in version 0.2.9.14 - 2017-12-01
- Tor 0.3.0.13 backports important security and stability bugfixes from
- later Tor releases. All Tor users should upgrade to this release, or
- to another of the releases coming out today.
- o Major bugfixes (exit relays, DNS, backport from 0.3.2.4-alpha):
- - Fix an issue causing DNS to fail on high-bandwidth exit nodes,
- making them nearly unusable. Fixes bugs 21394 and 18580; bugfix on
- 0.1.2.2-alpha, which introduced eventdns. Thanks to Dhalgren for
- identifying and finding a workaround to this bug and to Moritz,
- Arthur Edelstein, and Roger for helping to track it down and
- analyze it.
- o Major bugfixes (security, backport from 0.3.2.6-alpha):
- - Fix a denial of service bug where an attacker could use a
- malformed directory object to cause a Tor instance to pause while
- OpenSSL would try to read a passphrase from the terminal. (Tor
- instances run without a terminal, which is the case for most Tor
- packages, are not impacted.) Fixes bug 24246; bugfix on every
- version of Tor. Also tracked as TROVE-2017-011 and CVE-2017-8821.
- Found by OSS-Fuzz as testcase 6360145429790720.
- - Fix a denial of service issue where an attacker could crash a
- directory authority using a malformed router descriptor. Fixes bug
- 24245; bugfix on 0.2.9.4-alpha. Also tracked as TROVE-2017-010
- and CVE-2017-8820.
- - When checking for replays in the INTRODUCE1 cell data for a
- (legacy) onion service, correctly detect replays in the RSA-
- encrypted part of the cell. We were previously checking for
- replays on the entire cell, but those can be circumvented due to
- the malleability of Tor's legacy hybrid encryption. This fix helps
- prevent a traffic confirmation attack. Fixes bug 24244; bugfix on
- 0.2.4.1-alpha. This issue is also tracked as TROVE-2017-009
- and CVE-2017-8819.
- o Major bugfixes (security, onion service v2, backport from 0.3.2.6-alpha):
- - Fix a use-after-free error that could crash v2 Tor onion services
- when they failed to open circuits while expiring introduction
- points. Fixes bug 24313; bugfix on 0.2.7.2-alpha. This issue is
- also tracked as TROVE-2017-013 and CVE-2017-8823.
- o Major bugfixes (security, relay, backport from 0.3.2.6-alpha):
- - When running as a relay, make sure that we never build a path
- through ourselves, even in the case where we have somehow lost the
- version of our descriptor appearing in the consensus. Fixes part
- of bug 21534; bugfix on 0.2.0.1-alpha. This issue is also tracked
- as TROVE-2017-012 and CVE-2017-8822.
- o Minor features (bridge, backport from 0.3.1.9):
- - Bridges now include notice in their descriptors that they are
- bridges, and notice of their distribution status, based on their
- publication settings. Implements ticket 18329. For more fine-
- grained control of how a bridge is distributed, upgrade to 0.3.2.x
- or later.
- o Minor features (directory authority, backport from 0.3.2.6-alpha):
- - Add an IPv6 address for the "bastet" directory authority. Closes
- ticket 24394.
- o Minor features (geoip):
- - Update geoip and geoip6 to the November 6 2017 Maxmind GeoLite2
- Country database.
- o Minor features (security, windows, backport from 0.3.1.1-alpha):
- - Enable a couple of pieces of Windows hardening: one
- (HeapEnableTerminationOnCorruption) that has been on-by-default
- since Windows 8, and unavailable before Windows 7; and one
- (PROCESS_DEP_DISABLE_ATL_THUNK_EMULATION) which we believe doesn't
- affect us, but shouldn't do any harm. Closes ticket 21953.
- o Minor bugfix (relay address resolution, backport from 0.3.2.1-alpha):
- - Avoid unnecessary calls to directory_fetches_from_authorities() on
- relays, to prevent spurious address resolutions and descriptor
- rebuilds. This is a mitigation for bug 21789. Fixes bug 23470;
- bugfix on in 0.2.8.1-alpha.
- o Minor bugfixes (compilation, backport from 0.3.2.1-alpha):
- - Fix unused variable warnings in donna's Curve25519 SSE2 code.
- Fixes bug 22895; bugfix on 0.2.7.2-alpha.
- o Minor bugfixes (logging, relay shutdown, annoyance, backport from 0.3.2.2-alpha):
- - When a circuit is marked for close, do not attempt to package any
- cells for channels on that circuit. Previously, we would detect
- this condition lower in the call stack, when we noticed that the
- circuit had no attached channel, and log an annoying message.
- Fixes bug 8185; bugfix on 0.2.5.4-alpha.
- o Minor bugfixes (relay, crash, backport from 0.3.2.4-alpha):
- - Avoid a crash when transitioning from client mode to bridge mode.
- Previously, we would launch the worker threads whenever our
- "public server" mode changed, but not when our "server" mode
- changed. Fixes bug 23693; bugfix on 0.2.6.3-alpha.
- o Minor bugfixes (testing, backport from 0.3.1.6-rc):
- - Fix an undersized buffer in test-memwipe.c. Fixes bug 23291;
- bugfix on 0.2.7.2-alpha. Found and patched by Ties Stuij.
- Changes in version 0.2.8.17 - 2017-12-01
- Tor 0.2.8.17 backports important security and stability bugfixes from
- later Tor releases. All Tor users should upgrade to this release, or
- to another of the releases coming out today.
- Note: the Tor 0.2.8 series will no longer be supported after 1 Jan
- 2018. If you need a release with long-term support, please upgrade with
- the 0.2.9 series. Otherwise, please upgrade to 0.3.1 or later.
- o Major bugfixes (security, backport from 0.3.2.6-alpha):
- - Fix a denial of service bug where an attacker could use a
- malformed directory object to cause a Tor instance to pause while
- OpenSSL would try to read a passphrase from the terminal. (Tor
- instances run without a terminal, which is the case for most Tor
- packages, are not impacted.) Fixes bug 24246; bugfix on every
- version of Tor. Also tracked as TROVE-2017-011 and CVE-2017-8821.
- Found by OSS-Fuzz as testcase 6360145429790720.
- - When checking for replays in the INTRODUCE1 cell data for a
- (legacy) onion service, correctly detect replays in the RSA-
- encrypted part of the cell. We were previously checking for
- replays on the entire cell, but those can be circumvented due to
- the malleability of Tor's legacy hybrid encryption. This fix helps
- prevent a traffic confirmation attack. Fixes bug 24244; bugfix on
- 0.2.4.1-alpha. This issue is also tracked as TROVE-2017-009
- and CVE-2017-8819.
- o Major bugfixes (security, onion service v2, backport from 0.3.2.6-alpha):
- - Fix a use-after-free error that could crash v2 Tor onion services
- when they failed to open circuits while expiring introduction
- points. Fixes bug 24313; bugfix on 0.2.7.2-alpha. This issue is
- also tracked as TROVE-2017-013 and CVE-2017-8823.
- o Major bugfixes (security, relay, backport from 0.3.2.6-alpha):
- - When running as a relay, make sure that we never build a path through
- ourselves, even in the case where we have somehow lost the version of
- our descriptor appearing in the consensus. Fixes part of bug 21534;
- bugfix on 0.2.0.1-alpha. This issue is also tracked as TROVE-2017-012
- and CVE-2017-8822.
- o Minor features (bridge, backport from 0.3.1.9):
- - Bridges now include notice in their descriptors that they are
- bridges, and notice of their distribution status, based on their
- publication settings. Implements ticket 18329. For more fine-
- grained control of how a bridge is distributed, upgrade to 0.3.2.x
- or later.
- o Minor features (directory authority, backport from 0.3.2.6-alpha):
- - Add an IPv6 address for the "bastet" directory authority. Closes
- ticket 24394.
- o Minor features (geoip):
- - Update geoip and geoip6 to the November 6 2017 Maxmind GeoLite2
- Country database.
- o Minor bugfixes (testing, backport from 0.3.1.6-rc):
- - Fix an undersized buffer in test-memwipe.c. Fixes bug 23291;
- bugfix on 0.2.7.2-alpha. Found and patched by Ties Stuij.
- Changes in version 0.2.5.16 - 2017-12-01
- Tor 0.2.5.13 backports important security and stability bugfixes from
- later Tor releases. All Tor users should upgrade to this release, or
- to another of the releases coming out today.
- Note: the Tor 0.2.5 series will no longer be supported after 1 May
- 2018. If you need a release with long-term support, please upgrade to
- the 0.2.9 series. Otherwise, please upgrade to 0.3.1 or later.
- o Major bugfixes (security, backport from 0.3.2.6-alpha):
- - Fix a denial of service bug where an attacker could use a
- malformed directory object to cause a Tor instance to pause while
- OpenSSL would try to read a passphrase from the terminal. (Tor
- instances run without a terminal, which is the case for most Tor
- packages, are not impacted.) Fixes bug 24246; bugfix on every
- version of Tor. Also tracked as TROVE-2017-011 and CVE-2017-8821.
- Found by OSS-Fuzz as testcase 6360145429790720.
- - When checking for replays in the INTRODUCE1 cell data for a
- (legacy) onion service, correctly detect replays in the RSA-
- encrypted part of the cell. We were previously checking for
- replays on the entire cell, but those can be circumvented due to
- the malleability of Tor's legacy hybrid encryption. This fix helps
- prevent a traffic confirmation attack. Fixes bug 24244; bugfix on
- 0.2.4.1-alpha. This issue is also tracked as TROVE-2017-009
- and CVE-2017-8819.
- o Major bugfixes (security, relay, backport from 0.3.2.6-alpha):
- - When running as a relay, make sure that we never build a path
- through ourselves, even in the case where we have somehow lost the
- version of our descriptor appearing in the consensus. Fixes part
- of bug 21534; bugfix on 0.2.0.1-alpha. This issue is also tracked
- as TROVE-2017-012 and CVE-2017-8822.
- o Minor features (bridge, backport from 0.3.1.9):
- - Bridges now include notice in their descriptors that they are
- bridges, and notice of their distribution status, based on their
- publication settings. Implements ticket 18329. For more fine-
- grained control of how a bridge is distributed, upgrade to 0.3.2.x
- or later.
- o Minor features (geoip):
- - Update geoip and geoip6 to the November 6 2017 Maxmind GeoLite2
- Country database.
- Changes in version 0.2.5.15 - 2017-10-25
- Tor 0.2.5.15 backports a collection of bugfixes from later Tor release
- series. It also adds a new directory authority, Bastet.
- Note: the Tor 0.2.5 series will no longer be supported after 1 May
- 2018. If you need a release with long-term support, please upgrade to
- the 0.2.9 series. Otherwise, please upgrade to 0.3.1 or later.
- o Directory authority changes:
- - Add "Bastet" as a ninth directory authority to the default list.
- Closes ticket 23910.
- - The directory authority "Longclaw" has changed its IP address.
- Closes ticket 23592.
- o Major bugfixes (openbsd, denial-of-service, backport from 0.3.1.5-alpha):
- - Avoid an assertion failure bug affecting our implementation of
- inet_pton(AF_INET6) on certain OpenBSD systems whose strtol()
- handling of "0xx" differs from what we had expected. Fixes bug
- 22789; bugfix on 0.2.3.8-alpha. Also tracked as TROVE-2017-007.
- o Minor features (geoip):
- - Update geoip and geoip6 to the October 4 2017 Maxmind GeoLite2
- Country database.
- o Minor bugfixes (defensive programming, undefined behavior, backport from 0.3.1.4-alpha):
- - Fix a memset() off the end of an array when packing cells. This
- bug should be harmless in practice, since the corrupted bytes are
- still in the same structure, and are always padding bytes,
- ignored, or immediately overwritten, depending on compiler
- behavior. Nevertheless, because the memset()'s purpose is to make
- sure that any other cell-handling bugs can't expose bytes to the
- network, we need to fix it. Fixes bug 22737; bugfix on
- 0.2.4.11-alpha. Fixes CID 1401591.
- o Build features (backport from 0.3.1.5-alpha):
- - Tor's repository now includes a Travis Continuous Integration (CI)
- configuration file (.travis.yml). This is meant to help new
- developers and contributors who fork Tor to a Github repository be
- better able to test their changes, and understand what we expect
- to pass. To use this new build feature, you must fork Tor to your
- Github account, then go into the "Integrations" menu in the
- repository settings for your fork and enable Travis, then push
- your changes. Closes ticket 22636.
- Changes in version 0.2.8.16 - 2017-10-25
- Tor 0.2.8.16 backports a collection of bugfixes from later Tor release
- series, including a bugfix for a crash issue that had affected relays
- under memory pressure. It also adds a new directory authority, Bastet.
- Note: the Tor 0.2.8 series will no longer be supported after 1 Jan
- 2018. If you need a release with long-term support, please stick with
- the 0.2.9 series. Otherwise, please upgrade to 0.3.1 or later.
- o Directory authority changes:
- - Add "Bastet" as a ninth directory authority to the default list.
- Closes ticket 23910.
- - The directory authority "Longclaw" has changed its IP address.
- Closes ticket 23592.
- o Major bugfixes (relay, crash, assertion failure, backport from 0.3.2.2-alpha):
- - Fix a timing-based assertion failure that could occur when the
- circuit out-of-memory handler freed a connection's output buffer.
- Fixes bug 23690; bugfix on 0.2.6.1-alpha.
- o Minor features (directory authorities, backport from 0.3.2.2-alpha):
- - Remove longclaw's IPv6 address, as it will soon change. Authority
- IPv6 addresses were originally added in 0.2.8.1-alpha. This leaves
- 3/8 directory authorities with IPv6 addresses, but there are also
- 52 fallback directory mirrors with IPv6 addresses. Resolves 19760.
- o Minor features (geoip):
- - Update geoip and geoip6 to the October 4 2017 Maxmind GeoLite2
- Country database.
- Changes in version 0.2.9.13 - 2017-10-25
- Tor 0.2.9.13 backports a collection of bugfixes from later Tor release
- series, including a bugfix for a crash issue that had affected relays
- under memory pressure. It also adds a new directory authority, Bastet.
- o Directory authority changes:
- - Add "Bastet" as a ninth directory authority to the default list.
- Closes ticket 23910.
- - The directory authority "Longclaw" has changed its IP address.
- Closes ticket 23592.
- o Major bugfixes (relay, crash, assertion failure, backport from 0.3.2.2-alpha):
- - Fix a timing-based assertion failure that could occur when the
- circuit out-of-memory handler freed a connection's output buffer.
- Fixes bug 23690; bugfix on 0.2.6.1-alpha.
- o Minor features (directory authorities, backport from 0.3.2.2-alpha):
- - Remove longclaw's IPv6 address, as it will soon change. Authority
- IPv6 addresses were originally added in 0.2.8.1-alpha. This leaves
- 3/8 directory authorities with IPv6 addresses, but there are also
- 52 fallback directory mirrors with IPv6 addresses. Resolves 19760.
- o Minor features (geoip):
- - Update geoip and geoip6 to the October 4 2017 Maxmind GeoLite2
- Country database.
- o Minor bugfixes (directory authority, backport from 0.3.1.5-alpha):
- - When a directory authority rejects a descriptor or extrainfo with
- a given digest, mark that digest as undownloadable, so that we do
- not attempt to download it again over and over. We previously
- tried to avoid downloading such descriptors by other means, but we
- didn't notice if we accidentally downloaded one anyway. This
- behavior became problematic in 0.2.7.2-alpha, when authorities
- began pinning Ed25519 keys. Fixes bug 22349; bugfix
- on 0.2.1.19-alpha.
- o Minor bugfixes (memory safety, backport from 0.3.2.3-alpha):
- - Clear the address when node_get_prim_orport() returns early.
- Fixes bug 23874; bugfix on 0.2.8.2-alpha.
- o Minor bugfixes (Windows service, backport from 0.3.1.6-rc):
- - When running as a Windows service, set the ID of the main thread
- correctly. Failure to do so made us fail to send log messages to
- the controller in 0.2.1.16-rc, slowed down controller event
- delivery in 0.2.7.3-rc and later, and crash with an assertion
- failure in 0.3.1.1-alpha. Fixes bug 23081; bugfix on 0.2.1.6-alpha.
- Patch and diagnosis from "Vort".
- Changes in version 0.3.0.12 - 2017-10-25
- Tor 0.3.0.12 backports a collection of bugfixes from later Tor release
- series, including a bugfix for a crash issue that had affected relays
- under memory pressure. It also adds a new directory authority, Bastet.
- Note: the Tor 0.3.0 series will no longer be supported after 26 Jan
- 2018. If you need a release with long-term support, please stick with
- the 0.2.9 series. Otherwise, please upgrade to 0.3.1 or later.
- o Directory authority changes:
- - Add "Bastet" as a ninth directory authority to the default list.
- Closes ticket 23910.
- - The directory authority "Longclaw" has changed its IP address.
- Closes ticket 23592.
- o Major bugfixes (relay, crash, assertion failure, backport from 0.3.2.2-alpha):
- - Fix a timing-based assertion failure that could occur when the
- circuit out-of-memory handler freed a connection's output buffer.
- Fixes bug 23690; bugfix on 0.2.6.1-alpha.
- o Minor features (directory authorities, backport from 0.3.2.2-alpha):
- - Remove longclaw's IPv6 address, as it will soon change. Authority
- IPv6 addresses were originally added in 0.2.8.1-alpha. This leaves
- 3/8 directory authorities with IPv6 addresses, but there are also
- 52 fallback directory mirrors with IPv6 addresses. Resolves 19760.
- o Minor features (geoip):
- - Update geoip and geoip6 to the October 4 2017 Maxmind GeoLite2
- Country database.
- o Minor bugfixes (directory authority, backport from 0.3.1.5-alpha):
- - When a directory authority rejects a descriptor or extrainfo with
- a given digest, mark that digest as undownloadable, so that we do
- not attempt to download it again over and over. We previously
- tried to avoid downloading such descriptors by other means, but we
- didn't notice if we accidentally downloaded one anyway. This
- behavior became problematic in 0.2.7.2-alpha, when authorities
- began pinning Ed25519 keys. Fixes bug 22349; bugfix
- on 0.2.1.19-alpha.
- o Minor bugfixes (hidden service, relay, backport from 0.3.2.2-alpha):
- - Avoid a possible double close of a circuit by the intro point on
- error of sending the INTRO_ESTABLISHED cell. Fixes bug 23610;
- bugfix on 0.3.0.1-alpha.
- o Minor bugfixes (memory safety, backport from 0.3.2.3-alpha):
- - Clear the address when node_get_prim_orport() returns early.
- Fixes bug 23874; bugfix on 0.2.8.2-alpha.
- o Minor bugfixes (Windows service, backport from 0.3.1.6-rc):
- - When running as a Windows service, set the ID of the main thread
- correctly. Failure to do so made us fail to send log messages to
- the controller in 0.2.1.16-rc, slowed down controller event
- delivery in 0.2.7.3-rc and later, and crash with an assertion
- failure in 0.3.1.1-alpha. Fixes bug 23081; bugfix on 0.2.1.6-alpha.
- Patch and diagnosis from "Vort".
- Changes in version 0.3.1.8 - 2017-10-25
- Tor 0.3.1.8 is the second stable release in the 0.3.1 series.
- It includes several bugfixes, including a bugfix for a crash issue
- that had affected relays under memory pressure. It also adds
- a new directory authority, Bastet.
- o Directory authority changes:
- - Add "Bastet" as a ninth directory authority to the default list.
- Closes ticket 23910.
- - The directory authority "Longclaw" has changed its IP address.
- Closes ticket 23592.
- o Major bugfixes (relay, crash, assertion failure, backport from 0.3.2.2-alpha):
- - Fix a timing-based assertion failure that could occur when the
- circuit out-of-memory handler freed a connection's output buffer.
- Fixes bug 23690; bugfix on 0.2.6.1-alpha.
- o Minor features (directory authorities, backport from 0.3.2.2-alpha):
- - Remove longclaw's IPv6 address, as it will soon change. Authority
- IPv6 addresses were originally added in 0.2.8.1-alpha. This leaves
- 3/8 directory authorities with IPv6 addresses, but there are also
- 52 fallback directory mirrors with IPv6 addresses. Resolves 19760.
- o Minor features (geoip):
- - Update geoip and geoip6 to the October 4 2017 Maxmind GeoLite2
- Country database.
- o Minor bugfixes (compilation, backport from 0.3.2.2-alpha):
- - Fix a compilation warning when building with zstd support on
- 32-bit platforms. Fixes bug 23568; bugfix on 0.3.1.1-alpha. Found
- and fixed by Andreas Stieger.
- o Minor bugfixes (compression, backport from 0.3.2.2-alpha):
- - Handle a pathological case when decompressing Zstandard data when
- the output buffer size is zero. Fixes bug 23551; bugfix
- on 0.3.1.1-alpha.
- o Minor bugfixes (directory authority, backport from 0.3.2.1-alpha):
- - Remove the length limit on HTTP status lines that authorities can
- send in their replies. Fixes bug 23499; bugfix on 0.3.1.6-rc.
- o Minor bugfixes (hidden service, relay, backport from 0.3.2.2-alpha):
- - Avoid a possible double close of a circuit by the intro point on
- error of sending the INTRO_ESTABLISHED cell. Fixes bug 23610;
- bugfix on 0.3.0.1-alpha.
- o Minor bugfixes (memory safety, backport from 0.3.2.3-alpha):
- - Clear the address when node_get_prim_orport() returns early.
- Fixes bug 23874; bugfix on 0.2.8.2-alpha.
- o Minor bugfixes (unit tests, backport from 0.3.2.2-alpha):
- - Fix additional channelpadding unit test failures by using mocked
- time instead of actual time for all tests. Fixes bug 23608; bugfix
- on 0.3.1.1-alpha.
- Changes in version 0.2.8.15 - 2017-09-18
- Tor 0.2.8.15 backports a collection of bugfixes from later
- Tor series.
- Most significantly, it includes a fix for TROVE-2017-008, a
- security bug that affects hidden services running with the
- SafeLogging option disabled. For more information, see
- https:
- Note that Tor 0.2.8.x will no longer be supported after 1 Jan
- 2018. We suggest that you upgrade to the latest stable release if
- possible. If you can't, we recommend that you upgrade at least to
- 0.2.9, which will be supported until 2020.
- o Major bugfixes (openbsd, denial-of-service, backport from 0.3.1.5-alpha):
- - Avoid an assertion failure bug affecting our implementation of
- inet_pton(AF_INET6) on certain OpenBSD systems whose strtol()
- handling of "0xx" differs from what we had expected. Fixes bug
- 22789; bugfix on 0.2.3.8-alpha. Also tracked as TROVE-2017-007.
- o Minor features:
- - Update geoip and geoip6 to the September 6 2017 Maxmind GeoLite2
- Country database.
- o Minor bugfixes (compilation, mingw, backport from 0.3.1.1-alpha):
- - Backport a fix for an "unused variable" warning that appeared
- in some versions of mingw. Fixes bug 22838; bugfix on
- 0.2.8.1-alpha.
- o Minor bugfixes (defensive programming, undefined behavior, backport from 0.3.1.4-alpha):
- - Fix a memset() off the end of an array when packing cells. This
- bug should be harmless in practice, since the corrupted bytes are
- still in the same structure, and are always padding bytes,
- ignored, or immediately overwritten, depending on compiler
- behavior. Nevertheless, because the memset()'s purpose is to make
- sure that any other cell-handling bugs can't expose bytes to the
- network, we need to fix it. Fixes bug 22737; bugfix on
- 0.2.4.11-alpha. Fixes CID 1401591.
- o Build features (backport from 0.3.1.5-alpha):
- - Tor's repository now includes a Travis Continuous Integration (CI)
- configuration file (.travis.yml). This is meant to help new
- developers and contributors who fork Tor to a Github repository be
- better able to test their changes, and understand what we expect
- to pass. To use this new build feature, you must fork Tor to your
- Github account, then go into the "Integrations" menu in the
- repository settings for your fork and enable Travis, then push
- your changes. Closes ticket 22636.
- Changes in version 0.2.9.12 - 2017-09-18
- Tor 0.2.9.12 backports a collection of bugfixes from later
- Tor series.
- Most significantly, it includes a fix for TROVE-2017-008, a
- security bug that affects hidden services running with the
- SafeLogging option disabled. For more information, see
- https:
- o Major features (security, backport from 0.3.0.2-alpha):
- - Change the algorithm used to decide DNS TTLs on client and server
- side, to better resist DNS-based correlation attacks like the
- DefecTor attack of Greschbach, Pulls, Roberts, Winter, and
- Feamster. Now relays only return one of two possible DNS TTL
- values, and clients are willing to believe DNS TTL values up to 3
- hours long. Closes ticket 19769.
- o Major bugfixes (crash, directory connections, backport from 0.3.0.5-rc):
- - Fix a rare crash when sending a begin cell on a circuit whose
- linked directory connection had already been closed. Fixes bug
- 21576; bugfix on 0.2.9.3-alpha. Reported by Alec Muffett.
- o Major bugfixes (DNS, backport from 0.3.0.2-alpha):
- - Fix a bug that prevented exit nodes from caching DNS records for
- more than 60 seconds. Fixes bug 19025; bugfix on 0.2.4.7-alpha.
- o Major bugfixes (linux TPROXY support, backport from 0.3.1.1-alpha):
- - Fix a typo that had prevented TPROXY-based transparent proxying
- from working under Linux. Fixes bug 18100; bugfix on 0.2.6.3-alpha.
- Patch from "d4fq0fQAgoJ".
- o Major bugfixes (openbsd, denial-of-service, backport from 0.3.1.5-alpha):
- - Avoid an assertion failure bug affecting our implementation of
- inet_pton(AF_INET6) on certain OpenBSD systems whose strtol()
- handling of "0xx" differs from what we had expected. Fixes bug
- 22789; bugfix on 0.2.3.8-alpha. Also tracked as TROVE-2017-007.
- o Minor features (code style, backport from 0.3.1.3-alpha):
- - Add "Falls through" comments to our codebase, in order to silence
- GCC 7's -Wimplicit-fallthrough warnings. Patch from Andreas
- Stieger. Closes ticket 22446.
- o Minor features (geoip):
- - Update geoip and geoip6 to the September 6 2017 Maxmind GeoLite2
- Country database.
- o Minor bugfixes (bandwidth accounting, backport from 0.3.1.1-alpha):
- - Roll over monthly accounting at the configured hour and minute,
- rather than always at 00:00. Fixes bug 22245; bugfix on 0.0.9rc1.
- Found by Andrey Karpov with PVS-Studio.
- o Minor bugfixes (compilation, backport from 0.3.1.5-alpha):
- - Suppress -Wdouble-promotion warnings with clang 4.0. Fixes bug 22915;
- bugfix on 0.2.8.1-alpha.
- - Fix warnings when building with libscrypt and openssl scrypt support
- on Clang. Fixes bug 22916; bugfix on 0.2.7.2-alpha.
- - When building with certain versions the mingw C header files, avoid
- float-conversion warnings when calling the C functions isfinite(),
- isnan(), and signbit(). Fixes bug 22801; bugfix on 0.2.8.1-alpha.
- o Minor bugfixes (compilation, backport from 0.3.1.7):
- - Avoid compiler warnings in the unit tests for running tor_sscanf()
- with wide string outputs. Fixes bug 15582; bugfix on 0.2.6.2-alpha.
- o Minor bugfixes (compilation, mingw, backport from 0.3.1.1-alpha):
- - Backport a fix for an "unused variable" warning that appeared
- in some versions of mingw. Fixes bug 22838; bugfix on
- 0.2.8.1-alpha.
- o Minor bugfixes (controller, backport from 0.3.1.7):
- - Do not crash when receiving a HSPOST command with an empty body.
- Fixes part of bug 22644; bugfix on 0.2.7.1-alpha.
- - Do not crash when receiving a POSTDESCRIPTOR command with an
- empty body. Fixes part of bug 22644; bugfix on 0.2.0.1-alpha.
- o Minor bugfixes (coverity build support, backport from 0.3.1.5-alpha):
- - Avoid Coverity build warnings related to our BUG() macro. By
- default, Coverity treats BUG() as the Linux kernel does: an
- instant abort(). We need to override that so our BUG() macro
- doesn't prevent Coverity from analyzing functions that use it.
- Fixes bug 23030; bugfix on 0.2.9.1-alpha.
- o Minor bugfixes (defensive programming, undefined behavior, backport from 0.3.1.4-alpha):
- - Fix a memset() off the end of an array when packing cells. This
- bug should be harmless in practice, since the corrupted bytes are
- still in the same structure, and are always padding bytes,
- ignored, or immediately overwritten, depending on compiler
- behavior. Nevertheless, because the memset()'s purpose is to make
- sure that any other cell-handling bugs can't expose bytes to the
- network, we need to fix it. Fixes bug 22737; bugfix on
- 0.2.4.11-alpha. Fixes CID 1401591.
- o Minor bugfixes (file limits, osx, backport from 0.3.1.5-alpha):
- - When setting the maximum number of connections allowed by the OS,
- always allow some extra file descriptors for other files. Fixes
- bug 22797; bugfix on 0.2.0.10-alpha.
- o Minor bugfixes (linux seccomp2 sandbox, backport from 0.3.1.5-alpha):
- - Avoid a sandbox failure when trying to re-bind to a socket and
- mark it as IPv6-only. Fixes bug 20247; bugfix on 0.2.5.1-alpha.
- o Minor bugfixes (linux seccomp2 sandbox, backport from 0.3.1.4-alpha):
- - Permit the fchmod system call, to avoid crashing on startup when
- starting with the seccomp2 sandbox and an unexpected set of
- permissions on the data directory or its contents. Fixes bug
- 22516; bugfix on 0.2.5.4-alpha.
- o Minor bugfixes (relay, backport from 0.3.0.5-rc):
- - Avoid a double-marked-circuit warning that could happen when we
- receive DESTROY cells under heavy load. Fixes bug 20059; bugfix
- on 0.1.0.1-rc.
- o Minor bugfixes (voting consistency, backport from 0.3.1.1-alpha):
- - Reject version numbers with non-numeric prefixes (such as +, -, or
- whitespace). Disallowing whitespace prevents differential version
- parsing between POSIX-based and Windows platforms. Fixes bug 21507
- and part of 21508; bugfix on 0.0.8pre1.
- o Build features (backport from 0.3.1.5-alpha):
- - Tor's repository now includes a Travis Continuous Integration (CI)
- configuration file (.travis.yml). This is meant to help new
- developers and contributors who fork Tor to a Github repository be
- better able to test their changes, and understand what we expect
- to pass. To use this new build feature, you must fork Tor to your
- Github account, then go into the "Integrations" menu in the
- repository settings for your fork and enable Travis, then push
- your changes. Closes ticket 22636.
- Changes in version 0.3.0.11 - 2017-09-18
- Tor 0.3.0.11 backports a collection of bugfixes from Tor the 0.3.1
- series.
- Most significantly, it includes a fix for TROVE-2017-008, a
- security bug that affects hidden services running with the
- SafeLogging option disabled. For more information, see
- https:
- o Minor features (code style, backport from 0.3.1.7):
- - Add "Falls through" comments to our codebase, in order to silence
- GCC 7's -Wimplicit-fallthrough warnings. Patch from Andreas
- Stieger. Closes ticket 22446.
- o Minor features:
- - Update geoip and geoip6 to the September 6 2017 Maxmind GeoLite2
- Country database.
- o Minor bugfixes (compilation, backport from 0.3.1.7):
- - Avoid compiler warnings in the unit tests for calling tor_sscanf()
- with wide string outputs. Fixes bug 15582; bugfix on 0.2.6.2-alpha.
- o Minor bugfixes (controller, backport from 0.3.1.7):
- - Do not crash when receiving a HSPOST command with an empty body.
- Fixes part of bug 22644; bugfix on 0.2.7.1-alpha.
- - Do not crash when receiving a POSTDESCRIPTOR command with an empty
- body. Fixes part of bug 22644; bugfix on 0.2.0.1-alpha.
- o Minor bugfixes (file limits, osx, backport from 0.3.1.5-alpha):
- - When setting the maximum number of connections allowed by the OS,
- always allow some extra file descriptors for other files. Fixes
- bug 22797; bugfix on 0.2.0.10-alpha.
- o Minor bugfixes (logging, relay, backport from 0.3.1.6-rc):
- - Remove a forgotten debugging message when an introduction point
- successfully establishes a hidden service prop224 circuit with
- a client.
- - Change three other log_warn() for an introduction point to
- protocol warnings, because they can be failure from the network
- and are not relevant to the operator. Fixes bug 23078; bugfix on
- 0.3.0.1-alpha and 0.3.0.2-alpha.
- Changes in version 0.3.1.7 - 2017-09-18
- Tor 0.3.1.7 is the first stable release in the 0.3.1 series.
- With the 0.3.1 series, Tor now serves and downloads directory
- information in more compact formats, to save on bandwidth overhead. It
- also contains a new padding system to resist netflow-based traffic
- analysis, and experimental support for building parts of Tor in Rust
- (though no parts of Tor are in Rust yet). There are also numerous
- small features, bugfixes on earlier release series, and groundwork for
- the hidden services revamp of 0.3.2.
- This release also includes a fix for TROVE-2017-008, a security bug
- that affects hidden services running with the SafeLogging option
- disabled. For more information, see
- https:
- Per our stable release policy, we plan to support each stable release
- series for at least the next nine months, or for three months after
- the first stable release of the next series: whichever is longer. If
- you need a release with long-term support, we recommend that you stay
- with the 0.2.9 series.
- Below is a list of the changes since 0.3.0. For a list of all
- changes since 0.3.1.6-rc, see the ChangeLog file.
- o New dependencies:
- - To build with zstd and lzma support, Tor now requires the
- pkg-config tool at build time.
- o Major bugfixes (security, hidden services, loggging):
- - Fix a bug where we could log uninitialized stack when a certain
- hidden service error occurred while SafeLogging was disabled.
- Fixes bug #23490; bugfix on 0.2.7.2-alpha.
- This is also tracked as TROVE-2017-008 and CVE-2017-0380.
- o Major features (build system, continuous integration):
- - Tor's repository now includes a Travis Continuous Integration (CI)
- configuration file (.travis.yml). This is meant to help new
- developers and contributors who fork Tor to a Github repository be
- better able to test their changes, and understand what we expect
- to pass. To use this new build feature, you must fork Tor to your
- Github account, then go into the "Integrations" menu in the
- repository settings for your fork and enable Travis, then push
- your changes. Closes ticket 22636.
- o Major features (directory protocol):
- - Tor relays and authorities can now serve clients an abbreviated
- version of the consensus document, containing only the changes
- since an older consensus document that the client holds. Clients
- now request these documents when available. When both client and
- server use this new protocol, they will use far less bandwidth (up
- to 94% less) to keep the client's consensus up-to-date. Implements
- proposal 140; closes ticket 13339. Based on work by Daniel Martí.
- - Tor can now compress directory traffic with lzma or with zstd
- compression algorithms, which can deliver better bandwidth
- performance. Because lzma is computationally expensive, it's only
- used for documents that can be compressed once and served many
- times. Support for these algorithms requires that tor is built
- with the libzstd and/or liblzma libraries available. Implements
- proposal 278; closes ticket 21662.
- - Relays now perform the more expensive compression operations, and
- consensus diff generation, in worker threads. This separation
- avoids delaying the main thread when a new consensus arrives.
- o Major features (experimental):
- - Tor can now build modules written in Rust. To turn this on, pass
- the "--enable-rust" flag to the configure script. It's not time to
- get excited yet: currently, there is no actual Rust functionality
- beyond some simple glue code, and a notice at startup to tell you
- that Rust is running. Still, we hope that programmers and
- packagers will try building Tor with Rust support, so that we can
- find issues and solve portability problems. Closes ticket 22106.
- o Major features (traffic analysis resistance):
- - Connections between clients and relays now send a padding cell in
- each direction every 1.5 to 9.5 seconds (tunable via consensus
- parameters). This padding will not resist specialized
- eavesdroppers, but it should be enough to make many ISPs' routine
- network flow logging less useful in traffic analysis against
- Tor users.
- Padding is negotiated using Tor's link protocol, so both relays
- and clients must upgrade for this to take effect. Clients may
- still send padding despite the relay's version by setting
- ConnectionPadding 1 in torrc, and may disable padding by setting
- ConnectionPadding 0 in torrc. Padding may be minimized for mobile
- users with the torrc option ReducedConnectionPadding. Implements
- Proposal 251 and Section 2 of Proposal 254; closes ticket 16861.
- - Relays will publish 24 hour totals of padding and non-padding cell
- counts to their extra-info descriptors, unless PaddingStatistics 0
- is set in torrc. These 24 hour totals are also rounded to
- multiples of 10000.
- o Major bugfixes (hidden service, relay, security):
- - Fix a remotely triggerable assertion failure when a hidden service
- handles a malformed BEGIN cell. Fixes bug 22493, tracked as
- TROVE-2017-004 and as CVE-2017-0375; bugfix on 0.3.0.1-alpha.
- - Fix a remotely triggerable assertion failure caused by receiving a
- BEGIN_DIR cell on a hidden service rendezvous circuit. Fixes bug
- 22494, tracked as TROVE-2017-005 and CVE-2017-0376; bugfix
- on 0.2.2.1-alpha.
- o Major bugfixes (path selection, security):
- - When choosing which guard to use for a circuit, avoid the exit's
- family along with the exit itself. Previously, the new guard
- selection logic avoided the exit, but did not consider its family.
- Fixes bug 22753; bugfix on 0.3.0.1-alpha. Tracked as TROVE-2017-
- 006 and CVE-2017-0377.
- o Major bugfixes (connection usage):
- - We use NETINFO cells to try to determine if both relays involved
- in a connection will agree on the canonical status of that
- connection. We prefer the connections where this is the case for
- extend cells, and try to close connections where relays disagree
- on their canonical status early. Also, we now prefer the oldest
- valid connection for extend cells. These two changes should reduce
- the number of long-term connections that are kept open between
- relays. Fixes bug 17604; bugfix on 0.2.5.5-alpha.
- - Relays now log hourly statistics (look for
- "channel_check_for_duplicates" lines) on the total number of
- connections to other relays. If the number of connections per
- relay is unexpectedly large, this log message is at notice level.
- Otherwise it is at info.
- o Major bugfixes (entry guards):
- - When starting with an old consensus, do not add new entry guards
- unless the consensus is "reasonably live" (under 1 day old). Fixes
- one root cause of bug 22400; bugfix on 0.3.0.1-alpha.
- - Don't block bootstrapping when a primary bridge is offline and we
- can't get its descriptor. Fixes bug 22325; fixes one case of bug
- 21969; bugfix on 0.3.0.3-alpha.
- o Major bugfixes (linux TPROXY support):
- - Fix a typo that had prevented TPROXY-based transparent proxying
- from working under Linux. Fixes bug 18100; bugfix on 0.2.6.3-alpha.
- Patch from "d4fq0fQAgoJ".
- o Major bugfixes (openbsd, denial-of-service):
- - Avoid an assertion failure bug affecting our implementation of
- inet_pton(AF_INET6) on certain OpenBSD systems whose strtol()
- handling of "0xx" differs from what we had expected. Fixes bug
- 22789; bugfix on 0.2.3.8-alpha. Also tracked as TROVE-2017-007.
- o Major bugfixes (relay, link handshake):
- - When performing the v3 link handshake on a TLS connection, report
- that we have the x509 certificate that we actually used on that
- connection, even if we have changed certificates since that
- connection was first opened. Previously, we would claim to have
- used our most recent x509 link certificate, which would sometimes
- make the link handshake fail. Fixes one case of bug 22460; bugfix
- on 0.2.3.6-alpha.
- o Major bugfixes (relays, key management):
- - Regenerate link and authentication certificates whenever the key
- that signs them changes; also, regenerate link certificates
- whenever the signed key changes. Previously, these processes were
- only weakly coupled, and we relays could (for minutes to hours)
- wind up with an inconsistent set of keys and certificates, which
- other relays would not accept. Fixes two cases of bug 22460;
- bugfix on 0.3.0.1-alpha.
- - When sending an Ed25519 signing->link certificate in a CERTS cell,
- send the certificate that matches the x509 certificate that we
- used on the TLS connection. Previously, there was a race condition
- if the TLS context rotated after we began the TLS handshake but
- before we sent the CERTS cell. Fixes a case of bug 22460; bugfix
- on 0.3.0.1-alpha.
- o Minor features (security, windows):
- - Enable a couple of pieces of Windows hardening: one
- (HeapEnableTerminationOnCorruption) that has been on-by-default
- since Windows 8, and unavailable before Windows 7; and one
- (PROCESS_DEP_DISABLE_ATL_THUNK_EMULATION) which we believe doesn't
- affect us, but shouldn't do any harm. Closes ticket 21953.
- o Minor features (bridge authority):
- - Add "fingerprint" lines to the networkstatus-bridges file produced
- by bridge authorities. Closes ticket 22207.
- o Minor features (code style):
- - Add "Falls through" comments to our codebase, in order to silence
- GCC 7's -Wimplicit-fallthrough warnings. Patch from Andreas
- Stieger. Closes ticket 22446.
- o Minor features (config options):
- - Allow "%include" directives in torrc configuration files. These
- directives import the settings from other files, or from all the
- files in a directory. Closes ticket 1922. Code by Daniel Pinto.
- - Make SAVECONF return an error when overwriting a torrc that has
- includes. Using SAVECONF with the FORCE option will allow it to
- overwrite torrc even if includes are used. Related to ticket 1922.
- - Add "GETINFO config-can-saveconf" to tell controllers if SAVECONF
- will work without the FORCE option. Related to ticket 1922.
- o Minor features (controller):
- - Warn the first time that a controller requests data in the long-
- deprecated 'GETINFO network-status' format. Closes ticket 21703.
- o Minor features (defaults):
- - The default value for UseCreateFast is now 0: clients which
- haven't yet received a consensus document will now use a proper
- ntor handshake to talk to their directory servers whenever they
- can. Closes ticket 21407.
- - Onion key rotation and expiry intervals are now defined as a
- network consensus parameter, per proposal 274. The default
- lifetime of an onion key is increased from 7 to 28 days. Old onion
- keys will expire after 7 days by default. This change will make
- consensus diffs much smaller, and save significant bandwidth.
- Closes ticket 21641.
- o Minor features (defensive programming):
- - Create a pair of consensus parameters, nf_pad_tor2web and
- nf_pad_single_onion, to disable netflow padding in the consensus
- for non-anonymous connections in case the overhead is high. Closes
- ticket 17857.
- o Minor features (diagnostic):
- - Add a stack trace to the bug warnings that can be logged when
- trying to send an outgoing relay cell with n_chan == 0. Diagnostic
- attempt for bug 23105.
- - Add logging messages to try to diagnose a rare bug that seems to
- generate RSA->Ed25519 cross-certificates dated in the 1970s. We
- think this is happening because of incorrect system clocks, but
- we'd like to know for certain. Diagnostic for bug 22466.
- - Avoid an assertion failure, and log a better error message, when
- unable to remove a file from the consensus cache on Windows.
- Attempts to mitigate and diagnose bug 22752.
- o Minor features (directory authority):
- - Improve the message that authorities report to relays that present
- RSA/Ed25519 keypairs that conflict with previously pinned keys.
- Closes ticket 22348.
- o Minor features (directory cache, consensus diff):
- - Add a new MaxConsensusAgeForDiffs option to allow directory cache
- operators with low-resource environments to adjust the number of
- consensuses they'll store and generate diffs from. Most cache
- operators should leave it unchanged. Helps to work around
- bug 22883.
- o Minor features (fallback directory list):
- - Update the fallback directory mirror whitelist and blacklist based
- on operator emails. Closes task 21121.
- - Replace the 177 fallbacks originally introduced in Tor 0.2.9.8 in
- December 2016 (of which ~126 were still functional) with a list of
- 151 fallbacks (32 new, 119 unchanged, 58 removed) generated in May
- 2017. Resolves ticket 21564.
- o Minor features (geoip):
- - Update geoip and geoip6 to the September 6 2017 Maxmind GeoLite2
- Country database.
- o Minor features (hidden services, logging):
- - Log a message when a hidden service descriptor has fewer
- introduction points than specified in
- HiddenServiceNumIntroductionPoints. Closes tickets 21598.
- - Log a message when a hidden service reaches its introduction point
- circuit limit, and when that limit is reset. Follow up to ticket
- 21594; closes ticket 21622.
- - Warn user if multiple entries in EntryNodes and at least one
- HiddenService are used together. Pinning EntryNodes along with a
- hidden service can be possibly harmful; for instance see ticket
- 14917 or 21155. Closes ticket 21155.
- o Minor features (linux seccomp2 sandbox):
- - We now have a document storage backend compatible with the Linux
- seccomp2 sandbox. This backend is used for consensus documents and
- diffs between them; in the long term, we'd like to use it for
- unparseable directory material too. Closes ticket 21645
- - Increase the maximum allowed size passed to mprotect(PROT_WRITE)
- from 1MB to 16MB. This was necessary with the glibc allocator in
- order to allow worker threads to allocate more memory -- which in
- turn is necessary because of our new use of worker threads for
- compression. Closes ticket 22096.
- o Minor features (logging):
- - Log files are no longer created world-readable by default.
- (Previously, most distributors would store the logs in a non-
- world-readable location to prevent inappropriate access. This
- change is an extra precaution.) Closes ticket 21729; patch
- from toralf.
- o Minor features (performance):
- - Our Keccak (SHA-3) implementation now accesses memory more
- efficiently, especially on little-endian systems. Closes
- ticket 21737.
- - Add an O(1) implementation of channel_find_by_global_id(), to
- speed some controller functions.
- o Minor features (relay, configuration):
- - The MyFamily option may now be repeated as many times as desired,
- for relays that want to configure large families. Closes ticket
- 4998; patch by Daniel Pinto.
- o Minor features (relay, performance):
- - Always start relays with at least two worker threads, to prevent
- priority inversion on slow tasks. Part of the fix for bug 22883.
- - Allow background work to be queued with different priorities, so
- that a big pile of slow low-priority jobs will not starve out
- higher priority jobs. This lays the groundwork for a fix for
- bug 22883.
- o Minor features (safety):
- - Add an explicit check to extrainfo_parse_entry_from_string() for
- NULL inputs. We don't believe this can actually happen, but it may
- help silence a warning from the Clang analyzer. Closes
- ticket 21496.
- o Minor features (testing):
- - Add more tests for compression backend initialization. Closes
- ticket 22286.
- - Add a "--disable-memory-sentinels" feature to help with fuzzing.
- When Tor is compiled with this option, we disable a number of
- redundant memory-safety failsafes that are intended to stop bugs
- from becoming security issues. This makes it easier to hunt for
- bugs that would be security issues without the failsafes turned
- on. Closes ticket 21439.
- - Add a general event-tracing instrumentation support to Tor. This
- subsystem will enable developers and researchers to add fine-
- grained instrumentation to their Tor instances, for use when
- examining Tor network performance issues. There are no trace
- events yet, and event-tracing is off by default unless enabled at
- compile time. Implements ticket 13802.
- - Improve our version parsing tests: add tests for typical version
- components, add tests for invalid versions, including numeric
- range and non-numeric prefixes. Unit tests 21278, 21450, and
- 21507. Partially implements 21470.
- o Minor bugfixes (bandwidth accounting):
- - Roll over monthly accounting at the configured hour and minute,
- rather than always at 00:00. Fixes bug 22245; bugfix on 0.0.9rc1.
- Found by Andrey Karpov with PVS-Studio.
- o Minor bugfixes (code correctness):
- - Accurately identify client connections by their lack of peer
- authentication. This means that we bail out earlier if asked to
- extend to a client. Follow-up to 21407. Fixes bug 21406; bugfix
- on 0.2.4.23.
- o Minor bugfixes (compilation warnings):
- - Suppress -Wdouble-promotion warnings with clang 4.0. Fixes bug
- 22915; bugfix on 0.2.8.1-alpha.
- - Fix warnings when building with libscrypt and openssl scrypt
- support on Clang. Fixes bug 22916; bugfix on 0.2.7.2-alpha.
- - When building with certain versions of the mingw C header files,
- avoid float-conversion warnings when calling the C functions
- isfinite(), isnan(), and signbit(). Fixes bug 22801; bugfix
- on 0.2.8.1-alpha.
- o Minor bugfixes (compilation):
- - Avoid compiler warnings in the unit tests for calling tor_sscanf()
- with wide string outputs. Fixes bug 15582; bugfix on 0.2.6.2-alpha.
- o Minor bugfixes (compression):
- - When spooling compressed data to an output buffer, don't try to
- spool more data when there is no more data to spool and we are not
- trying to flush the input. Previously, we would sometimes launch
- compression requests with nothing to do, which interferes with our
- 22672 checks. Fixes bug 22719; bugfix on 0.2.0.16-alpha.
- o Minor bugfixes (configuration):
- - Do not crash when starting with LearnCircuitBuildTimeout 0. Fixes
- bug 22252; bugfix on 0.2.9.3-alpha.
- o Minor bugfixes (connection lifespan):
- - Allow more control over how long TLS connections are kept open:
- unify CircuitIdleTimeout and PredictedPortsRelevanceTime into a
- single option called CircuitsAvailableTimeout. Also, allow the
- consensus to control the default values for both this preference
- and the lifespan of relay-to-relay connections. Fixes bug 17592;
- bugfix on 0.2.5.5-alpha.
- - Increase the initial circuit build timeout testing frequency, to
- help ensure that ReducedConnectionPadding clients finish learning
- a timeout before their orconn would expire. The initial testing
- rate was set back in the days of TAP and before the Tor Browser
- updater, when we had to be much more careful about new clients
- making lots of circuits. With this change, a circuit build timeout
- is learned in about 15-20 minutes, instead of 100-120 minutes.
- o Minor bugfixes (controller):
- - Do not crash when receiving a HSPOST command with an empty body.
- Fixes part of bug 22644; bugfix on 0.2.7.1-alpha.
- - Do not crash when receiving a POSTDESCRIPTOR command with an empty
- body. Fixes part of bug 22644; bugfix on 0.2.0.1-alpha.
- - GETINFO onions/current and onions/detached no longer respond with
- 551 on empty lists. Fixes bug 21329; bugfix on 0.2.7.1-alpha.
- - Trigger HS descriptor events on the control port when the client
- fails to pick a hidden service directory for a hidden service.
- This can happen if all the hidden service directories are in
- ExcludeNodes, or they have all been queried within the last 15
- minutes. Fixes bug 22042; bugfix on 0.2.5.2-alpha.
- o Minor bugfixes (correctness):
- - Avoid undefined behavior when parsing IPv6 entries from the geoip6
- file. Fixes bug 22490; bugfix on 0.2.4.6-alpha.
- o Minor bugfixes (coverity build support):
- - Avoid Coverity build warnings related to our BUG() macro. By
- default, Coverity treats BUG() as the Linux kernel does: an
- instant abort(). We need to override that so our BUG() macro
- doesn't prevent Coverity from analyzing functions that use it.
- Fixes bug 23030; bugfix on 0.2.9.1-alpha.
- o Minor bugfixes (defensive programming):
- - Detect and break out of infinite loops in our compression code. We
- don't think that any such loops exist now, but it's best to be
- safe. Closes ticket 22672.
- - Fix a memset() off the end of an array when packing cells. This
- bug should be harmless in practice, since the corrupted bytes are
- still in the same structure, and are always padding bytes,
- ignored, or immediately overwritten, depending on compiler
- behavior. Nevertheless, because the memset()'s purpose is to make
- sure that any other cell-handling bugs can't expose bytes to the
- network, we need to fix it. Fixes bug 22737; bugfix on
- 0.2.4.11-alpha. Fixes CID 1401591.
- o Minor bugfixes (directory authority):
- - When a directory authority rejects a descriptor or extrainfo with
- a given digest, mark that digest as undownloadable, so that we do
- not attempt to download it again over and over. We previously
- tried to avoid downloading such descriptors by other means, but we
- didn't notice if we accidentally downloaded one anyway. This
- behavior became problematic in 0.2.7.2-alpha, when authorities
- began pinning Ed25519 keys. Fixes bug 22349; bugfix
- on 0.2.1.19-alpha.
- - When rejecting a router descriptor for running an obsolete version
- of Tor without ntor support, warn about the obsolete tor version,
- not the missing ntor key. Fixes bug 20270; bugfix on 0.2.9.3-alpha.
- - Prevent the shared randomness subsystem from asserting when
- initialized by a bridge authority with an incomplete configuration
- file. Fixes bug 21586; bugfix on 0.2.9.8.
- o Minor bugfixes (error reporting, windows):
- - When formatting Windows error messages, use the English format to
- avoid codepage issues. Fixes bug 22520; bugfix on 0.1.2.8-alpha.
- Patch from "Vort".
- o Minor bugfixes (exit-side DNS):
- - Fix an untriggerable assertion that checked the output of a
- libevent DNS error, so that the assertion actually behaves as
- expected. Fixes bug 22244; bugfix on 0.2.0.20-rc. Found by Andrey
- Karpov using PVS-Studio.
- o Minor bugfixes (fallback directories):
- - Make the usage example in updateFallbackDirs.py actually work, and
- explain what it does. Fixes bug 22270; bugfix on 0.3.0.3-alpha.
- - Decrease the guard flag average required to be a fallback. This
- allows us to keep relays that have their guard flag removed when
- they restart. Fixes bug 20913; bugfix on 0.2.8.1-alpha.
- - Decrease the minimum number of fallbacks to 100. Fixes bug 20913;
- bugfix on 0.2.8.1-alpha.
- - Make sure fallback directory mirrors have the same address, port,
- and relay identity key for at least 30 days before they are
- selected. Fixes bug 20913; bugfix on 0.2.8.1-alpha.
- o Minor bugfixes (file limits, osx):
- - When setting the maximum number of connections allowed by the OS,
- always allow some extra file descriptors for other files. Fixes
- bug 22797; bugfix on 0.2.0.10-alpha.
- o Minor bugfixes (hidden services):
- - Increase the number of circuits that a service is allowed to
- open over a specific period of time. The value was lower than it
- should be (8 vs 12) in the normal case of 3 introduction points.
- Fixes bug 22159; bugfix on 0.3.0.5-rc.
- - Fix a BUG warning during HSv3 descriptor decoding that could be
- cause by a specially crafted descriptor. Fixes bug 23233; bugfix
- on 0.3.0.1-alpha. Bug found by "haxxpop".
- - Stop printing a cryptic warning when a hidden service gets a
- request to connect to a virtual port that it hasn't configured.
- Fixes bug 16706; bugfix on 0.2.6.3-alpha.
- - Simplify hidden service descriptor creation by using an existing
- flag to check if an introduction point is established. Fixes bug
- 21599; bugfix on 0.2.7.2-alpha.
- o Minor bugfixes (link handshake):
- - Lower the lifetime of the RSA->Ed25519 cross-certificate to six
- months, and regenerate it when it is within one month of expiring.
- Previously, we had generated this certificate at startup with a
- ten-year lifetime, but that could lead to weird behavior when Tor
- was started with a grossly inaccurate clock. Mitigates bug 22466;
- mitigation on 0.3.0.1-alpha.
- o Minor bugfixes (linux seccomp2 sandbox):
- - Avoid a sandbox failure when trying to re-bind to a socket and
- mark it as IPv6-only. Fixes bug 20247; bugfix on 0.2.5.1-alpha.
- - Permit the fchmod system call, to avoid crashing on startup when
- starting with the seccomp2 sandbox and an unexpected set of
- permissions on the data directory or its contents. Fixes bug
- 22516; bugfix on 0.2.5.4-alpha.
- o Minor bugfixes (logging):
- - When decompressing, do not warn if we fail to decompress using a
- compression method that we merely guessed. Fixes part of bug
- 22670; bugfix on 0.1.1.14-alpha.
- - When decompressing, treat mismatch between content-encoding and
- actual compression type as a protocol warning. Fixes part of bug
- 22670; bugfix on 0.1.1.9-alpha.
- - Downgrade "assigned_to_cpuworker failed" message to info-level
- severity. In every case that can reach it, either a better warning
- has already been logged, or no warning is warranted. Fixes bug
- 22356; bugfix on 0.2.6.3-alpha.
- - Log a better message when a directory authority replies to an
- upload with an unexpected status code. Fixes bug 11121; bugfix
- on 0.1.0.1-rc.
- - Downgrade a log statement about unexpected relay cells from "bug"
- to "protocol warning", because there is at least one use case
- where it can be triggered by a buggy tor implementation. Fixes bug
- 21293; bugfix on 0.1.1.14-alpha.
- o Minor bugfixes (logging, relay):
- - Remove a forgotten debugging message when an introduction point
- successfully establishes a hidden service prop224 circuit with
- a client.
- - Change three other log_warn() for an introduction point to
- protocol warnings, because they can be failure from the network
- and are not relevant to the operator. Fixes bug 23078; bugfix on
- 0.3.0.1-alpha and 0.3.0.2-alpha.
- o Minor bugfixes (relay):
- - Inform the geoip and rephist modules about all requests, even on
- relays that are only fetching microdescriptors. Fixes a bug
- related to 21585; bugfix on 0.3.0.1-alpha.
- o Minor bugfixes (memory leaks):
- - Fix a small memory leak at exit from the backtrace handler code.
- Fixes bug 21788; bugfix on 0.2.5.2-alpha. Patch from Daniel Pinto.
- - When directory authorities reject a router descriptor due to
- keypinning, free the router descriptor rather than leaking the
- memory. Fixes bug 22370; bugfix on 0.2.7.2-alpha.
- - Fix a small memory leak when validating a configuration that uses
- two or more AF_UNIX sockets for the same port type. Fixes bug
- 23053; bugfix on 0.2.6.3-alpha. This is CID 1415725.
- o Minor bugfixes (process behavior):
- - When exiting because of an error, always exit with a nonzero exit
- status. Previously, we would fail to report an error in our exit
- status in cases related to __OwningControllerProcess failure,
- lockfile contention, and Ed25519 key initialization. Fixes bug
- 22720; bugfix on versions 0.2.1.6-alpha, 0.2.2.28-beta, and
- 0.2.7.2-alpha respectively. Reported by "f55jwk4f"; patch
- from "huyvq".
- o Minor bugfixes (robustness, error handling):
- - Improve our handling of the cases where OpenSSL encounters a
- memory error while encoding keys and certificates. We haven't
- observed these errors in the wild, but if they do happen, we now
- detect and respond better. Fixes bug 19418; bugfix on all versions
- of Tor. Reported by Guido Vranken.
- o Minor bugfixes (testing):
- - Fix an undersized buffer in test-memwipe.c. Fixes bug 23291;
- bugfix on 0.2.7.2-alpha. Found and patched by Ties Stuij.
- - Use unbuffered I/O for utility functions around the
- process_handle_t type. This fixes unit test failures reported on
- OpenBSD and FreeBSD. Fixes bug 21654; bugfix on 0.2.3.1-alpha.
- - Make display of captured unit test log messages consistent. Fixes
- bug 21510; bugfix on 0.2.9.3-alpha.
- - Make test-network.sh always call chutney's test-network.sh.
- Previously, this only worked on systems which had bash installed,
- due to some bash-specific code in the script. Fixes bug 19699;
- bugfix on 0.3.0.4-rc. Follow-up to ticket 21581.
- - Fix a memory leak in the link-handshake/certs_ok_ed25519 test.
- Fixes bug 22803; bugfix on 0.3.0.1-alpha.
- - The unit tests now pass on systems where localhost is misconfigured
- to some IPv4 address other than 127.0.0.1. Fixes bug 6298; bugfix
- on 0.0.9pre2.
- o Minor bugfixes (voting consistency):
- - Reject version numbers with non-numeric prefixes (such as +, -, or
- whitespace). Disallowing whitespace prevents differential version
- parsing between POSIX-based and Windows platforms. Fixes bug 21507
- and part of 21508; bugfix on 0.0.8pre1.
- o Minor bugfixes (Windows service):
- - When running as a Windows service, set the ID of the main thread
- correctly. Failure to do so made us fail to send log messages to
- the controller in 0.2.1.16-rc, slowed down controller event
- delivery in 0.2.7.3-rc and later, and crash with an assertion
- failure in 0.3.1.1-alpha. Fixes bug 23081; bugfix on 0.2.1.6-alpha.
- Patch and diagnosis from "Vort".
- o Minor bugfixes (windows, relay):
- - Resolve "Failure from drain_fd: No error" warnings on Windows
- relays. Fixes bug 21540; bugfix on 0.2.6.3-alpha.
- o Code simplification and refactoring:
- - Break up the 630-line function connection_dir_client_reached_eof()
- into a dozen smaller functions. This change should help
- maintainability and readability of the client directory code.
- - Isolate our use of the openssl headers so that they are only
- included from our crypto wrapper modules, and from tests that
- examine those modules' internals. Closes ticket 21841.
- - Simplify our API to launch directory requests, making it more
- extensible and less error-prone. Now it's easier to add extra
- headers to directory requests. Closes ticket 21646.
- - Our base64 decoding functions no longer overestimate the output
- space that they need when parsing unpadded inputs. Closes
- ticket 17868.
- - Remove unused "ROUTER_ADDED_NOTIFY_GENERATOR" internal value.
- Resolves ticket 22213.
- - The logic that directory caches use to spool request to clients,
- serving them one part at a time so as not to allocate too much
- memory, has been refactored for consistency. Previously there was
- a separate spooling implementation per type of spoolable data. Now
- there is one common spooling implementation, with extensible data
- types. Closes ticket 21651.
- - Tor's compression module now supports multiple backends. Part of
- the implementation for proposal 278; closes ticket 21663.
- o Documentation:
- - Add a manpage description for the key-pinning-journal file. Closes
- ticket 22347.
- - Correctly note that bandwidth accounting values are stored in the
- state file, and the bw_accounting file is now obsolete. Closes
- ticket 16082.
- - Document more of the files in the Tor data directory, including
- cached-extrainfo, secret_onion_key{,_ntor}.old, hidserv-stats,
- approved-routers, sr-random, and diff-cache. Found while fixing
- ticket 22347.
- - Clarify the manpage for the (deprecated) torify script. Closes
- ticket 6892.
- - Clarify the behavior of the KeepAliveIsolateSOCKSAuth sub-option.
- Closes ticket 21873.
- - Correct documentation about the default DataDirectory value.
- Closes ticket 21151.
- - Document the default behavior of NumEntryGuards and
- NumDirectoryGuards correctly. Fixes bug 21715; bugfix
- on 0.3.0.1-alpha.
- - Document key=value pluggable transport arguments for Bridge lines
- in torrc. Fixes bug 20341; bugfix on 0.2.5.1-alpha.
- - Note that bandwidth-limiting options don't affect TCP headers or
- DNS. Closes ticket 17170.
- o Removed features (configuration options, all in ticket 22060):
- - These configuration options are now marked Obsolete, and no longer
- have any effect: AllowInvalidNodes, AllowSingleHopCircuits,
- AllowSingleHopExits, ExcludeSingleHopRelays, FastFirstHopPK,
- TLSECGroup, WarnUnsafeSocks. They were first marked as deprecated
- in 0.2.9.2-alpha and have now been removed. The previous default
- behavior is now always chosen; the previous (less secure) non-
- default behavior is now unavailable.
- - CloseHSClientCircuitsImmediatelyOnTimeout and
- CloseHSServiceRendCircuitsImmediatelyOnTimeout were deprecated in
- 0.2.9.2-alpha and now have been removed. HS circuits never close
- on circuit build timeout; they have a longer timeout period.
- - {Control,DNS,Dir,Socks,Trans,NATD,OR}ListenAddress were deprecated
- in 0.2.9.2-alpha and now have been removed. Use the ORPort option
- (and others) to configure listen-only and advertise-only addresses.
- o Removed features (tools):
- - We've removed the tor-checkkey tool from src/tools. Long ago, we
- used it to help people detect RSA keys that were generated by
- versions of Debian affected by CVE-2008-0166. But those keys have
- been out of circulation for ages, and this tool is no longer
- required. Closes ticket 21842.
- Changes in version 0.3.0.10 - 2017-08-02
- Tor 0.3.0.10 backports a collection of small-to-medium bugfixes
- from the current Tor alpha series. OpenBSD users and TPROXY users
- should upgrade; others are probably okay sticking with 0.3.0.9.
- o Major features (build system, continuous integration, backport from 0.3.1.5-alpha):
- - Tor's repository now includes a Travis Continuous Integration (CI)
- configuration file (.travis.yml). This is meant to help new
- developers and contributors who fork Tor to a Github repository be
- better able to test their changes, and understand what we expect
- to pass. To use this new build feature, you must fork Tor to your
- Github account, then go into the "Integrations" menu in the
- repository settings for your fork and enable Travis, then push
- your changes. Closes ticket 22636.
- o Major bugfixes (linux TPROXY support, backport from 0.3.1.1-alpha):
- - Fix a typo that had prevented TPROXY-based transparent proxying
- from working under Linux. Fixes bug 18100; bugfix on 0.2.6.3-alpha.
- Patch from "d4fq0fQAgoJ".
- o Major bugfixes (openbsd, denial-of-service, backport from 0.3.1.5-alpha):
- - Avoid an assertion failure bug affecting our implementation of
- inet_pton(AF_INET6) on certain OpenBSD systems whose strtol()
- handling of "0xbar" differs from what we had expected. Fixes bug
- 22789; bugfix on 0.2.3.8-alpha. Also tracked as TROVE-2017-007.
- o Minor features (backport from 0.3.1.5-alpha):
- - Update geoip and geoip6 to the July 4 2017 Maxmind GeoLite2
- Country database.
- o Minor bugfixes (bandwidth accounting, backport from 0.3.1.2-alpha):
- - Roll over monthly accounting at the configured hour and minute,
- rather than always at 00:00. Fixes bug 22245; bugfix on 0.0.9rc1.
- Found by Andrey Karpov with PVS-Studio.
- o Minor bugfixes (compilation warnings, backport from 0.3.1.5-alpha):
- - Suppress -Wdouble-promotion warnings with clang 4.0. Fixes bug 22915;
- bugfix on 0.2.8.1-alpha.
- - Fix warnings when building with libscrypt and openssl scrypt
- support on Clang. Fixes bug 22916; bugfix on 0.2.7.2-alpha.
- - When building with certain versions of the mingw C header files,
- avoid float-conversion warnings when calling the C functions
- isfinite(), isnan(), and signbit(). Fixes bug 22801; bugfix
- on 0.2.8.1-alpha.
- o Minor bugfixes (compilation, mingw, backport from 0.3.1.1-alpha):
- - Backport a fix for an "unused variable" warning that appeared
- in some versions of mingw. Fixes bug 22838; bugfix on
- 0.2.8.1-alpha.
- o Minor bugfixes (coverity build support, backport from 0.3.1.5-alpha):
- - Avoid Coverity build warnings related to our BUG() macro. By
- default, Coverity treats BUG() as the Linux kernel does: an
- instant abort(). We need to override that so our BUG() macro
- doesn't prevent Coverity from analyzing functions that use it.
- Fixes bug 23030; bugfix on 0.2.9.1-alpha.
- o Minor bugfixes (directory authority, backport from 0.3.1.1-alpha):
- - When rejecting a router descriptor for running an obsolete version
- of Tor without ntor support, warn about the obsolete tor version,
- not the missing ntor key. Fixes bug 20270; bugfix on 0.2.9.3-alpha.
- o Minor bugfixes (linux seccomp2 sandbox, backport from 0.3.1.5-alpha):
- - Avoid a sandbox failure when trying to re-bind to a socket and
- mark it as IPv6-only. Fixes bug 20247; bugfix on 0.2.5.1-alpha.
- o Minor bugfixes (unit tests, backport from 0.3.1.5-alpha)
- - Fix a memory leak in the link-handshake/certs_ok_ed25519 test.
- Fixes bug 22803; bugfix on 0.3.0.1-alpha.
- Changes in version 0.3.0.9 - 2017-06-29
- Tor 0.3.0.9 fixes a path selection bug that would allow a client
- to use a guard that was in the same network family as a chosen exit
- relay. This is a security regression; all clients running earlier
- versions of 0.3.0.x or 0.3.1.x should upgrade to 0.3.0.9 or
- 0.3.1.4-alpha.
- This release also backports several other bugfixes from the 0.3.1.x
- series.
- o Major bugfixes (path selection, security, backport from 0.3.1.4-alpha):
- - When choosing which guard to use for a circuit, avoid the exit's
- family along with the exit itself. Previously, the new guard
- selection logic avoided the exit, but did not consider its family.
- Fixes bug 22753; bugfix on 0.3.0.1-alpha. Tracked as TROVE-2017-
- 006 and CVE-2017-0377.
- o Major bugfixes (entry guards, backport from 0.3.1.1-alpha):
- - Don't block bootstrapping when a primary bridge is offline and we
- can't get its descriptor. Fixes bug 22325; fixes one case of bug
- 21969; bugfix on 0.3.0.3-alpha.
- o Major bugfixes (entry guards, backport from 0.3.1.4-alpha):
- - When starting with an old consensus, do not add new entry guards
- unless the consensus is "reasonably live" (under 1 day old). Fixes
- one root cause of bug 22400; bugfix on 0.3.0.1-alpha.
- o Minor features (geoip):
- - Update geoip and geoip6 to the June 8 2017 Maxmind GeoLite2
- Country database.
- o Minor bugfixes (voting consistency, backport from 0.3.1.1-alpha):
- - Reject version numbers with non-numeric prefixes (such as +, -, or
- whitespace). Disallowing whitespace prevents differential version
- parsing between POSIX-based and Windows platforms. Fixes bug 21507
- and part of 21508; bugfix on 0.0.8pre1.
- o Minor bugfixes (linux seccomp2 sandbox, backport from 0.3.1.4-alpha):
- - Permit the fchmod system call, to avoid crashing on startup when
- starting with the seccomp2 sandbox and an unexpected set of
- permissions on the data directory or its contents. Fixes bug
- 22516; bugfix on 0.2.5.4-alpha.
- o Minor bugfixes (defensive programming, backport from 0.3.1.4-alpha):
- - Fix a memset() off the end of an array when packing cells. This
- bug should be harmless in practice, since the corrupted bytes are
- still in the same structure, and are always padding bytes,
- ignored, or immediately overwritten, depending on compiler
- behavior. Nevertheless, because the memset()'s purpose is to make
- sure that any other cell-handling bugs can't expose bytes to the
- network, we need to fix it. Fixes bug 22737; bugfix on
- 0.2.4.11-alpha. Fixes CID 1401591.
- Changes in version 0.3.0.8 - 2017-06-08
- Tor 0.3.0.8 fixes a pair of bugs that would allow an attacker to
- remotely crash a hidden service with an assertion failure. Anyone
- running a hidden service should upgrade to this version, or to some
- other version with fixes for TROVE-2017-004 and TROVE-2017-005.
- Tor 0.3.0.8 also includes fixes for several key management bugs
- that sometimes made relays unreliable, as well as several other
- bugfixes described below.
- o Major bugfixes (hidden service, relay, security, backport
- from 0.3.1.3-alpha):
- - Fix a remotely triggerable assertion failure when a hidden service
- handles a malformed BEGIN cell. Fixes bug 22493, tracked as
- TROVE-2017-004 and as CVE-2017-0375; bugfix on 0.3.0.1-alpha.
- - Fix a remotely triggerable assertion failure caused by receiving a
- BEGIN_DIR cell on a hidden service rendezvous circuit. Fixes bug
- 22494, tracked as TROVE-2017-005 and CVE-2017-0376; bugfix
- on 0.2.2.1-alpha.
- o Major bugfixes (relay, link handshake, backport from 0.3.1.3-alpha):
- - When performing the v3 link handshake on a TLS connection, report
- that we have the x509 certificate that we actually used on that
- connection, even if we have changed certificates since that
- connection was first opened. Previously, we would claim to have
- used our most recent x509 link certificate, which would sometimes
- make the link handshake fail. Fixes one case of bug 22460; bugfix
- on 0.2.3.6-alpha.
- o Major bugfixes (relays, key management, backport from 0.3.1.3-alpha):
- - Regenerate link and authentication certificates whenever the key
- that signs them changes; also, regenerate link certificates
- whenever the signed key changes. Previously, these processes were
- only weakly coupled, and we relays could (for minutes to hours)
- wind up with an inconsistent set of keys and certificates, which
- other relays would not accept. Fixes two cases of bug 22460;
- bugfix on 0.3.0.1-alpha.
- - When sending an Ed25519 signing->link certificate in a CERTS cell,
- send the certificate that matches the x509 certificate that we
- used on the TLS connection. Previously, there was a race condition
- if the TLS context rotated after we began the TLS handshake but
- before we sent the CERTS cell. Fixes a case of bug 22460; bugfix
- on 0.3.0.1-alpha.
- o Major bugfixes (hidden service v3, backport from 0.3.1.1-alpha):
- - Stop rejecting v3 hidden service descriptors because their size
- did not match an old padding rule. Fixes bug 22447; bugfix on
- tor-0.3.0.1-alpha.
- o Minor features (fallback directory list, backport from 0.3.1.3-alpha):
- - Replace the 177 fallbacks originally introduced in Tor 0.2.9.8 in
- December 2016 (of which ~126 were still functional) with a list of
- 151 fallbacks (32 new, 119 unchanged, 58 removed) generated in May
- 2017. Resolves ticket 21564.
- o Minor bugfixes (configuration, backport from 0.3.1.1-alpha):
- - Do not crash when starting with LearnCircuitBuildTimeout 0. Fixes
- bug 22252; bugfix on 0.2.9.3-alpha.
- o Minor bugfixes (correctness, backport from 0.3.1.3-alpha):
- - Avoid undefined behavior when parsing IPv6 entries from the geoip6
- file. Fixes bug 22490; bugfix on 0.2.4.6-alpha.
- o Minor bugfixes (link handshake, backport from 0.3.1.3-alpha):
- - Lower the lifetime of the RSA->Ed25519 cross-certificate to six
- months, and regenerate it when it is within one month of expiring.
- Previously, we had generated this certificate at startup with a
- ten-year lifetime, but that could lead to weird behavior when Tor
- was started with a grossly inaccurate clock. Mitigates bug 22466;
- mitigation on 0.3.0.1-alpha.
- o Minor bugfixes (memory leak, directory authority, backport from
- 0.3.1.2-alpha):
- - When directory authorities reject a router descriptor due to
- keypinning, free the router descriptor rather than leaking the
- memory. Fixes bug 22370; bugfix on 0.2.7.2-alpha.
- Changes in version 0.2.9.11 - 2017-06-08
- Tor 0.2.9.11 backports a fix for a bug that would allow an attacker to
- remotely crash a hidden service with an assertion failure. Anyone
- running a hidden service should upgrade to this version, or to some
- other version with fixes for TROVE-2017-005. (Versions before 0.3.0
- are not affected by TROVE-2017-004.)
- Tor 0.2.9.11 also backports fixes for several key management bugs
- that sometimes made relays unreliable, as well as several other
- bugfixes described below.
- o Major bugfixes (hidden service, relay, security, backport
- from 0.3.1.3-alpha):
- - Fix a remotely triggerable assertion failure caused by receiving a
- BEGIN_DIR cell on a hidden service rendezvous circuit. Fixes bug
- 22494, tracked as TROVE-2017-005 and CVE-2017-0376; bugfix
- on 0.2.2.1-alpha.
- o Major bugfixes (relay, link handshake, backport from 0.3.1.3-alpha):
- - When performing the v3 link handshake on a TLS connection, report
- that we have the x509 certificate that we actually used on that
- connection, even if we have changed certificates since that
- connection was first opened. Previously, we would claim to have
- used our most recent x509 link certificate, which would sometimes
- make the link handshake fail. Fixes one case of bug 22460; bugfix
- on 0.2.3.6-alpha.
- o Minor features (fallback directory list, backport from 0.3.1.3-alpha):
- - Replace the 177 fallbacks originally introduced in Tor 0.2.9.8 in
- December 2016 (of which ~126 were still functional) with a list of
- 151 fallbacks (32 new, 119 unchanged, 58 removed) generated in May
- 2017. Resolves ticket 21564.
- o Minor features (future-proofing, backport from 0.3.0.7):
- - Tor no longer refuses to download microdescriptors or descriptors if
- they are listed as "published in the future". This change will
- eventually allow us to stop listing meaningful "published" dates
- in microdescriptor consensuses, and thereby allow us to reduce the
- resources required to download consensus diffs by over 50%.
- Implements part of ticket 21642; implements part of proposal 275.
- o Minor features (directory authorities, backport from 0.3.0.4-rc)
- - Directory authorities now reject relays running versions
- 0.2.9.1-alpha through 0.2.9.4-alpha, because those relays
- suffer from bug 20499 and don't keep their consensus cache
- up-to-date. Resolves ticket 20509.
- o Minor features (geoip):
- - Update geoip and geoip6 to the May 2 2017 Maxmind GeoLite2
- Country database.
- o Minor bugfixes (control port, backport from 0.3.0.6):
- - The GETINFO extra-info/digest/<digest> command was broken because
- of a wrong base16 decode return value check, introduced when
- refactoring that API. Fixes bug 22034; bugfix on 0.2.9.1-alpha.
- o Minor bugfixes (correctness, backport from 0.3.1.3-alpha):
- - Avoid undefined behavior when parsing IPv6 entries from the geoip6
- file. Fixes bug 22490; bugfix on 0.2.4.6-alpha.
- o Minor bugfixes (Linux seccomp2 sandbox, backport from 0.3.0.7):
- - The getpid() system call is now permitted under the Linux seccomp2
- sandbox, to avoid crashing with versions of OpenSSL (and other
- libraries) that attempt to learn the process's PID by using the
- syscall rather than the VDSO code. Fixes bug 21943; bugfix
- on 0.2.5.1-alpha.
- o Minor bugfixes (memory leak, directory authority, backport
- from 0.3.1.2-alpha):
- - When directory authorities reject a router descriptor due to
- keypinning, free the router descriptor rather than leaking the
- memory. Fixes bug 22370; bugfix on 0.2.7.2-alpha.
- Changes in version 0.2.8.14 - 2017-06-08
- Tor 0.2.7.8 backports a fix for a bug that would allow an attacker to
- remotely crash a hidden service with an assertion failure. Anyone
- running a hidden service should upgrade to this version, or to some
- other version with fixes for TROVE-2017-005. (Versions before 0.3.0
- are not affected by TROVE-2017-004.)
- o Major bugfixes (hidden service, relay, security):
- - Fix a remotely triggerable assertion failure caused by receiving a
- BEGIN_DIR cell on a hidden service rendezvous circuit. Fixes bug
- 22494, tracked as TROVE-2017-005 and CVE-2017-0376; bugfix
- on 0.2.2.1-alpha.
- o Minor features (geoip):
- - Update geoip and geoip6 to the May 2 2017 Maxmind GeoLite2
- Country database.
- o Minor features (fallback directory list, backport from 0.3.1.3-alpha):
- - Replace the 177 fallbacks originally introduced in Tor 0.2.9.8 in
- December 2016 (of which ~126 were still functional) with a list of
- 151 fallbacks (32 new, 119 unchanged, 58 removed) generated in May
- 2017. Resolves ticket 21564.
- o Minor bugfixes (correctness):
- - Avoid undefined behavior when parsing IPv6 entries from the geoip6
- file. Fixes bug 22490; bugfix on 0.2.4.6-alpha.
- Changes in version 0.2.7.8 - 2017-06-08
- Tor 0.2.7.8 backports a fix for a bug that would allow an attacker to
- remotely crash a hidden service with an assertion failure. Anyone
- running a hidden service should upgrade to this version, or to some
- other version with fixes for TROVE-2017-005. (Versions before 0.3.0
- are not affected by TROVE-2017-004.)
- o Major bugfixes (hidden service, relay, security):
- - Fix a remotely triggerable assertion failure caused by receiving a
- BEGIN_DIR cell on a hidden service rendezvous circuit. Fixes bug
- 22494, tracked as TROVE-2017-005 and CVE-2017-0376; bugfix
- on 0.2.2.1-alpha.
- o Minor features (geoip):
- - Update geoip and geoip6 to the May 2 2017 Maxmind GeoLite2
- Country database.
- o Minor bugfixes (correctness):
- - Avoid undefined behavior when parsing IPv6 entries from the geoip6
- file. Fixes bug 22490; bugfix on 0.2.4.6-alpha.
- Changes in version 0.2.6.12 - 2017-06-08
- Tor 0.2.6.12 backports a fix for a bug that would allow an attacker to
- remotely crash a hidden service with an assertion failure. Anyone
- running a hidden service should upgrade to this version, or to some
- other version with fixes for TROVE-2017-005. (Versions before 0.3.0
- are not affected by TROVE-2017-004.)
- o Major bugfixes (hidden service, relay, security):
- - Fix a remotely triggerable assertion failure caused by receiving a
- BEGIN_DIR cell on a hidden service rendezvous circuit. Fixes bug
- 22494, tracked as TROVE-2017-005 and CVE-2017-0376; bugfix
- on 0.2.2.1-alpha.
- o Minor features (geoip):
- - Update geoip and geoip6 to the May 2 2017 Maxmind GeoLite2
- Country database.
- o Minor bugfixes (correctness):
- - Avoid undefined behavior when parsing IPv6 entries from the geoip6
- file. Fixes bug 22490; bugfix on 0.2.4.6-alpha.
- Changes in version 0.2.5.14 - 2017-06-08
- Tor 0.2.5.14 backports a fix for a bug that would allow an attacker to
- remotely crash a hidden service with an assertion failure. Anyone
- running a hidden service should upgrade to this version, or to some
- other version with fixes for TROVE-2017-005. (Versions before 0.3.0
- are not affected by TROVE-2017-004.)
- o Major bugfixes (hidden service, relay, security):
- - Fix a remotely triggerable assertion failure caused by receiving a
- BEGIN_DIR cell on a hidden service rendezvous circuit. Fixes bug
- 22494, tracked as TROVE-2017-005 and CVE-2017-0376; bugfix
- on 0.2.2.1-alpha.
- o Minor features (geoip):
- - Update geoip and geoip6 to the May 2 2017 Maxmind GeoLite2
- Country database.
- o Minor bugfixes (correctness):
- - Avoid undefined behavior when parsing IPv6 entries from the geoip6
- file. Fixes bug 22490; bugfix on 0.2.4.6-alpha.
- Changes in version 0.2.4.29 - 2017-06-08
- Tor 0.2.4.29 backports a fix for a bug that would allow an attacker to
- remotely crash a hidden service with an assertion failure. Anyone
- running a hidden service should upgrade to this version, or to some
- other version with fixes for TROVE-2017-005. (Versions before 0.3.0
- are not affected by TROVE-2017-004.)
- o Major bugfixes (hidden service, relay, security):
- - Fix a remotely triggerable assertion failure caused by receiving a
- BEGIN_DIR cell on a hidden service rendezvous circuit. Fixes bug
- 22494, tracked as TROVE-2017-005 and CVE-2017-0376; bugfix
- on 0.2.2.1-alpha.
- o Minor features (geoip):
- - Update geoip and geoip6 to the May 2 2017 Maxmind GeoLite2
- Country database.
- o Minor bugfixes (correctness):
- - Avoid undefined behavior when parsing IPv6 entries from the geoip6
- file. Fixes bug 22490; bugfix on 0.2.4.6-alpha.
- Changes in version 0.3.0.7 - 2017-05-15
- Tor 0.3.0.7 fixes a medium-severity security bug in earlier versions
- of Tor 0.3.0.x, where an attacker could cause a Tor relay process
- to exit. Relays running earlier versions of Tor 0.3.0.x should upgrade;
- clients are not affected.
- o Major bugfixes (hidden service directory, security):
- - Fix an assertion failure in the hidden service directory code, which
- could be used by an attacker to remotely cause a Tor relay process to
- exit. Relays running earlier versions of Tor 0.3.0.x should upgrade.
- should upgrade. This security issue is tracked as TROVE-2017-002.
- Fixes bug 22246; bugfix on 0.3.0.1-alpha.
- o Minor features:
- - Update geoip and geoip6 to the May 2 2017 Maxmind GeoLite2
- Country database.
- o Minor features (future-proofing):
- - Tor no longer refuses to download microdescriptors or descriptors
- if they are listed as "published in the future". This change will
- eventually allow us to stop listing meaningful "published" dates
- in microdescriptor consensuses, and thereby allow us to reduce the
- resources required to download consensus diffs by over 50%.
- Implements part of ticket 21642; implements part of proposal 275.
- o Minor bugfixes (Linux seccomp2 sandbox):
- - The getpid() system call is now permitted under the Linux seccomp2
- sandbox, to avoid crashing with versions of OpenSSL (and other
- libraries) that attempt to learn the process's PID by using the
- syscall rather than the VDSO code. Fixes bug 21943; bugfix
- on 0.2.5.1-alpha.
- Changes in version 0.3.0.6 - 2017-04-26
- Tor 0.3.0.6 is the first stable release of the Tor 0.3.0 series.
- With the 0.3.0 series, clients and relays now use Ed25519 keys to
- authenticate their link connections to relays, rather than the old
- RSA1024 keys that they used before. (Circuit crypto has been
- Curve25519-authenticated since 0.2.4.8-alpha.) We have also replaced
- the guard selection and replacement algorithm to behave more robustly
- in the presence of unreliable networks, and to resist guard-
- capture attacks.
- This series also includes numerous other small features and bugfixes,
- along with more groundwork for the upcoming hidden-services revamp.
- Per our stable release policy, we plan to support the Tor 0.3.0
- release series for at least the next nine months, or for three months
- after the first stable release of the 0.3.1 series: whichever is
- longer. If you need a release with long-term support, we recommend
- that you stay with the 0.2.9 series.
- Below are the changes since 0.2.9.10. For a list of only the changes
- since 0.3.0.5-rc, see the ChangeLog file.
- o Major features (directory authority, security):
- - The default for AuthDirPinKeys is now 1: directory authorities
- will reject relays where the RSA identity key matches a previously
- seen value, but the Ed25519 key has changed. Closes ticket 18319.
- o Major features (guard selection algorithm):
- - Tor's guard selection algorithm has been redesigned from the
- ground up, to better support unreliable networks and restrictive
- sets of entry nodes, and to better resist guard-capture attacks by
- hostile local networks. Implements proposal 271; closes
- ticket 19877.
- o Major features (next-generation hidden services):
- - Relays can now handle v3 ESTABLISH_INTRO cells as specified by
- prop224 aka "Next Generation Hidden Services". Service and clients
- don't use this functionality yet. Closes ticket 19043. Based on
- initial code by Alec Heifetz.
- - Relays now support the HSDir version 3 protocol, so that they can
- can store and serve v3 descriptors. This is part of the next-
- generation onion service work detailed in proposal 224. Closes
- ticket 17238.
- o Major features (protocol, ed25519 identity keys):
- - Clients now support including Ed25519 identity keys in the EXTEND2
- cells they generate. By default, this is controlled by a consensus
- parameter, currently disabled. You can turn this feature on for
- testing by setting ExtendByEd25519ID in your configuration. This
- might make your traffic appear different than the traffic
- generated by other users, however. Implements part of ticket
- 15056; part of proposal 220.
- - Relays now understand requests to extend to other relays by their
- Ed25519 identity keys. When an Ed25519 identity key is included in
- an EXTEND2 cell, the relay will only extend the circuit if the
- other relay can prove ownership of that identity. Implements part
- of ticket 15056; part of proposal 220.
- - Relays now use Ed25519 to prove their Ed25519 identities and to
- one another, and to clients. This algorithm is faster and more
- secure than the RSA-based handshake we've been doing until now.
- Implements the second big part of proposal 220; Closes
- ticket 15055.
- o Major features (security):
- - Change the algorithm used to decide DNS TTLs on client and server
- side, to better resist DNS-based correlation attacks like the
- DefecTor attack of Greschbach, Pulls, Roberts, Winter, and
- Feamster. Now relays only return one of two possible DNS TTL
- values, and clients are willing to believe DNS TTL values up to 3
- hours long. Closes ticket 19769.
- o Major bugfixes (client, onion service, also in 0.2.9.9):
- - Fix a client-side onion service reachability bug, where multiple
- socks requests to an onion service (or a single slow request)
- could cause us to mistakenly mark some of the service's
- introduction points as failed, and we cache that failure so
- eventually we run out and can't reach the service. Also resolves a
- mysterious "Remote server sent bogus reason code 65021" log
- warning. The bug was introduced in ticket 17218, where we tried to
- remember the circuit end reason as a uint16_t, which mangled
- negative values. Partially fixes bug 21056 and fixes bug 20307;
- bugfix on 0.2.8.1-alpha.
- o Major bugfixes (crash, directory connections):
- - Fix a rare crash when sending a begin cell on a circuit whose
- linked directory connection had already been closed. Fixes bug
- 21576; bugfix on 0.2.9.3-alpha. Reported by Alec Muffett.
- o Major bugfixes (directory authority):
- - During voting, when marking a relay as a probable sybil, do not
- clear its BadExit flag: sybils can still be bad in other ways
- too. (We still clear the other flags.) Fixes bug 21108; bugfix
- on 0.2.0.13-alpha.
- o Major bugfixes (DNS):
- - Fix a bug that prevented exit nodes from caching DNS records for
- more than 60 seconds. Fixes bug 19025; bugfix on 0.2.4.7-alpha.
- o Major bugfixes (IPv6 Exits):
- - Stop rejecting all IPv6 traffic on Exits whose exit policy rejects
- any IPv6 addresses. Instead, only reject a port over IPv6 if the
- exit policy rejects that port on more than an IPv6 /16 of
- addresses. This bug was made worse by 17027 in 0.2.8.1-alpha,
- which rejected a relay's own IPv6 address by default. Fixes bug
- 21357; bugfix on commit 004f3f4e53 in 0.2.4.7-alpha.
- o Major bugfixes (parsing):
- - Fix an integer underflow bug when comparing malformed Tor
- versions. This bug could crash Tor when built with
- --enable-expensive-hardening, or on Tor 0.2.9.1-alpha through Tor
- 0.2.9.8, which were built with -ftrapv by default. In other cases
- it was harmless. Part of TROVE-2017-001. Fixes bug 21278; bugfix
- on 0.0.8pre1. Found by OSS-Fuzz.
- - When parsing a malformed content-length field from an HTTP
- message, do not read off the end of the buffer. This bug was a
- potential remote denial-of-service attack against Tor clients and
- relays. A workaround was released in October 2016, to prevent this
- bug from crashing Tor. This is a fix for the underlying issue,
- which should no longer matter (if you applied the earlier patch).
- Fixes bug 20894; bugfix on 0.2.0.16-alpha. Bug found by fuzzing
- using AFL (http:
- o Major bugfixes (scheduler):
- - Actually compare circuit policies in ewma_cmp_cmux(). This bug
- caused the channel scheduler to behave more or less randomly,
- rather than preferring channels with higher-priority circuits.
- Fixes bug 20459; bugfix on 0.2.6.2-alpha.
- o Major bugfixes (security, also in 0.2.9.9):
- - Downgrade the "-ftrapv" option from "always on" to "only on when
- --enable-expensive-hardening is provided." This hardening option,
- like others, can turn survivable bugs into crashes--and having it
- on by default made a (relatively harmless) integer overflow bug
- into a denial-of-service bug. Fixes bug 21278 (TROVE-2017-001);
- bugfix on 0.2.9.1-alpha.
- o Minor feature (client):
- - Enable IPv6 traffic on the SocksPort by default. To disable this,
- a user will have to specify "NoIPv6Traffic". Closes ticket 21269.
- o Minor feature (fallback scripts):
- - Add a check_existing mode to updateFallbackDirs.py, which checks
- if fallbacks in the hard-coded list are working. Closes ticket
- 20174. Patch by haxxpop.
- o Minor feature (protocol versioning):
- - Add new protocol version for proposal 224. HSIntro now advertises
- version "3-4" and HSDir version "1-2". Fixes ticket 20656.
- o Minor features (ciphersuite selection):
- - Allow relays to accept a wider range of ciphersuites, including
- chacha20-poly1305 and AES-CCM. Closes the other part of 15426.
- - Clients now advertise a list of ciphersuites closer to the ones
- preferred by Firefox. Closes part of ticket 15426.
- o Minor features (controller):
- - Add "GETINFO sr/current" and "GETINFO sr/previous" keys, to expose
- shared-random values to the controller. Closes ticket 19925.
- - When HSFETCH arguments cannot be parsed, say "Invalid argument"
- rather than "unrecognized." Closes ticket 20389; patch from
- Ivan Markin.
- o Minor features (controller, configuration):
- - Each of the *Port options, such as SocksPort, ORPort, ControlPort,
- and so on, now comes with a __*Port variant that will not be saved
- to the torrc file by the controller's SAVECONF command. This
- change allows TorBrowser to set up a single-use domain socket for
- each time it launches Tor. Closes ticket 20956.
- - The GETCONF command can now query options that may only be
- meaningful in context-sensitive lists. This allows the controller
- to query the mixed SocksPort/__SocksPort style options introduced
- in feature 20956. Implements ticket 21300.
- o Minor features (diagnostic, directory client):
- - Warn when we find an unexpected inconsistency in directory
- download status objects. Prevents some negative consequences of
- bug 20593.
- o Minor features (directory authorities):
- - Directory authorities now reject descriptors that claim to be
- malformed versions of Tor. Helps prevent exploitation of
- bug 21278.
- - Reject version numbers with components that exceed INT32_MAX.
- Otherwise 32-bit and 64-bit platforms would behave inconsistently.
- Fixes bug 21450; bugfix on 0.0.8pre1.
- o Minor features (directory authority):
- - Add a new authority-only AuthDirTestEd25519LinkKeys option (on by
- default) to control whether authorities should try to probe relays
- by their Ed25519 link keys. This option will go away in a few
- releases--unless we encounter major trouble in our ed25519 link
- protocol rollout, in which case it will serve as a safety option.
- o Minor features (directory cache):
- - Relays and bridges will now refuse to serve the consensus they
- have if they know it is too old for a client to use. Closes
- ticket 20511.
- o Minor features (ed25519 link handshake):
- - Advertise support for the ed25519 link handshake using the
- subprotocol-versions mechanism, so that clients can tell which
- relays can identity themselves by Ed25519 ID. Closes ticket 20552.
- o Minor features (entry guards):
- - Add UseEntryGuards to TEST_OPTIONS_DEFAULT_VALUES in order to not
- break regression tests.
- - Require UseEntryGuards when UseBridges is set, in order to make
- sure bridges aren't bypassed. Resolves ticket 20502.
- o Minor features (fallback directories):
- - Allow 3 fallback relays per operator, which is safe now that we
- are choosing 200 fallback relays. Closes ticket 20912.
- - Annotate updateFallbackDirs.py with the bandwidth and consensus
- weight for each candidate fallback. Closes ticket 20878.
- - Display the relay fingerprint when downloading consensuses from
- fallbacks. Closes ticket 20908.
- - Exclude relays affected by bug 20499 from the fallback list.
- Exclude relays from the fallback list if they are running versions
- known to be affected by bug 20499, or if in our tests they deliver
- a stale consensus (i.e. one that expired more than 24 hours ago).
- Closes ticket 20539.
- - Make it easier to change the output sort order of fallbacks.
- Closes ticket 20822.
- - Reduce the minimum fallback bandwidth to 1 MByte/s. Part of
- ticket 18828.
- - Require fallback directories to have the same address and port for
- 7 days (now that we have enough relays with this stability).
- Relays whose OnionOO stability timer is reset on restart by bug
- 18050 should upgrade to Tor 0.2.8.7 or later, which has a fix for
- this issue. Closes ticket 20880; maintains short-term fix
- in 0.2.8.2-alpha.
- - Require fallbacks to have flags for 90% of the time (weighted
- decaying average), rather than 95%. This allows at least 73% of
- clients to bootstrap in the first 5 seconds without contacting an
- authority. Part of ticket 18828.
- - Select 200 fallback directories for each release. Closes
- ticket 20881.
- o Minor features (fingerprinting resistance, authentication):
- - Extend the length of RSA keys used for TLS link authentication to
- 2048 bits. (These weren't used for forward secrecy; for forward
- secrecy, we used P256.) Closes ticket 13752.
- o Minor features (geoip):
- - Update geoip and geoip6 to the April 4 2017 Maxmind GeoLite2
- Country database.
- o Minor features (geoip, also in 0.2.9.9):
- - Update geoip and geoip6 to the January 4 2017 Maxmind GeoLite2
- Country database.
- o Minor features (infrastructure):
- - Implement smartlist_add_strdup() function. Replaces the use of
- smartlist_add(sl, tor_strdup(str)). Closes ticket 20048.
- o Minor features (linting):
- - Enhance the changes file linter to warn on Tor versions that are
- prefixed with "tor-". Closes ticket 21096.
- o Minor features (logging):
- - In several places, describe unset ed25519 keys as "<unset>",
- rather than the scary "AAAAAAAA...AAA". Closes ticket 21037.
- o Minor features (portability, compilation):
- - Autoconf now checks to determine if OpenSSL structures are opaque,
- instead of explicitly checking for OpenSSL version numbers. Part
- of ticket 21359.
- - Support building with recent LibreSSL code that uses opaque
- structures. Closes ticket 21359.
- o Minor features (relay):
- - We now allow separation of exit and relay traffic to different
- source IP addresses, using the OutboundBindAddressExit and
- OutboundBindAddressOR options respectively. Closes ticket 17975.
- Written by Michael Sonntag.
- o Minor features (reliability, crash):
- - Try better to detect problems in buffers where they might grow (or
- think they have grown) over 2 GB in size. Diagnostic for
- bug 21369.
- o Minor features (testing):
- - During 'make test-network-all', if tor logs any warnings, ask
- chutney to output them. Requires a recent version of chutney with
- the 21572 patch. Implements 21570.
- o Minor bugfix (control protocol):
- - The reply to a "GETINFO config/names" request via the control
- protocol now spells the type "Dependent" correctly. This is a
- breaking change in the control protocol. (The field seems to be
- ignored by the most common known controllers.) Fixes bug 18146;
- bugfix on 0.1.1.4-alpha.
- - The GETINFO extra-info/digest/<digest> command was broken because
- of a wrong base16 decode return value check, introduced when
- refactoring that API. Fixes bug 22034; bugfix on 0.2.9.1-alpha.
- o Minor bugfix (logging):
- - Don't recommend the use of Tor2web in non-anonymous mode.
- Recommending Tor2web is a bad idea because the client loses all
- anonymity. Tor2web should only be used in specific cases by users
- who *know* and understand the issues. Fixes bug 21294; bugfix
- on 0.2.9.3-alpha.
- o Minor bugfixes (bug resilience):
- - Fix an unreachable size_t overflow in base64_decode(). Fixes bug
- 19222; bugfix on 0.2.0.9-alpha. Found by Guido Vranken; fixed by
- Hans Jerry Illikainen.
- o Minor bugfixes (build):
- - Replace obsolete Autoconf macros with their modern equivalent and
- prevent similar issues in the future. Fixes bug 20990; bugfix
- on 0.1.0.1-rc.
- o Minor bugfixes (certificate expiration time):
- - Avoid using link certificates that don't become valid till some
- time in the future. Fixes bug 21420; bugfix on 0.2.4.11-alpha
- o Minor bugfixes (client):
- - Always recover from failures in extend_info_from_node(), in an
- attempt to prevent any recurrence of bug 21242. Fixes bug 21372;
- bugfix on 0.2.3.1-alpha.
- - When clients that use bridges start up with a cached consensus on
- disk, they were ignoring it and downloading a new one. Now they
- use the cached one. Fixes bug 20269; bugfix on 0.2.3.12-alpha.
- o Minor bugfixes (code correctness):
- - Repair a couple of (unreachable or harmless) cases of the risky
- comparison-by-subtraction pattern that caused bug 21278.
- o Minor bugfixes (config):
- - Don't assert on startup when trying to get the options list and
- LearnCircuitBuildTimeout is set to 0: we are currently parsing the
- options so of course they aren't ready yet. Fixes bug 21062;
- bugfix on 0.2.9.3-alpha.
- o Minor bugfixes (configuration):
- - Accept non-space whitespace characters after the severity level in
- the `Log` option. Fixes bug 19965; bugfix on 0.2.1.1-alpha.
- - Support "TByte" and "TBytes" units in options given in bytes.
- "TB", "terabyte(s)", "TBit(s)" and "terabit(s)" were already
- supported. Fixes bug 20622; bugfix on 0.2.0.14-alpha.
- o Minor bugfixes (configure, autoconf):
- - Rename the configure option --enable-expensive-hardening to
- --enable-fragile-hardening. Expensive hardening makes the tor
- daemon abort when some kinds of issues are detected. Thus, it
- makes tor more at risk of remote crashes but safer against RCE or
- heartbleed bug category. We now try to explain this issue in a
- message from the configure script. Fixes bug 21290; bugfix
- on 0.2.5.4-alpha.
- o Minor bugfixes (consensus weight):
- - Add new consensus method that initializes bw weights to 1 instead
- of 0. This prevents a zero weight from making it all the way to
- the end (happens in small testing networks) and causing an error.
- Fixes bug 14881; bugfix on 0.2.2.17-alpha.
- o Minor bugfixes (crash prevention):
- - Fix an (currently untriggerable, but potentially dangerous) crash
- bug when base32-encoding inputs whose sizes are not a multiple of
- 5. Fixes bug 21894; bugfix on 0.2.9.1-alpha.
- o Minor bugfixes (dead code):
- - Remove a redundant check for PidFile changes at runtime in
- options_transition_allowed(): this check is already performed
- regardless of whether the sandbox is active. Fixes bug 21123;
- bugfix on 0.2.5.4-alpha.
- o Minor bugfixes (descriptors):
- - Correctly recognise downloaded full descriptors as valid, even
- when using microdescriptors as circuits. This affects clients with
- FetchUselessDescriptors set, and may affect directory authorities.
- Fixes bug 20839; bugfix on 0.2.3.2-alpha.
- o Minor bugfixes (directory mirrors):
- - Allow relays to use directory mirrors without a DirPort: these
- relays need to be contacted over their ORPorts using a begindir
- connection. Fixes one case of bug 20711; bugfix on 0.2.8.2-alpha.
- - Clarify the message logged when a remote relay is unexpectedly
- missing an ORPort or DirPort: users were confusing this with a
- local port. Fixes another case of bug 20711; bugfix
- on 0.2.8.2-alpha.
- o Minor bugfixes (directory system):
- - Bridges and relays now use microdescriptors (like clients do)
- rather than old-style router descriptors. Now bridges will blend
- in with clients in terms of the circuits they build. Fixes bug
- 6769; bugfix on 0.2.3.2-alpha.
- - Download all consensus flavors, descriptors, and authority
- certificates when FetchUselessDescriptors is set, regardless of
- whether tor is a directory cache or not. Fixes bug 20667; bugfix
- on all recent tor versions.
- o Minor bugfixes (documentation):
- - Update the tor manual page to document every option that can not
- be changed while tor is running. Fixes bug 21122.
- o Minor bugfixes (ed25519 certificates):
- - Correctly interpret ed25519 certificates that would expire some
- time after 19 Jan 2038. Fixes bug 20027; bugfix on 0.2.7.2-alpha.
- o Minor bugfixes (fallback directories):
- - Avoid checking fallback candidates' DirPorts if they are down in
- OnionOO. When a relay operator has multiple relays, this
- prioritizes relays that are up over relays that are down. Fixes
- bug 20926; bugfix on 0.2.8.3-alpha.
- - Stop failing when OUTPUT_COMMENTS is True in updateFallbackDirs.py.
- Fixes bug 20877; bugfix on 0.2.8.3-alpha.
- - Stop failing when a relay has no uptime data in
- updateFallbackDirs.py. Fixes bug 20945; bugfix on 0.2.8.1-alpha.
- o Minor bugfixes (hidden service):
- - Clean up the code for expiring intro points with no associated
- circuits. It was causing, rarely, a service with some expiring
- introduction points to not open enough additional introduction
- points. Fixes part of bug 21302; bugfix on 0.2.7.2-alpha.
- - Resolve two possible underflows which could lead to creating and
- closing a lot of introduction point circuits in a non-stop loop.
- Fixes bug 21302; bugfix on 0.2.7.2-alpha.
- - Stop setting the torrc option HiddenServiceStatistics to "0" just
- because we're not a bridge or relay. Instead, we preserve whatever
- value the user set (or didn't set). Fixes bug 21150; bugfix
- on 0.2.6.2-alpha.
- o Minor bugfixes (hidden services):
- - Make hidden services check for failed intro point connections,
- even when they have exceeded their intro point creation limit.
- Fixes bug 21596; bugfix on 0.2.7.2-alpha. Reported by Alec Muffett.
- - Make hidden services with 8 to 10 introduction points check for
- failed circuits immediately after startup. Previously, they would
- wait for 5 minutes before performing their first checks. Fixes bug
- 21594; bugfix on 0.2.3.9-alpha. Reported by Alec Muffett.
- - Stop ignoring misconfigured hidden services. Instead, refuse to
- start tor until the misconfigurations have been corrected. Fixes
- bug 20559; bugfix on multiple commits in 0.2.7.1-alpha
- and earlier.
- o Minor bugfixes (IPv6):
- - Make IPv6-using clients try harder to find an IPv6 directory
- server. Fixes bug 20999; bugfix on 0.2.8.2-alpha.
- - When IPv6 addresses have not been downloaded yet (microdesc
- consensus documents don't list relay IPv6 addresses), use hard-
- coded addresses for authorities, fallbacks, and configured
- bridges. Now IPv6-only clients can use microdescriptors. Fixes bug
- 20996; bugfix on b167e82 from 19608 in 0.2.8.5-alpha.
- o Minor bugfixes (memory leak at exit):
- - Fix a small harmless memory leak at exit of the previously unused
- RSA->Ed identity cross-certificate. Fixes bug 17779; bugfix
- on 0.2.7.2-alpha.
- o Minor bugfixes (onion services):
- - Allow the number of introduction points to be as low as 0, rather
- than as low as 3. Fixes bug 21033; bugfix on 0.2.7.2-alpha.
- o Minor bugfixes (portability):
- - Use "OpenBSD" compiler macro instead of "OPENBSD" or "__OpenBSD__".
- It is supported by OpenBSD itself, and also by most OpenBSD
- variants (such as Bitrig). Fixes bug 20980; bugfix
- on 0.1.2.1-alpha.
- o Minor bugfixes (portability, also in 0.2.9.9):
- - Avoid crashing when Tor is built using headers that contain
- CLOCK_MONOTONIC_COARSE, but then tries to run on an older kernel
- without CLOCK_MONOTONIC_COARSE. Fixes bug 21035; bugfix
- on 0.2.9.1-alpha.
- - Fix Libevent detection on platforms without Libevent 1 headers
- installed. Fixes bug 21051; bugfix on 0.2.9.1-alpha.
- o Minor bugfixes (relay):
- - Avoid a double-marked-circuit warning that could happen when we
- receive DESTROY cells under heavy load. Fixes bug 20059; bugfix
- on 0.1.0.1-rc.
- - Honor DataDirectoryGroupReadable when tor is a relay. Previously,
- initializing the keys would reset the DataDirectory to 0700
- instead of 0750 even if DataDirectoryGroupReadable was set to 1.
- Fixes bug 19953; bugfix on 0.0.2pre16. Patch by "redfish".
- o Minor bugfixes (testing):
- - Fix Raspbian build issues related to missing socket errno in
- test_util.c. Fixes bug 21116; bugfix on 0.2.8.2. Patch by "hein".
- - Remove undefined behavior from the backtrace generator by removing
- its signal handler. Fixes bug 21026; bugfix on 0.2.5.2-alpha.
- - Use bash in src/test/test-network.sh. This ensures we reliably
- call chutney's newer tools/test-network.sh when available. Fixes
- bug 21562; bugfix on 0.2.9.1-alpha.
- o Minor bugfixes (tor-resolve):
- - The tor-resolve command line tool now rejects hostnames over 255
- characters in length. Previously, it would silently truncate them,
- which could lead to bugs. Fixes bug 21280; bugfix on 0.0.9pre5.
- Patch by "junglefowl".
- o Minor bugfixes (unit tests):
- - Allow the unit tests to pass even when DNS lookups of bogus
- addresses do not fail as expected. Fixes bug 20862 and 20863;
- bugfix on unit tests introduced in 0.2.8.1-alpha
- through 0.2.9.4-alpha.
- o Minor bugfixes (util):
- - When finishing writing a file to disk, if we were about to replace
- the file with the temporary file created before and we fail to
- replace it, remove the temporary file so it doesn't stay on disk.
- Fixes bug 20646; bugfix on 0.2.0.7-alpha. Patch by fk.
- o Minor bugfixes (Windows services):
- - Be sure to initialize the monotonic time subsystem before using
- it, even when running as an NT service. Fixes bug 21356; bugfix
- on 0.2.9.1-alpha.
- o Minor bugfixes (Windows):
- - Check for getpagesize before using it to mmap files. This fixes
- compilation in some MinGW environments. Fixes bug 20530; bugfix on
- 0.1.2.1-alpha. Reported by "ice".
- o Code simplification and refactoring:
- - Abolish all global guard context in entrynodes.c; replace with new
- guard_selection_t structure as preparation for proposal 271.
- Closes ticket 19858.
- - Extract magic numbers in circuituse.c into defined variables.
- - Introduce rend_service_is_ephemeral() that tells if given onion
- service is ephemeral. Replace unclear NULL-checkings for service
- directory with this function. Closes ticket 20526.
- - Refactor circuit_is_available_for_use to remove unnecessary check.
- - Refactor circuit_predict_and_launch_new for readability and
- testability. Closes ticket 18873.
- - Refactor code to manipulate global_origin_circuit_list into
- separate functions. Closes ticket 20921.
- - Refactor large if statement in purpose_needs_anonymity to use
- switch statement instead. Closes part of ticket 20077.
- - Refactor the hashing API to return negative values for errors, as
- is done as throughout the codebase. Closes ticket 20717.
- - Remove data structures that were used to index or_connection
- objects by their RSA identity digests. These structures are fully
- redundant with the similar structures used in the
- channel abstraction.
- - Remove duplicate code in the channel_write_*cell() functions.
- Closes ticket 13827; patch from Pingl.
- - Remove redundant behavior of is_sensitive_dir_purpose, refactor to
- use only purpose_needs_anonymity. Closes part of ticket 20077.
- - The code to generate and parse EXTEND and EXTEND2 cells has been
- replaced with code automatically generated by the
- "trunnel" utility.
- o Documentation (formatting):
- - Clean up formatting of tor.1 man page and HTML doc, where <pre>
- blocks were incorrectly appearing. Closes ticket 20885.
- o Documentation (man page):
- - Clarify many options in tor.1 and add some min/max values for
- HiddenService options. Closes ticket 21058.
- o Documentation:
- - Change '1' to 'weight_scale' in consensus bw weights calculation
- comments, as that is reality. Closes ticket 20273. Patch
- from pastly.
- - Clarify that when ClientRejectInternalAddresses is enabled (which
- is the default), multicast DNS hostnames for machines on the local
- network (of the form *.local) are also rejected. Closes
- ticket 17070.
- - Correct the value for AuthDirGuardBWGuarantee in the manpage, from
- 250 KBytes to 2 MBytes. Fixes bug 20435; bugfix on 0.2.5.6-alpha.
- - Include the "TBits" unit in Tor's man page. Fixes part of bug
- 20622; bugfix on 0.2.5.1-alpha.
- - Small fixes to the fuzzing documentation. Closes ticket 21472.
- - Stop the man page from incorrectly stating that HiddenServiceDir
- must already exist. Fixes 20486.
- - Update the description of the directory server options in the
- manual page, to clarify that a relay no longer needs to set
- DirPort in order to be a directory cache. Closes ticket 21720.
- o Removed features:
- - The AuthDirMaxServersPerAuthAddr option no longer exists: The same
- limit for relays running on a single IP applies to authority IP
- addresses as well as to non-authority IP addresses. Closes
- ticket 20960.
- - The UseDirectoryGuards torrc option no longer exists: all users
- that use entry guards will also use directory guards. Related to
- proposal 271; implements part of ticket 20831.
- o Testing:
- - Add tests for networkstatus_compute_bw_weights_v10.
- - Add unit tests circuit_predict_and_launch_new.
- - Extract dummy_origin_circuit_new so it can be used by other
- test functions.
- - New unit tests for tor_htonll(). Closes ticket 19563. Patch
- from "overcaffeinated".
- - Perform the coding style checks when running the tests and fail
- when coding style violations are found. Closes ticket 5500.
- Changes in version 0.2.8.13 - 2017-03-03
- Tor 0.2.8.13 backports a security fix from later Tor
- releases. Anybody running Tor 0.2.8.12 or earlier should upgrade to this
- this release, if for some reason they cannot upgrade to a later
- release series, and if they build Tor with the --enable-expensive-hardening
- option.
- Note that support for Tor 0.2.8.x is ending next year: we will not issue
- any fixes for the Tor 0.2.8.x series after 1 Jan 2018. If you need
- a Tor release series with longer-term support, we recommend Tor 0.2.9.x.
- o Major bugfixes (parsing, backported from 0.3.0.4-rc):
- - Fix an integer underflow bug when comparing malformed Tor
- versions. This bug could crash Tor when built with
- --enable-expensive-hardening, or on Tor 0.2.9.1-alpha through Tor
- 0.2.9.8, which were built with -ftrapv by default. In other cases
- it was harmless. Part of TROVE-2017-001. Fixes bug 21278; bugfix
- on 0.0.8pre1. Found by OSS-Fuzz.
- o Minor features (geoip):
- - Update geoip and geoip6 to the February 8 2017 Maxmind GeoLite2
- Country database.
- Changes in version 0.2.7.7 - 2017-03-03
- Tor 0.2.7.7 backports a number of security fixes from later Tor
- releases. Anybody running Tor 0.2.7.6 or earlier should upgrade to
- this release, if for some reason they cannot upgrade to a later
- release series.
- Note that support for Tor 0.2.7.x is ending this year: we will not issue
- any fixes for the Tor 0.2.7.x series after 1 August 2017. If you need
- a Tor release series with longer-term support, we recommend Tor 0.2.9.x.
- o Directory authority changes (backport from 0.2.8.5-rc):
- - Urras is no longer a directory authority. Closes ticket 19271.
- o Directory authority changes (backport from 0.2.9.2-alpha):
- - The "Tonga" bridge authority has been retired; the new bridge
- authority is "Bifroest". Closes tickets 19728 and 19690.
- o Directory authority key updates (backport from 0.2.8.1-alpha):
- - Update the V3 identity key for the dannenberg directory authority:
- it was changed on 18 November 2015. Closes task 17906. Patch
- by "teor".
- o Major bugfixes (parsing, security, backport from 0.2.9.8):
- - Fix a bug in parsing that could cause clients to read a single
- byte past the end of an allocated region. This bug could be used
- to cause hardened clients (built with --enable-expensive-hardening)
- to crash if they tried to visit a hostile hidden service. Non-
- hardened clients are only affected depending on the details of
- their platform's memory allocator. Fixes bug 21018; bugfix on
- 0.2.0.8-alpha. Found by using libFuzzer. Also tracked as TROVE-
- 2016-12-002 and as CVE-2016-1254.
- o Major bugfixes (security, client, DNS proxy, backport from 0.2.8.3-alpha):
- - Stop a crash that could occur when a client running with DNSPort
- received a query with multiple address types, and the first
- address type was not supported. Found and fixed by Scott Dial.
- Fixes bug 18710; bugfix on 0.2.5.4-alpha.
- - Prevent a class of security bugs caused by treating the contents
- of a buffer chunk as if they were a NUL-terminated string. At
- least one such bug seems to be present in all currently used
- versions of Tor, and would allow an attacker to remotely crash
- most Tor instances, especially those compiled with extra compiler
- hardening. With this defense in place, such bugs can't crash Tor,
- though we should still fix them as they occur. Closes ticket
- 20384 (TROVE-2016-10-001).
- o Major bugfixes (security, pointers, backport from 0.2.8.2-alpha):
- - Avoid a difficult-to-trigger heap corruption attack when extending
- a smartlist to contain over 16GB of pointers. Fixes bug 18162;
- bugfix on 0.1.1.11-alpha, which fixed a related bug incompletely.
- Reported by Guido Vranken.
- o Major bugfixes (dns proxy mode, crash, backport from 0.2.8.2-alpha):
- - Avoid crashing when running as a DNS proxy. Fixes bug 16248;
- bugfix on 0.2.0.1-alpha. Patch from "cypherpunks".
- o Major bugfixes (key management, backport from 0.2.8.3-alpha):
- - If OpenSSL fails to generate an RSA key, do not retain a dangling
- pointer to the previous (uninitialized) key value. The impact here
- should be limited to a difficult-to-trigger crash, if OpenSSL is
- running an engine that makes key generation failures possible, or
- if OpenSSL runs out of memory. Fixes bug 19152; bugfix on
- 0.2.1.10-alpha. Found by Yuan Jochen Kang, Suman Jana, and
- Baishakhi Ray.
- o Major bugfixes (parsing, backported from 0.3.0.4-rc):
- - Fix an integer underflow bug when comparing malformed Tor
- versions. This bug could crash Tor when built with
- --enable-expensive-hardening, or on Tor 0.2.9.1-alpha through Tor
- 0.2.9.8, which were built with -ftrapv by default. In other cases
- it was harmless. Part of TROVE-2017-001. Fixes bug 21278; bugfix
- on 0.0.8pre1. Found by OSS-Fuzz.
- o Minor features (security, memory erasure, backport from 0.2.8.1-alpha):
- - Make memwipe() do nothing when passed a NULL pointer or buffer of
- zero size. Check size argument to memwipe() for underflow. Fixes
- bug 18089; bugfix on 0.2.3.25 and 0.2.4.6-alpha. Reported by "gk",
- patch by "teor".
- o Minor features (bug-resistance, backport from 0.2.8.2-alpha):
- - Make Tor survive errors involving connections without a
- corresponding event object. Previously we'd fail with an
- assertion; now we produce a log message. Related to bug 16248.
- o Minor features (geoip):
- - Update geoip and geoip6 to the February 8 2017 Maxmind GeoLite2
- Country database.
- Changes in version 0.2.6.11 - 2017-03-03
- Tor 0.2.6.11 backports a number of security fixes from later Tor
- releases. Anybody running Tor 0.2.6.10 or earlier should upgrade to
- this release, if for some reason they cannot upgrade to a later
- release series.
- Note that support for Tor 0.2.6.x is ending this year: we will not issue
- any fixes for the Tor 0.2.6.x series after 1 August 2017. If you need
- a Tor release series with longer-term support, we recommend Tor 0.2.9.x.
- o Directory authority changes (backport from 0.2.8.5-rc):
- - Urras is no longer a directory authority. Closes ticket 19271.
- o Directory authority changes (backport from 0.2.9.2-alpha):
- - The "Tonga" bridge authority has been retired; the new bridge
- authority is "Bifroest". Closes tickets 19728 and 19690.
- o Directory authority key updates (backport from 0.2.8.1-alpha):
- - Update the V3 identity key for the dannenberg directory authority:
- it was changed on 18 November 2015. Closes task 17906. Patch
- by "teor".
- o Major features (security fixes, backport from 0.2.9.4-alpha):
- - Prevent a class of security bugs caused by treating the contents
- of a buffer chunk as if they were a NUL-terminated string. At
- least one such bug seems to be present in all currently used
- versions of Tor, and would allow an attacker to remotely crash
- most Tor instances, especially those compiled with extra compiler
- hardening. With this defense in place, such bugs can't crash Tor,
- though we should still fix them as they occur. Closes ticket
- 20384 (TROVE-2016-10-001).
- o Major bugfixes (parsing, security, backport from 0.2.9.8):
- - Fix a bug in parsing that could cause clients to read a single
- byte past the end of an allocated region. This bug could be used
- to cause hardened clients (built with --enable-expensive-hardening)
- to crash if they tried to visit a hostile hidden service. Non-
- hardened clients are only affected depending on the details of
- their platform's memory allocator. Fixes bug 21018; bugfix on
- 0.2.0.8-alpha. Found by using libFuzzer. Also tracked as TROVE-
- 2016-12-002 and as CVE-2016-1254.
- o Major bugfixes (security, client, DNS proxy, backport from 0.2.8.3-alpha):
- - Stop a crash that could occur when a client running with DNSPort
- received a query with multiple address types, and the first
- address type was not supported. Found and fixed by Scott Dial.
- Fixes bug 18710; bugfix on 0.2.5.4-alpha.
- o Major bugfixes (security, correctness, backport from 0.2.7.4-rc):
- - Fix an error that could cause us to read 4 bytes before the
- beginning of an openssl string. This bug could be used to cause
- Tor to crash on systems with unusual malloc implementations, or
- systems with unusual hardening installed. Fixes bug 17404; bugfix
- on 0.2.3.6-alpha.
- o Major bugfixes (security, pointers, backport from 0.2.8.2-alpha):
- - Avoid a difficult-to-trigger heap corruption attack when extending
- a smartlist to contain over 16GB of pointers. Fixes bug 18162;
- bugfix on 0.1.1.11-alpha, which fixed a related bug incompletely.
- Reported by Guido Vranken.
- o Major bugfixes (dns proxy mode, crash, backport from 0.2.8.2-alpha):
- - Avoid crashing when running as a DNS proxy. Fixes bug 16248;
- bugfix on 0.2.0.1-alpha. Patch from "cypherpunks".
- o Major bugfixes (guard selection, backport from 0.2.7.6):
- - Actually look at the Guard flag when selecting a new directory
- guard. When we implemented the directory guard design, we
- accidentally started treating all relays as if they have the Guard
- flag during guard selection, leading to weaker anonymity and worse
- performance. Fixes bug 17772; bugfix on 0.2.4.8-alpha. Discovered
- by Mohsen Imani.
- o Major bugfixes (key management, backport from 0.2.8.3-alpha):
- - If OpenSSL fails to generate an RSA key, do not retain a dangling
- pointer to the previous (uninitialized) key value. The impact here
- should be limited to a difficult-to-trigger crash, if OpenSSL is
- running an engine that makes key generation failures possible, or
- if OpenSSL runs out of memory. Fixes bug 19152; bugfix on
- 0.2.1.10-alpha. Found by Yuan Jochen Kang, Suman Jana, and
- Baishakhi Ray.
- o Major bugfixes (parsing, backported from 0.3.0.4-rc):
- - Fix an integer underflow bug when comparing malformed Tor
- versions. This bug could crash Tor when built with
- --enable-expensive-hardening, or on Tor 0.2.9.1-alpha through Tor
- 0.2.9.8, which were built with -ftrapv by default. In other cases
- it was harmless. Part of TROVE-2017-001. Fixes bug 21278; bugfix
- on 0.0.8pre1. Found by OSS-Fuzz.
- o Minor features (security, memory erasure, backport from 0.2.8.1-alpha):
- - Make memwipe() do nothing when passed a NULL pointer or buffer of
- zero size. Check size argument to memwipe() for underflow. Fixes
- bug 18089; bugfix on 0.2.3.25 and 0.2.4.6-alpha. Reported by "gk",
- patch by "teor".
- o Minor features (bug-resistance, backport from 0.2.8.2-alpha):
- - Make Tor survive errors involving connections without a
- corresponding event object. Previously we'd fail with an
- assertion; now we produce a log message. Related to bug 16248.
- o Minor features (geoip):
- - Update geoip and geoip6 to the February 8 2017 Maxmind GeoLite2
- Country database.
- o Minor bugfixes (compilation, backport from 0.2.7.6):
- - Fix a compilation warning with Clang 3.6: Do not check the
- presence of an address which can never be NULL. Fixes bug 17781.
- Changes in version 0.2.5.13 - 2017-03-03
- Tor 0.2.5.13 backports a number of security fixes from later Tor
- releases. Anybody running Tor 0.2.5.13 or earlier should upgrade to
- this release, if for some reason they cannot upgrade to a later
- release series.
- Note that support for Tor 0.2.5.x is ending next year: we will not issue
- any fixes for the Tor 0.2.5.x series after 1 May 2018. If you need
- a Tor release series with longer-term support, we recommend Tor 0.2.9.x.
- o Directory authority changes (backport from 0.2.8.5-rc):
- - Urras is no longer a directory authority. Closes ticket 19271.
- o Directory authority changes (backport from 0.2.9.2-alpha):
- - The "Tonga" bridge authority has been retired; the new bridge
- authority is "Bifroest". Closes tickets 19728 and 19690.
- o Directory authority key updates (backport from 0.2.8.1-alpha):
- - Update the V3 identity key for the dannenberg directory authority:
- it was changed on 18 November 2015. Closes task 17906. Patch
- by "teor".
- o Major features (security fixes, backport from 0.2.9.4-alpha):
- - Prevent a class of security bugs caused by treating the contents
- of a buffer chunk as if they were a NUL-terminated string. At
- least one such bug seems to be present in all currently used
- versions of Tor, and would allow an attacker to remotely crash
- most Tor instances, especially those compiled with extra compiler
- hardening. With this defense in place, such bugs can't crash Tor,
- though we should still fix them as they occur. Closes ticket
- 20384 (TROVE-2016-10-001).
- o Major bugfixes (parsing, security, backport from 0.2.9.8):
- - Fix a bug in parsing that could cause clients to read a single
- byte past the end of an allocated region. This bug could be used
- to cause hardened clients (built with --enable-expensive-hardening)
- to crash if they tried to visit a hostile hidden service. Non-
- hardened clients are only affected depending on the details of
- their platform's memory allocator. Fixes bug 21018; bugfix on
- 0.2.0.8-alpha. Found by using libFuzzer. Also tracked as TROVE-
- 2016-12-002 and as CVE-2016-1254.
- o Major bugfixes (security, client, DNS proxy, backport from 0.2.8.3-alpha):
- - Stop a crash that could occur when a client running with DNSPort
- received a query with multiple address types, and the first
- address type was not supported. Found and fixed by Scott Dial.
- Fixes bug 18710; bugfix on 0.2.5.4-alpha.
- o Major bugfixes (security, correctness, backport from 0.2.7.4-rc):
- - Fix an error that could cause us to read 4 bytes before the
- beginning of an openssl string. This bug could be used to cause
- Tor to crash on systems with unusual malloc implementations, or
- systems with unusual hardening installed. Fixes bug 17404; bugfix
- on 0.2.3.6-alpha.
- o Major bugfixes (security, pointers, backport from 0.2.8.2-alpha):
- - Avoid a difficult-to-trigger heap corruption attack when extending
- a smartlist to contain over 16GB of pointers. Fixes bug 18162;
- bugfix on 0.1.1.11-alpha, which fixed a related bug incompletely.
- Reported by Guido Vranken.
- o Major bugfixes (dns proxy mode, crash, backport from 0.2.8.2-alpha):
- - Avoid crashing when running as a DNS proxy. Fixes bug 16248;
- bugfix on 0.2.0.1-alpha. Patch from "cypherpunks".
- o Major bugfixes (guard selection, backport from 0.2.7.6):
- - Actually look at the Guard flag when selecting a new directory
- guard. When we implemented the directory guard design, we
- accidentally started treating all relays as if they have the Guard
- flag during guard selection, leading to weaker anonymity and worse
- performance. Fixes bug 17772; bugfix on 0.2.4.8-alpha. Discovered
- by Mohsen Imani.
- o Major bugfixes (key management, backport from 0.2.8.3-alpha):
- - If OpenSSL fails to generate an RSA key, do not retain a dangling
- pointer to the previous (uninitialized) key value. The impact here
- should be limited to a difficult-to-trigger crash, if OpenSSL is
- running an engine that makes key generation failures possible, or
- if OpenSSL runs out of memory. Fixes bug 19152; bugfix on
- 0.2.1.10-alpha. Found by Yuan Jochen Kang, Suman Jana, and
- Baishakhi Ray.
- o Major bugfixes (parsing, backported from 0.3.0.4-rc):
- - Fix an integer underflow bug when comparing malformed Tor
- versions. This bug could crash Tor when built with
- --enable-expensive-hardening, or on Tor 0.2.9.1-alpha through Tor
- 0.2.9.8, which were built with -ftrapv by default. In other cases
- it was harmless. Part of TROVE-2017-001. Fixes bug 21278; bugfix
- on 0.0.8pre1. Found by OSS-Fuzz.
- o Minor features (security, memory erasure, backport from 0.2.8.1-alpha):
- - Make memwipe() do nothing when passed a NULL pointer or buffer of
- zero size. Check size argument to memwipe() for underflow. Fixes
- bug 18089; bugfix on 0.2.3.25 and 0.2.4.6-alpha. Reported by "gk",
- patch by "teor".
- o Minor features (bug-resistance, backport from 0.2.8.2-alpha):
- - Make Tor survive errors involving connections without a
- corresponding event object. Previously we'd fail with an
- assertion; now we produce a log message. Related to bug 16248.
- o Minor features (geoip):
- - Update geoip and geoip6 to the February 8 2017 Maxmind GeoLite2
- Country database.
- o Minor bugfixes (compilation, backport from 0.2.7.6):
- - Fix a compilation warning with Clang 3.6: Do not check the
- presence of an address which can never be NULL. Fixes bug 17781.
- o Minor bugfixes (crypto error-handling, backport from 0.2.7.2-alpha):
- - Check for failures from crypto_early_init, and refuse to continue.
- A previous typo meant that we could keep going with an
- uninitialized crypto library, and would have OpenSSL initialize
- its own PRNG. Fixes bug 16360; bugfix on 0.2.5.2-alpha, introduced
- when implementing ticket 4900. Patch by "teor".
- o Minor bugfixes (hidden service, backport from 0.2.7.1-alpha):
- - Fix an out-of-bounds read when parsing invalid INTRODUCE2 cells on
- a client authorized hidden service. Fixes bug 15823; bugfix
- on 0.2.1.6-alpha.
- Changes in version 0.2.4.28 - 2017-03-03
- Tor 0.2.4.28 backports a number of security fixes from later Tor
- releases. Anybody running Tor 0.2.4.27 or earlier should upgrade to
- this release, if for some reason they cannot upgrade to a later
- release series.
- Note that support for Tor 0.2.4.x is ending soon: we will not issue
- any fixes for the Tor 0.2.4.x series after 1 August 2017. If you need
- a Tor release series with long-term support, we recommend Tor 0.2.9.x.
- o Directory authority changes (backport from 0.2.8.5-rc):
- - Urras is no longer a directory authority. Closes ticket 19271.
- o Directory authority changes (backport from 0.2.9.2-alpha):
- - The "Tonga" bridge authority has been retired; the new bridge
- authority is "Bifroest". Closes tickets 19728 and 19690.
- o Directory authority key updates (backport from 0.2.8.1-alpha):
- - Update the V3 identity key for the dannenberg directory authority:
- it was changed on 18 November 2015. Closes task 17906. Patch
- by "teor".
- o Major features (security fixes, backport from 0.2.9.4-alpha):
- - Prevent a class of security bugs caused by treating the contents
- of a buffer chunk as if they were a NUL-terminated string. At
- least one such bug seems to be present in all currently used
- versions of Tor, and would allow an attacker to remotely crash
- most Tor instances, especially those compiled with extra compiler
- hardening. With this defense in place, such bugs can't crash Tor,
- though we should still fix them as they occur. Closes ticket
- 20384 (TROVE-2016-10-001).
- o Major bugfixes (parsing, security, backport from 0.2.9.8):
- - Fix a bug in parsing that could cause clients to read a single
- byte past the end of an allocated region. This bug could be used
- to cause hardened clients (built with --enable-expensive-hardening)
- to crash if they tried to visit a hostile hidden service. Non-
- hardened clients are only affected depending on the details of
- their platform's memory allocator. Fixes bug 21018; bugfix on
- 0.2.0.8-alpha. Found by using libFuzzer. Also tracked as TROVE-
- 2016-12-002 and as CVE-2016-1254.
- o Major bugfixes (security, correctness, backport from 0.2.7.4-rc):
- - Fix an error that could cause us to read 4 bytes before the
- beginning of an openssl string. This bug could be used to cause
- Tor to crash on systems with unusual malloc implementations, or
- systems with unusual hardening installed. Fixes bug 17404; bugfix
- on 0.2.3.6-alpha.
- o Major bugfixes (security, pointers, backport from 0.2.8.2-alpha):
- - Avoid a difficult-to-trigger heap corruption attack when extending
- a smartlist to contain over 16GB of pointers. Fixes bug 18162;
- bugfix on 0.1.1.11-alpha, which fixed a related bug incompletely.
- Reported by Guido Vranken.
- o Major bugfixes (dns proxy mode, crash, backport from 0.2.8.2-alpha):
- - Avoid crashing when running as a DNS proxy. Fixes bug 16248;
- bugfix on 0.2.0.1-alpha. Patch from "cypherpunks".
- o Major bugfixes (guard selection, backport from 0.2.7.6):
- - Actually look at the Guard flag when selecting a new directory
- guard. When we implemented the directory guard design, we
- accidentally started treating all relays as if they have the Guard
- flag during guard selection, leading to weaker anonymity and worse
- performance. Fixes bug 17772; bugfix on 0.2.4.8-alpha. Discovered
- by Mohsen Imani.
- o Major bugfixes (key management, backport from 0.2.8.3-alpha):
- - If OpenSSL fails to generate an RSA key, do not retain a dangling
- pointer to the previous (uninitialized) key value. The impact here
- should be limited to a difficult-to-trigger crash, if OpenSSL is
- running an engine that makes key generation failures possible, or
- if OpenSSL runs out of memory. Fixes bug 19152; bugfix on
- 0.2.1.10-alpha. Found by Yuan Jochen Kang, Suman Jana, and
- Baishakhi Ray.
- o Major bugfixes (parsing, backported from 0.3.0.4-rc):
- - Fix an integer underflow bug when comparing malformed Tor
- versions. This bug could crash Tor when built with
- --enable-expensive-hardening, or on Tor 0.2.9.1-alpha through Tor
- 0.2.9.8, which were built with -ftrapv by default. In other cases
- it was harmless. Part of TROVE-2017-001. Fixes bug 21278; bugfix
- on 0.0.8pre1. Found by OSS-Fuzz.
- o Minor features (security, memory erasure, backport from 0.2.8.1-alpha):
- - Make memwipe() do nothing when passed a NULL pointer or buffer of
- zero size. Check size argument to memwipe() for underflow. Fixes
- bug 18089; bugfix on 0.2.3.25 and 0.2.4.6-alpha. Reported by "gk",
- patch by "teor".
- o Minor features (bug-resistance, backport from 0.2.8.2-alpha):
- - Make Tor survive errors involving connections without a
- corresponding event object. Previously we'd fail with an
- assertion; now we produce a log message. Related to bug 16248.
- o Minor features (DoS-resistance, backport from 0.2.7.1-alpha):
- - Make it harder for attackers to overload hidden services with
- introductions, by blocking multiple introduction requests on the
- same circuit. Resolves ticket 15515.
- o Minor features (geoip):
- - Update geoip and geoip6 to the February 8 2017 Maxmind GeoLite2
- Country database.
- o Minor bugfixes (compilation, backport from 0.2.7.6):
- - Fix a compilation warning with Clang 3.6: Do not check the
- presence of an address which can never be NULL. Fixes bug 17781.
- o Minor bugfixes (hidden service, backport from 0.2.7.1-alpha):
- - Fix an out-of-bounds read when parsing invalid INTRODUCE2 cells on
- a client authorized hidden service. Fixes bug 15823; bugfix
- on 0.2.1.6-alpha.
- Changes in version 0.2.9.10 - 2017-03-01
- Tor 0.2.9.10 backports a security fix from later Tor release. It also
- includes fixes for some major issues affecting directory authorities,
- LibreSSL compatibility, and IPv6 correctness.
- The Tor 0.2.9.x release series is now marked as a long-term-support
- series. We intend to backport security fixes to 0.2.9.x until at
- least January of 2020.
- o Major bugfixes (directory authority, 0.3.0.3-alpha):
- - During voting, when marking a relay as a probable sybil, do not
- clear its BadExit flag: sybils can still be bad in other ways
- too. (We still clear the other flags.) Fixes bug 21108; bugfix
- on 0.2.0.13-alpha.
- o Major bugfixes (IPv6 Exits, backport from 0.3.0.3-alpha):
- - Stop rejecting all IPv6 traffic on Exits whose exit policy rejects
- any IPv6 addresses. Instead, only reject a port over IPv6 if the
- exit policy rejects that port on more than an IPv6 /16 of
- addresses. This bug was made worse by 17027 in 0.2.8.1-alpha,
- which rejected a relay's own IPv6 address by default. Fixes bug
- 21357; bugfix on commit 004f3f4e53 in 0.2.4.7-alpha.
- o Major bugfixes (parsing, also in 0.3.0.4-rc):
- - Fix an integer underflow bug when comparing malformed Tor
- versions. This bug could crash Tor when built with
- --enable-expensive-hardening, or on Tor 0.2.9.1-alpha through Tor
- 0.2.9.8, which were built with -ftrapv by default. In other cases
- it was harmless. Part of TROVE-2017-001. Fixes bug 21278; bugfix
- on 0.0.8pre1. Found by OSS-Fuzz.
- o Minor features (directory authorities, also in 0.3.0.4-rc):
- - Directory authorities now reject descriptors that claim to be
- malformed versions of Tor. Helps prevent exploitation of
- bug 21278.
- - Reject version numbers with components that exceed INT32_MAX.
- Otherwise 32-bit and 64-bit platforms would behave inconsistently.
- Fixes bug 21450; bugfix on 0.0.8pre1.
- o Minor features (geoip):
- - Update geoip and geoip6 to the February 8 2017 Maxmind GeoLite2
- Country database.
- o Minor features (portability, compilation, backport from 0.3.0.3-alpha):
- - Autoconf now checks to determine if OpenSSL structures are opaque,
- instead of explicitly checking for OpenSSL version numbers. Part
- of ticket 21359.
- - Support building with recent LibreSSL code that uses opaque
- structures. Closes ticket 21359.
- o Minor bugfixes (code correctness, also in 0.3.0.4-rc):
- - Repair a couple of (unreachable or harmless) cases of the risky
- comparison-by-subtraction pattern that caused bug 21278.
- o Minor bugfixes (tor-resolve, backport from 0.3.0.3-alpha):
- - The tor-resolve command line tool now rejects hostnames over 255
- characters in length. Previously, it would silently truncate them,
- which could lead to bugs. Fixes bug 21280; bugfix on 0.0.9pre5.
- Patch by "junglefowl".
- Changes in version 0.2.9.9 - 2017-01-23
- Tor 0.2.9.9 fixes a denial-of-service bug where an attacker could
- cause relays and clients to crash, even if they were not built with
- the --enable-expensive-hardening option. This bug affects all 0.2.9.x
- versions, and also affects 0.3.0.1-alpha: all relays running an affected
- version should upgrade.
- This release also resolves a client-side onion service reachability
- bug, and resolves a pair of small portability issues.
- o Major bugfixes (security):
- - Downgrade the "-ftrapv" option from "always on" to "only on when
- --enable-expensive-hardening is provided." This hardening option,
- like others, can turn survivable bugs into crashes -- and having
- it on by default made a (relatively harmless) integer overflow bug
- into a denial-of-service bug. Fixes bug 21278 (TROVE-2017-001);
- bugfix on 0.2.9.1-alpha.
- o Major bugfixes (client, onion service):
- - Fix a client-side onion service reachability bug, where multiple
- socks requests to an onion service (or a single slow request)
- could cause us to mistakenly mark some of the service's
- introduction points as failed, and we cache that failure so
- eventually we run out and can't reach the service. Also resolves a
- mysterious "Remote server sent bogus reason code 65021" log
- warning. The bug was introduced in ticket 17218, where we tried to
- remember the circuit end reason as a uint16_t, which mangled
- negative values. Partially fixes bug 21056 and fixes bug 20307;
- bugfix on 0.2.8.1-alpha.
- o Minor features (geoip):
- - Update geoip and geoip6 to the January 4 2017 Maxmind GeoLite2
- Country database.
- o Minor bugfixes (portability):
- - Avoid crashing when Tor is built using headers that contain
- CLOCK_MONOTONIC_COARSE, but then tries to run on an older kernel
- without CLOCK_MONOTONIC_COARSE. Fixes bug 21035; bugfix
- on 0.2.9.1-alpha.
- - Fix Libevent detection on platforms without Libevent 1 headers
- installed. Fixes bug 21051; bugfix on 0.2.9.1-alpha.
- Changes in version 0.2.8.12 - 2016-12-19
- Tor 0.2.8.12 backports a fix for a medium-severity issue (bug 21018
- below) where Tor clients could crash when attempting to visit a
- hostile hidden service. Clients are recommended to upgrade as packages
- become available for their systems.
- It also includes an updated list of fallback directories, backported
- from 0.2.9.
- Now that the Tor 0.2.9 series is stable, only major bugfixes will be
- backported to 0.2.8 in the future.
- o Major bugfixes (parsing, security, backported from 0.2.9.8):
- - Fix a bug in parsing that could cause clients to read a single
- byte past the end of an allocated region. This bug could be used
- to cause hardened clients (built with --enable-expensive-hardening)
- to crash if they tried to visit a hostile hidden service. Non-
- hardened clients are only affected depending on the details of
- their platform's memory allocator. Fixes bug 21018; bugfix on
- 0.2.0.8-alpha. Found by using libFuzzer. Also tracked as TROVE-
- 2016-12-002 and as CVE-2016-1254.
- o Minor features (fallback directory list, backported from 0.2.9.8):
- - Replace the 81 remaining fallbacks of the 100 originally
- introduced in Tor 0.2.8.3-alpha in March 2016, with a list of 177
- fallbacks (123 new, 54 existing, 27 removed) generated in December
- 2016. Resolves ticket 20170.
- o Minor features (geoip, backported from 0.2.9.7-rc):
- - Update geoip and geoip6 to the December 7 2016 Maxmind GeoLite2
- Country database.
- Changes in version 0.2.9.8 - 2016-12-19
- Tor 0.2.9.8 is the first stable release of the Tor 0.2.9 series.
- The Tor 0.2.9 series makes mandatory a number of security features
- that were formerly optional. It includes support for a new shared-
- randomness protocol that will form the basis for next generation
- hidden services, includes a single-hop hidden service mode for
- optimizing .onion services that don't actually want to be hidden,
- tries harder not to overload the directory authorities with excessive
- downloads, and supports a better protocol versioning scheme for
- improved compatibility with other implementations of the Tor protocol.
- And of course, there are numerous other bugfixes and improvements.
- This release also includes a fix for a medium-severity issue (bug
- 21018 below) where Tor clients could crash when attempting to visit a
- hostile hidden service. Clients are recommended to upgrade as packages
- become available for their systems.
- Below are listed the changes since Tor 0.2.8.11. For a list of
- changes since 0.2.9.7-rc, see the ChangeLog file.
- o New system requirements:
- - When building with OpenSSL, Tor now requires version 1.0.1 or
- later. OpenSSL 1.0.0 and earlier are no longer supported by the
- OpenSSL team, and should not be used. Closes ticket 20303.
- - Tor now requires Libevent version 2.0.10-stable or later. Older
- versions of Libevent have less efficient backends for several
- platforms, and lack the DNS code that we use for our server-side
- DNS support. This implements ticket 19554.
- - Tor now requires zlib version 1.2 or later, for security,
- efficiency, and (eventually) gzip support. (Back when we started,
- zlib 1.1 and zlib 1.0 were still found in the wild. 1.2 was
- released in 2003. We recommend the latest version.)
- o Deprecated features:
- - A number of DNS-cache-related sub-options for client ports are now
- deprecated for security reasons, and may be removed in a future
- version of Tor. (We believe that client-side DNS caching is a bad
- idea for anonymity, and you should not turn it on.) The options
- are: CacheDNS, CacheIPv4DNS, CacheIPv6DNS, UseDNSCache,
- UseIPv4Cache, and UseIPv6Cache.
- - A number of options are deprecated for security reasons, and may
- be removed in a future version of Tor. The options are:
- AllowDotExit, AllowInvalidNodes, AllowSingleHopCircuits,
- AllowSingleHopExits, ClientDNSRejectInternalAddresses,
- CloseHSClientCircuitsImmediatelyOnTimeout,
- CloseHSServiceRendCircuitsImmediatelyOnTimeout,
- ExcludeSingleHopRelays, FastFirstHopPK, TLSECGroup,
- UseNTorHandshake, and WarnUnsafeSocks.
- - The *ListenAddress options are now deprecated as unnecessary: the
- corresponding *Port options should be used instead. These options
- may someday be removed. The affected options are:
- ControlListenAddress, DNSListenAddress, DirListenAddress,
- NATDListenAddress, ORListenAddress, SocksListenAddress,
- and TransListenAddress.
- o Major bugfixes (parsing, security, new since 0.2.9.7-rc):
- - Fix a bug in parsing that could cause clients to read a single
- byte past the end of an allocated region. This bug could be used
- to cause hardened clients (built with --enable-expensive-hardening)
- to crash if they tried to visit a hostile hidden service. Non-
- hardened clients are only affected depending on the details of
- their platform's memory allocator. Fixes bug 21018; bugfix on
- 0.2.0.8-alpha. Found by using libFuzzer. Also tracked as TROVE-
- 2016-12-002 and as CVE-2016-1254.
- o Major features (build, hardening):
- - Tor now builds with -ftrapv by default on compilers that support
- it. This option detects signed integer overflow (which C forbids),
- and turns it into a hard-failure. We do not apply this option to
- code that needs to run in constant time to avoid side-channels;
- instead, we use -fwrapv in that code. Closes ticket 17983.
- - When --enable-expensive-hardening is selected, stop applying the
- clang/gcc sanitizers to code that needs to run in constant time.
- Although we are aware of no introduced side-channels, we are not
- able to prove that there are none. Related to ticket 17983.
- o Major features (circuit building, security):
- - Authorities, relays, and clients now require ntor keys in all
- descriptors, for all hops (except for rare hidden service protocol
- cases), for all circuits, and for all other roles. Part of
- ticket 19163.
- - Authorities, relays, and clients only use ntor, except for
- rare cases in the hidden service protocol. Part of ticket 19163.
- o Major features (compilation):
- - Our big list of extra GCC warnings is now enabled by default when
- building with GCC (or with anything like Clang that claims to be
- GCC-compatible). To make all warnings into fatal compilation
- errors, pass --enable-fatal-warnings to configure. Closes
- ticket 19044.
- - Use the Autoconf macro AC_USE_SYSTEM_EXTENSIONS to automatically
- turn on C and POSIX extensions. (Previously, we attempted to do
- this on an ad hoc basis.) Closes ticket 19139.
- o Major features (directory authorities, hidden services):
- - Directory authorities can now perform the shared randomness
- protocol specified by proposal 250. Using this protocol, directory
- authorities generate a global fresh random value every day. In the
- future, this value will be used by hidden services to select
- HSDirs. This release implements the directory authority feature;
- the hidden service side will be implemented in the future as part
- of proposal 224. Resolves ticket 16943; implements proposal 250.
- o Major features (downloading, random exponential backoff):
- - When we fail to download an object from a directory service, wait
- for an (exponentially increasing) randomized amount of time before
- retrying, rather than a fixed interval as we did before. This
- prevents a group of Tor instances from becoming too synchronized,
- or a single Tor instance from becoming too predictable, in its
- download schedule. Closes ticket 15942.
- o Major features (resource management):
- - Tor can now notice it is about to run out of sockets, and
- preemptively close connections of lower priority. (This feature is
- off by default for now, since the current prioritizing method is
- yet not mature enough. You can enable it by setting
- "DisableOOSCheck 0", but watch out: it might close some sockets
- you would rather have it keep.) Closes ticket 18640.
- o Major features (single-hop "hidden" services):
- - Add experimental HiddenServiceSingleHopMode and
- HiddenServiceNonAnonymousMode options. When both are set to 1,
- every hidden service on that Tor instance becomes a non-anonymous
- Single Onion Service. Single Onions make one-hop (direct)
- connections to their introduction and rendezvous points. One-hop
- circuits make Single Onion servers easily locatable, but clients
- remain location-anonymous. This is compatible with the existing
- hidden service implementation, and works on the current Tor
- network without any changes to older relays or clients. Implements
- proposal 260, completes ticket 17178. Patch by teor and asn.
- o Major features (subprotocol versions):
- - Tor directory authorities now vote on a set of recommended
- "subprotocol versions", and on a set of required subprotocol
- versions. Clients and relays that lack support for a _required_
- subprotocol version will not start; those that lack support for a
- _recommended_ subprotocol version will warn the user to upgrade.
- This change allows compatible implementations of the Tor protocol(s)
- to exist without pretending to be 100% bug-compatible with
- particular releases of Tor itself. Closes ticket 19958; implements
- part of proposal 264.
- o Major bugfixes (circuit building):
- - Hidden service client-to-intro-point and service-to-rendezvous-
- point circuits use the TAP key supplied by the protocol, to avoid
- epistemic attacks. Fixes bug 19163; bugfix on 0.2.4.18-rc.
- o Major bugfixes (download scheduling):
- - Avoid resetting download status for consensuses hourly, since we
- already have another, smarter retry mechanism. Fixes bug 8625;
- bugfix on 0.2.0.9-alpha.
- - If a consensus expires while we are waiting for certificates to
- download, stop waiting for certificates.
- - If we stop waiting for certificates less than a minute after we
- started downloading them, do not consider the certificate download
- failure a separate failure. Fixes bug 20533; bugfix
- on 0.2.0.9-alpha.
- - When using exponential backoff in test networks, use a lower
- exponent, so the delays do not vary as much. This helps test
- networks bootstrap consistently. Fixes bug 20597; bugfix on 20499.
- o Major bugfixes (exit policies):
- - Avoid disclosing exit outbound bind addresses, configured port
- bind addresses, and local interface addresses in relay descriptors
- by default under ExitPolicyRejectPrivate. Instead, only reject
- these (otherwise unlisted) addresses if
- ExitPolicyRejectLocalInterfaces is set. Fixes bug 18456; bugfix on
- 0.2.7.2-alpha. Patch by teor.
- o Major bugfixes (hidden services):
- - Allow Tor clients with appropriate controllers to work with
- FetchHidServDescriptors set to 0. Previously, this option also
- disabled descriptor cache lookup, thus breaking hidden services
- entirely. Fixes bug 18704; bugfix on 0.2.0.20-rc. Patch by "twim".
- - Clients now require hidden services to include the TAP keys for
- their intro points in the hidden service descriptor. This prevents
- an inadvertent upgrade to ntor, which a malicious hidden service
- could use to distinguish clients by consensus version. Fixes bug
- 20012; bugfix on 0.2.4.8-alpha. Patch by teor.
- o Major bugfixes (relay, resolver, logging):
- - For relays that don't know their own address, avoid attempting a
- local hostname resolve for each descriptor we download. This
- will cut down on the number of "Success: chose address 'x.x.x.x'"
- log lines, and also avoid confusing clock jumps if the resolver
- is slow. Fixes bugs 20423 and 20610; bugfix on 0.2.8.1-alpha.
- o Minor features (port flags):
- - Add new flags to the *Port options to give finer control over which
- requests are allowed. The flags are NoDNSRequest, NoOnionTraffic,
- and the synthetic flag OnionTrafficOnly, which is equivalent to
- NoDNSRequest, NoIPv4Traffic, and NoIPv6Traffic. Closes enhancement
- 18693; patch by "teor".
- o Minor features (build, hardening):
- - Detect and work around a libclang_rt problem that would prevent
- clang from finding __mulodi4() on some 32-bit platforms, and thus
- keep -ftrapv from linking on those systems. Closes ticket 19079.
- - When building on a system without runtime support for the runtime
- hardening options, try to log a useful warning at configuration
- time, rather than an incomprehensible warning at link time. If
- expensive hardening was requested, this warning becomes an error.
- Closes ticket 18895.
- o Minor features (client, directory):
- - Since authorities now omit all routers that lack the Running and
- Valid flags, we assume that any relay listed in the consensus must
- have those flags. Closes ticket 20001; implements part of
- proposal 272.
- o Minor features (code safety):
- - In our integer-parsing functions, ensure that the maximum value we
- allow is no smaller than the minimum value. Closes ticket 19063;
- patch from "U+039b".
- o Minor features (compilation, portability):
- - Compile correctly on MacOS 10.12 (aka "Sierra"). Closes
- ticket 20241.
- o Minor features (config):
- - Warn users when descriptor and port addresses are inconsistent.
- Mitigates bug 13953; patch by teor.
- o Minor features (controller):
- - Allow controllers to configure basic client authorization on
- hidden services when they create them with the ADD_ONION controller
- command. Implements ticket 15588. Patch by "special".
- - Fire a STATUS_SERVER controller event whenever the hibernation
- status changes between "awake"/"soft"/"hard". Closes ticket 18685.
- - Implement new GETINFO queries for all downloads that use
- download_status_t to schedule retries. This allows controllers to
- examine the schedule for pending downloads. Closes ticket 19323.
- o Minor features (development tools, etags):
- - Teach the "make tags" Makefile target how to correctly find
- "MOCK_IMPL" function definitions. Patch from nherring; closes
- ticket 16869.
- o Minor features (directory authority):
- - After voting, if the authorities decide that a relay is not
- "Valid", they no longer include it in the consensus at all. Closes
- ticket 20002; implements part of proposal 272.
- - Directory authorities now only give the Guard flag to a relay if
- they are also giving it the Stable flag. This change allows us to
- simplify path selection for clients. It should have minimal effect
- in practice, since >99% of Guards already have the Stable flag.
- Implements ticket 18624.
- - Directory authorities now write their v3-status-votes file out to
- disk earlier in the consensus process, so we have a record of the
- votes even if we abort the consensus process. Resolves
- ticket 19036.
- o Minor features (fallback directory list, new since 0.2.9.7-rc):
- - Replace the 81 remaining fallbacks of the 100 originally
- introduced in Tor 0.2.8.3-alpha in March 2016, with a list of 177
- fallbacks (123 new, 54 existing, 27 removed) generated in December
- 2016. Resolves ticket 20170.
- o Minor features (hidden service):
- - Stop being so strict about the payload length of "rendezvous1"
- cells. We used to be locked in to the "TAP" handshake length, and
- now we can handle better handshakes like "ntor". Resolves
- ticket 18998.
- o Minor features (infrastructure, time):
- - Tor now includes an improved timer backend, so that we can
- efficiently support tens or hundreds of thousands of concurrent
- timers, as will be needed for some of our planned anti-traffic-
- analysis work. This code is based on William Ahern's "timeout.c"
- project, which implements a "tickless hierarchical timing wheel".
- Closes ticket 18365.
- - Tor now uses the operating system's monotonic timers (where
- available) for internal fine-grained timing. Previously we would
- look at the system clock, and then attempt to compensate for the
- clock running backwards. Closes ticket 18908.
- o Minor features (logging):
- - Add a set of macros to check nonfatal assertions, for internal
- use. Migrating more of our checks to these should help us avoid
- needless crash bugs. Closes ticket 18613.
- - Provide a more useful warning message when configured with an
- invalid Nickname. Closes ticket 18300; patch from "icanhasaccount".
- - When dumping unparseable router descriptors, optionally store them
- in separate files, named by digest, up to a configurable size
- limit. You can change the size limit by setting the
- MaxUnparseableDescSizeToLog option, and disable this feature by
- setting that option to 0. Closes ticket 18322.
- o Minor features (performance):
- - Change the "optimistic data" extension from "off by default" to
- "on by default". The default was ordinarily overridden by a
- consensus option, but when clients were bootstrapping for the
- first time, they would not have a consensus to get the option
- from. Changing this default saves a round-trip during startup.
- Closes ticket 18815.
- o Minor features (relay, usability):
- - When the directory authorities refuse a bad relay's descriptor,
- encourage the relay operator to contact us. Many relay operators
- won't notice this line in their logs, but it's a win if even a few
- learn why we don't like what their relay was doing. Resolves
- ticket 18760.
- o Minor features (security, TLS):
- - Servers no longer support clients that lack AES ciphersuites.
- (3DES is no longer considered an acceptable cipher.) We believe
- that no such Tor clients currently exist, since Tor has required
- OpenSSL 0.9.7 or later since 2009. Closes ticket 19998.
- o Minor features (testing):
- - Disable memory protections on OpenBSD when performing our unit
- tests for memwipe(). The test deliberately invokes undefined
- behavior, and the OpenBSD protections interfere with this. Patch
- from "rubiate". Closes ticket 20066.
- - Move the test-network.sh script to chutney, and modify tor's test-
- network.sh to call the (newer) chutney version when available.
- Resolves ticket 19116. Patch by teor.
- - Use the lcov convention for marking lines as unreachable, so that
- we don't count them when we're generating test coverage data.
- Update our coverage tools to understand this convention. Closes
- ticket 16792.
- - Our link-handshake unit tests now check that when invalid
- handshakes fail, they fail with the error messages we expected.
- - Our unit testing code that captures log messages no longer
- prevents them from being written out if the user asked for them
- (by passing --debug or --info or --notice or --warn to the "test"
- binary). This change prevents us from missing unexpected log
- messages simply because we were looking for others. Related to
- ticket 19999.
- - The unit tests now log all warning messages with the "BUG" flag.
- Previously, they only logged errors by default. This change will
- help us make our testing code more correct, and make sure that we
- only hit this code when we mean to. In the meantime, however,
- there will be more warnings in the unit test logs than before.
- This is preparatory work for ticket 19999.
- - The unit tests now treat any failure of a "tor_assert_nonfatal()"
- assertion as a test failure.
- - We've done significant work to make the unit tests run faster.
- o Minor features (testing, ipv6):
- - Add the hs-ipv6 chutney target to make test-network-all's IPv6
- tests. Remove bridges+hs, as it's somewhat redundant. This
- requires a recent chutney version that supports IPv6 clients,
- relays, and authorities. Closes ticket 20069; patch by teor.
- - Add the single-onion and single-onion-ipv6 chutney targets to
- "make test-network-all". This requires a recent chutney version
- with the single onion network flavors (git c72a652 or later).
- Closes ticket 20072; patch by teor.
- o Minor features (Tor2web):
- - Make Tor2web clients respect ReachableAddresses. This feature was
- inadvertently enabled in 0.2.8.6, then removed by bugfix 19973 on
- 0.2.8.7. Implements feature 20034. Patch by teor.
- o Minor features (unix domain sockets):
- - When configuring a unix domain socket for a SocksPort,
- ControlPort, or Hidden service, you can now wrap the address in
- quotes, using C-style escapes inside the quotes. This allows unix
- domain socket paths to contain spaces. Resolves ticket 18753.
- o Minor features (user interface):
- - Tor now supports the ability to declare options deprecated, so
- that we can recommend that people stop using them. Previously, this
- was done in an ad-hoc way. There is a new --list-deprecated-options
- command-line option to list all of the deprecated options. Closes
- ticket 19820.
- o Minor features (virtual addresses):
- - Increase the maximum number of bits for the IPv6 virtual network
- prefix from 16 to 104. In this way, the condition for address
- allocation is less restrictive. Closes ticket 20151; feature
- on 0.2.4.7-alpha.
- o Minor bug fixes (circuits):
- - Use the CircuitBuildTimeout option whenever
- LearnCircuitBuildTimeout is disabled. Previously, we would respect
- the option when a user disabled it, but not when it was disabled
- because some other option was set. Fixes bug 20073; bugfix on
- 0.2.4.12-alpha. Patch by teor.
- o Minor bugfixes (build):
- - The current Git revision when building from a local repository is
- now detected correctly when using git worktrees. Fixes bug 20492;
- bugfix on 0.2.3.9-alpha.
- o Minor bugfixes (relay address discovery):
- - Stop reordering IP addresses returned by the OS. This makes it
- more likely that Tor will guess the same relay IP address every
- time. Fixes issue 20163; bugfix on 0.2.7.1-alpha, ticket 17027.
- Reported by René Mayrhofer, patch by "cypherpunks".
- o Minor bugfixes (memory allocation):
- - Change how we allocate memory for large chunks on buffers, to
- avoid a (currently impossible) integer overflow, and to waste less
- space when allocating unusually large chunks. Fixes bug 20081;
- bugfix on 0.2.0.16-alpha. Issue identified by Guido Vranken.
- o Minor bugfixes (bootstrap):
- - Remember the directory server we fetched the consensus or previous
- certificates from, and use it to fetch future authority
- certificates. This change improves bootstrapping performance.
- Fixes bug 18963; bugfix on 0.2.8.1-alpha.
- o Minor bugfixes (circuits):
- - Make sure extend_info_from_router() is only called on servers.
- Fixes bug 19639; bugfix on 0.2.8.1-alpha.
- o Minor bugfixes (client, fascistfirewall):
- - Avoid spurious warnings when ReachableAddresses or FascistFirewall
- is set. Fixes bug 20306; bugfix on 0.2.8.2-alpha.
- o Minor bugfixes (client, unix domain sockets):
- - Disable IsolateClientAddr when using AF_UNIX backed SocksPorts as
- the client address is meaningless. Fixes bug 20261; bugfix
- on 0.2.6.3-alpha.
- o Minor bugfixes (code style):
- - Fix an integer signedness conversion issue in the case conversion
- tables. Fixes bug 19168; bugfix on 0.2.1.11-alpha.
- o Minor bugfixes (compilation):
- - Build correctly on versions of libevent2 without support for
- evutil_secure_rng_add_bytes(). Fixes bug 19904; bugfix
- on 0.2.5.4-alpha.
- - When building with Clang, use a full set of GCC warnings.
- (Previously, we included only a subset, because of the way we
- detected them.) Fixes bug 19216; bugfix on 0.2.0.1-alpha.
- - Detect Libevent2 functions correctly on systems that provide
- libevent2, but where libevent1 is linked with -levent. Fixes bug
- 19904; bugfix on 0.2.2.24-alpha. Patch from Rubiate.
- - Run correctly when built on Windows build environments that
- require _vcsprintf(). Fixes bug 20560; bugfix on 0.2.2.11-alpha.
- o Minor bugfixes (configuration):
- - When parsing quoted configuration values from the torrc file,
- handle Windows line endings correctly. Fixes bug 19167; bugfix on
- 0.2.0.16-alpha. Patch from "Pingl".
- o Minor bugfixes (directory authority):
- - Authorities now sort the "package" lines in their votes, for ease
- of debugging. (They are already sorted in consensus documents.)
- Fixes bug 18840; bugfix on 0.2.6.3-alpha.
- - Die with a more useful error when the operator forgets to place
- the authority_signing_key file into the keys directory. This
- avoids an uninformative assert & traceback about having an invalid
- key. Fixes bug 20065; bugfix on 0.2.0.1-alpha.
- - When allowing private addresses, mark Exits that only exit to
- private locations as such. Fixes bug 20064; bugfix
- on 0.2.2.9-alpha.
- - When parsing a detached signature, make sure we use the length of
- the digest algorithm instead of a hardcoded DIGEST256_LEN in
- order to avoid comparing bytes out-of-bounds with a smaller digest
- length such as SHA1. Fixes bug 19066; bugfix on 0.2.2.6-alpha.
- o Minor bugfixes (getpass):
- - Defensively fix a non-triggerable heap corruption at do_getpass()
- to protect ourselves from mistakes in the future. Fixes bug
- 19223; bugfix on 0.2.7.3-rc. Bug found by Guido Vranken, patch
- by nherring.
- o Minor bugfixes (guard selection):
- - Don't mark guards as unreachable if connection_connect() fails.
- That function fails for local reasons, so it shouldn't reveal
- anything about the status of the guard. Fixes bug 14334; bugfix
- on 0.2.3.10-alpha.
- - Use a single entry guard even if the NumEntryGuards consensus
- parameter is not provided. Fixes bug 17688; bugfix
- on 0.2.5.6-alpha.
- o Minor bugfixes (hidden services):
- - Increase the minimum number of internal circuits we preemptively
- build from 2 to 3, so a circuit is available when a client
- connects to another onion service. Fixes bug 13239; bugfix
- on 0.1.0.1-rc.
- - Allow hidden services to run on IPv6 addresses even when the
- IPv6Exit option is not set. Fixes bug 18357; bugfix
- on 0.2.4.7-alpha.
- - Stop logging intro point details to the client log on certain
- error conditions. Fixed as part of bug 20012; bugfix on
- 0.2.4.8-alpha. Patch by teor.
- - When deleting an ephemeral hidden service, close its intro points
- even if they are not completely open. Fixes bug 18604; bugfix
- on 0.2.7.1-alpha.
- - When configuring hidden services, check every hidden service
- directory's permissions. Previously, we only checked the last
- hidden service. Fixes bug 20529; bugfix on 0.2.6.2-alpha.
- o Minor bugfixes (IPv6, testing):
- - Check for IPv6 correctly on Linux when running test networks.
- Fixes bug 19905; bugfix on 0.2.7.3-rc; patch by teor.
- o Minor bugfixes (Linux seccomp2 sandbox):
- - Add permission to run the sched_yield() and sigaltstack() system
- calls, in order to support versions of Tor compiled with asan or
- ubsan code that use these calls. Now "sandbox 1" and
- "--enable-expensive-hardening" should be compatible on more
- systems. Fixes bug 20063; bugfix on 0.2.5.1-alpha.
- o Minor bugfixes (logging):
- - Downgrade a harmless log message about the
- pending_entry_connections list from "warn" to "info". Mitigates
- bug 19926.
- - Log a more accurate message when we fail to dump a microdescriptor.
- Fixes bug 17758; bugfix on 0.2.2.8-alpha. Patch from Daniel Pinto.
- - When logging a directory ownership mismatch, log the owning
- username correctly. Fixes bug 19578; bugfix on 0.2.2.29-beta.
- - When we are unable to remove the bw_accounting file, do not warn
- if the reason we couldn't remove it was that it didn't exist.
- Fixes bug 19964; bugfix on 0.2.5.4-alpha. Patch from pastly.
- o Minor bugfixes (memory leak):
- - Fix a series of slow memory leaks related to parsing torrc files
- and options. Fixes bug 19466; bugfix on 0.2.1.6-alpha.
- - Avoid a small memory leak when informing worker threads about
- rotated onion keys. Fixes bug 20401; bugfix on 0.2.6.3-alpha.
- - Fix a small memory leak when receiving AF_UNIX connections on a
- SocksPort. Fixes bug 20716; bugfix on 0.2.6.3-alpha.
- - When moving a signed descriptor object from a source to an
- existing destination, free the allocated memory inside that
- destination object. Fixes bug 20715; bugfix on 0.2.8.3-alpha.
- - Fix a memory leak and use-after-free error when removing entries
- from the sandbox's getaddrinfo() cache. Fixes bug 20710; bugfix on
- 0.2.5.5-alpha. Patch from "cypherpunks".
- - Fix a small, uncommon memory leak that could occur when reading a
- truncated ed25519 key file. Fixes bug 18956; bugfix
- on 0.2.6.1-alpha.
- o Minor bugfixes (option parsing):
- - Count unix sockets when counting client listeners (SOCKS, Trans,
- NATD, and DNS). This has no user-visible behavior changes: these
- options are set once, and never read. Required for correct
- behavior in ticket 17178. Fixes bug 19677; bugfix on
- 0.2.6.3-alpha. Patch by teor.
- o Minor bugfixes (options):
- - Check the consistency of UseEntryGuards and EntryNodes more
- reliably. Fixes bug 20074; bugfix on 0.2.4.12-alpha. Patch
- by teor.
- - Stop changing the configured value of UseEntryGuards on
- authorities and Tor2web clients. Fixes bug 20074; bugfix on
- commits 51fc6799 in 0.1.1.16-rc and acda1735 in 0.2.4.3-alpha.
- Patch by teor.
- o Minor bugfixes (relay):
- - Ensure relays don't make multiple connections during bootstrap.
- Fixes bug 20591; bugfix on 0.2.8.1-alpha.
- - Do not try to parallelize workers more than 16x without the user
- explicitly configuring us to do so, even if we do detect more than
- 16 CPU cores. Fixes bug 19968; bugfix on 0.2.3.1-alpha.
- o Minor bugfixes (testing):
- - The test-stem and test-network makefile targets now depend only on
- the tor binary that they are testing. Previously, they depended on
- "make all". Fixes bug 18240; bugfix on 0.2.8.2-alpha. Based on a
- patch from "cypherpunks".
- - Allow clients to retry HSDirs much faster in test networks. Fixes
- bug 19702; bugfix on 0.2.7.1-alpha. Patch by teor.
- - Avoid a unit test failure on systems with over 16 detectable CPU
- cores. Fixes bug 19968; bugfix on 0.2.3.1-alpha.
- - Let backtrace tests work correctly under AddressSanitizer:
- disable ASAN's detection of segmentation faults while running
- test_bt.sh, so that we can make sure that our own backtrace
- generation code works. Fixes bug 18934; bugfix
- on 0.2.5.2-alpha. Patch from "cypherpunks".
- - Fix the test-network-all target on out-of-tree builds by using the
- correct path to the test driver script. Fixes bug 19421; bugfix
- on 0.2.7.3-rc.
- - Stop spurious failures in the local interface address discovery
- unit tests. Fixes bug 20634; bugfix on 0.2.8.1-alpha; patch by
- Neel Chauhan.
- - Use ECDHE ciphers instead of ECDH in tortls tests. LibreSSL has
- removed the ECDH ciphers which caused the tests to fail on
- platforms which use it. Fixes bug 20460; bugfix on 0.2.8.1-alpha.
- - The tor_tls_server_info_callback unit test no longer crashes when
- debug-level logging is turned on. Fixes bug 20041; bugfix
- on 0.2.8.1-alpha.
- o Minor bugfixes (time):
- - Improve overflow checks in tv_udiff and tv_mdiff. Fixes bug 19483;
- bugfix on all released tor versions.
- - When computing the difference between two times in milliseconds,
- we now round to the nearest millisecond correctly. Previously, we
- could sometimes round in the wrong direction. Fixes bug 19428;
- bugfix on 0.2.2.2-alpha.
- o Minor bugfixes (Tor2web):
- - Prevent Tor2web clients from running hidden services: these services
- are not anonymous due to the one-hop client paths. Fixes bug
- 19678. Patch by teor.
- o Minor bugfixes (user interface):
- - Display a more accurate number of suppressed messages in the log
- rate-limiter. Previously, there was a potential integer overflow
- in the counter. Now, if the number of messages hits a maximum, the
- rate-limiter doesn't count any further. Fixes bug 19435; bugfix
- on 0.2.4.11-alpha.
- - Fix a typo in the passphrase prompt for the ed25519 identity key.
- Fixes bug 19503; bugfix on 0.2.7.2-alpha.
- o Code simplification and refactoring:
- - Remove redundant declarations of the MIN macro. Closes
- ticket 18889.
- - Rename tor_dup_addr() to tor_addr_to_str_dup() to avoid confusion.
- Closes ticket 18462; patch from "icanhasaccount".
- - Split the 600-line directory_handle_command_get function into
- separate functions for different URL types. Closes ticket 16698.
- o Documentation:
- - Add module-level internal documentation for 36 C files that
- previously didn't have a high-level overview. Closes ticket 20385.
- - Correct the IPv6 syntax in our documentation for the
- VirtualAddrNetworkIPv6 torrc option. Closes ticket 19743.
- - Correct the minimum bandwidth value in torrc.sample, and queue a
- corresponding change for torrc.minimal. Closes ticket 20085.
- - Fix spelling of "--enable-tor2web-mode" in the manpage. Closes
- ticket 19153. Patch from "U+039b".
- - Module-level documentation for several more modules. Closes
- tickets 19287 and 19290.
- - Document the --passphrase-fd option in the tor manpage. Fixes bug
- 19504; bugfix on 0.2.7.3-rc.
- - Document the default PathsNeededToBuildCircuits value that's used
- by clients when the directory authorities don't set
- min_paths_for_circs_pct. Fixes bug 20117; bugfix on 0.2.4.10-alpha.
- Patch by teor, reported by Jesse V.
- - Fix manual for the User option: it takes a username, not a UID.
- Fixes bug 19122; bugfix on 0.0.2pre16 (the first version to have
- a manpage!).
- - Fix the description of the --passphrase-fd option in the
- tor-gencert manpage. The option is used to pass the number of a
- file descriptor to read the passphrase from, not to read the file
- descriptor from. Fixes bug 19505; bugfix on 0.2.0.20-alpha.
- o Removed code:
- - We no longer include the (dead, deprecated) bufferevent code in
- Tor. Closes ticket 19450. Based on a patch from "U+039b".
- o Removed features:
- - Remove support for "GET /tor/bytes.txt" DirPort request, and
- "GETINFO dir-usage" controller request, which were only available
- via a compile-time option in Tor anyway. Feature was added in
- 0.2.2.1-alpha. Resolves ticket 19035.
- - There is no longer a compile-time option to disable support for
- TransPort. (If you don't want TransPort, just don't use it.) Patch
- from "U+039b". Closes ticket 19449.
- o Testing:
- - Run more workqueue tests as part of "make check". These had
- previously been implemented, but you needed to know special
- command-line options to enable them.
- - We now have unit tests for our code to reject zlib "compression
- bombs". (Fortunately, the code works fine.)
- Changes in version 0.2.8.11 - 2016-12-08
- Tor 0.2.8.11 backports fixes for additional portability issues that
- could prevent Tor from building correctly on OSX Sierra, or with
- OpenSSL 1.1. Affected users should upgrade; others can safely stay
- with 0.2.8.10.
- o Minor bugfixes (portability):
- - Avoid compilation errors when building on OSX Sierra. Sierra began
- to support the getentropy() and clock_gettime() APIs, but created
- a few problems in doing so. Tor 0.2.9 has a more thorough set of
- workarounds; in 0.2.8, we are just using the /dev/urandom and mach
- monotonic time interfaces. Fixes bug 20865. Bugfix
- on 0.2.8.1-alpha.
- o Minor bugfixes (portability, backport from 0.2.9.5-alpha):
- - Fix compilation with OpenSSL 1.1 and less commonly-used CPU
- architectures. Closes ticket 20588.
- Changes in version 0.2.8.10 - 2016-12-02
- Tor 0.2.8.10 backports a fix for a bug that would sometimes make clients
- unusable after they left standby mode. It also backports fixes for
- a few portability issues and a small but problematic memory leak.
- o Major bugfixes (client reliability, backport from 0.2.9.5-alpha):
- - When Tor leaves standby because of a new application request, open
- circuits as needed to serve that request. Previously, we would
- potentially wait a very long time. Fixes part of bug 19969; bugfix
- on 0.2.8.1-alpha.
- o Major bugfixes (client performance, backport from 0.2.9.5-alpha):
- - Clients now respond to new application stream requests immediately
- when they arrive, rather than waiting up to one second before
- starting to handle them. Fixes part of bug 19969; bugfix
- on 0.2.8.1-alpha.
- o Minor bugfixes (portability, backport from 0.2.9.6-rc):
- - Work around a bug in the OSX 10.12 SDK that would prevent us from
- successfully targeting earlier versions of OSX. Resolves
- ticket 20235.
- o Minor bugfixes (portability, backport from 0.2.9.5-alpha):
- - Fix implicit conversion warnings under OpenSSL 1.1. Fixes bug
- 20551; bugfix on 0.2.1.1-alpha.
- o Minor bugfixes (relay, backport from 0.2.9.5-alpha):
- - Work around a memory leak in OpenSSL 1.1 when encoding public
- keys. Fixes bug 20553; bugfix on 0.0.2pre8.
- o Minor features (geoip):
- - Update geoip and geoip6 to the November 3 2016 Maxmind GeoLite2
- Country database.
- Changes in version 0.2.8.9 - 2016-10-17
- Tor 0.2.8.9 backports a fix for a security hole in previous versions
- of Tor that would allow a remote attacker to crash a Tor client,
- hidden service, relay, or authority. All Tor users should upgrade to
- this version, or to 0.2.9.4-alpha. Patches will be released for older
- versions of Tor.
- o Major features (security fixes, also in 0.2.9.4-alpha):
- - Prevent a class of security bugs caused by treating the contents
- of a buffer chunk as if they were a NUL-terminated string. At
- least one such bug seems to be present in all currently used
- versions of Tor, and would allow an attacker to remotely crash
- most Tor instances, especially those compiled with extra compiler
- hardening. With this defense in place, such bugs can't crash Tor,
- though we should still fix them as they occur. Closes ticket
- 20384 (TROVE-2016-10-001).
- o Minor features (geoip):
- - Update geoip and geoip6 to the October 4 2016 Maxmind GeoLite2
- Country database.
- Changes in version 0.2.8.8 - 2016-09-23
- Tor 0.2.8.8 fixes two crash bugs present in previous versions of the
- 0.2.8.x series. Relays running 0.2.8.x should upgrade, as should users
- who select public relays as their bridges.
- o Major bugfixes (crash):
- - Fix a complicated crash bug that could affect Tor clients
- configured to use bridges when replacing a networkstatus consensus
- in which one of their bridges was mentioned. OpenBSD users saw
- more crashes here, but all platforms were potentially affected.
- Fixes bug 20103; bugfix on 0.2.8.2-alpha.
- o Major bugfixes (relay, OOM handler):
- - Fix a timing-dependent assertion failure that could occur when we
- tried to flush from a circuit after having freed its cells because
- of an out-of-memory condition. Fixes bug 20203; bugfix on
- 0.2.8.1-alpha. Thanks to "cypherpunks" for help diagnosing
- this one.
- o Minor feature (fallback directories):
- - Remove broken fallbacks from the hard-coded fallback directory
- list. Closes ticket 20190; patch by teor.
- o Minor features (geoip):
- - Update geoip and geoip6 to the September 6 2016 Maxmind GeoLite2
- Country database.
- Changes in version 0.2.8.7 - 2016-08-24
- Tor 0.2.8.7 fixes an important bug related to the ReachableAddresses
- option in 0.2.8.6, and replaces a retiring bridge authority. Everyone
- who sets the ReachableAddresses option, and all bridges, are strongly
- encouraged to upgrade.
- o Directory authority changes:
- - The "Tonga" bridge authority has been retired; the new bridge
- authority is "Bifroest". Closes tickets 19728 and 19690.
- o Major bugfixes (client, security):
- - Only use the ReachableAddresses option to restrict the first hop
- in a path. In earlier versions of 0.2.8.x, it would apply to
- every hop in the path, with a possible degradation in anonymity
- for anyone using an uncommon ReachableAddress setting. Fixes bug
- 19973; bugfix on 0.2.8.2-alpha.
- o Minor features (geoip):
- - Update geoip and geoip6 to the August 2 2016 Maxmind GeoLite2
- Country database.
- o Minor bugfixes (compilation):
- - Remove an inappropriate "inline" in tortls.c that was causing
- warnings on older versions of GCC. Fixes bug 19903; bugfix
- on 0.2.8.1-alpha.
- o Minor bugfixes (fallback directories):
- - Avoid logging a NULL string pointer when loading fallback
- directory information. Fixes bug 19947; bugfix on 0.2.4.7-alpha
- and 0.2.8.1-alpha. Report and patch by "rubiate".
- Changes in version 0.2.8.6 - 2016-08-02
- Tor 0.2.8.6 is the first stable version of the Tor 0.2.8 series.
- The Tor 0.2.8 series improves client bootstrapping performance,
- completes the authority-side implementation of improved identity
- keys for relays, and includes numerous bugfixes and performance
- improvements throughout the program. This release continues to
- improve the coverage of Tor's test suite. For a full list of
- changes since Tor 0.2.7, see the ReleaseNotes file.
- Below is a list of the changes since Tor 0.2.7.
- o New system requirements:
- - Tor no longer attempts to support platforms where the "time_t"
- type is unsigned. (To the best of our knowledge, only OpenVMS does
- this, and Tor has never actually built on OpenVMS.) Closes
- ticket 18184.
- - Tor no longer supports versions of OpenSSL with a broken
- implementation of counter mode. (This bug was present in OpenSSL
- 1.0.0, and was fixed in OpenSSL 1.0.0a.) Tor still detects, but no
- longer runs with, these versions.
- - Tor now uses Autoconf version 2.63 or later, and Automake 1.11 or
- later (released in 2008 and 2009 respectively). If you are
- building Tor from the git repository instead of from the source
- distribution, and your tools are older than this, you will need to
- upgrade. Closes ticket 17732.
- o Directory authority changes:
- - Update the V3 identity key for the dannenberg directory authority:
- it was changed on 18 November 2015. Closes task 17906. Patch
- by teor.
- - Urras is no longer a directory authority. Closes ticket 19271.
- o Major features (directory system):
- - Include a trial list of default fallback directories, based on an
- opt-in survey of suitable relays. Doing this should make clients
- bootstrap more quickly and reliably, and reduce the load on the
- directory authorities. Closes ticket 15775. Patch by teor.
- Candidates identified using an OnionOO script by weasel, teor,
- gsathya, and karsten.
- - Previously only relays that explicitly opened a directory port
- (DirPort) accepted directory requests from clients. Now all
- relays, with and without a DirPort, accept and serve tunneled
- directory requests that they receive through their ORPort. You can
- disable this behavior using the new DirCache option. Closes
- ticket 12538.
- - When bootstrapping multiple consensus downloads at a time, use the
- first one that starts downloading, and close the rest. This
- reduces failures when authorities or fallback directories are slow
- or down. Together with the code for feature 15775, this feature
- should reduces failures due to fallback churn. Implements ticket
- 4483. Patch by teor. Implements IPv4 portions of proposal 210 by
- mikeperry and teor.
- o Major features (security, Linux):
- - When Tor starts as root on Linux and is told to switch user ID, it
- can now retain the capability to bind to low ports. By default,
- Tor will do this only when it's switching user ID and some low
- ports have been configured. You can change this behavior with the
- new option KeepBindCapabilities. Closes ticket 8195.
- o Major bugfixes (client, bootstrapping):
- - Check if bootstrap consensus downloads are still needed when the
- linked connection attaches. This prevents tor making unnecessary
- begindir-style connections, which are the only directory
- connections tor clients make since the fix for 18483 was merged.
- - Fix some edge cases where consensus download connections may not
- have been closed, even though they were not needed. Related to fix
- for 18809.
- - Make relays retry consensus downloads the correct number of times,
- rather than the more aggressive client retry count. Fixes part of
- ticket 18809.
- o Major bugfixes (dns proxy mode, crash):
- - Avoid crashing when running as a DNS proxy. Fixes bug 16248;
- bugfix on 0.2.0.1-alpha. Patch from "cypherpunks".
- o Major bugfixes (ed25519, voting):
- - Actually enable support for authorities to match routers by their
- Ed25519 identities. Previously, the code had been written, but
- some debugging code that had accidentally been left in the
- codebase made it stay turned off. Fixes bug 17702; bugfix
- on 0.2.7.2-alpha.
- - When collating votes by Ed25519 identities, authorities now
- include a "NoEdConsensus" flag if the ed25519 value (or lack
- thereof) for a server does not reflect the majority consensus.
- Related to bug 17668; bugfix on 0.2.7.2-alpha.
- - When generating a vote with keypinning disabled, never include two
- entries for the same ed25519 identity. This bug was causing
- authorities to generate votes that they could not parse when a
- router violated key pinning by changing its RSA identity but
- keeping its Ed25519 identity. Fixes bug 17668; fixes part of bug
- 18318. Bugfix on 0.2.7.2-alpha.
- o Major bugfixes (key management):
- - If OpenSSL fails to generate an RSA key, do not retain a dangling
- pointer to the previous (uninitialized) key value. The impact here
- should be limited to a difficult-to-trigger crash, if OpenSSL is
- running an engine that makes key generation failures possible, or
- if OpenSSL runs out of memory. Fixes bug 19152; bugfix on
- 0.2.1.10-alpha. Found by Yuan Jochen Kang, Suman Jana, and
- Baishakhi Ray.
- o Major bugfixes (security, client, DNS proxy):
- - Stop a crash that could occur when a client running with DNSPort
- received a query with multiple address types, and the first
- address type was not supported. Found and fixed by Scott Dial.
- Fixes bug 18710; bugfix on 0.2.5.4-alpha.
- o Major bugfixes (security, compilation):
- - Correctly detect compiler flags on systems where _FORTIFY_SOURCE
- is predefined. Previously, our use of -D_FORTIFY_SOURCE would
- cause a compiler warning, thereby making other checks fail, and
- needlessly disabling compiler-hardening support. Fixes one case of
- bug 18841; bugfix on 0.2.3.17-beta. Patch from "trudokal".
- - Repair hardened builds under the clang compiler. Previously, our
- use of _FORTIFY_SOURCE would conflict with clang's address
- sanitizer. Fixes bug 14821; bugfix on 0.2.5.4-alpha.
- o Major bugfixes (security, pointers):
- - Avoid a difficult-to-trigger heap corruption attack when extending
- a smartlist to contain over 16GB of pointers. Fixes bug 18162;
- bugfix on 0.1.1.11-alpha, which fixed a related bug incompletely.
- Reported by Guido Vranken.
- o Major bugfixes (testing):
- - Fix a bug that would block 'make test-network-all' on systems where
- IPv6 packets were lost. Fixes bug 19008; bugfix on 0.2.7.3-rc.
- o Major bugfixes (user interface):
- - Correctly give a warning in the cases where a relay is specified
- by nickname, and one such relay is found, but it is not officially
- Named. Fixes bug 19203; bugfix on 0.2.3.1-alpha.
- o Minor features (accounting):
- - Added two modes to the AccountingRule option: One for limiting
- only the number of bytes sent ("AccountingRule out"), and one for
- limiting only the number of bytes received ("AccountingRule in").
- Closes ticket 15989; patch from "unixninja92".
- o Minor features (bug-resistance):
- - Make Tor survive errors involving connections without a
- corresponding event object. Previously we'd fail with an
- assertion; now we produce a log message. Related to bug 16248.
- - Use tor_snprintf() and tor_vsnprintf() even in external and low-
- level code, to harden against accidental failures to NUL-
- terminate. Part of ticket 17852. Patch from jsturgix. Found
- with Flawfinder.
- o Minor features (build):
- - Detect systems with FreeBSD-derived kernels (such as GNU/kFreeBSD)
- as having possible IPFW support. Closes ticket 18448. Patch from
- Steven Chamberlain.
- - Since our build process now uses "make distcheck", we no longer
- force "make dist" to depend on "make check". Closes ticket 17893;
- patch from "cypherpunks".
- - Tor now builds once again with the recent OpenSSL 1.1 development
- branch (tested against 1.1.0-pre5 and 1.1.0-pre6-dev). We have been
- tracking OpenSSL 1.1 development as it has progressed, and fixing
- numerous compatibility issues as they arose. See tickets
- 17549, 17921, 17984, 19499, and 18286.
- - When building manual pages, set the timezone to "UTC", so that the
- output is reproducible. Fixes bug 19558; bugfix on 0.2.2.9-alpha.
- Patch from intrigeri.
- o Minor features (clients):
- - Make clients, onion services, and bridge relays always use an
- encrypted begindir connection for directory requests. Resolves
- ticket 18483. Patch by teor.
- o Minor features (controller):
- - Add 'GETINFO exit-policy/reject-private/[default,relay]', so
- controllers can examine the the reject rules added by
- ExitPolicyRejectPrivate. This makes it easier for stem to display
- exit policies.
- - Adds the FallbackDir entries to 'GETINFO config/defaults'. Closes
- tickets 16774 and 17817. Patch by George Tankersley.
- - New 'GETINFO hs/service/desc/id/' command to retrieve a hidden
- service descriptor from a service's local hidden service
- descriptor cache. Closes ticket 14846.
- o Minor features (crypto):
- - Add SHA3 and SHAKE support to crypto.c. Closes ticket 17783.
- - Add SHA512 support to crypto.c. Closes ticket 17663; patch from
- George Tankersley.
- - Improve performance when hashing non-multiple of 8 sized buffers,
- based on Andrew Moon's public domain SipHash-2-4 implementation.
- Fixes bug 17544; bugfix on 0.2.5.3-alpha.
- - Validate the hard-coded Diffie-Hellman parameters and ensure that
- p is a safe prime, and g is a suitable generator. Closes
- ticket 18221.
- - When allocating a digest state object, allocate no more space than
- we actually need. Previously, we would allocate as much space as
- the state for the largest algorithm would need. This change saves
- up to 672 bytes per circuit. Closes ticket 17796.
- o Minor features (directory downloads):
- - Add UseDefaultFallbackDirs, which enables any hard-coded fallback
- directory mirrors. The default is 1; set it to 0 to disable
- fallbacks. Implements ticket 17576. Patch by teor.
- - Wait for busy authorities and fallback directories to become non-
- busy when bootstrapping. (A similar change was made in 6c443e987d
- for directory caches chosen from the consensus.) Closes ticket
- 17864; patch by teor.
- o Minor features (geoip):
- - Update geoip and geoip6 to the July 6 2016 Maxmind GeoLite2
- Country database.
- o Minor features (hidden service directory):
- - Streamline relay-side hsdir handling: when relays consider whether
- to accept an uploaded hidden service descriptor, they no longer
- check whether they are one of the relays in the network that is
- "supposed" to handle that descriptor. Implements ticket 18332.
- o Minor features (IPv6):
- - Add ClientPreferIPv6DirPort, which is set to 0 by default. If set
- to 1, tor prefers IPv6 directory addresses.
- - Add ClientUseIPv4, which is set to 1 by default. If set to 0, tor
- avoids using IPv4 for client OR and directory connections.
- - Add address policy assume_action support for IPv6 addresses.
- - Add an argument 'ipv6=address:orport' to the DirAuthority and
- FallbackDir torrc options, to specify an IPv6 address for an
- authority or fallback directory. Add hard-coded ipv6 addresses for
- directory authorities that have them. Closes ticket 17327; patch
- from Nick Mathewson and teor.
- - Allow users to configure directory authorities and fallback
- directory servers with IPv6 addresses and ORPorts. Resolves
- ticket 6027.
- - Limit IPv6 mask bits to 128.
- - Make tor_ersatz_socketpair work on IPv6-only systems. Fixes bug
- 17638; bugfix on 0.0.2pre8. Patch by teor.
- - Try harder to obey the IP version restrictions "ClientUseIPv4 0",
- "ClientUseIPv6 0", "ClientPreferIPv6ORPort", and
- "ClientPreferIPv6DirPort". Closes ticket 17840; patch by teor.
- - Warn when comparing against an AF_UNSPEC address in a policy, it's
- almost always a bug. Closes ticket 17863; patch by teor.
- - routerset_parse now accepts IPv6 literal addresses. Fixes bug
- 17060; bugfix on 0.2.1.3-alpha. Patch by teor.
- o Minor features (Linux seccomp2 sandbox):
- - Reject attempts to change our Address with "Sandbox 1" enabled.
- Changing Address with Sandbox turned on would never actually work,
- but previously it would fail in strange and confusing ways. Found
- while fixing 18548.
- o Minor features (logging):
- - When logging to syslog, allow a tag to be added to the syslog
- identity (the string prepended to every log message). The tag can
- be configured with SyslogIdentityTag and defaults to none. Setting
- it to "foo" will cause logs to be tagged as "Tor-foo". Closes
- ticket 17194.
- o Minor features (portability):
- - Use timingsafe_memcmp() where available. Closes ticket 17944;
- patch from <logan@hackers.mu>.
- o Minor features (relay, address discovery):
- - Add a family argument to get_interface_addresses_raw() and
- subfunctions to make network interface address interogation more
- efficient. Now Tor can specifically ask for IPv4, IPv6 or both
- types of interfaces from the operating system. Resolves
- ticket 17950.
- - When get_interface_address6_list(.,AF_UNSPEC,.) is called and
- fails to enumerate interface addresses using the platform-specific
- API, have it rely on the UDP socket fallback technique to try and
- find out what IP addresses (both IPv4 and IPv6) our machine has.
- Resolves ticket 17951.
- o Minor features (replay cache):
- - The replay cache now uses SHA256 instead of SHA1. Implements
- feature 8961. Patch by teor, issue reported by rransom.
- o Minor features (robustness):
- - Exit immediately with an error message if the code attempts to use
- Libevent without having initialized it. This should resolve some
- frequently-made mistakes in our unit tests. Closes ticket 18241.
- o Minor features (security, clock):
- - Warn when the system clock appears to move back in time (when the
- state file was last written in the future). Tor doesn't know that
- consensuses have expired if the clock is in the past. Patch by
- teor. Implements ticket 17188.
- o Minor features (security, exit policies):
- - ExitPolicyRejectPrivate now rejects more private addresses by
- default. Specifically, it now rejects the relay's outbound bind
- addresses (if configured), and the relay's configured port
- addresses (such as ORPort and DirPort). Fixes bug 17027; bugfix on
- 0.2.0.11-alpha. Patch by teor.
- o Minor features (security, memory erasure):
- - Make memwipe() do nothing when passed a NULL pointer or buffer of
- zero size. Check size argument to memwipe() for underflow. Fixes
- bug 18089; bugfix on 0.2.3.25 and 0.2.4.6-alpha. Reported by "gk",
- patch by teor.
- - Set the unused entries in a smartlist to NULL. This helped catch
- a (harmless) bug, and shouldn't affect performance too much.
- Implements ticket 17026.
- - Use SecureMemoryWipe() function to securely clean memory on
- Windows. Previously we'd use OpenSSL's OPENSSL_cleanse() function.
- Implements feature 17986.
- - Use explicit_bzero or memset_s when present. Previously, we'd use
- OpenSSL's OPENSSL_cleanse() function. Closes ticket 7419; patches
- from <logan@hackers.mu> and <selven@hackers.mu>.
- o Minor features (security, RNG):
- - Adjust Tor's use of OpenSSL's RNG APIs so that they absolutely,
- positively are not allowed to fail. Previously we depended on
- internal details of OpenSSL's behavior. Closes ticket 17686.
- - Never use the system entropy output directly for anything besides
- seeding the PRNG. When we want to generate important keys, instead
- of using system entropy directly, we now hash it with the PRNG
- stream. This may help resist certain attacks based on broken OS
- entropy implementations. Closes part of ticket 17694.
- - Use modern system calls (like getentropy() or getrandom()) to
- generate strong entropy on platforms that have them. Closes
- ticket 13696.
- o Minor features (security, win32):
- - Set SO_EXCLUSIVEADDRUSE on Win32 to avoid a local port-stealing
- attack. Fixes bug 18123; bugfix on all tor versions. Patch
- by teor.
- o Minor features (unix domain sockets):
- - Add a new per-socket option, RelaxDirModeCheck, to allow creating
- Unix domain sockets without checking the permissions on the parent
- directory. (Tor checks permissions by default because some
- operating systems only check permissions on the parent directory.
- However, some operating systems do look at permissions on the
- socket, and tor's default check is unneeded.) Closes ticket 18458.
- Patch by weasel.
- o Minor features (unix file permissions):
- - Defer creation of Unix sockets until after setuid. This avoids
- needing CAP_CHOWN and CAP_FOWNER when using systemd's
- CapabilityBoundingSet, or chown and fowner when using SELinux.
- Implements part of ticket 17562. Patch from Jamie Nguyen.
- - If any directory created by Tor is marked as group readable, the
- filesystem group is allowed to be either the default GID or the
- root user. Allowing root to read the DataDirectory prevents the
- need for CAP_READ_SEARCH when using systemd's
- CapabilityBoundingSet, or dac_read_search when using SELinux.
- Implements part of ticket 17562. Patch from Jamie Nguyen.
- - Introduce a new DataDirectoryGroupReadable option. If it is set to
- 1, the DataDirectory will be made readable by the default GID.
- Implements part of ticket 17562. Patch from Jamie Nguyen.
- o Minor bugfixes (accounting):
- - The max bandwidth when using 'AccountRule sum' is now correctly
- logged. Fixes bug 18024; bugfix on 0.2.6.1-alpha. Patch
- from "unixninja92".
- o Minor bugfixes (assert, portability):
- - Fix an assertion failure in memarea.c on systems where "long" is
- shorter than the size of a pointer. Fixes bug 18716; bugfix
- on 0.2.1.1-alpha.
- o Minor bugfixes (bootstrap):
- - Consistently use the consensus download schedule for authority
- certificates. Fixes bug 18816; bugfix on 0.2.4.13-alpha.
- o Minor bugfixes (build):
- - Avoid spurious failures from configure files related to calling
- exit(0) in TOR_SEARCH_LIBRARY. Fixes bug 18626; bugfix on
- 0.2.0.1-alpha. Patch from "cypherpunks".
- - Do not link the unit tests against both the testing and non-
- testing versions of the static libraries. Fixes bug 18490; bugfix
- on 0.2.7.1-alpha.
- - Resolve warnings when building on systems that are concerned with
- signed char. Fixes bug 18728; bugfix on 0.2.7.2-alpha
- and 0.2.6.1-alpha.
- - Silence spurious clang-scan warnings in the ed25519_donna code by
- explicitly initializing some objects. Fixes bug 18384; bugfix on
- 0.2.7.2-alpha. Patch by teor.
- - When libscrypt.h is found, but no libscrypt library can be linked,
- treat libscrypt as absent. Fixes bug 19161; bugfix
- on 0.2.6.1-alpha.
- - Cause the unit tests to compile correctly on mingw64 versions that
- lack sscanf. Fixes bug 19213; bugfix on 0.2.7.1-alpha.
- - Don't try to use the pthread_condattr_setclock() function unless
- it actually exists. Fixes compilation on NetBSD-6.x. Fixes bug
- 17819; bugfix on 0.2.6.3-alpha.
- - Fix backtrace compilation on FreeBSD. Fixes bug 17827; bugfix
- on 0.2.5.2-alpha.
- - Fix search for libevent libraries on OpenBSD (and other systems
- that install libevent 1 and libevent 2 in parallel). Fixes bug
- 16651; bugfix on 0.1.0.7-rc. Patch from "rubiate".
- - Isolate environment variables meant for tests from the rest of the
- build system. Fixes bug 17818; bugfix on 0.2.7.3-rc.
- - Mark all object files that include micro-revision.i as depending
- on it, so as to make parallel builds more reliable. Fixes bug
- 17826; bugfix on 0.2.5.1-alpha.
- - Remove config.log only from make distclean, not from make clean.
- Fixes bug 17924; bugfix on 0.2.4.1-alpha.
- - Replace usage of 'INLINE' with 'inline'. Fixes bug 17804; bugfix
- on 0.0.2pre8.
- - Remove an #endif from configure.ac so that we correctly detect the
- presence of in6_addr.s6_addr32. Fixes bug 17923; bugfix
- on 0.2.0.13-alpha.
- o Minor bugfixes (client, bootstrap):
- - Count receipt of new microdescriptors as progress towards
- bootstrapping. Previously, with EntryNodes set, Tor might not
- successfully repopulate the guard set on bootstrapping. Fixes bug
- 16825; bugfix on 0.2.3.1-alpha.
- o Minor bugfixes (code correctness):
- - Fix a bad memory handling bug that would occur if we had queued a
- cell on a channel's incoming queue. Fortunately, we can't actually
- queue a cell like that as our code is constructed today, but it's
- best to avoid this kind of error, even if there isn't any code
- that triggers it today. Fixes bug 18570; bugfix on 0.2.4.4-alpha.
- - Assert that allocated memory held by the reputation code is freed
- according to its internal counters. Fixes bug 17753; bugfix
- on 0.1.1.1-alpha.
- - Assert when the TLS contexts fail to initialize. Fixes bug 17683;
- bugfix on 0.0.6.
- - Update to the latest version of Trunnel, which tries harder to
- avoid generating code that can invoke memcpy(p,NULL,0). Bug found
- by clang address sanitizer. Fixes bug 18373; bugfix
- on 0.2.7.2-alpha.
- - When closing an entry connection, generate a warning if we should
- have sent an end cell for it but we haven't. Fixes bug 17876;
- bugfix on 0.2.3.2-alpha.
- o Minor bugfixes (configuration):
- - Fix a tiny memory leak when parsing a port configuration ending in
- ":auto". Fixes bug 18374; bugfix on 0.2.3.3-alpha.
- o Minor bugfixes (containers):
- - If we somehow attempt to construct a heap with more than
- 1073741822 elements, avoid an integer overflow when maintaining
- the heap property. Fixes bug 18296; bugfix on 0.1.2.1-alpha.
- o Minor bugfixes (controller, microdescriptors):
- - Make GETINFO dir/status-vote/current/consensus conform to the
- control specification by returning "551 Could not open cached
- consensus..." when not caching consensuses. Fixes bug 18920;
- bugfix on 0.2.2.6-alpha.
- o Minor bugfixes (crypto):
- - Check the return value of HMAC() and assert on failure. Fixes bug
- 17658; bugfix on 0.2.3.6-alpha. Patch by teor.
- o Minor bugfixes (directories):
- - When fetching extrainfo documents, compare their SHA256 digests
- and Ed25519 signing key certificates with the routerinfo that led
- us to fetch them, rather than with the most recent routerinfo.
- Otherwise we generate many spurious warnings about mismatches.
- Fixes bug 17150; bugfix on 0.2.7.2-alpha.
- - When generating a URL for a directory server on an IPv6 address,
- wrap the IPv6 address in square brackets. Fixes bug 18051; bugfix
- on 0.2.3.9-alpha. Patch from Malek.
- o Minor bugfixes (downloading):
- - Predict more correctly whether we'll be downloading over HTTP when
- we determine the maximum length of a URL. This should avoid a
- "BUG" warning about the Squid HTTP proxy and its URL limits. Fixes
- bug 19191.
- o Minor bugfixes (exit policies, security):
- - Refresh an exit relay's exit policy when interface addresses
- change. Previously, tor only refreshed the exit policy when the
- configured external address changed. Fixes bug 18208; bugfix on
- 0.2.7.3-rc. Patch by teor.
- o Minor bugfixes (fallback directories):
- - Mark fallbacks as "too busy" when they return a 503 response,
- rather than just marking authorities. Fixes bug 17572; bugfix on
- 0.2.4.7-alpha. Patch by teor.
- - When requesting extrainfo descriptors from a trusted directory
- server, check whether it is an authority or a fallback directory
- which supports extrainfo descriptors. Fixes bug 18489; bugfix on
- 0.2.4.7-alpha. Reported by atagar, patch by teor.
- o Minor bugfixes (hidden service, client):
- - Handle the case where the user makes several fast consecutive
- requests to the same .onion address. Previously, the first six
- requests would each trigger a descriptor fetch, each picking a
- directory (there are 6 overall) and the seventh one would fail
- because no directories were left, thereby triggering a close on
- all current directory connections asking for the hidden service.
- The solution here is to not close the connections if we have
- pending directory fetches. Fixes bug 15937; bugfix
- on 0.2.7.1-alpha.
- o Minor bugfixes (hidden service, control port):
- - Add the onion address to the HS_DESC event for the UPLOADED action
- both on success or failure. It was previously hardcoded with
- UNKNOWN. Fixes bug 16023; bugfix on 0.2.7.2-alpha.
- o Minor bugfixes (hidden service, directory):
- - Bridges now refuse "rendezvous2" (hidden service descriptor)
- publish attempts. Suggested by ticket 18332.
- o Minor bugfixes (IPv6):
- - Update the limits in max_dl_per_request for IPv6 address length.
- Fixes bug 17573; bugfix on 0.2.1.5-alpha.
- o Minor bugfixes (Linux seccomp2 sandbox):
- - Allow more syscalls when running with "Sandbox 1" enabled:
- sysinfo, getsockopt(SO_SNDBUF), and setsockopt(SO_SNDBUFFORCE). On
- some systems, these are required for Tor to start. Fixes bug
- 18397; bugfix on 0.2.5.1-alpha. Patch from Daniel Pinto.
- - Allow IPPROTO_UDP datagram sockets when running with "Sandbox 1",
- so that get_interface_address6_via_udp_socket_hack() can work.
- Fixes bug 19660; bugfix on 0.2.5.1-alpha.
- - Allow the setrlimit syscall, and the prlimit and prlimit64
- syscalls, which some libc implementations use under the hood.
- Fixes bug 15221; bugfix on 0.2.5.1-alpha.
- - Avoid a 10-second delay when starting as a client with "Sandbox 1"
- enabled and no DNS resolvers configured. This should help TAILS
- start up faster. Fixes bug 18548; bugfix on 0.2.5.1-alpha.
- - Fix a crash when using offline master ed25519 keys with the Linux
- seccomp2 sandbox enabled. Fixes bug 17675; bugfix on 0.2.7.3-rc.
- - Allow statistics to be written to disk when "Sandbox 1" is
- enabled. Fixes bugs 19556 and 19957; bugfix on 0.2.5.1-alpha and
- 0.2.6.1-alpha respectively.
- o Minor bugfixes (logging):
- - In log messages that include a function name, use __FUNCTION__
- instead of __PRETTY_FUNCTION__. In GCC, these are synonymous, but
- with clang __PRETTY_FUNCTION__ has extra information we don't
- need. Fixes bug 16563; bugfix on 0.0.2pre8. Fix by Tom van
- der Woerdt.
- - Remove needless quotes from a log message about unparseable
- addresses. Fixes bug 17843; bugfix on 0.2.3.3-alpha.
- - Scrub service name in "unrecognized service ID" log messages.
- Fixes bug 18600; bugfix on 0.2.4.11-alpha.
- - When logging information about an unparsable networkstatus vote or
- consensus, do not say "vote" when we mean consensus. Fixes bug
- 18368; bugfix on 0.2.0.8-alpha.
- - When we can't generate a signing key because OfflineMasterKey is
- set, do not imply that we should have been able to load it. Fixes
- bug 18133; bugfix on 0.2.7.2-alpha.
- - When logging a malformed hostname received through socks4, scrub
- it if SafeLogging says we should. Fixes bug 17419; bugfix
- on 0.1.1.16-rc.
- o Minor bugfixes (memory safety):
- - Avoid freeing an uninitialized pointer when opening a socket fails
- in get_interface_addresses_ioctl(). Fixes bug 18454; bugfix on
- 0.2.3.11-alpha. Reported by toralf and "cypherpunks", patch
- by teor.
- - Fix a memory leak in "tor --list-fingerprint". Fixes part of bug
- 18672; bugfix on 0.2.5.1-alpha.
- - Fix a memory leak in tor-gencert. Fixes part of bug 18672; bugfix
- on 0.2.0.1-alpha.
- o Minor bugfixes (pluggable transports):
- - Avoid reporting a spurious error when we decide that we don't need
- to terminate a pluggable transport because it has already exited.
- Fixes bug 18686; bugfix on 0.2.5.5-alpha.
- o Minor bugfixes (pointer arithmetic):
- - Fix a bug in memarea_alloc() that could have resulted in remote
- heap write access, if Tor had ever passed an unchecked size to
- memarea_alloc(). Fortunately, all the sizes we pass to
- memarea_alloc() are pre-checked to be less than 128 kilobytes.
- Fixes bug 19150; bugfix on 0.2.1.1-alpha. Bug found by
- Guido Vranken.
- o Minor bugfixes (private directory):
- - Prevent a race condition when creating private directories. Fixes
- part of bug 17852; bugfix on 0.0.2pre13. Part of ticket 17852.
- Patch from jsturgix. Found with Flawfinder.
- o Minor bugfixes (relays):
- - Check that both the ORPort and DirPort (if present) are reachable
- before publishing a relay descriptor. Otherwise, relays publish a
- descriptor with DirPort 0 when the DirPort reachability test takes
- longer than the ORPort reachability test. Fixes bug 18050; bugfix
- on 0.1.0.1-rc. Reported by "starlight", patch by teor.
- - Resolve some edge cases where we might launch an ORPort
- reachability check even when DisableNetwork is set. Noticed while
- fixing bug 18616; bugfix on 0.2.3.9-alpha.
- o Minor bugfixes (relays, hidden services):
- - Refuse connection requests to private OR addresses unless
- ExtendAllowPrivateAddresses is set. Previously, tor would connect,
- then refuse to send any cells to a private address. Fixes bugs
- 17674 and 8976; bugfix on 0.2.3.21-rc. Patch by teor.
- o Minor bugfixes (security, hidden services):
- - Prevent hidden services connecting to client-supplied rendezvous
- addresses that are reserved as internal or multicast. Fixes bug
- 8976; bugfix on 0.2.3.21-rc. Patch by dgoulet and teor.
- o Minor bugfixes (statistics):
- - Consistently check for overflow in round_*_to_next_multiple_of
- functions, and add unit tests with additional and maximal values.
- Fixes part of bug 13192; bugfix on 0.2.2.1-alpha.
- - Handle edge cases in the laplace functions: avoid division by
- zero, avoid taking the log of zero, and silence clang type
- conversion warnings using round and trunc. Add unit tests for edge
- cases with maximal values. Fixes part of bug 13192; bugfix
- on 0.2.6.2-alpha.
- - We now include consensus downloads via IPv6 in our directory-
- request statistics. Fixes bug 18460; bugfix on 0.2.3.14-alpha.
- o Minor bugfixes (test networks, IPv6):
- - Allow internal IPv6 addresses in descriptors in test networks.
- Fixes bug 17153; bugfix on 0.2.3.16-alpha. Patch by teor, reported
- by karsten.
- o Minor bugfixes (testing):
- - Check the full results of SHA256 and SHA512 digests in the unit
- tests. Bugfix on 0.2.2.4-alpha. Patch by teor.
- - Fix a memory leak in the ntor test. Fixes bug 17778; bugfix
- on 0.2.4.8-alpha.
- - Fix a small memory leak that would occur when the
- TestingEnableCellStatsEvent option was turned on. Fixes bug 18673;
- bugfix on 0.2.5.2-alpha.
- - Make unit tests pass on IPv6-only systems, and systems without
- localhost addresses (like some FreeBSD jails). Fixes bug 17632;
- bugfix on 0.2.7.3-rc. Patch by teor.
- - The test for log_heartbeat was incorrectly failing in timezones
- with non-integer offsets. Instead of comparing the end of the time
- string against a constant, compare it to the output of
- format_local_iso_time when given the correct input. Fixes bug
- 18039; bugfix on 0.2.5.4-alpha.
- - We no longer disable assertions in the unit tests when coverage is
- enabled. Instead, we require you to say --disable-asserts-in-tests
- to the configure script if you need assertions disabled in the
- unit tests (for example, if you want to perform branch coverage).
- Fixes bug 18242; bugfix on 0.2.7.1-alpha.
- o Minor bugfixes (time handling):
- - When correcting a corrupt 'struct tm' value, fill in the tm_wday
- field. Otherwise, our unit tests crash on Windows. Fixes bug
- 18977; bugfix on 0.2.2.25-alpha.
- - Avoid overflow in tor_timegm when parsing dates in and after 2038
- on platforms with 32-bit time_t. Fixes bug 18479; bugfix on
- 0.0.2pre14. Patch by teor.
- o Minor bugfixes (tor-gencert):
- - Correctly handle the case where an authority operator enters a
- passphrase but sends an EOF before sending a newline. Fixes bug
- 17443; bugfix on 0.2.0.20-rc. Found by junglefowl.
- o Code simplification and refactoring:
- - Clean up a little duplicated code in
- crypto_expand_key_material_TAP(). Closes ticket 17587; patch
- from "pfrankw".
- - Decouple the list of streams waiting to be attached to circuits
- from the overall connection list. This change makes it possible to
- attach streams quickly while simplifying Tor's callgraph and
- avoiding O(N) scans of the entire connection list. Closes
- ticket 17590.
- - Extract the more complicated parts of circuit_mark_for_close()
- into a new function that we run periodically before circuits are
- freed. This change removes more than half of the functions
- currently in the "blob". Closes ticket 17218.
- - Move logging of redundant policy entries in
- policies_parse_exit_policy_internal into its own function. Closes
- ticket 17608; patch from "juce".
- - Quote all the string interpolations in configure.ac -- even those
- which we are pretty sure can't contain spaces. Closes ticket
- 17744. Patch from zerosion.
- - Remove code for configuring OpenSSL dynamic locks; OpenSSL doesn't
- use them. Closes ticket 17926.
- - Remove specialized code for non-inplace AES_CTR. 99% of our AES is
- inplace, so there's no need to have a separate implementation for
- the non-inplace code. Closes ticket 18258. Patch from Malek.
- - Simplify return types for some crypto functions that can't
- actually fail. Patch from Hassan Alsibyani. Closes ticket 18259.
- - When a direct directory request fails immediately on launch,
- instead of relaunching that request from inside the code that
- launches it, instead mark the connection for teardown. This change
- simplifies Tor's callback and prevents the directory-request
- launching code from invoking itself recursively. Closes
- ticket 17589.
- o Documentation:
- - Add a description of the correct use of the '--keygen' command-
- line option. Closes ticket 17583; based on text by 's7r'.
- - Change build messages to refer to "Fedora" instead of "Fedora
- Core", and "dnf" instead of "yum". Closes tickets 18459 and 18426.
- Patches from "icanhasaccount" and "cypherpunks".
- - Document the contents of the 'datadir/keys' subdirectory in the
- manual page. Closes ticket 17621.
- - Document the minimum HeartbeatPeriod value. Closes ticket 15638.
- - Explain actual minima for BandwidthRate. Closes ticket 16382.
- - Fix a minor formatting typo in the manpage. Closes ticket 17791.
- - Mention torspec URL in the manpage and point the reader to it
- whenever we mention a document that belongs in torspce. Fixes
- issue 17392.
- - Stop recommending use of nicknames to identify relays in our
- MapAddress documentation. Closes ticket 18312.
- o Removed features:
- - Remove client-side support for connecting to Tor relays running
- versions of Tor before 0.2.3.6-alpha. These relays didn't support
- the v3 TLS handshake protocol, and are no longer allowed on the
- Tor network. Implements the client side of ticket 11150. Based on
- patches by Tom van der Woerdt.
- - We no longer maintain an internal freelist in memarea.c.
- Allocators should be good enough to make this code unnecessary,
- and it's doubtful that it ever had any performance benefit.
- o Testing:
- - Add unit tests to check for common RNG failure modes, such as
- returning all zeroes, identical values, or incrementing values
- (OpenSSL's rand_predictable feature). Patch by teor.
- - Always test both ed25519 backends, so that we can be sure that our
- batch-open replacement code works. Part of ticket 16794.
- - Cover dns_resolve_impl() in dns.c with unit tests. Implements a
- portion of ticket 16831.
- - Fix several warnings from clang's address sanitizer produced in
- the unit tests.
- - Log more information when the backtrace tests fail. Closes ticket
- 17892. Patch from "cypherpunks."
- - More unit tests for compat_libevent.c, procmon.c, tortls.c,
- util_format.c, directory.c, and options_validate.c. Closes tickets
- 17075, 17082, 17084, 17003, and 17076 respectively. Patches from
- Ola Bini.
- - Treat backtrace test failures as expected on FreeBSD until we
- solve bug 17808. Closes ticket 18204.
- - Unit tests for directory_handle_command_get. Closes ticket 17004.
- Patch from Reinaldo de Souza Jr.
- Changes in version 0.2.7.6 - 2015-12-10
- Tor version 0.2.7.6 fixes a major bug in entry guard selection, as
- well as a minor bug in hidden service reliability.
- o Major bugfixes (guard selection):
- - Actually look at the Guard flag when selecting a new directory
- guard. When we implemented the directory guard design, we
- accidentally started treating all relays as if they have the Guard
- flag during guard selection, leading to weaker anonymity and worse
- performance. Fixes bug 17772; bugfix on 0.2.4.8-alpha. Discovered
- by Mohsen Imani.
- o Minor features (geoip):
- - Update geoip and geoip6 to the December 1 2015 Maxmind GeoLite2
- Country database.
- o Minor bugfixes (compilation):
- - When checking for net/pfvar.h, include netinet/in.h if possible.
- This fixes transparent proxy detection on OpenBSD. Fixes bug
- 17551; bugfix on 0.1.2.1-alpha. Patch from "rubiate".
- - Fix a compilation warning with Clang 3.6: Do not check the
- presence of an address which can never be NULL. Fixes bug 17781.
- o Minor bugfixes (correctness):
- - When displaying an IPv6 exit policy, include the mask bits
- correctly even when the number is greater than 31. Fixes bug
- 16056; bugfix on 0.2.4.7-alpha. Patch from "gturner".
- - The wrong list was used when looking up expired intro points in a
- rend service object, causing what we think could be reachability
- issues for hidden services, and triggering a BUG log. Fixes bug
- 16702; bugfix on 0.2.7.2-alpha.
- - Fix undefined behavior in the tor_cert_checksig function. Fixes
- bug 17722; bugfix on 0.2.7.2-alpha.
- Changes in version 0.2.7.5 - 2015-11-20
- The Tor 0.2.7 release series is dedicated to the memory of Tor user
- and privacy advocate Caspar Bowden (1961-2015). Caspar worked
- tirelessly to advocate human rights regardless of national borders,
- and oppose the encroachments of mass surveillance. He opposed national
- exceptionalism, he brought clarity to legal and policy debates, he
- understood and predicted the impact of mass surveillance on the world,
- and he laid the groundwork for resisting it. While serving on the Tor
- Project's board of directors, he brought us his uncompromising focus
- on technical excellence in the service of humankind. Caspar was an
- inimitable force for good and a wonderful friend. He was kind,
- humorous, generous, gallant, and believed we should protect one
- another without exception. We honor him here for his ideals, his
- efforts, and his accomplishments. Please honor his memory with works
- that would make him proud.
- Tor 0.2.7.5 is the first stable release in the Tor 0.2.7 series.
- The 0.2.7 series adds a more secure identity key type for relays,
- improves cryptography performance, resolves several longstanding
- hidden-service performance issues, improves controller support for
- hidden services, and includes small bugfixes and performance
- improvements throughout the program. This release series also includes
- more tests than before, and significant simplifications to which parts
- of Tor invoke which others. For a full list of changes, see below.
- o New system requirements:
- - Tor no longer includes workarounds to support Libevent versions
- before 1.3e. Libevent 2.0 or later is recommended. Closes
- ticket 15248.
- - Tor no longer supports copies of OpenSSL that are missing support
- for Elliptic Curve Cryptography. (We began using ECC when
- available in 0.2.4.8-alpha, for more safe and efficient key
- negotiation.) In particular, support for at least one of P256 or
- P224 is now required, with manual configuration needed if only
- P224 is available. Resolves ticket 16140.
- - Tor no longer supports versions of OpenSSL before 1.0. (If you are
- on an operating system that has not upgraded to OpenSSL 1.0 or
- later, and you compile Tor from source, you will need to install a
- more recent OpenSSL to link Tor against.) These versions of
- OpenSSL are still supported by the OpenSSL, but the numerous
- cryptographic improvements in later OpenSSL releases makes them a
- clear choice. Resolves ticket 16034.
- o Major features (controller):
- - Add the ADD_ONION and DEL_ONION commands that allow the creation
- and management of hidden services via the controller. Closes
- ticket 6411.
- - New "GETINFO onions/current" and "GETINFO onions/detached"
- commands to get information about hidden services created via the
- controller. Part of ticket 6411.
- - New HSFETCH command to launch a request for a hidden service
- descriptor. Closes ticket 14847.
- - New HSPOST command to upload a hidden service descriptor. Closes
- ticket 3523. Patch by "DonnchaC".
- o Major features (Ed25519 identity keys, Proposal 220):
- - Add support for offline encrypted Ed25519 master keys. To use this
- feature on your tor relay, run "tor --keygen" to make a new master
- key (or to make a new signing key if you already have a master
- key). Closes ticket 13642.
- - All relays now maintain a stronger identity key, using the Ed25519
- elliptic curve signature format. This master key is designed so
- that it can be kept offline. Relays also generate an online
- signing key, and a set of other Ed25519 keys and certificates.
- These are all automatically regenerated and rotated as needed.
- Implements part of ticket 12498.
- - Directory authorities now vote on Ed25519 identity keys along with
- RSA1024 keys. Implements part of ticket 12498.
- - Directory authorities track which Ed25519 identity keys have been
- used with which RSA1024 identity keys, and do not allow them to
- vary freely. Implements part of ticket 12498.
- - Microdescriptors now include Ed25519 identity keys. Implements
- part of ticket 12498.
- - Add a --newpass option to allow changing or removing the
- passphrase of an encrypted key with tor --keygen. Implements part
- of ticket 16769.
- - Add a new OfflineMasterKey option to tell Tor never to try loading
- or generating a secret Ed25519 identity key. You can use this in
- combination with tor --keygen to manage offline and/or encrypted
- Ed25519 keys. Implements ticket 16944.
- - On receiving a HUP signal, check to see whether the Ed25519
- signing key has changed, and reload it if so. Closes ticket 16790.
- - Significant usability improvements for Ed25519 key management. Log
- messages are better, and the code can recover from far more
- failure conditions. Thanks to "s7r" for reporting and diagnosing
- so many of these!
- o Major features (ECC performance):
- - Improve the runtime speed of Ed25519 signature verification by
- using Ed25519-donna's batch verification support. Implements
- ticket 16533.
- - Improve the speed of Ed25519 operations and Curve25519 keypair
- generation when built targeting 32 bit x86 platforms with SSE2
- available. Implements ticket 16535.
- - Improve the runtime speed of Ed25519 operations by using the
- public-domain Ed25519-donna by Andrew M. ("floodyberry").
- Implements ticket 16467.
- - Improve the runtime speed of the ntor handshake by using an
- optimized curve25519 basepoint scalarmult implementation from the
- public-domain Ed25519-donna by Andrew M. ("floodyberry"), based on
- ideas by Adam Langley. Implements ticket 9663.
- o Major features (Hidden services):
- - Hidden services, if using the EntryNodes option, are required to
- use more than one EntryNode, in order to avoid a guard discovery
- attack. (This would only affect people who had configured hidden
- services and manually specified the EntryNodes option with a
- single entry-node. The impact was that it would be easy to
- remotely identify the guard node used by such a hidden service.
- See ticket for more information.) Fixes ticket 14917.
- - Add the torrc option HiddenServiceNumIntroductionPoints, to
- specify a fixed number of introduction points. Its maximum value
- is 10 and default is 3. Using this option can increase a hidden
- service's reliability under load, at the cost of making it more
- visible that the hidden service is facing extra load. Closes
- ticket 4862.
- - Remove the adaptive algorithm for choosing the number of
- introduction points, which used to change the number of
- introduction points (poorly) depending on the number of
- connections the HS sees. Closes ticket 4862.
- o Major features (onion key cross-certification):
- - Relay descriptors now include signatures of their own identity
- keys, made using the TAP and ntor onion keys. These signatures
- allow relays to prove ownership of their own onion keys. Because
- of this change, microdescriptors will no longer need to include
- RSA identity keys. Implements proposal 228; closes ticket 12499.
- o Major bugfixes (client-side privacy, also in 0.2.6.9):
- - Properly separate out each SOCKSPort when applying stream
- isolation. The error occurred because each port's session group
- was being overwritten by a default value when the listener
- connection was initialized. Fixes bug 16247; bugfix on
- 0.2.6.3-alpha. Patch by "jojelino".
- o Major bugfixes (hidden service clients, stability, also in 0.2.6.10):
- - Stop refusing to store updated hidden service descriptors on a
- client. This reverts commit 9407040c59218 (which indeed fixed bug
- 14219, but introduced a major hidden service reachability
- regression detailed in bug 16381). This is a temporary fix since
- we can live with the minor issue in bug 14219 (it just results in
- some load on the network) but the regression of 16381 is too much
- of a setback. First-round fix for bug 16381; bugfix
- on 0.2.6.3-alpha.
- o Major bugfixes (hidden services):
- - Revert commit that made directory authorities assign the HSDir
- flag to relays without a DirPort; this was bad because such relays
- can't handle BEGIN_DIR cells. Fixes bug 15850; bugfix
- on 0.2.6.3-alpha.
- - When cannibalizing a circuit for an introduction point, always
- extend to the chosen exit node (creating a 4 hop circuit).
- Previously Tor would use the current circuit exit node, which
- changed the original choice of introduction point, and could cause
- the hidden service to skip excluded introduction points or
- reconnect to a skipped introduction point. Fixes bug 16260; bugfix
- on 0.1.0.1-rc.
- o Major bugfixes (memory leaks):
- - Fix a memory leak in ed25519 batch signature checking. Fixes bug
- 17398; bugfix on 0.2.6.1-alpha.
- o Major bugfixes (open file limit):
- - The open file limit wasn't checked before calling
- tor_accept_socket_nonblocking(), which would make Tor exceed the
- limit. Now, before opening a new socket, Tor validates the open
- file limit just before, and if the max has been reached, return an
- error. Fixes bug 16288; bugfix on 0.1.1.1-alpha.
- o Major bugfixes (security, correctness):
- - Fix an error that could cause us to read 4 bytes before the
- beginning of an openssl string. This bug could be used to cause
- Tor to crash on systems with unusual malloc implementations, or
- systems with unusual hardening installed. Fixes bug 17404; bugfix
- on 0.2.3.6-alpha.
- o Major bugfixes (stability, also in 0.2.6.10):
- - Stop crashing with an assertion failure when parsing certain kinds
- of malformed or truncated microdescriptors. Fixes bug 16400;
- bugfix on 0.2.6.1-alpha. Found by "torkeln"; fix based on a patch
- by "cypherpunks_backup".
- - Stop random client-side assertion failures that could occur when
- connecting to a busy hidden service, or connecting to a hidden
- service while a NEWNYM is in progress. Fixes bug 16013; bugfix
- on 0.1.0.1-rc.
- o Minor features (client, SOCKS):
- - Add GroupWritable and WorldWritable options to unix-socket based
- SocksPort and ControlPort options. These options apply to a single
- socket, and override {Control,Socks}SocketsGroupWritable. Closes
- ticket 15220.
- - Relax the validation done to hostnames in SOCKS5 requests, and
- allow a single trailing '.' to cope with clients that pass FQDNs
- using that syntax to explicitly indicate that the domain name is
- fully-qualified. Fixes bug 16674; bugfix on 0.2.6.2-alpha.
- - Relax the validation of hostnames in SOCKS5 requests, allowing the
- character '_' to appear, in order to cope with domains observed in
- the wild that are serving non-RFC compliant records. Resolves
- ticket 16430.
- o Minor features (client-side privacy):
- - New KeepAliveIsolateSOCKSAuth option to indefinitely extend circuit
- lifespan when IsolateSOCKSAuth and streams with SOCKS
- authentication are attached to the circuit. This allows
- applications like TorBrowser to manage circuit lifetime on their
- own. Implements feature 15482.
- - When logging malformed hostnames from SOCKS5 requests, respect
- SafeLogging configuration. Fixes bug 16891; bugfix on 0.1.1.16-rc.
- o Minor features (clock-jump tolerance):
- - Recover better when our clock jumps back many hours, like might
- happen for Tails or Whonix users who start with a very wrong
- hardware clock, use Tor to discover a more accurate time, and then
- fix their clock. Resolves part of ticket 8766.
- o Minor features (command-line interface):
- - Make --hash-password imply --hush to prevent unnecessary noise.
- Closes ticket 15542. Patch from "cypherpunks".
- - Print a warning whenever we find a relative file path being used
- as torrc option. Resolves issue 14018.
- o Minor features (compilation):
- - Give a warning as early as possible when trying to build with an
- unsupported OpenSSL version. Closes ticket 16901.
- - Use C99 variadic macros when the compiler is not GCC. This avoids
- failing compilations on MSVC, and fixes a log-file-based race
- condition in our old workarounds. Original patch from Gisle Vanem.
- o Minor features (control protocol):
- - Support network-liveness GETINFO key and NETWORK_LIVENESS event in
- the control protocol. Resolves ticket 15358.
- o Minor features (controller):
- - Add DirAuthority lines for default directory authorities to the
- output of the "GETINFO config/defaults" command if not already
- present. Implements ticket 14840.
- - Controllers can now use "GETINFO hs/client/desc/id/..." to
- retrieve items from the client's hidden service descriptor cache.
- Closes ticket 14845.
- - Implement a new controller command "GETINFO status/fresh-relay-
- descs" to fetch a descriptor/extrainfo pair that was generated on
- demand just for the controller's use. Implements ticket 14784.
- o Minor features (directory authorities):
- - Directory authorities no longer vote against the "Fast", "Stable",
- and "HSDir" flags just because they were going to vote against
- "Running": if the consensus turns out to be that the router was
- running, then the authority's vote should count. Patch from Peter
- Retzlaff; closes issue 8712.
- o Minor features (directory authorities, security, also in 0.2.6.9):
- - The HSDir flag given by authorities now requires the Stable flag.
- For the current network, this results in going from 2887 to 2806
- HSDirs. Also, it makes it harder for an attacker to launch a sybil
- attack by raising the effort for a relay to become Stable to
- require at the very least 7 days, while maintaining the 96 hours
- uptime requirement for HSDir. Implements ticket 8243.
- o Minor features (DoS-resistance):
- - Make it harder for attackers to overload hidden services with
- introductions, by blocking multiple introduction requests on the
- same circuit. Resolves ticket 15515.
- o Minor features (geoip):
- - Update geoip and geoip6 to the October 9 2015 Maxmind GeoLite2
- Country database.
- o Minor features (hidden services):
- - Add the new options "HiddenServiceMaxStreams" and
- "HiddenServiceMaxStreamsCloseCircuit" to allow hidden services to
- limit the maximum number of simultaneous streams per circuit, and
- optionally tear down the circuit when the limit is exceeded. Part
- of ticket 16052.
- - Client now uses an introduction point failure cache to know when
- to fetch or keep a descriptor in their cache. Previously, failures
- were recorded implicitly, but not explicitly remembered. Closes
- ticket 16389.
- - Relays need to have the Fast flag to get the HSDir flag. As this
- is being written, we'll go from 2745 HSDirs down to 2342, a ~14%
- drop. This change should make some attacks against the hidden
- service directory system harder. Fixes ticket 15963.
- - Turn on hidden service statistics collection by setting the torrc
- option HiddenServiceStatistics to "1" by default. (This keeps
- track only of the fraction of traffic used by hidden services, and
- the total number of hidden services in existence.) Closes
- ticket 15254.
- - To avoid leaking HS popularity, don't cycle the introduction point
- when we've handled a fixed number of INTRODUCE2 cells but instead
- cycle it when a random number of introductions is reached, thus
- making it more difficult for an attacker to find out the amount of
- clients that have used the introduction point for a specific HS.
- Closes ticket 15745.
- o Minor features (logging):
- - Include the Tor version in all LD_BUG log messages, since people
- tend to cut and paste those into the bugtracker. Implements
- ticket 15026.
- o Minor features (pluggable transports):
- - When launching managed pluggable transports on Linux systems,
- attempt to have the kernel deliver a SIGTERM on tor exit if the
- pluggable transport process is still running. Resolves
- ticket 15471.
- - When launching managed pluggable transports, setup a valid open
- stdin in the child process that can be used to detect if tor has
- terminated. The "TOR_PT_EXIT_ON_STDIN_CLOSE" environment variable
- can be used by implementations to detect this new behavior.
- Resolves ticket 15435.
- o Minor bugfixes (torrc exit policies):
- - In each instance above, usage advice is provided to avoid the
- message. Resolves ticket 16069. Patch by "teor". Fixes part of bug
- 16069; bugfix on 0.2.4.7-alpha.
- - In torrc, "accept6 *" and "reject6 *" ExitPolicy lines now only
- produce IPv6 wildcard addresses. Previously they would produce
- both IPv4 and IPv6 wildcard addresses. Patch by "teor". Fixes part
- of bug 16069; bugfix on 0.2.4.7-alpha.
- - When parsing torrc ExitPolicies, we now issue an info-level
- message when expanding an "accept/reject *" line to include both
- IPv4 and IPv6 wildcard addresses. Related to ticket 16069.
- - When parsing torrc ExitPolicies, we now warn for a number of cases
- where the user's intent is likely to differ from Tor's actual
- behavior. These include: using an IPv4 address with an accept6 or
- reject6 line; using "private" on an accept6 or reject6 line; and
- including any ExitPolicy lines after accept *:* or reject *:*.
- Related to ticket 16069.
- o Minor bugfixes (command-line interface):
- - When "--quiet" is provided along with "--validate-config", do not
- write anything to stdout on success. Fixes bug 14994; bugfix
- on 0.2.3.3-alpha.
- - When complaining about bad arguments to "--dump-config", use
- stderr, not stdout.
- - Print usage information for --dump-config when it is used without
- an argument. Also, fix the error message to use different wording
- and add newline at the end. Fixes bug 15541; bugfix
- on 0.2.5.1-alpha.
- o Minor bugfixes (compilation):
- - Fix compilation of sandbox.c with musl-libc. Fixes bug 17347;
- bugfix on 0.2.5.1-alpha. Patch from 'jamestk'.
- - Repair compilation with the most recent (unreleased, alpha)
- vesions of OpenSSL 1.1. Fixes part of ticket 17237.
- o Minor bugfixes (compilation, also in 0.2.6.9):
- - Build with --enable-systemd correctly when libsystemd is
- installed, but systemd is not. Fixes bug 16164; bugfix on
- 0.2.6.3-alpha. Patch from Peter Palfrader.
- o Minor bugfixes (configuration, unit tests):
- - Only add the default fallback directories when the DirAuthorities,
- AlternateDirAuthority, and FallbackDir directory config options
- are set to their defaults. The default fallback directory list is
- currently empty, this fix will only change tor's behavior when it
- has default fallback directories. Includes unit tests for
- consider_adding_dir_servers(). Fixes bug 15642; bugfix on
- 90f6071d8dc0 in 0.2.4.7-alpha. Patch by "teor".
- o Minor bugfixes (controller):
- - Add the descriptor ID in each HS_DESC control event. It was
- missing, but specified in control-spec.txt. Fixes bug 15881;
- bugfix on 0.2.5.2-alpha.
- o Minor bugfixes (correctness):
- - For correctness, avoid modifying a constant string in
- handle_control_postdescriptor. Fixes bug 15546; bugfix
- on 0.1.1.16-rc.
- - Remove side-effects from tor_assert() calls. This was harmless,
- because we never disable assertions, but it is bad style and
- unnecessary. Fixes bug 15211; bugfix on 0.2.5.5, 0.2.2.36,
- and 0.2.0.10.
- - When calling channel_free_list(), avoid calling smartlist_remove()
- while inside a FOREACH loop. This partially reverts commit
- 17356fe7fd96af where the correct SMARTLIST_DEL_CURRENT was
- incorrectly removed. Fixes bug 16924; bugfix on 0.2.4.4-alpha.
- o Minor bugfixes (crypto error-handling, also in 0.2.6.10):
- - Check for failures from crypto_early_init, and refuse to continue.
- A previous typo meant that we could keep going with an
- uninitialized crypto library, and would have OpenSSL initialize
- its own PRNG. Fixes bug 16360; bugfix on 0.2.5.2-alpha, introduced
- when implementing ticket 4900. Patch by "teor".
- o Minor bugfixes (hidden service):
- - Fix an out-of-bounds read when parsing invalid INTRODUCE2 cells on
- a client authorized hidden service. Fixes bug 15823; bugfix
- on 0.2.1.6-alpha.
- - Remove an extraneous newline character from the end of hidden
- service descriptors. Fixes bug 15296; bugfix on 0.2.0.10-alpha.
- o Minor bugfixes (Linux seccomp2 sandbox):
- - Use the sandbox in tor_open_cloexec whether or not O_CLOEXEC is
- defined. Patch by "teor". Fixes bug 16515; bugfix on 0.2.3.1-alpha.
- - Allow bridge authorities to run correctly under the seccomp2
- sandbox. Fixes bug 16964; bugfix on 0.2.5.1-alpha.
- - Add the "hidserv-stats" filename to our sandbox filter for the
- HiddenServiceStatistics option to work properly. Fixes bug 17354;
- bugfix on 0.2.6.2-alpha. Patch from David Goulet.
- o Minor bugfixes (Linux seccomp2 sandbox, also in 0.2.6.10):
- - Allow pipe() and pipe2() syscalls in the seccomp2 sandbox: we need
- these when eventfd2() support is missing. Fixes bug 16363; bugfix
- on 0.2.6.3-alpha. Patch from "teor".
- o Minor bugfixes (Linux seccomp2 sandbox, also in 0.2.6.9):
- - Allow systemd connections to work with the Linux seccomp2 sandbox
- code. Fixes bug 16212; bugfix on 0.2.6.2-alpha. Patch by
- Peter Palfrader.
- - Fix sandboxing to work when running as a relay, by allowing the
- renaming of secret_id_key, and allowing the eventfd2 and futex
- syscalls. Fixes bug 16244; bugfix on 0.2.6.1-alpha. Patch by
- Peter Palfrader.
- o Minor bugfixes (logging):
- - When building Tor under Clang, do not include an extra set of
- parentheses in log messages that include function names. Fixes bug
- 15269; bugfix on every released version of Tor when compiled with
- recent enough Clang.
- o Minor bugfixes (network):
- - When attempting to use fallback technique for network interface
- lookup, disregard loopback and multicast addresses since they are
- unsuitable for public communications.
- o Minor bugfixes (open file limit):
- - Fix set_max_file_descriptors() to set by default the max open file
- limit to the current limit when setrlimit() fails. Fixes bug
- 16274; bugfix on tor- 0.2.0.10-alpha. Patch by dgoulet.
- o Minor bugfixes (portability):
- - Check correctly for Windows socket errors in the workqueue
- backend. Fixes bug 16741; bugfix on 0.2.6.3-alpha.
- - Try harder to normalize the exit status of the Tor process to the
- standard-provided range. Fixes bug 16975; bugfix on every version
- of Tor ever.
- - Use libexecinfo on FreeBSD to enable backtrace support. Fixes part
- of bug 17151; bugfix on 0.2.5.2-alpha. Patch from Marcin Cieślak.
- o Minor bugfixes (relay):
- - Ensure that worker threads actually exit when a fatal error or
- shutdown is indicated. This fix doesn't currently affect the
- behavior of Tor, because Tor workers never indicates fatal error
- or shutdown except in the unit tests. Fixes bug 16868; bugfix
- on 0.2.6.3-alpha.
- - Fix a rarely-encountered memory leak when failing to initialize
- the thread pool. Fixes bug 16631; bugfix on 0.2.6.3-alpha. Patch
- from "cypherpunks".
- - Unblock threads before releasing the work queue mutex to ensure
- predictable scheduling behavior. Fixes bug 16644; bugfix
- on 0.2.6.3-alpha.
- o Minor bugfixes (security, exit policies):
- - ExitPolicyRejectPrivate now also rejects the relay's published
- IPv6 address (if any), and any publicly routable IPv4 or IPv6
- addresses on any local interfaces. ticket 17027. Patch by "teor".
- Fixes bug 17027; bugfix on 0.2.0.11-alpha.
- o Minor bugfixes (statistics):
- - Disregard the ConnDirectionStatistics torrc options when Tor is
- not a relay since in that mode of operation no sensible data is
- being collected and because Tor might run into measurement hiccups
- when running as a client for some time, then becoming a relay.
- Fixes bug 15604; bugfix on 0.2.2.35.
- o Minor bugfixes (systemd):
- - Tor's systemd unit file no longer contains extraneous spaces.
- These spaces would sometimes confuse tools like deb-systemd-
- helper. Fixes bug 16162; bugfix on 0.2.5.5-alpha.
- o Minor bugfixes (test networks):
- - When self-testing reachability, use ExtendAllowPrivateAddresses to
- determine if local/private addresses imply reachability. The
- previous fix used TestingTorNetwork, which implies
- ExtendAllowPrivateAddresses, but this excluded rare configurations
- where ExtendAllowPrivateAddresses is set but TestingTorNetwork is
- not. Fixes bug 15771; bugfix on 0.2.6.1-alpha. Patch by "teor",
- issue discovered by CJ Ess.
- o Minor bugfixes (tests, also in 0.2.6.9):
- - Fix a crash in the unit tests when built with MSVC2013. Fixes bug
- 16030; bugfix on 0.2.6.2-alpha. Patch from "NewEraCracker".
- o Code simplification and refactoring:
- - Change the function that's called when we need to retry all
- downloads so that it only reschedules the downloads to happen
- immediately, rather than launching them all at once itself. This
- further simplifies Tor's callgraph.
- - Define WINVER and _WIN32_WINNT centrally, in orconfig.h, in order
- to ensure they remain consistent and visible everywhere.
- - Move some format-parsing functions out of crypto.c and
- crypto_curve25519.c into crypto_format.c and/or util_format.c.
- - Move the client-only parts of init_keys() into a separate
- function. Closes ticket 16763.
- - Move the hacky fallback code out of get_interface_address6() into
- separate function and get it covered with unit-tests. Resolves
- ticket 14710.
- - Refactor hidden service client-side cache lookup to intelligently
- report its various failure cases, and disentangle failure cases
- involving a lack of introduction points. Closes ticket 14391.
- - Remove some vestigial workarounds for the MSVC6 compiler. We
- haven't supported that in ages.
- - Remove the unused "nulterminate" argument from buf_pullup().
- - Simplify the microdesc_free() implementation so that it no longer
- appears (to code analysis tools) to potentially invoke a huge
- suite of other microdesc functions.
- - Simply the control graph further by deferring the inner body of
- directory_all_unreachable() into a callback. Closes ticket 16762.
- - The link authentication code has been refactored for better
- testability and reliability. It now uses code generated with the
- "trunnel" binary encoding generator, to reduce the risk of bugs
- due to programmer error. Done as part of ticket 12498.
- - Treat the loss of an owning controller as equivalent to a SIGTERM
- signal. This removes a tiny amount of duplicated code, and
- simplifies our callgraph. Closes ticket 16788.
- - Use our own Base64 encoder instead of OpenSSL's, to allow more
- control over the output. Part of ticket 15652.
- - When generating an event to send to the controller, we no longer
- put the event over the network immediately. Instead, we queue
- these events, and use a Libevent callback to deliver them. This
- change simplifies Tor's callgraph by reducing the number of
- functions from which all other Tor functions are reachable. Closes
- ticket 16695.
- - Wrap Windows-only C files inside '#ifdef _WIN32' so that tools
- that try to scan or compile every file on Unix won't decide that
- they are broken.
- o Documentation:
- - Fix capitalization of SOCKS in sample torrc. Closes ticket 15609.
- - Improve the descriptions of statistics-related torrc options in
- the manpage to describe rationale and possible uses cases. Fixes
- issue 15550.
- - Improve the layout and formatting of ./configure --help messages.
- Closes ticket 15024. Patch from "cypherpunks".
- - Include a specific and (hopefully) accurate documentation of the
- torrc file's meta-format in doc/torrc_format.txt. This is mainly
- of interest to people writing programs to parse or generate torrc
- files. This document is not a commitment to long-term
- compatibility; some aspects of the current format are a bit
- ridiculous. Closes ticket 2325.
- - Include the TUNING document in our source tarball. It is referred
- to in the ChangeLog and an error message. Fixes bug 16929; bugfix
- on 0.2.6.1-alpha.
- - Note that HiddenServicePorts can take a unix domain socket. Closes
- ticket 17364.
- - Recommend a 40 GB example AccountingMax in torrc.sample rather
- than a 4 GB max. Closes ticket 16742.
- - Standardize on the term "server descriptor" in the manual page.
- Previously, we had used "router descriptor", "server descriptor",
- and "relay descriptor" interchangeably. Part of ticket 14987.
- - Advise users on how to configure separate IPv4 and IPv6 exit
- policies in the manpage and sample torrcs. Related to ticket 16069.
- - Fix an error in the manual page and comments for
- TestingDirAuthVoteHSDir[IsStrict], which suggested that a HSDir
- required "ORPort connectivity". While this is true, it is in no
- way unique to the HSDir flag. Of all the flags, only HSDirs need a
- DirPort configured in order for the authorities to assign that
- particular flag. Patch by "teor". Fixed as part of 14882; bugfix
- on 0.2.6.3-alpha.
- - Fix the usage message of tor-resolve(1) so that it no longer lists
- the removed -F option. Fixes bug 16913; bugfix on 0.2.2.28-beta.
- o Removed code:
- - Remove `USE_OPENSSL_BASE64` and the corresponding fallback code
- and always use the internal Base64 decoder. The internal decoder
- has been part of tor since 0.2.0.10-alpha, and no one should
- be using the OpenSSL one. Part of ticket 15652.
- - Remove the 'tor_strclear()' function; use memwipe() instead.
- Closes ticket 14922.
- - Remove the code that would try to aggressively flush controller
- connections while writing to them. This code was introduced in
- 0.1.2.7-alpha, in order to keep output buffers from exceeding
- their limits. But there is no longer a maximum output buffer size,
- and flushing data in this way caused some undesirable recursions
- in our call graph. Closes ticket 16480.
- - The internal pure-C tor-fw-helper tool is now removed from the Tor
- distribution, in favor of the pure-Go clone available from
- https:
- used by the C tor-fw-helper are not, in our opinion, very
- confidence- inspiring in their secure-programming techniques.
- Closes ticket 13338.
- o Removed features:
- - Remove the (seldom-used) DynamicDHGroups feature. For anti-
- fingerprinting we now recommend pluggable transports; for forward-
- secrecy in TLS, we now use the P-256 group. Closes ticket 13736.
- - Remove the HidServDirectoryV2 option. Now all relays offer to
- store hidden service descriptors. Related to 16543.
- - Remove the VoteOnHidServDirectoriesV2 option, since all
- authorities have long set it to 1. Closes ticket 16543.
- - Remove the undocumented "--digests" command-line option. It
- complicated our build process, caused subtle build issues on
- multiple platforms, and is now redundant since we started
- including git version identifiers. Closes ticket 14742.
- - Tor no longer contains checks for ancient directory cache versions
- that didn't know about microdescriptors.
- - Tor no longer contains workarounds for stat files generated by
- super-old versions of Tor that didn't choose guards sensibly.
- o Testing:
- - The test-network.sh script now supports performance testing.
- Requires corresponding chutney performance testing changes. Patch
- by "teor". Closes ticket 14175.
- - Add a new set of callgraph analysis scripts that use clang to
- produce a list of which Tor functions are reachable from which
- other Tor functions. We're planning to use these to help simplify
- our code structure by identifying illogical dependencies.
- - Add new 'test-full' and 'test-full-online' targets to run all
- tests, including integration tests with stem and chutney.
- - Autodetect CHUTNEY_PATH if the chutney and Tor sources are side-
- by-side in the same parent directory. Closes ticket 16903. Patch
- by "teor".
- - Document use of coverity, clang static analyzer, and clang dynamic
- undefined behavior and address sanitizers in doc/HACKING. Include
- detailed usage instructions in the blacklist. Patch by "teor".
- Closes ticket 15817.
- - Make "bridges+hs" the default test network. This tests almost all
- tor functionality during make test-network, while allowing tests
- to succeed on non-IPv6 systems. Requires chutney commit 396da92 in
- test-network-bridges-hs. Closes tickets 16945 (tor) and 16946
- (chutney). Patches by "teor".
- - Make the test-workqueue test work on Windows by initializing the
- network before we begin.
- - New make target (make test-network-all) to run multiple applicable
- chutney test cases. Patch from Teor; closes 16953.
- - Now that OpenSSL has its own scrypt implementation, add an unit
- test that checks for interoperability between libscrypt_scrypt()
- and OpenSSL's EVP_PBE_scrypt() so that we could not use libscrypt
- and rely on EVP_PBE_scrypt() whenever possible. Resolves
- ticket 16189.
- - The link authentication protocol code now has extensive tests.
- - The relay descriptor signature testing code now has
- extensive tests.
- - The test_workqueue program now runs faster, and is enabled by
- default as a part of "make check".
- - Unit test dns_resolve(), dns_clip_ttl() and dns_get_expiry_ttl()
- functions in dns.c. Implements a portion of ticket 16831.
- - Use environment variables rather than autoconf substitutions to
- send variables from the build system to the test scripts. This
- change should be easier to maintain, and cause 'make distcheck' to
- work better than before. Fixes bug 17148.
- - When building Tor with testing coverage enabled, run Chutney tests
- (if any) using the 'tor-cov' coverage binary.
- - When running test-network or test-stem, check for the absence of
- stem/chutney before doing any build operations.
- - Add a test to verify that the compiler does not eliminate our
- memwipe() implementation. Closes ticket 15377.
- - Add make rule `check-changes` to verify the format of changes
- files. Closes ticket 15180.
- - Add unit tests for control_event_is_interesting(). Add a compile-
- time check that the number of events doesn't exceed the capacity
- of control_event_t.event_mask. Closes ticket 15431, checks for
- bugs similar to 13085. Patch by "teor".
- - Command-line argument tests moved to Stem. Resolves ticket 14806.
- - Integrate the ntor, backtrace, and zero-length keys tests into the
- automake test suite. Closes ticket 15344.
- - Remove assertions during builds to determine Tor's test coverage.
- We don't want to trigger these even in assertions, so including
- them artificially makes our branch coverage look worse than it is.
- This patch provides the new test-stem-full and coverage-html-full
- configure options. Implements ticket 15400.
- - New TestingDirAuthVote{Exit,Guard,HSDir}IsStrict flags to
- explicitly manage consensus flags in testing networks. Patch by
- "robgjansen", modified by "teor". Implements part of ticket 14882.
- - Check for matching value in server response in ntor_ref.py. Fixes
- bug 15591; bugfix on 0.2.4.8-alpha. Reported and fixed
- by "joelanders".
- - Set the severity correctly when testing
- get_interface_addresses_ifaddrs() and
- get_interface_addresses_win32(), so that the tests fail gracefully
- instead of triggering an assertion. Fixes bug 15759; bugfix on
- 0.2.6.3-alpha. Reported by Nicolas Derive.
- Changes in version 0.2.6.10 - 2015-07-12
- Tor version 0.2.6.10 fixes some significant stability and hidden
- service client bugs, bulletproofs the cryptography init process, and
- fixes a bug when using the sandbox code with some older versions of
- Linux. Everyone running an older version, especially an older version
- of 0.2.6, should upgrade.
- o Major bugfixes (hidden service clients, stability):
- - Stop refusing to store updated hidden service descriptors on a
- client. This reverts commit 9407040c59218 (which indeed fixed bug
- 14219, but introduced a major hidden service reachability
- regression detailed in bug 16381). This is a temporary fix since
- we can live with the minor issue in bug 14219 (it just results in
- some load on the network) but the regression of 16381 is too much
- of a setback. First-round fix for bug 16381; bugfix
- on 0.2.6.3-alpha.
- o Major bugfixes (stability):
- - Stop crashing with an assertion failure when parsing certain kinds
- of malformed or truncated microdescriptors. Fixes bug 16400;
- bugfix on 0.2.6.1-alpha. Found by "torkeln"; fix based on a patch
- by "cypherpunks_backup".
- - Stop random client-side assertion failures that could occur when
- connecting to a busy hidden service, or connecting to a hidden
- service while a NEWNYM is in progress. Fixes bug 16013; bugfix
- on 0.1.0.1-rc.
- o Minor features (geoip):
- - Update geoip to the June 3 2015 Maxmind GeoLite2 Country database.
- - Update geoip6 to the June 3 2015 Maxmind GeoLite2 Country database.
- o Minor bugfixes (crypto error-handling):
- - Check for failures from crypto_early_init, and refuse to continue.
- A previous typo meant that we could keep going with an
- uninitialized crypto library, and would have OpenSSL initialize
- its own PRNG. Fixes bug 16360; bugfix on 0.2.5.2-alpha, introduced
- when implementing ticket 4900. Patch by "teor".
- o Minor bugfixes (Linux seccomp2 sandbox):
- - Allow pipe() and pipe2() syscalls in the seccomp2 sandbox: we need
- these when eventfd2() support is missing. Fixes bug 16363; bugfix
- on 0.2.6.3-alpha. Patch from "teor".
- Changes in version 0.2.6.9 - 2015-06-11
- Tor 0.2.6.9 fixes a regression in the circuit isolation code, increases the
- requirements for receiving an HSDir flag, and addresses some other small
- bugs in the systemd and sandbox code. Clients using circuit isolation
- should upgrade; all directory authorities should upgrade.
- o Major bugfixes (client-side privacy):
- - Properly separate out each SOCKSPort when applying stream
- isolation. The error occurred because each port's session group was
- being overwritten by a default value when the listener connection
- was initialized. Fixes bug 16247; bugfix on 0.2.6.3-alpha. Patch
- by "jojelino".
- o Minor feature (directory authorities, security):
- - The HSDir flag given by authorities now requires the Stable flag.
- For the current network, this results in going from 2887 to 2806
- HSDirs. Also, it makes it harder for an attacker to launch a sybil
- attack by raising the effort for a relay to become Stable which
- takes at the very least 7 days to do so and by keeping the 96
- hours uptime requirement for HSDir. Implements ticket 8243.
- o Minor bugfixes (compilation):
- - Build with --enable-systemd correctly when libsystemd is
- installed, but systemd is not. Fixes bug 16164; bugfix on
- 0.2.6.3-alpha. Patch from Peter Palfrader.
- o Minor bugfixes (Linux seccomp2 sandbox):
- - Fix sandboxing to work when running as a relaymby renaming of
- secret_id_key, and allowing the eventfd2 and futex syscalls. Fixes
- bug 16244; bugfix on 0.2.6.1-alpha. Patch by Peter Palfrader.
- - Allow systemd connections to work with the Linux seccomp2 sandbox
- code. Fixes bug 16212; bugfix on 0.2.6.2-alpha. Patch by
- Peter Palfrader.
- o Minor bugfixes (tests):
- - Fix a crash in the unit tests when built with MSVC2013. Fixes bug
- 16030; bugfix on 0.2.6.2-alpha. Patch from "NewEraCracker".
- Changes in version 0.2.6.8 - 2015-05-21
- Tor 0.2.6.8 fixes a bit of dodgy code in parsing INTRODUCE2 cells, and
- fixes an authority-side bug in assigning the HSDir flag. All directory
- authorities should upgrade.
- o Major bugfixes (hidden services, backport from 0.2.7.1-alpha):
- - Revert commit that made directory authorities assign the HSDir
- flag to relays without a DirPort; this was bad because such relays
- can't handle BEGIN_DIR cells. Fixes bug 15850; bugfix
- on 0.2.6.3-alpha.
- o Minor bugfixes (hidden service, backport from 0.2.7.1-alpha):
- - Fix an out-of-bounds read when parsing invalid INTRODUCE2 cells on
- a client authorized hidden service. Fixes bug 15823; bugfix
- on 0.2.1.6-alpha.
- o Minor features (geoip):
- - Update geoip to the April 8 2015 Maxmind GeoLite2 Country database.
- - Update geoip6 to the April 8 2015 Maxmind GeoLite2
- Country database.
- Changes in version 0.2.6.7 - 2015-04-06
- Tor 0.2.6.7 fixes two security issues that could be used by an
- attacker to crash hidden services, or crash clients visiting hidden
- services. Hidden services should upgrade as soon as possible; clients
- should upgrade whenever packages become available.
- This release also contains two simple improvements to make hidden
- services a bit less vulnerable to denial-of-service attacks.
- o Major bugfixes (security, hidden service):
- - Fix an issue that would allow a malicious client to trigger an
- assertion failure and halt a hidden service. Fixes bug 15600;
- bugfix on 0.2.1.6-alpha. Reported by "disgleirio".
- - Fix a bug that could cause a client to crash with an assertion
- failure when parsing a malformed hidden service descriptor. Fixes
- bug 15601; bugfix on 0.2.1.5-alpha. Found by "DonnchaC".
- o Minor features (DoS-resistance, hidden service):
- - Introduction points no longer allow multiple INTRODUCE1 cells to
- arrive on the same circuit. This should make it more expensive for
- attackers to overwhelm hidden services with introductions.
- Resolves ticket 15515.
- - Decrease the amount of reattempts that a hidden service performs
- when its rendezvous circuits fail. This reduces the computational
- cost for running a hidden service under heavy load. Resolves
- ticket 11447.
- Changes in version 0.2.5.12 - 2015-04-06
- Tor 0.2.5.12 backports two fixes from 0.2.6.7 for security issues that
- could be used by an attacker to crash hidden services, or crash clients
- visiting hidden services. Hidden services should upgrade as soon as
- possible; clients should upgrade whenever packages become available.
- This release also backports a simple improvement to make hidden
- services a bit less vulnerable to denial-of-service attacks.
- o Major bugfixes (security, hidden service):
- - Fix an issue that would allow a malicious client to trigger an
- assertion failure and halt a hidden service. Fixes bug 15600;
- bugfix on 0.2.1.6-alpha. Reported by "disgleirio".
- - Fix a bug that could cause a client to crash with an assertion
- failure when parsing a malformed hidden service descriptor. Fixes
- bug 15601; bugfix on 0.2.1.5-alpha. Found by "DonnchaC".
- o Minor features (DoS-resistance, hidden service):
- - Introduction points no longer allow multiple INTRODUCE1 cells to
- arrive on the same circuit. This should make it more expensive for
- attackers to overwhelm hidden services with introductions.
- Resolves ticket 15515.
- Changes in version 0.2.4.27 - 2015-04-06
- Tor 0.2.4.27 backports two fixes from 0.2.6.7 for security issues that
- could be used by an attacker to crash hidden services, or crash clients
- visiting hidden services. Hidden services should upgrade as soon as
- possible; clients should upgrade whenever packages become available.
- This release also backports a simple improvement to make hidden
- services a bit less vulnerable to denial-of-service attacks.
- o Major bugfixes (security, hidden service):
- - Fix an issue that would allow a malicious client to trigger an
- assertion failure and halt a hidden service. Fixes bug 15600;
- bugfix on 0.2.1.6-alpha. Reported by "disgleirio".
- - Fix a bug that could cause a client to crash with an assertion
- failure when parsing a malformed hidden service descriptor. Fixes
- bug 15601; bugfix on 0.2.1.5-alpha. Found by "DonnchaC".
- o Minor features (DoS-resistance, hidden service):
- - Introduction points no longer allow multiple INTRODUCE1 cells to
- arrive on the same circuit. This should make it more expensive for
- attackers to overwhelm hidden services with introductions.
- Resolves ticket 15515.
- Changes in version 0.2.6.6 - 2015-03-24
- Tor 0.2.6.6 is the first stable release in the 0.2.6 series.
- It adds numerous safety, security, correctness, and performance
- improvements. Client programs can be configured to use more kinds of
- sockets, AutomapHosts works better, the multithreading backend is
- improved, cell transmission is refactored, test coverage is much
- higher, more denial-of-service attacks are handled, guard selection is
- improved to handle long-term guards better, pluggable transports
- should work a bit better, and some annoying hidden service performance
- bugs should be addressed.
- o New compiler and system requirements:
- - Tor 0.2.6.x requires that your compiler support more of the C99
- language standard than before. The 'configure' script now detects
- whether your compiler supports C99 mid-block declarations and
- designated initializers. If it does not, Tor will not compile.
- We may revisit this requirement if it turns out that a significant
- number of people need to build Tor with compilers that don't
- bother implementing a 15-year-old standard. Closes ticket 13233.
- - Tor no longer supports systems without threading support. When we
- began working on Tor, there were several systems that didn't have
- threads, or where the thread support wasn't able to run the
- threads of a single process on multiple CPUs. That no longer
- holds: every system where Tor needs to run well now has threading
- support. Resolves ticket 12439.
- o Deprecated versions and removed support:
- - Tor relays older than 0.2.4.18-rc are no longer allowed to
- advertise themselves on the network. Closes ticket 13555.
- - Tor clients no longer support connecting to hidden services
- running on Tor 0.2.2.x and earlier; the Support022HiddenServices
- option has been removed. (There shouldn't be any hidden services
- running these versions on the network.) Closes ticket 7803.
- o Directory authority changes:
- - The directory authority Faravahar has a new IP address. This
- closes ticket 14487.
- - Remove turtles as a directory authority.
- - Add longclaw as a new (v3) directory authority. This implements
- ticket 13296. This keeps the directory authority count at 9.
- o Major features (bridges):
- - Expose the outgoing upstream HTTP/SOCKS proxy to pluggable
- transports if they are configured via the "TOR_PT_PROXY"
- environment variable. Implements proposal 232. Resolves
- ticket 8402.
- o Major features (changed defaults):
- - Prevent relay operators from unintentionally running exits: When a
- relay is configured as an exit node, we now warn the user unless
- the "ExitRelay" option is set to 1. We warn even more loudly if
- the relay is configured with the default exit policy, since this
- can indicate accidental misconfiguration. Setting "ExitRelay 0"
- stops Tor from running as an exit relay. Closes ticket 10067.
- o Major features (client performance, hidden services):
- - Allow clients to use optimistic data when connecting to a hidden
- service, which should remove a round-trip from hidden service
- initialization. See proposal 181 for details. Implements
- ticket 13211.
- o Major features (directory system):
- - Upon receiving an unparseable directory object, if its digest
- matches what we expected, then don't try to download it again.
- Previously, when we got a descriptor we didn't like, we would keep
- trying to download it over and over. Closes ticket 11243.
- - When downloading server- or microdescriptors from a directory
- server, we no longer launch multiple simultaneous requests to the
- same server. This reduces load on the directory servers,
- especially when directory guards are in use. Closes ticket 9969.
- - When downloading server- or microdescriptors over a tunneled
- connection, do not limit the length of our requests to what the
- Squid proxy is willing to handle. Part of ticket 9969.
- - Authorities can now vote on the correct digests and latest
- versions for different software packages. This allows packages
- that include Tor to use the Tor authority system as a way to get
- notified of updates and their correct digests. Implements proposal
- 227. Closes ticket 10395.
- o Major features (guards):
- - Introduce the Guardfraction feature to improves load balancing on
- guard nodes. Specifically, it aims to reduce the traffic gap that
- guard nodes experience when they first get the Guard flag. This is
- a required step if we want to increase the guard lifetime to 9
- months or greater. Closes ticket 9321.
- o Major features (hidden services):
- - Make HS port scanning more difficult by immediately closing the
- circuit when a user attempts to connect to a nonexistent port.
- Closes ticket 13667.
- - Add a HiddenServiceStatistics option that allows Tor relays to
- gather and publish statistics about the overall size and volume of
- hidden service usage. Specifically, when this option is turned on,
- an HSDir will publish an approximate number of hidden services
- that have published descriptors to it the past 24 hours. Also, if
- a relay has acted as a hidden service rendezvous point, it will
- publish the approximate amount of rendezvous cells it has relayed
- the past 24 hours. The statistics themselves are obfuscated so
- that the exact values cannot be derived. For more details see
- proposal 238, "Better hidden service stats from Tor relays". This
- feature is currently disabled by default. Implements feature 13192.
- o Major features (performance):
- - Make the CPU worker implementation more efficient by avoiding the
- kernel and lengthening pipelines. The original implementation used
- sockets to transfer data from the main thread to the workers, and
- didn't allow any thread to be assigned more than a single piece of
- work at once. The new implementation avoids communications
- overhead by making requests in shared memory, avoiding kernel IO
- where possible, and keeping more requests in flight at once.
- Implements ticket 9682.
- o Major features (relay):
- - Raise the minimum acceptable configured bandwidth rate for bridges
- to 50 KiB/sec and for relays to 75 KiB/sec. (The old values were
- 20 KiB/sec.) Closes ticket 13822.
- - Complete revision of the code that relays use to decide which cell
- to send next. Formerly, we selected the best circuit to write on
- each channel, but we didn't select among channels in any
- sophisticated way. Now, we choose the best circuits globally from
- among those whose channels are ready to deliver traffic.
- This patch implements a new inter-cmux comparison API, a global
- high/low watermark mechanism and a global scheduler loop for
- transmission prioritization across all channels as well as among
- circuits on one channel. This schedule is currently tuned to
- (tolerantly) avoid making changes in network performance, but it
- should form the basis for major circuit performance increases in
- the future. Code by Andrea; tuning by Rob Jansen; implements
- ticket 9262.
- o Major features (sample torrc):
- - Add a new, infrequently-changed "torrc.minimal". This file is
- similar to torrc.sample, but it will change as infrequently as
- possible, for the benefit of users whose systems prompt them for
- intervention whenever a default configuration file is changed.
- Making this change allows us to update torrc.sample to be a more
- generally useful "sample torrc".
- o Major features (security, unix domain sockets):
- - Allow SocksPort to be an AF_UNIX Unix Domain Socket. Now high risk
- applications can reach Tor without having to create AF_INET or
- AF_INET6 sockets, meaning they can completely disable their
- ability to make non-Tor network connections. To create a socket of
- this type, use "SocksPort unix:/path/to/socket". Implements
- ticket 12585.
- - Support mapping hidden service virtual ports to AF_UNIX sockets.
- The syntax is "HiddenServicePort 80 unix:/path/to/socket".
- Implements ticket 11485.
- o Major bugfixes (client, automap):
- - Repair automapping with IPv6 addresses. This automapping should
- have worked previously, but one piece of debugging code that we
- inserted to detect a regression actually caused the regression to
- manifest itself again. Fixes bug 13811 and bug 12831; bugfix on
- 0.2.4.7-alpha. Diagnosed and fixed by Francisco Blas
- Izquierdo Riera.
- o Major bugfixes (crash, OSX, security):
- - Fix a remote denial-of-service opportunity caused by a bug in
- OSX's _strlcat_chk() function. Fixes bug 15205; bug first appeared
- in OSX 10.9.
- o Major bugfixes (directory authorities):
- - Do not assign the HSDir flag to relays if they are not Valid, or
- currently hibernating. Fixes 12573; bugfix on 0.2.0.10-alpha.
- o Major bugfixes (directory bandwidth performance):
- - Don't flush the zlib buffer aggressively when compressing
- directory information for clients. This should save about 7% of
- the bandwidth currently used for compressed descriptors and
- microdescriptors. Fixes bug 11787; bugfix on 0.1.1.23.
- o Major bugfixes (exit node stability):
- - Fix an assertion failure that could occur under high DNS load.
- Fixes bug 14129; bugfix on Tor 0.0.7rc1. Found by "jowr";
- diagnosed and fixed by "cypherpunks".
- o Major bugfixes (FreeBSD IPFW transparent proxy):
- - Fix address detection with FreeBSD transparent proxies, when
- "TransProxyType ipfw" is in use. Fixes bug 15064; bugfix
- on 0.2.5.4-alpha.
- o Major bugfixes (hidden services):
- - When closing an introduction circuit that was opened in parallel
- with others, don't mark the introduction point as unreachable.
- Previously, the first successful connection to an introduction
- point would make the other introduction points get marked as
- having timed out. Fixes bug 13698; bugfix on 0.0.6rc2.
- o Major bugfixes (Linux seccomp2 sandbox):
- - Upon receiving sighup with the seccomp2 sandbox enabled, do not
- crash during attempts to call wait4. Fixes bug 15088; bugfix on
- 0.2.5.1-alpha. Patch from "sanic".
- o Major bugfixes (mixed relay-client operation):
- - When running as a relay and client at the same time (not
- recommended), if we decide not to use a new guard because we want
- to retry older guards, only close the locally-originating circuits
- passing through that guard. Previously we would close all the
- circuits through that guard. Fixes bug 9819; bugfix on
- 0.2.1.1-alpha. Reported by "skruffy".
- o Major bugfixes (pluggable transports):
- - Initialize the extended OR Port authentication cookie before
- launching pluggable transports. This prevents a race condition
- that occurred when server-side pluggable transports would cache the
- authentication cookie before it has been (re)generated. Fixes bug
- 15240; bugfix on 0.2.5.1-alpha.
- o Major bugfixes (relay, stability, possible security):
- - Fix a bug that could lead to a relay crashing with an assertion
- failure if a buffer of exactly the wrong layout is passed to
- buf_pullup() at exactly the wrong time. Fixes bug 15083; bugfix on
- 0.2.0.10-alpha. Patch from "cypherpunks".
- - Do not assert if the 'data' pointer on a buffer is advanced to the
- very end of the buffer; log a BUG message instead. Only assert if
- it is past that point. Fixes bug 15083; bugfix on 0.2.0.10-alpha.
- o Minor features (build):
- - New --disable-system-torrc compile-time option to prevent Tor from
- looking for the system-wide torrc or torrc-defaults files.
- Resolves ticket 13037.
- o Minor features (client):
- - Clients are now willing to send optimistic data (before they
- receive a 'connected' cell) to relays of any version. (Relays
- without support for optimistic data are no longer supported on the
- Tor network.) Resolves ticket 13153.
- o Minor features (client):
- - Validate hostnames in SOCKS5 requests more strictly. If SafeSocks
- is enabled, reject requests with IP addresses as hostnames.
- Resolves ticket 13315.
- o Minor features (controller):
- - Add a "SIGNAL HEARTBEAT" controller command that tells Tor to
- write an unscheduled heartbeat message to the log. Implements
- feature 9503.
- - Include SOCKS_USERNAME and SOCKS_PASSWORD values in controller
- events so controllers can observe circuit isolation inputs. Closes
- ticket 8405.
- - ControlPort now supports the unix:/path/to/socket syntax as an
- alternative to the ControlSocket option, for consistency with
- SocksPort and HiddenServicePort. Closes ticket 14451.
- - New "GETINFO bw-event-cache" to get information about recent
- bandwidth events. Closes ticket 14128. Useful for controllers to
- get recent bandwidth history after the fix for ticket 13988.
- - Messages about problems in the bootstrap process now include
- information about the server we were trying to connect to when we
- noticed the problem. Closes ticket 15006.
- o Minor features (Denial of service resistance):
- - Count the total number of bytes used storing hidden service
- descriptors against the value of MaxMemInQueues. If we're low on
- memory, and more than 20% of our memory is used holding hidden
- service descriptors, free them until no more than 10% of our
- memory holds hidden service descriptors. Free the least recently
- fetched descriptors first. Resolves ticket 13806.
- - When we have recently been under memory pressure (over 3/4 of
- MaxMemInQueues is allocated), then allocate smaller zlib objects
- for small requests. Closes ticket 11791.
- o Minor features (directory authorities):
- - Don't list relays with a bandwidth estimate of 0 in the consensus.
- Implements a feature proposed during discussion of bug 13000.
- - In tor-gencert, report an error if the user provides the same
- argument more than once.
- - If a directory authority can't find a best consensus method in the
- votes that it holds, it now falls back to its favorite consensus
- method. Previously, it fell back to method 1. Neither of these is
- likely to get enough signatures, but "fall back to favorite"
- doesn't require us to maintain support an obsolete consensus
- method. Implements part of proposal 215.
- o Minor features (geoip):
- - Update geoip to the March 3 2015 Maxmind GeoLite2 Country database.
- - Update geoip6 to the March 3 2015 Maxmind GeoLite2
- Country database.
- o Minor features (guard nodes):
- - Reduce the time delay before saving guard status to disk from 10
- minutes to 30 seconds (or from one hour to 10 minutes if
- AvoidDiskWrites is set). Closes ticket 12485.
- o Minor features (heartbeat):
- - On relays, report how many connections we negotiated using each
- version of the Tor link protocols. This information will let us
- know if removing support for very old versions of the Tor
- protocols is harming the network. Closes ticket 15212.
- o Minor features (hidden service):
- - Make Sybil attacks against hidden services harder by changing the
- minimum time required to get the HSDir flag from 25 hours up to 96
- hours. Addresses ticket 14149.
- - New option "HiddenServiceAllowUnknownPorts" to allow hidden
- services to disable the anti-scanning feature introduced in
- 0.2.6.2-alpha. With this option not set, a connection to an
- unlisted port closes the circuit. With this option set, only a
- RELAY_DONE cell is sent. Closes ticket 14084.
- - When re-enabling the network, don't try to build introduction
- circuits until we have successfully built a circuit. This makes
- hidden services come up faster when the network is re-enabled.
- Patch from "akwizgran". Closes ticket 13447.
- - When we fail to retrieve a hidden service descriptor, send the
- controller an "HS_DESC FAILED" controller event. Implements
- feature 13212.
- - New HiddenServiceDirGroupReadable option to cause hidden service
- directories and hostname files to be created group-readable. Patch
- from "anon", David Stainton, and "meejah". Closes ticket 11291.
- o Minor features (interface):
- - Implement "-f -" command-line option to read torrc configuration
- from standard input, if you don't want to store the torrc file in
- the file system. Implements feature 13865.
- o Minor features (logging):
- - Add a count of unique clients to the bridge heartbeat message.
- Resolves ticket 6852.
- - Suppress "router info incompatible with extra info" message when
- reading extrainfo documents from cache. (This message got loud
- around when we closed bug 9812 in 0.2.6.2-alpha.) Closes
- ticket 13762.
- - Elevate hidden service authorized-client message from DEBUG to
- INFO. Closes ticket 14015.
- - On Unix-like systems, you can now use named pipes as the target of
- the Log option, and other options that try to append to files.
- Closes ticket 12061. Patch from "carlo von lynX".
- - When opening a log file at startup, send it every log message that
- we generated between startup and opening it. Previously, log
- messages that were generated before opening the log file were only
- logged to stdout. Closes ticket 6938.
- - Add a TruncateLogFile option to overwrite logs instead of
- appending to them. Closes ticket 5583.
- - Quiet some log messages in the heartbeat and at startup. Closes
- ticket 14950.
- o Minor features (portability, Solaris):
- - Threads are no longer disabled by default on Solaris; we believe
- that the versions of Solaris with broken threading support are all
- obsolete by now. Resolves ticket 9495.
- o Minor features (relay):
- - Re-check our address after we detect a changed IP address from
- getsockname(). This ensures that the controller command "GETINFO
- address" will report the correct value. Resolves ticket 11582.
- Patch from "ra".
- - A new AccountingRule option lets Relays set whether they'd like
- AccountingMax to be applied separately to inbound and outbound
- traffic, or applied to the sum of inbound and outbound traffic.
- Resolves ticket 961. Patch by "chobe".
- - When identity keypair is generated for first time, log a
- congratulatory message that links to the new relay lifecycle
- document. Implements feature 10427.
- o Minor features (security, memory wiping):
- - Ensure we securely wipe keys from memory after
- crypto_digest_get_digest and init_curve25519_keypair_from_file
- have finished using them. Resolves ticket 13477.
- o Minor features (security, out-of-memory handling):
- - When handling an out-of-memory condition, allocate less memory for
- temporary data structures. Fixes issue 10115.
- - When handling an out-of-memory condition, consider more types of
- buffers, including those on directory connections, and zlib
- buffers. Resolves ticket 11792.
- o Minor features (stability):
- - Add assertions in our hash-table iteration code to check for
- corrupted values that could cause infinite loops. Closes
- ticket 11737.
- o Minor features (systemd):
- - Various improvements and modernizations in systemd hardening
- support. Closes ticket 13805. Patch from Craig Andrews.
- - Where supported, when running with systemd, report successful
- startup to systemd. Part of ticket 11016. Patch by Michael Scherer.
- - When running with systemd, support systemd watchdog messages. Part
- of ticket 11016. Patch by Michael Scherer.
- o Minor features (testing networks):
- - Add the TestingDirAuthVoteExit option, which lists nodes to assign
- the "Exit" flag regardless of their uptime, bandwidth, or exit
- policy. TestingTorNetwork must be set for this option to have any
- effect. Previously, authorities would take up to 35 minutes to
- give nodes the Exit flag in a test network. Partially implements
- ticket 13161.
- - Drop the minimum RendPostPeriod on a testing network to 5 seconds,
- and the default on a testing network to 2 minutes. Drop the
- MIN_REND_INITIAL_POST_DELAY on a testing network to 5 seconds, but
- keep the default on a testing network at 30 seconds. This reduces
- HS bootstrap time to around 25 seconds. Also, change the default
- time in test-network.sh to match. Closes ticket 13401. Patch
- by "teor".
- - Create TestingDirAuthVoteHSDir to correspond to
- TestingDirAuthVoteExit/Guard. Ensures that authorities vote the
- HSDir flag for the listed relays regardless of uptime or ORPort
- connectivity. Respects the value of VoteOnHidServDirectoriesV2.
- Partial implementation for ticket 14067. Patch by "teor".
- o Minor features (tor2web mode):
- - Introduce the config option Tor2webRendezvousPoints, which allows
- clients in Tor2webMode to select a specific Rendezvous Point to be
- used in HS circuits. This might allow better performance for
- Tor2Web nodes. Implements ticket 12844.
- o Minor features (transparent proxy):
- - Update the transparent proxy option checks to allow for both ipfw
- and pf on OS X. Closes ticket 14002.
- - Use the correct option when using IPv6 with transparent proxy
- support on Linux. Resolves 13808. Patch by Francisco Blas
- Izquierdo Riera.
- o Minor features (validation):
- - Check all date/time values passed to tor_timegm and
- parse_rfc1123_time for validity, taking leap years into account.
- Improves HTTP header validation. Implemented with bug 13476.
- - In correct_tm(), limit the range of values returned by system
- localtime(_r) and gmtime(_r) to be between the years 1 and 8099.
- This means we don't have to deal with negative or too large dates,
- even if a clock is wrong. Otherwise we might fail to read a file
- written by us which includes such a date. Fixes bug 13476.
- - Stop allowing invalid address patterns like "*/24" that contain
- both a wildcard address and a bit prefix length. This affects all
- our address-range parsing code. Fixes bug 7484; bugfix
- on 0.0.2pre14.
- o Minor bugfixes (bridge clients):
- - When configured to use a bridge without an identity digest (not
- recommended), avoid launching an extra channel to it when
- bootstrapping. Fixes bug 7733; bugfix on 0.2.4.4-alpha.
- o Minor bugfixes (bridges):
- - When DisableNetwork is set, do not launch pluggable transport
- plugins, and if any are running, terminate them. Fixes bug 13213;
- bugfix on 0.2.3.6-alpha.
- o Minor bugfixes (C correctness):
- - Fix several instances of possible integer overflow/underflow/NaN.
- Fixes bug 13104; bugfix on 0.2.3.1-alpha and later. Patches
- from "teor".
- - In circuit_build_times_calculate_timeout() in circuitstats.c,
- avoid dividing by zero in the pareto calculations. This traps
- under clang's "undefined-trap" sanitizer. Fixes bug 13290; bugfix
- on 0.2.2.2-alpha.
- - Fix an integer overflow in format_time_interval(). Fixes bug
- 13393; bugfix on 0.2.0.10-alpha.
- - Set the correct day of year value when the system's localtime(_r)
- or gmtime(_r) functions fail to set struct tm. Not externally
- visible. Fixes bug 13476; bugfix on 0.0.2pre14.
- - Avoid unlikely signed integer overflow in tor_timegm on systems
- with 32-bit time_t. Fixes bug 13476; bugfix on 0.0.2pre14.
- o Minor bugfixes (certificate handling):
- - If an authority operator accidentally makes a signing certificate
- with a future publication time, do not discard its real signing
- certificates. Fixes bug 11457; bugfix on 0.2.0.3-alpha.
- - Remove any old authority certificates that have been superseded
- for at least two days. Previously, we would keep superseded
- certificates until they expired, if they were published close in
- time to the certificate that superseded them. Fixes bug 11454;
- bugfix on 0.2.1.8-alpha.
- o Minor bugfixes (client):
- - Fix smartlist_choose_node_by_bandwidth() so that relays with the
- BadExit flag are not considered worthy candidates. Fixes bug
- 13066; bugfix on 0.1.2.3-alpha.
- - Use the consensus schedule for downloading consensuses, and not
- the generic schedule. Fixes bug 11679; bugfix on 0.2.2.6-alpha.
- - Handle unsupported or malformed SOCKS5 requests properly by
- responding with the appropriate error message before closing the
- connection. Fixes bugs 12971 and 13314; bugfix on 0.0.2pre13.
- o Minor bugfixes (client, automapping):
- - Avoid crashing on torrc lines for VirtualAddrNetworkIPv[4|6] when
- no value follows the option. Fixes bug 14142; bugfix on
- 0.2.4.7-alpha. Patch by "teor".
- - Fix a memory leak when using AutomapHostsOnResolve. Fixes bug
- 14195; bugfix on 0.1.0.1-rc.
- - Prevent changes to other options from removing the wildcard value
- "." from "AutomapHostsSuffixes". Fixes bug 12509; bugfix
- on 0.2.0.1-alpha.
- - Allow MapAddress and AutomapHostsOnResolve to work together when
- an address is mapped into another address type (like .onion) that
- must be automapped at resolve time. Fixes bug 7555; bugfix
- on 0.2.0.1-alpha.
- o Minor bugfixes (client, bridges):
- - When we are using bridges and we had a network connectivity
- problem, only retry connecting to our currently configured
- bridges, not all bridges we know about and remember using. Fixes
- bug 14216; bugfix on 0.2.2.17-alpha.
- o Minor bugfixes (client, DNS):
- - Report the correct cached DNS expiration times on SOCKS port or in
- DNS replies. Previously, we would report everything as "never
- expires." Fixes bug 14193; bugfix on 0.2.3.17-beta.
- - Avoid a small memory leak when we find a cached answer for a
- reverse DNS lookup in a client-side DNS cache. (Remember, client-
- side DNS caching is off by default, and is not recommended.) Fixes
- bug 14259; bugfix on 0.2.0.1-alpha.
- o Minor bugfixes (client, IPv6):
- - Reject socks requests to literal IPv6 addresses when IPv6Traffic
- flag is not set; and not because the NoIPv4Traffic flag was set.
- Previously we'd looked at the NoIPv4Traffic flag for both types of
- literal addresses. Fixes bug 14280; bugfix on 0.2.4.7-alpha.
- o Minor bugfixes (client, microdescriptors):
- - Use a full 256 bits of the SHA256 digest of a microdescriptor when
- computing which microdescriptors to download. This keeps us from
- erroneous download behavior if two microdescriptor digests ever
- have the same first 160 bits. Fixes part of bug 13399; bugfix
- on 0.2.3.1-alpha.
- - Reset a router's status if its microdescriptor digest changes,
- even if the first 160 bits remain the same. Fixes part of bug
- 13399; bugfix on 0.2.3.1-alpha.
- o Minor bugfixes (client, torrc):
- - Stop modifying the value of our DirReqStatistics torrc option just
- because we're not a bridge or relay. This bug was causing Tor
- Browser users to write "DirReqStatistics 0" in their torrc files
- as if they had chosen to change the config. Fixes bug 4244; bugfix
- on 0.2.3.1-alpha.
- - When GeoIPExcludeUnknown is enabled, do not incorrectly decide
- that our options have changed every time we SIGHUP. Fixes bug
- 9801; bugfix on 0.2.4.10-alpha. Patch from "qwerty1".
- o Minor bugfixes (compilation):
- - Fix a compilation warning on s390. Fixes bug 14988; bugfix
- on 0.2.5.2-alpha.
- - Silence clang warnings under --enable-expensive-hardening,
- including implicit truncation of 64 bit values to 32 bit, const
- char assignment to self, tautological compare, and additional
- parentheses around equality tests. Fixes bug 13577; bugfix
- on 0.2.5.4-alpha.
- - Fix a clang warning about checking whether an address in the
- middle of a structure is NULL. Fixes bug 14001; bugfix
- on 0.2.1.2-alpha.
- - The address of an array in the middle of a structure will always
- be non-NULL. clang recognises this and complains. Disable the
- tautologous and redundant check to silence this warning. Fixes bug
- 14001; bugfix on 0.2.1.2-alpha.
- - Compile correctly with (unreleased) OpenSSL 1.1.0 headers.
- Addresses ticket 14188.
- - Build without warnings with the stock OpenSSL srtp.h header, which
- has a duplicate declaration of SSL_get_selected_srtp_profile().
- Fixes bug 14220; this is OpenSSL's bug, not ours.
- - Do not compile any code related to Tor2Web mode when Tor2Web mode
- is not enabled at compile time. Previously, this code was included
- in a disabled state. See discussion on ticket 12844.
- - Allow our configure script to build correctly with autoconf 2.62
- again. Fixes bug 12693; bugfix on 0.2.5.2-alpha.
- - Improve the error message from ./configure to make it clear that
- when asciidoc has not been found, the user will have to either add
- --disable-asciidoc argument or install asciidoc. Resolves
- ticket 13228.
- o Minor bugfixes (controller):
- - Report "down" in response to the "GETINFO entry-guards" command
- when relays are down with an unreachable_since value. Previously,
- we would report "up". Fixes bug 14184; bugfix on 0.1.2.2-alpha.
- - Avoid crashing on a malformed EXTENDCIRCUIT command. Fixes bug
- 14116; bugfix on 0.2.2.9-alpha.
- o Minor bugfixes (controller):
- - Return an error when the second or later arguments of the
- "setevents" controller command are invalid events. Previously we
- would return success while silently skipping invalid events. Fixes
- bug 13205; bugfix on 0.2.3.2-alpha. Reported by "fpxnns".
- o Minor bugfixes (directory authority):
- - Allow directory authorities to fetch more data from one another if
- they find themselves missing lots of votes. Previously, they had
- been bumping against the 10 MB queued data limit. Fixes bug 14261;
- bugfix on 0.1.2.5-alpha.
- - Do not attempt to download extrainfo documents which we will be
- unable to validate with a matching server descriptor. Fixes bug
- 13762; bugfix on 0.2.0.1-alpha.
- - Fix a bug that was truncating AUTHDIR_NEWDESC events sent to the
- control port. Fixes bug 14953; bugfix on 0.2.0.1-alpha.
- - Enlarge the buffer to read bwauth generated files to avoid an
- issue when parsing the file in dirserv_read_measured_bandwidths().
- Fixes bug 14125; bugfix on 0.2.2.1-alpha.
- - When running as a v3 directory authority, advertise that you serve
- extra-info documents so that clients who want them can find them
- from you too. Fixes part of bug 11683; bugfix on 0.2.0.1-alpha.
- o Minor bugfixes (directory system):
- - Always believe that v3 directory authorities serve extra-info
- documents, whether they advertise "caches-extra-info" or not.
- Fixes part of bug 11683; bugfix on 0.2.0.1-alpha.
- - Check the BRIDGE_DIRINFO flag bitwise rather than using equality.
- Previously, directories offering BRIDGE_DIRINFO and some other
- flag (i.e. microdescriptors or extrainfo) would be ignored when
- looking for bridges. Partially fixes bug 13163; bugfix
- on 0.2.0.7-alpha.
- o Minor bugfixes (file handling):
- - Stop failing when key files are zero-length. Instead, generate new
- keys, and overwrite the empty key files. Fixes bug 13111; bugfix
- on all versions of Tor. Patch by "teor".
- - Stop generating a fresh .old RSA onion key file when the .old file
- is missing. Fixes part of 13111; bugfix on 0.0.6rc1.
- - Avoid overwriting .old key files with empty key files.
- - Skip loading zero-length extrainfo store, router store, stats,
- state, and key files.
- - Avoid crashing when trying to reload a torrc specified as a
- relative path with RunAsDaemon turned on. Fixes bug 13397; bugfix
- on 0.2.3.11-alpha.
- o Minor bugfixes (hidden services):
- - Close the introduction circuit when we have no more usable intro
- points, instead of waiting for it to time out. This also ensures
- that no follow-up HS descriptor fetch is triggered when the
- circuit eventually times out. Fixes bug 14224; bugfix on 0.0.6.
- - When fetching a hidden service descriptor for a down service that
- was recently up, do not keep refetching until we try the same
- replica twice in a row. Fixes bug 14219; bugfix on 0.2.0.10-alpha.
- - Correctly send a controller event when we find that a rendezvous
- circuit has finished. Fixes bug 13936; bugfix on 0.1.1.5-alpha.
- - Pre-check directory permissions for new hidden-services to avoid
- at least one case of "Bug: Acting on config options left us in a
- broken state. Dying." Fixes bug 13942; bugfix on 0.0.6pre1.
- - When fetching hidden service descriptors, we now check not only
- for whether we got the hidden service we had in mind, but also
- whether we got the particular descriptors we wanted. This prevents
- a class of inefficient but annoying DoS attacks by hidden service
- directories. Fixes bug 13214; bugfix on 0.2.1.6-alpha. Reported
- by "special".
- o Minor bugfixes (Linux seccomp2 sandbox):
- - Make transparent proxy support work along with the seccomp2
- sandbox. Fixes part of bug 13808; bugfix on 0.2.5.1-alpha. Patch
- by Francisco Blas Izquierdo Riera.
- - Fix a memory leak in tor-resolve when running with the sandbox
- enabled. Fixes bug 14050; bugfix on 0.2.5.9-rc.
- - Allow glibc fatal errors to be sent to stderr before Tor exits.
- Previously, glibc would try to write them to /dev/tty, and the
- sandbox would trap the call and make Tor exit prematurely. Fixes
- bug 14759; bugfix on 0.2.5.1-alpha.
- o Minor bugfixes (logging):
- - Avoid crashing when there are more log domains than entries in
- domain_list. Bugfix on 0.2.3.1-alpha.
- - Downgrade warnings about RSA signature failures to info log level.
- Emit a warning when an extra info document is found incompatible
- with a corresponding router descriptor. Fixes bug 9812; bugfix
- on 0.0.6rc3.
- - Make connection_ap_handshake_attach_circuit() log the circuit ID
- correctly. Fixes bug 13701; bugfix on 0.0.6.
- o Minor bugfixes (networking):
- - Check for orconns and use connection_or_close_for_error() rather
- than connection_mark_for_close() directly in the getsockopt()
- failure case of connection_handle_write_impl(). Fixes bug 11302;
- bugfix on 0.2.4.4-alpha.
- o Minor bugfixes (parsing):
- - Stop accepting milliseconds (or other junk) at the end of
- descriptor publication times. Fixes bug 9286; bugfix on 0.0.2pre25.
- - Support two-number and three-number version numbers correctly, in
- case we change the Tor versioning system in the future. Fixes bug
- 13661; bugfix on 0.0.8pre1.
- o Minor bugfixes (portability):
- - Fix the ioctl()-based network interface lookup code so that it
- will work on systems that have variable-length struct ifreq, for
- example Mac OS X.
- - Use the correct datatype in the SipHash-2-4 function to prevent
- compilers from assuming any sort of alignment. Fixes bug 15436;
- bugfix on 0.2.5.3-alpha.
- o Minor bugfixes (preventative security, C safety):
- - When reading a hexadecimal, base-32, or base-64 encoded value from
- a string, always overwrite the whole output buffer. This prevents
- some bugs where we would look at (but fortunately, not reveal)
- uninitialized memory on the stack. Fixes bug 14013; bugfix on all
- versions of Tor.
- - Clear all memory targeted by tor_addr_{to,from}_sockaddr(), not
- just the part that's used. This makes it harder for data leak bugs
- to occur in the event of other programming failures. Resolves
- ticket 14041.
- o Minor bugfixes (relay):
- - When generating our family list, remove spaces from around the
- entries. Fixes bug 12728; bugfix on 0.2.1.7-alpha.
- - If our previous bandwidth estimate was 0 bytes, allow publishing a
- new relay descriptor immediately. Fixes bug 13000; bugfix
- on 0.1.1.6-alpha.
- o Minor bugfixes (shutdown):
- - When shutting down, always call event_del() on lingering read or
- write events before freeing them. Otherwise, we risk double-frees
- or read-after-frees in event_base_free(). Fixes bug 12985; bugfix
- on 0.1.0.2-rc.
- o Minor bugfixes (small memory leaks):
- - Avoid leaking memory when using IPv6 virtual address mappings.
- Fixes bug 14123; bugfix on 0.2.4.7-alpha. Patch by Tom van
- der Woerdt.
- o Minor bugfixes (statistics):
- - Increase period over which bandwidth observations are aggregated
- from 15 minutes to 4 hours. Fixes bug 13988; bugfix on 0.0.8pre1.
- o Minor bugfixes (systemd support):
- - Run correctly under systemd with the RunAsDaemon option set. Fixes
- part of bug 14141; bugfix on 0.2.5.7-rc. Patch from Tomasz Torcz.
- - Inform the systemd supervisor about more changes in the Tor
- process status. Implements part of ticket 14141. Patch from
- Tomasz Torcz.
- o Minor bugfixes (testing networks):
- - Fix TestingDirAuthVoteGuard to properly give out Guard flags in a
- testing network. Fixes bug 13064; bugfix on 0.2.5.2-alpha.
- - Stop using the default authorities in networks which provide both
- AlternateDirAuthority and AlternateBridgeAuthority. Partially
- fixes bug 13163; bugfix on 0.2.0.13-alpha.
- o Minor bugfixes (testing networks, fast startup):
- - Allow Tor to build circuits using a consensus with no exits. If
- the consensus has no exits (typical of a bootstrapping test
- network), allow Tor to build circuits once enough descriptors have
- been downloaded. This assists in bootstrapping a testing Tor
- network. Fixes bug 13718; bugfix on 0.2.4.10-alpha. Patch
- by "teor".
- - When V3AuthVotingInterval is low, give a lower If-Modified-Since
- header to directory servers. This allows us to obtain consensuses
- promptly when the consensus interval is very short. This assists
- in bootstrapping a testing Tor network. Fixes parts of bugs 13718
- and 13963; bugfix on 0.2.0.3-alpha. Patch by "teor".
- - Stop assuming that private addresses are local when checking
- reachability in a TestingTorNetwork. Instead, when testing, assume
- all OR connections are remote. (This is necessary due to many test
- scenarios running all relays on localhost.) This assists in
- bootstrapping a testing Tor network. Fixes bug 13924; bugfix on
- 0.1.0.1-rc. Patch by "teor".
- - Avoid building exit circuits from a consensus with no exits. Now
- thanks to our fix for 13718, we accept a no-exit network as not
- wholly lost, but we need to remember not to try to build exit
- circuits on it. Closes ticket 13814; patch by "teor".
- - Stop requiring exits to have non-zero bandwithcapacity in a
- TestingTorNetwork. Instead, when TestingMinExitFlagThreshold is 0,
- ignore exit bandwidthcapacity. This assists in bootstrapping a
- testing Tor network. Fixes parts of bugs 13718 and 13839; bugfix
- on 0.2.0.3-alpha. Patch by "teor".
- - Add "internal" to some bootstrap statuses when no exits are
- available. If the consensus does not contain Exits, Tor will only
- build internal circuits. In this case, relevant statuses will
- contain the word "internal" as indicated in the Tor control-
- spec.txt. When bootstrap completes, Tor will be ready to build
- internal circuits. If a future consensus contains Exits, exit
- circuits may become available. Fixes part of bug 13718; bugfix on
- 0.2.4.10-alpha. Patch by "teor".
- - Decrease minimum consensus interval to 10 seconds when
- TestingTorNetwork is set, or 5 seconds for the first consensus.
- Fix assumptions throughout the code that assume larger intervals.
- Fixes bugs 13718 and 13823; bugfix on 0.2.0.3-alpha. Patch
- by "teor".
- - Avoid excluding guards from path building in minimal test
- networks, when we're in a test network and excluding guards would
- exclude all relays. This typically occurs in incredibly small tor
- networks, and those using "TestingAuthVoteGuard *". Fixes part of
- bug 13718; bugfix on 0.1.1.11-alpha. Patch by "teor".
- o Minor bugfixes (testing):
- - Avoid a side-effect in a tor_assert() in the unit tests. Fixes bug
- 15188; bugfix on 0.1.2.3-alpha. Patch from Tom van der Woerdt.
- - Stop spawn test failures due to a race condition between the
- SIGCHLD handler updating the process status, and the test reading
- it. Fixes bug 13291; bugfix on 0.2.3.3-alpha.
- - Avoid passing an extra backslash when creating a temporary
- directory for running the unit tests on Windows. Fixes bug 12392;
- bugfix on 0.2.2.25-alpha. Patch from Gisle Vanem.
- o Minor bugfixes (TLS):
- - Check more thoroughly throughout the TLS code for possible
- unlogged TLS errors. Possible diagnostic or fix for bug 13319.
- o Minor bugfixes (transparent proxy):
- - Use getsockname, not getsockopt, to retrieve the address for a
- TPROXY-redirected connection. Fixes bug 13796; bugfix
- on 0.2.5.2-alpha.
- o Minor bugfixes (windows):
- - Remove code to special-case handling of NTE_BAD_KEYSET when
- acquiring windows CryptoAPI context. This error can't actually
- occur for the parameters we're providing. Fixes bug 10816; bugfix
- on 0.0.2pre26.
- o Minor bugfixes (zlib):
- - Avoid truncating a zlib stream when trying to finalize it with an
- empty output buffer. Fixes bug 11824; bugfix on 0.1.1.23.
- o Code simplification and refactoring:
- - Change the entry_is_live() function to take named bitfield
- elements instead of an unnamed list of booleans. Closes
- ticket 12202.
- - Refactor and unit-test entry_is_time_to_retry() in entrynodes.c.
- Resolves ticket 12205.
- - Use calloc and reallocarray functions instead of multiply-
- then-malloc. This makes it less likely for us to fall victim to an
- integer overflow attack when allocating. Resolves ticket 12855.
- - Use the standard macro name SIZE_MAX, instead of our
- own SIZE_T_MAX.
- - Document usage of the NO_DIRINFO and ALL_DIRINFO flags clearly in
- functions which take them as arguments. Replace 0 with NO_DIRINFO
- in a function call for clarity. Seeks to prevent future issues
- like 13163.
- - Avoid 4 null pointer errors under clang static analysis by using
- tor_assert() to prove that the pointers aren't null. Fixes
- bug 13284.
- - Rework the API of policies_parse_exit_policy() to use a bitmask to
- represent parsing options, instead of a confusing mess of
- booleans. Resolves ticket 8197.
- - Introduce a helper function to parse ExitPolicy in
- or_options_t structure.
- - Move fields related to isolating and configuring client ports into
- a shared structure. Previously, they were duplicated across
- port_cfg_t, listener_connection_t, and edge_connection_t. Failure
- to copy them correctly had been the cause of at least one bug in
- the past. Closes ticket 8546.
- - Refactor the get_interface_addresses_raw() doom-function into
- multiple smaller and simpler subfunctions. Cover the resulting
- subfunctions with unit-tests. Fixes a significant portion of
- issue 12376.
- - Remove workaround in dirserv_thinks_router_is_hs_dir() that was
- only for version <= 0.2.2.24 which is now deprecated. Closes
- ticket 14202.
- - Remove a test for a long-defunct broken version-one
- directory server.
- - Refactor main loop to extract the 'loop' part. This makes it
- easier to run Tor under Shadow. Closes ticket 15176.
- - Stop using can_complete_circuits as a global variable; access it
- with a function instead.
- - Avoid using operators directly as macro arguments: this lets us
- apply coccinelle transformations to our codebase more directly.
- Closes ticket 13172.
- - Combine the functions used to parse ClientTransportPlugin and
- ServerTransportPlugin into a single function. Closes ticket 6456.
- - Add inline functions and convenience macros for inspecting channel
- state. Refactor the code to use convenience macros instead of
- checking channel state directly. Fixes issue 7356.
- - Document all members of was_router_added_t and rename
- ROUTER_WAS_NOT_NEW to ROUTER_IS_ALREADY_KNOWN to make it less
- confusable with ROUTER_WAS_TOO_OLD. Fixes issue 13644.
- - In connection_exit_begin_conn(), use END_CIRC_REASON_TORPROTOCOL
- constant instead of hardcoded value. Fixes issue 13840.
- - Refactor our generic strmap and digestmap types into a single
- implementation, so that we can add a new digest256map
- type trivially.
- o Documentation:
- - Add a doc/TUNING document with tips for handling large numbers of
- TCP connections when running busy Tor relay. Update the warning
- message to point to this file when running out of sockets
- operating system is allowing to use simultaneously. Resolves
- ticket 9708.
- - Adding section on OpenBSD to our TUNING document. Thanks to mmcc
- for writing the OpenBSD-specific tips. Resolves ticket 13702.
- - Make the tor-resolve documentation match its help string and its
- options. Resolves part of ticket 14325.
- - Log a more useful error message from tor-resolve when failing to
- look up a hidden service address. Resolves part of ticket 14325.
- - Document the bridge-authority-only 'networkstatus-bridges' file.
- Closes ticket 13713; patch from "tom".
- - Fix typo in PredictedPortsRelevanceTime option description in
- manpage. Resolves issue 13707.
- - Stop suggesting that users specify relays by nickname: it isn't a
- good idea. Also, properly cross-reference how to specify relays in
- all parts of manual documenting options that take a list of
- relays. Closes ticket 13381.
- - Clarify the HiddenServiceDir option description in manpage to make
- it clear that relative paths are taken with respect to the current
- working directory. Also clarify that this behavior is not
- guaranteed to remain indefinitely. Fixes issue 13913.
- o Distribution (systemd):
- - systemd unit file: only allow tor to write to /var/lib/tor and
- /var/log/tor. The rest of the filesystem is accessible for reading
- only. Patch by intrigeri; resolves ticket 12751.
- - systemd unit file: ensure that the process and all its children
- can never gain new privileges. Patch by intrigeri; resolves
- ticket 12939.
- - systemd unit file: set up /var/run/tor as writable for the Tor
- service. Patch by intrigeri; resolves ticket 13196.
- o Downgraded warnings:
- - Don't warn when we've attempted to contact a relay using the wrong
- ntor onion key. Closes ticket 9635.
- o Removed code:
- - Remove some lingering dead code that once supported mempools.
- Mempools were disabled by default in 0.2.5, and removed entirely
- in 0.2.6.3-alpha. Closes more of ticket 14848; patch
- by "cypherpunks".
- o Removed features (directory authorities):
- - Remove code that prevented authorities from listing Tor relays
- affected by CVE-2011-2769 as guards. These relays are already
- rejected altogether due to the minimum version requirement of
- 0.2.3.16-alpha. Closes ticket 13152.
- - The "AuthDirRejectUnlisted" option no longer has any effect, as
- the fingerprints file (approved-routers) has been deprecated.
- - Directory authorities do not support being Naming dirauths anymore.
- The "NamingAuthoritativeDir" config option is now obsolete.
- - Directory authorities do not support giving out the BadDirectory
- flag anymore.
- - Directory authorities no longer advertise or support consensus
- methods 1 through 12 inclusive. These consensus methods were
- obsolete and/or insecure: maintaining the ability to support them
- served no good purpose. Implements part of proposal 215; closes
- ticket 10163.
- o Removed features:
- - To avoid confusion with the "ExitRelay" option, "ExitNode" is no
- longer silently accepted as an alias for "ExitNodes".
- - The --enable-mempool and --enable-buf-freelists options, which
- were originally created to work around bad malloc implementations,
- no longer exist. They were off-by-default in 0.2.5. Closes
- ticket 14848.
- - We no longer remind the user about configuration options that have
- been obsolete since 0.2.3.x or earlier. Patch by Adrien Bak.
- - Remove our old, non-weighted bandwidth-based node selection code.
- Previously, we used it as a fallback when we couldn't perform
- weighted bandwidth-based node selection. But that would only
- happen in the cases where we had no consensus, or when we had a
- consensus generated by buggy or ancient directory authorities. In
- either case, it's better to use the more modern, better maintained
- algorithm, with reasonable defaults for the weights. Closes
- ticket 13126.
- - Remove the --disable-curve25519 configure option. Relays and
- clients now are required to support curve25519 and the
- ntor handshake.
- - The old "StrictEntryNodes" and "StrictExitNodes" options, which
- used to be deprecated synonyms for "StrictNodes", are now marked
- obsolete. Resolves ticket 12226.
- - Clients don't understand the BadDirectory flag in the consensus
- anymore, and ignore it.
- o Removed platform support:
- - We no longer include special code to build on Windows CE; as far
- as we know, nobody has used Tor on Windows CE in a very long time.
- Closes ticket 11446.
- o Testing (test-network.sh):
- - Stop using "echo -n", as some shells' built-in echo doesn't
- support "-n". Instead, use "/bin/echo -n". Partially fixes
- bug 13161.
- - Stop an apparent test-network hang when used with make -j2. Fixes
- bug 13331.
- - Add a --delay option to test-network.sh, which configures the
- delay before the chutney network tests for data transmission.
- Partially implements ticket 13161.
- o Testing:
- - Test that tor does not fail when key files are zero-length. Check
- that tor generates new keys, and overwrites the empty key files.
- - Test that tor generates new keys when keys are missing
- (existing behavior).
- - Test that tor does not overwrite key files that already contain
- data (existing behavior). Tests bug 13111. Patch by "teor".
- - New "make test-stem" target to run stem integration tests.
- Requires that the "STEM_SOURCE_DIR" environment variable be set.
- Closes ticket 14107.
- - Make the test_cmdline_args.py script work correctly on Windows.
- Patch from Gisle Vanem.
- - Move the slower unit tests into a new "./src/test/test-slow"
- binary that can be run independently of the other tests. Closes
- ticket 13243.
- - New tests for many parts of channel, relay, and circuitmux
- functionality. Code by Andrea; part of 9262.
- - New tests for parse_transport_line(). Part of ticket 6456.
- - In the unit tests, use chgrp() to change the group of the unit
- test temporary directory to the current user, so that the sticky
- bit doesn't interfere with tests that check directory groups.
- Closes 13678.
- - Add unit tests for resolve_my_addr(). Part of ticket 12376; patch
- by 'rl1987'.
- - Refactor the function that chooses guard nodes so that it can more
- easily be tested; write some tests for it.
- - Fix and re-enable the fgets_eagain unit test. Fixes bug 12503;
- bugfix on 0.2.3.1-alpha. Patch from "cypherpunks."
- - Create unit tests for format_time_interval(). With bug 13393.
- - Add unit tests for tor_timegm signed overflow, tor_timegm and
- parse_rfc1123_time validity checks, correct_tm year clamping. Unit
- tests (visible) fixes in bug 13476.
- - Add a "coverage-html" make target to generate HTML-visualized
- coverage results when building with --enable-coverage. (Requires
- lcov.) Patch from Kevin Murray.
- - Enable the backtrace handler (where supported) when running the
- unit tests.
- - Revise all unit tests that used the legacy test_* macros to
- instead use the recommended tt_* macros. This patch was generated
- with coccinelle, to avoid manual errors. Closes ticket 13119.
- Changes in version 0.2.5.11 - 2015-03-17
- Tor 0.2.5.11 is the second stable release in the 0.2.5 series.
- It backports several bugfixes from the 0.2.6 branch, including a
- couple of medium-level security fixes for relays and exit nodes.
- It also updates the list of directory authorities.
- o Directory authority changes:
- - Remove turtles as a directory authority.
- - Add longclaw as a new (v3) directory authority. This implements
- ticket 13296. This keeps the directory authority count at 9.
- - The directory authority Faravahar has a new IP address. This
- closes ticket 14487.
- o Major bugfixes (crash, OSX, security):
- - Fix a remote denial-of-service opportunity caused by a bug in
- OSX's _strlcat_chk() function. Fixes bug 15205; bug first appeared
- in OSX 10.9.
- o Major bugfixes (relay, stability, possible security):
- - Fix a bug that could lead to a relay crashing with an assertion
- failure if a buffer of exactly the wrong layout was passed to
- buf_pullup() at exactly the wrong time. Fixes bug 15083; bugfix on
- 0.2.0.10-alpha. Patch from 'cypherpunks'.
- - Do not assert if the 'data' pointer on a buffer is advanced to the
- very end of the buffer; log a BUG message instead. Only assert if
- it is past that point. Fixes bug 15083; bugfix on 0.2.0.10-alpha.
- o Major bugfixes (exit node stability):
- - Fix an assertion failure that could occur under high DNS load.
- Fixes bug 14129; bugfix on Tor 0.0.7rc1. Found by "jowr";
- diagnosed and fixed by "cypherpunks".
- o Major bugfixes (Linux seccomp2 sandbox):
- - Upon receiving sighup with the seccomp2 sandbox enabled, do not
- crash during attempts to call wait4. Fixes bug 15088; bugfix on
- 0.2.5.1-alpha. Patch from "sanic".
- o Minor features (controller):
- - New "GETINFO bw-event-cache" to get information about recent
- bandwidth events. Closes ticket 14128. Useful for controllers to
- get recent bandwidth history after the fix for ticket 13988.
- o Minor features (geoip):
- - Update geoip to the March 3 2015 Maxmind GeoLite2 Country database.
- - Update geoip6 to the March 3 2015 Maxmind GeoLite2
- Country database.
- o Minor bugfixes (client, automapping):
- - Avoid crashing on torrc lines for VirtualAddrNetworkIPv[4|6] when
- no value follows the option. Fixes bug 14142; bugfix on
- 0.2.4.7-alpha. Patch by "teor".
- - Fix a memory leak when using AutomapHostsOnResolve. Fixes bug
- 14195; bugfix on 0.1.0.1-rc.
- o Minor bugfixes (compilation):
- - Build without warnings with the stock OpenSSL srtp.h header, which
- has a duplicate declaration of SSL_get_selected_srtp_profile().
- Fixes bug 14220; this is OpenSSL's bug, not ours.
- o Minor bugfixes (directory authority):
- - Allow directory authorities to fetch more data from one another if
- they find themselves missing lots of votes. Previously, they had
- been bumping against the 10 MB queued data limit. Fixes bug 14261;
- bugfix on 0.1.2.5-alpha.
- - Enlarge the buffer to read bwauth generated files to avoid an
- issue when parsing the file in dirserv_read_measured_bandwidths().
- Fixes bug 14125; bugfix on 0.2.2.1-alpha.
- o Minor bugfixes (statistics):
- - Increase period over which bandwidth observations are aggregated
- from 15 minutes to 4 hours. Fixes bug 13988; bugfix on 0.0.8pre1.
- o Minor bugfixes (preventative security, C safety):
- - When reading a hexadecimal, base-32, or base-64 encoded value from
- a string, always overwrite the whole output buffer. This prevents
- some bugs where we would look at (but fortunately, not reveal)
- uninitialized memory on the stack. Fixes bug 14013; bugfix on all
- versions of Tor.
- Changes in version 0.2.4.26 - 2015-03-17
- Tor 0.2.4.26 includes an updated list of directory authorities. It
- also backports a couple of stability and security bugfixes from 0.2.5
- and beyond.
- o Directory authority changes:
- - Remove turtles as a directory authority.
- - Add longclaw as a new (v3) directory authority. This implements
- ticket 13296. This keeps the directory authority count at 9.
- - The directory authority Faravahar has a new IP address. This
- closes ticket 14487.
- o Major bugfixes (exit node stability, also in 0.2.6.3-alpha):
- - Fix an assertion failure that could occur under high DNS load.
- Fixes bug 14129; bugfix on Tor 0.0.7rc1. Found by "jowr";
- diagnosed and fixed by "cypherpunks".
- o Major bugfixes (relay, stability, possible security, also in 0.2.6.4-rc):
- - Fix a bug that could lead to a relay crashing with an assertion
- failure if a buffer of exactly the wrong layout was passed to
- buf_pullup() at exactly the wrong time. Fixes bug 15083; bugfix on
- 0.2.0.10-alpha. Patch from 'cypherpunks'.
- - Do not assert if the 'data' pointer on a buffer is advanced to the
- very end of the buffer; log a BUG message instead. Only assert if
- it is past that point. Fixes bug 15083; bugfix on 0.2.0.10-alpha.
- o Minor features (geoip):
- - Update geoip to the March 3 2015 Maxmind GeoLite2 Country database.
- - Update geoip6 to the March 3 2015 Maxmind GeoLite2
- Country database.
- Changes in version 0.2.5.10 - 2014-10-24
- Tor 0.2.5.10 is the first stable release in the 0.2.5 series.
- It adds several new security features, including improved
- denial-of-service resistance for relays, new compiler hardening
- options, and a system-call sandbox for hardened installations on Linux
- (requires seccomp2). The controller protocol has several new features,
- resolving IPv6 addresses should work better than before, and relays
- should be a little more CPU-efficient. We've added support for more
- OpenBSD and FreeBSD transparent proxy types. We've improved the build
- system and testing infrastructure to allow unit testing of more parts
- of the Tor codebase. Finally, we've addressed several nagging pluggable
- transport usability issues, and included numerous other small bugfixes
- and features mentioned below.
- This release marks end-of-life for Tor 0.2.3.x; those Tor versions
- have accumulated many known flaws; everyone should upgrade.
- o Major features (security):
- - The ntor handshake is now on-by-default, no matter what the
- directory authorities recommend. Implements ticket 8561.
- - Make the "tor-gencert" tool used by directory authority operators
- create 2048-bit signing keys by default (rather than 1024-bit, since
- 1024-bit is uncomfortably small these days). Addresses ticket 10324.
- - Warn about attempts to run hidden services and relays in the same
- process: that's probably not a good idea. Closes ticket 12908.
- - Disable support for SSLv3. All versions of OpenSSL in use with Tor
- today support TLS 1.0 or later, so we can safely turn off support
- for this old (and insecure) protocol. Fixes bug 13426.
- o Major features (relay security, DoS-resistance):
- - When deciding whether we have run out of memory and we need to
- close circuits, also consider memory allocated in buffers for
- streams attached to each circuit.
- This change, which extends an anti-DoS feature introduced in
- 0.2.4.13-alpha and improved in 0.2.4.14-alpha, lets Tor exit relays
- better resist more memory-based DoS attacks than before. Since the
- MaxMemInCellQueues option now applies to all queues, it is renamed
- to MaxMemInQueues. This feature fixes bug 10169.
- - Avoid hash-flooding denial-of-service attacks by using the secure
- SipHash-2-4 hash function for our hashtables. Without this
- feature, an attacker could degrade performance of a targeted
- client or server by flooding their data structures with a large
- number of entries to be stored at the same hash table position,
- thereby slowing down the Tor instance. With this feature, hash
- table positions are derived from a randomized cryptographic key,
- and an attacker cannot predict which entries will collide. Closes
- ticket 4900.
- - If you don't specify MaxMemInQueues yourself, Tor now tries to
- pick a good value based on your total system memory. Previously,
- the default was always 8 GB. You can still override the default by
- setting MaxMemInQueues yourself. Resolves ticket 11396.
- o Major features (bridges and pluggable transports):
- - Add support for passing arguments to managed pluggable transport
- proxies. Implements ticket 3594.
- - Bridges now track GeoIP information and the number of their users
- even when pluggable transports are in use, and report usage
- statistics in their extra-info descriptors. Resolves tickets 4773
- and 5040.
- - Don't launch pluggable transport proxies if we don't have any
- bridges configured that would use them. Now we can list many
- pluggable transports, and Tor will dynamically start one when it
- hears a bridge address that needs it. Resolves ticket 5018.
- - The bridge directory authority now assigns status flags (Stable,
- Guard, etc) to bridges based on thresholds calculated over all
- Running bridges. Now bridgedb can finally make use of its features
- to e.g. include at least one Stable bridge in its answers. Fixes
- bug 9859.
- o Major features (controller):
- - Extend ORCONN controller event to include an "ID" parameter,
- and add four new controller event types CONN_BW, CIRC_BW,
- CELL_STATS, and TB_EMPTY that show connection and circuit usage.
- The new events are emitted in private Tor networks only, with the
- goal of being able to better track performance and load during
- full-network simulations. Implements proposal 218 and ticket 7359.
- o Major features (relay performance):
- - Speed up server-side lookups of rendezvous and introduction point
- circuits by using hashtables instead of linear searches. These
- functions previously accounted between 3 and 7% of CPU usage on
- some busy relays. Resolves ticket 9841.
- - Avoid wasting CPU when extending a circuit over a channel that is
- nearly out of circuit IDs. Previously, we would do a linear scan
- over possible circuit IDs before finding one or deciding that we
- had exhausted our possibilities. Now, we try at most 64 random
- circuit IDs before deciding that we probably won't succeed. Fixes
- a possible root cause of ticket 11553.
- o Major features (seccomp2 sandbox, Linux only):
- - Use the seccomp2 syscall filtering facility on Linux to limit
- which system calls Tor can invoke. This is an experimental,
- Linux-only feature to provide defense-in-depth against unknown
- attacks. To try turning it on, set "Sandbox 1" in your torrc
- file. Please be ready to report bugs. We hope to add support
- for better sandboxing in the future, including more fine-grained
- filters, better division of responsibility, and support for more
- platforms. This work has been done by Cristian-Matei Toader for
- Google Summer of Code. Resolves tickets 11351 and 11465.
- o Major features (testing networks):
- - Make testing Tor networks bootstrap better: lower directory fetch
- retry schedules and maximum interval without directory requests,
- and raise maximum download tries. Implements ticket 6752.
- - Add make target 'test-network' to run tests on a Chutney network.
- Implements ticket 8530.
- o Major features (other):
- - On some platforms (currently: recent OSX versions, glibc-based
- platforms that support the ELF format, and a few other
- Unix-like operating systems), Tor can now dump stack traces
- when a crash occurs or an assertion fails. By default, traces
- are dumped to stderr (if possible) and to any logs that are
- reporting errors. Implements ticket 9299.
- o Deprecated versions:
- - Tor 0.2.3.x has reached end-of-life; it has received no patches or
- attention for some while.
- o Major bugfixes (security, directory authorities):
- - Directory authorities now include a digest of each relay's
- identity key as a part of its microdescriptor.
- This is a workaround for bug 11743 (reported by "cypherpunks"),
- where Tor clients do not support receiving multiple
- microdescriptors with the same SHA256 digest in the same
- consensus. When clients receive a consensus like this, they only
- use one of the relays. Without this fix, a hostile relay could
- selectively disable some client use of target relays by
- constructing a router descriptor with a different identity and the
- same microdescriptor parameters and getting the authorities to
- list it in a microdescriptor consensus. This fix prevents an
- attacker from causing a microdescriptor collision, because the
- router's identity is not forgeable.
- o Major bugfixes (openssl bug workaround):
- - Avoid crashing when using OpenSSL version 0.9.8zc, 1.0.0o, or
- 1.0.1j, built with the 'no-ssl3' configuration option. Fixes
- bug 13471. This is a workaround for an OpenSSL bug.
- o Major bugfixes (client):
- - Perform circuit cleanup operations even when circuit
- construction operations are disabled (because the network is
- disabled, or because there isn't enough directory information).
- Previously, when we were not building predictive circuits, we
- were not closing expired circuits either. Fixes bug 8387; bugfix on
- 0.1.1.11-alpha. This bug became visible in 0.2.4.10-alpha when we
- became more strict about when we have "enough directory information
- to build circuits".
- o Major bugfixes (client, pluggable transports):
- - When managing pluggable transports, use OS notification facilities
- to learn if they have crashed, and don't attempt to kill any
- process that has already exited. Fixes bug 8746; bugfix
- on 0.2.3.6-alpha.
- o Major bugfixes (relay denial of service):
- - Instead of writing destroy cells directly to outgoing connection
- buffers, queue them and intersperse them with other outgoing cells.
- This can prevent a set of resource starvation conditions where too
- many pending destroy cells prevent data cells from actually getting
- delivered. Reported by "oftc_must_be_destroyed". Fixes bug 7912;
- bugfix on 0.2.0.1-alpha.
- o Major bugfixes (relay):
- - Avoid queuing or sending destroy cells for circuit ID zero when we
- fail to send a CREATE cell. Fixes bug 12848; bugfix on 0.0.8pre1.
- Found and fixed by "cypherpunks".
- - Fix ORPort reachability detection on relays running behind a
- proxy, by correctly updating the "local" mark on the controlling
- channel when changing the address of an or_connection_t after the
- handshake. Fixes bug 12160; bugfix on 0.2.4.4-alpha.
- - Use a direct dirport connection when uploading non-anonymous
- descriptors to the directory authorities. Previously, relays would
- incorrectly use tunnel connections under a fairly wide variety of
- circumstances. Fixes bug 11469; bugfix on 0.2.4.3-alpha.
- - When a circuit accidentally has the same circuit ID for its
- forward and reverse direction, correctly detect the direction of
- cells using that circuit. Previously, this bug made roughly one
- circuit in a million non-functional. Fixes bug 12195; this is a
- bugfix on every version of Tor.
- o Minor features (security):
- - New --enable-expensive-hardening option to enable security
- hardening options that consume nontrivial amounts of CPU and
- memory. Right now, this includes AddressSanitizer and UbSan, which
- are supported in newer versions of GCC and Clang. Closes ticket
- 11477.
- - Authorities now assign the Guard flag to the fastest 25% of the
- network (it used to be the fastest 50%). Also raise the consensus
- weight that guarantees the Guard flag from 250 to 2000. For the
- current network, this results in about 1100 guards, down from 2500.
- This step paves the way for moving the number of entry guards
- down to 1 (proposal 236) while still providing reasonable expected
- performance for most users. Implements ticket 12690.
- o Minor features (security, memory management):
- - Memory allocation tricks (mempools and buffer freelists) are now
- disabled by default. You can turn them back on with
- --enable-mempools and --enable-buf-freelists respectively. We're
- disabling these features because malloc performance is good enough
- on most platforms, and a similar feature in OpenSSL exacerbated
- exploitation of the Heartbleed attack. Resolves ticket 11476.
- o Minor features (bridge client):
- - Report a more useful failure message when we can't connect to a
- bridge because we don't have the right pluggable transport
- configured. Resolves ticket 9665. Patch from Fábio J. Bertinatto.
- o Minor features (bridge):
- - Add an ExtORPortCookieAuthFileGroupReadable option to make the
- cookie file for the ExtORPort g+r by default.
- o Minor features (bridges, pluggable transports):
- - Bridges now write the SHA1 digest of their identity key
- fingerprint (that is, a hash of a hash of their public key) to
- notice-level logs, and to a new hashed-fingerprint file. This
- information will help bridge operators look up their bridge in
- Globe and similar tools. Resolves ticket 10884.
- - Improve the message that Tor displays when running as a bridge
- using pluggable transports without an Extended ORPort listener.
- Also, log the message in the log file too. Resolves ticket 11043.
- - Add threshold cutoffs to the networkstatus document created by
- the Bridge Authority. Fixes bug 1117.
- - On Windows, spawn background processes using the CREATE_NO_WINDOW
- flag. Now Tor Browser Bundle 3.5 with pluggable transports enabled
- doesn't pop up a blank console window. (In Tor Browser Bundle 2.x,
- Vidalia set this option for us.) Implements ticket 10297.
- o Minor features (build):
- - The configure script has a --disable-seccomp option to turn off
- support for libseccomp on systems that have it, in case it (or
- Tor's use of it) is broken. Resolves ticket 11628.
- - Assume that a user using ./configure --host wants to cross-compile,
- and give an error if we cannot find a properly named
- tool-chain. Add a --disable-tool-name-check option to proceed
- nevertheless. Addresses ticket 9869. Patch by Benedikt Gollatz.
- - If we run ./configure and the compiler recognizes -fstack-protector
- but the linker rejects it, warn the user about a potentially missing
- libssp package. Addresses ticket 9948. Patch from Benedikt Gollatz.
- - Add support for `--library-versions` flag. Implements ticket 6384.
- - Return the "unexpected sendme" warnings to a warn severity, but make
- them rate limited, to help diagnose ticket 8093.
- - Detect a missing asciidoc, and warn the user about it, during
- configure rather than at build time. Fixes issue 6506. Patch from
- Arlo Breault.
- o Minor features (client):
- - Add a new option, PredictedPortsRelevanceTime, to control how long
- after having received a request to connect to a given port Tor
- will try to keep circuits ready in anticipation of future requests
- for that port. Patch from "unixninja92"; implements ticket 9176.
- o Minor features (config options and command line):
- - Add an --allow-missing-torrc commandline option that tells Tor to
- run even if the configuration file specified by -f is not available.
- Implements ticket 10060.
- - Add support for the TPROXY transparent proxying facility on Linux.
- See documentation for the new TransProxyType option for more
- details. Implementation by "thomo". Closes ticket 10582.
- o Minor features (config options):
- - Config (torrc) lines now handle fingerprints which are missing
- their initial '$'. Resolves ticket 4341; improvement over 0.0.9pre5.
- - Support a --dump-config option to print some or all of the
- configured options. Mainly useful for debugging the command-line
- option parsing code. Helps resolve ticket 4647.
- - Raise awareness of safer logging: notify user of potentially
- unsafe config options, like logging more verbosely than severity
- "notice" or setting SafeLogging to 0. Resolves ticket 5584.
- - Add a new configuration option TestingV3AuthVotingStartOffset
- that bootstraps a network faster by changing the timing for
- consensus votes. Addresses ticket 8532.
- - Add a new torrc option "ServerTransportOptions" that allows
- bridge operators to pass configuration parameters to their
- pluggable transports. Resolves ticket 8929.
- - The config (torrc) file now accepts bandwidth and space limits in
- bits as well as bytes. (Anywhere that you can say "2 Kilobytes",
- you can now say "16 kilobits", and so on.) Resolves ticket 9214.
- Patch by CharlieB.
- o Minor features (controller):
- - Make the entire exit policy available from the control port via
- GETINFO exit-policy
|